:root{--bg:#e4d5bc;--bg-deep:#d8c6a9;--surface:#ece0cb;--surface-raised:#f1e7d5;--paper:#f2e8d6;--paper-edge:#e6d8bf;--taupe:#b8a289;--taupe-soft:#cdbaa0;--mocha:#7a5f4d;--mocha-deep:#4e3a2e;--espresso:#2a1c17;--espresso-soft:#3a2821;--text:#2c1e18;--text-soft:#46342b;--text-muted:#67503f;--on-dark:#f0e4cf;--on-dark-soft:#cdb99c;--burgundy:#6c1a2b;--burgundy-deep:#4a1120;--burgundy-soft:#8b3445;--blush:#d9b4a8;--gold:#94723c;--gold-light:#c3a46a;--gold-faint:#94723c57;--line:#4e3a2e2e;--font-display:"Cormorant Garamond", "Cormorant", Garamond, "Times New Roman", serif;--font-body:"Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;--font-script:"Pinyon Script", "Snell Roundhand", cursive;--text-xs:.74rem;--text-sm:.88rem;--text-base:1rem;--text-lg:clamp(1.15rem, 1rem + .6vw, 1.35rem);--text-xl:clamp(1.5rem, 1.2rem + 1.4vw, 2.1rem);--text-section:clamp(2.6rem, 1.7rem + 4.2vw, 4.6rem);--text-display:clamp(2.75rem, 1.6rem + 6.5vw, 6rem);--text-serif-body:clamp(1.16rem, 1.04rem + .5vw, 1.34rem);--tracking-caps:.26em;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4.5rem;--space-9:7rem;--gutter:clamp(1rem, 4vw, 2.5rem);--content-w:1120px;--nav-h:64px;--radius-sm:4px;--radius-md:10px;--radius-lg:18px;--radius-pill:999px;--shadow-soft:0 1px 2px #2a1c170f, 0 10px 26px -10px #2a1c1738;--shadow-lifted:0 2px 4px #2a1c1714, 0 26px 60px -20px #2a1c1766;--shadow-paper:0 1px 1px #2a1c170f, 0 12px 30px -12px #2a1c1747, 0 44px 80px -40px #2a1c1766;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-fast:.2s;--dur-base:.45s;--dur-slow:.9s;--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.25 0 0 0 0 0.15 0 0 0 0 0.1 0 0 0 0.11 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:var(--nav-h);-webkit-text-size-adjust:100%;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background-color:var(--bg)}html.is-locked,html.is-locked body,html.has-modal,html.has-modal body{overflow:hidden}body{min-height:100svh;font-family:var(--font-body);font-size:var(--text-base);color:var(--text);background-color:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;background-image:radial-gradient(110% 60% at 50% -10%,#d9b4a873,#0000 60%),radial-gradient(80% 60% at 100% 100%,#b8a28973,#0000 70%),radial-gradient(70% 50% at 0 70%,#cdbaa08c,#0000 70%);background-attachment:fixed;margin:0;line-height:1.65;overflow-x:hidden}body:after{content:"";pointer-events:none;background-image:var(--grain);opacity:.5;mix-blend-mode:multiply;z-index:100;position:fixed;inset:0}#root{overflow-x:clip}h1,h2,h3,h4,p,figure,blockquote{margin:0}h1,h2,h3,h4{font-family:var(--font-display);color:var(--burgundy-deep);text-wrap:balance;font-weight:500;line-height:1.05}p{text-wrap:pretty}ul,ol{margin:0;padding:0;list-style:none}button{font:inherit;color:inherit}img,video{max-width:100%;display:block}::selection{background:var(--blush);color:var(--burgundy-deep)}:focus-visible{outline:2px solid var(--gold);outline-offset:4px;border-radius:4px}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.eyebrow{font-family:var(--font-body);font-size:var(--text-xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--gold);font-weight:600}.script{font-family:var(--font-script);font-weight:400}.section{z-index:1;scroll-margin-top:var(--nav-h);padding:clamp(5rem, 13vh, 8.5rem) var(--gutter);position:relative}.section__inner{width:100%;max-width:var(--content-w);margin-inline:auto}.range{--fill:50%;appearance:none;cursor:pointer;background:0 0;width:100%;height:22px;margin:0}.range::-webkit-slider-runnable-track{background:linear-gradient(90deg, var(--burgundy) var(--fill), var(--taupe-soft) var(--fill));border-radius:3px;height:3px}.range::-moz-range-track{background:var(--taupe-soft);border-radius:3px;height:3px}.range::-moz-range-progress{background:var(--burgundy);border-radius:3px;height:3px}.range::-webkit-slider-thumb{-webkit-appearance:none;background:var(--paper);border:2px solid var(--burgundy);border-radius:50%;width:14px;height:14px;margin-top:-5.5px;box-shadow:0 1px 4px #2a1c174d}.range::-moz-range-thumb{background:var(--paper);border:2px solid var(--burgundy);border-radius:50%;width:12px;height:12px}.range:disabled{cursor:default;opacity:.45}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.particle-field{pointer-events:none;z-index:0;width:100%;height:100%;position:fixed;inset:0}.preloader{z-index:95;justify-content:center;align-items:center;gap:var(--space-5);background:radial-gradient(60% 50% at 50% 45%, #d9b4a866, transparent 70%), var(--bg);transition:opacity .8s var(--ease-in-out);flex-direction:column;display:flex;position:fixed;inset:0}.preloader.is-leaving{opacity:0;pointer-events:none}.preloader__mark{width:64px;height:64px;color:var(--gold-light);background:radial-gradient(circle at 35% 30%, var(--burgundy-soft), var(--burgundy) 50%, var(--burgundy-deep));box-shadow:inset 0 0 0 5px var(--burgundy), inset 0 0 0 6px #c3a46a80, 0 10px 24px -8px #2a1c1780;animation:preloader-breathe 1.8s var(--ease-in-out) infinite;border-radius:50%;place-items:center;font-family:Cormorant Garamond,Georgia,serif;font-size:1.6rem;font-style:italic;font-weight:600;display:grid}.preloader__line{background:var(--gold-faint);width:120px;height:1px;position:relative;overflow:hidden}.preloader__line:after{content:"";background:var(--gold);transform-origin:0;animation:preloader-line 1.6s var(--ease-in-out) infinite;position:absolute;inset:0}@keyframes preloader-breathe{50%{transform:scale(1.06)}}@keyframes preloader-line{0%{transform:translate(-100%)}to{transform:translate(100%)}}.envelope{--env-w:min(78vw, 400px, 46svh);width:var(--env-w);aspect-ratio:3/2;animation:envelope-float 6s var(--ease-in-out) infinite;position:relative}.envelope.is-open{animation:none}@keyframes envelope-float{0%,to{transform:translateY(0)rotate(-.6deg)}50%{transform:translateY(-8px)rotate(.6deg)}}.envelope__shadow{filter:blur(6px);height:14%;animation:envelope-shadow 6s var(--ease-in-out) infinite;background:radial-gradient(closest-side,#4a132038,#0000);position:absolute;bottom:-12%;left:8%;right:8%}@keyframes envelope-shadow{50%{opacity:.7;transform:scaleX(.9)}}.envelope__body{perspective:1400px;transition:transform 1.3s var(--ease-out) .95s;position:absolute;inset:0}.envelope.is-open .envelope__body{transform:translateY(16%)}.envelope__back{z-index:0;border-radius:var(--radius-sm);box-shadow:var(--shadow-lifted);background:linear-gradient(#cbb18a,#bfa47c);position:absolute;inset:0;overflow:hidden}.envelope__liner{background:linear-gradient(#cda096f2,#cda096b3),repeating-linear-gradient(45deg,#0000 0 9px,#b5925a2e 9px 10px);position:absolute;inset:0 0 45%}.envelope__letter{z-index:2;background:var(--grain), linear-gradient(180deg, var(--paper), var(--paper-edge));height:88%;transition:transform 1.25s var(--ease-out) 1.05s;border-radius:3px;flex-direction:column;justify-content:flex-start;align-items:center;gap:.4em;padding-top:9%;display:flex;position:absolute;top:5%;left:6%;right:6%;box-shadow:0 1px 3px #4a13201f}.envelope__letter:before{content:"";border:1px solid var(--gold-faint);border-radius:2px;position:absolute;inset:6px}.envelope.is-open .envelope__letter{transform:translateY(-62%)}.envelope__letter-note{font-size:calc(var(--env-w) * .085);color:var(--burgundy);line-height:1.2}.envelope__letter-rule{background:linear-gradient(90deg, transparent, var(--gold), transparent);width:22%;height:1px}.envelope__pocket{z-index:3;border-radius:var(--radius-sm);filter:drop-shadow(0 -1px #fff6);width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.envelope__flap{z-index:4;transform-origin:50% 0;width:100%;height:56%;transform-style:preserve-3d;transition:transform .95s var(--ease-in-out) .25s, z-index 0s linear .72s;position:absolute;top:0;left:0}.envelope.is-open .envelope__flap{z-index:1;transform:rotateX(180deg)}.envelope__flap-face{backface-visibility:hidden;width:100%;height:100%;position:absolute;inset:0}.envelope__flap-face--front{filter:drop-shadow(0 3px 4px #4a13201f)}.envelope__flap-face--back{transform:rotateX(180deg)}.envelope__seal{z-index:5;aspect-ratio:1;background:radial-gradient(circle at 35% 30%, #9a3c4d, var(--burgundy) 45%, var(--burgundy-deep) 100%);width:19%;transition:transform .6s var(--ease-out), opacity .45s var(--ease-out);border-radius:47% 53% 50% 50%/52% 48%;place-items:center;display:grid;position:absolute;top:54%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 2px 3px #ffffff2e,inset 0 -3px 6px #0000004d,0 4px 10px -2px #4a132073}.envelope__seal-ring{border:1px solid #d6c0958c;border-radius:50%;position:absolute;inset:14%;box-shadow:inset 0 1px 2px #00000040}.envelope__seal-mark{font-family:var(--font-display);font-style:italic;font-weight:500;font-size:calc(var(--env-w) * .058);letter-spacing:.02em;white-space:nowrap;color:var(--gold-light);text-shadow:0 1px #00000059;position:relative}.envelope.is-open .envelope__seal{opacity:0;transform:translate(-50%,-30%)scale(.6)rotate(-14deg)}.button{justify-content:center;align-items:center;gap:var(--space-3);min-height:52px;padding:0 var(--space-6);font-family:var(--font-body);font-size:var(--text-xs);letter-spacing:.26em;text-transform:uppercase;border-radius:var(--radius-pill);cursor:pointer;isolation:isolate;-webkit-tap-highlight-color:transparent;transition:transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out), opacity var(--dur-base) var(--ease-out);border:0;font-weight:500;display:inline-flex;position:relative;overflow:hidden}.button--primary{color:var(--on-dark);background:linear-gradient(160deg, var(--burgundy-soft) -20%, var(--burgundy) 45%, var(--burgundy-deep) 120%);box-shadow:inset 0 1px #ffffff1f,0 14px 30px -12px #4a13208c}.button--primary:before{content:"";border-radius:inherit;pointer-events:none;border:1px solid #c3a46a99;position:absolute;inset:4px}.button--primary:after{content:"";z-index:-1;transition:transform 1s var(--ease-out);background:linear-gradient(105deg,#0000 35%,#fff0dc38 50%,#0000 65%);position:absolute;inset:0;transform:translate(-120%)}.button__label{padding-left:.26em}.button__icon{color:var(--gold-light);transition:transform var(--dur-base) var(--ease-out)}@media (hover:hover){.button--primary:hover{transform:translateY(-2px);box-shadow:inset 0 1px #ffffff1f,0 20px 40px -14px #4a132099}.button--primary:hover:after{transform:translate(120%)}.button:hover .button__icon{transform:translate(2px)rotate(-6deg)}}.button:active{transform:translateY(0)scale(.98)}.button:disabled{cursor:default;pointer-events:none}.opening{z-index:50;background-color:var(--bg);transition:opacity 1.2s var(--ease-in-out), transform 1.4s var(--ease-out), filter 1.2s var(--ease-in-out);background-image:radial-gradient(90% 55% at 50% 0,#d9b4a88c,#0000 70%),radial-gradient(70% 50% at 50% 100%,#cdbaa0e6,#0000 75%),radial-gradient(40% 40% at 50% 62%,#f0e6d4bf,#0000 70%);place-items:center;display:grid;position:fixed;inset:0;overflow:hidden}.opening--leaving{opacity:0;filter:blur(6px);pointer-events:none;transform:scale(1.06)}.opening__frame{border:1px solid var(--gold-faint);pointer-events:none;animation:opening-fade 1.6s var(--ease-out) both;position:absolute;inset:clamp(10px,2.5vw,22px)}.opening__corner{border-color:var(--gold);border-style:solid;border-width:0;width:18px;height:18px;position:absolute}.opening__corner--tl{border-top-width:1px;border-left-width:1px;top:-1px;left:-1px}.opening__corner--tr{border-top-width:1px;border-right-width:1px;top:-1px;right:-1px}.opening__corner--bl{border-bottom-width:1px;border-left-width:1px;bottom:-1px;left:-1px}.opening__corner--br{border-bottom-width:1px;border-right-width:1px;bottom:-1px;right:-1px}.opening__corner:after{content:"";background:var(--gold);width:4px;height:4px;position:absolute;transform:rotate(45deg)}.opening__corner--tl:after{top:5px;left:5px}.opening__corner--tr:after{top:5px;right:5px}.opening__corner--bl:after{bottom:5px;left:5px}.opening__corner--br:after{bottom:5px;right:5px}.opening__inner{width:100%;max-height:100svh;padding:clamp(2.5rem, 6svh, 4rem) var(--gutter);text-align:center;flex-direction:column;align-items:center;gap:clamp(1.6rem,4.5svh,3.25rem);display:flex;position:relative}.opening__header{transition:opacity .9s var(--ease-out), transform 1.2s var(--ease-out), filter .9s var(--ease-out);flex-direction:column;align-items:center;gap:clamp(.6rem,1.6svh,1.1rem);display:flex}.opening__date{animation:opening-rise 1.2s var(--ease-out) .2s both}.opening__title{font-size:min(var(--text-display), 9.5svh);letter-spacing:-.01em;color:var(--burgundy-deep);flex-direction:column;font-weight:300;line-height:.92;display:flex}.opening__title-line{animation:opening-rise 1.4s var(--ease-out) .4s both;display:block}.opening__title-line--italic{color:var(--burgundy);font-style:italic;font-weight:400;animation-delay:.6s}.opening__dedication{color:var(--burgundy-soft);animation:opening-rise 1.4s var(--ease-out) .85s both;align-items:baseline;gap:.35em;font-size:clamp(1.6rem,1.1rem + 2.2vw,2.4rem);line-height:1.2;display:inline-flex}.opening__heart{font-family:var(--font-display);color:var(--gold);font-size:.7em}.opening__envelope{animation:opening-envelope 1.6s var(--ease-out) 1s both}.opening__actions{align-items:center;gap:var(--space-4);transition:opacity .6s var(--ease-out), transform .8s var(--ease-out);flex-direction:column;display:flex}.opening__actions>*{animation:opening-rise 1.2s var(--ease-out) 1.5s both}.opening__actions>:nth-child(2){animation-delay:1.75s}.opening__signoff{font-family:var(--font-display);font-style:italic;font-size:var(--text-lg);color:var(--text-muted)}.opening--opening .opening__header,.opening--leaving .opening__header{opacity:0;filter:blur(4px);transform:translateY(-24px)}.opening--opening .opening__actions,.opening--leaving .opening__actions{opacity:0;transform:translateY(16px)}@keyframes opening-fade{0%{opacity:0}}@keyframes opening-rise{0%{opacity:0;filter:blur(4px);transform:translateY(16px)}}@keyframes opening-envelope{0%{opacity:0;transform:translateY(30px)scale(.94)}}@media (height<=640px){.opening__signoff{display:none}}.nav{z-index:60;padding-top:env(safe-area-inset-top);opacity:0;pointer-events:none;transition:opacity var(--dur-slow) var(--ease-out), transform .6s var(--ease-out), background var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);position:fixed;inset:0 0 auto;transform:translateY(-100%)}.nav.is-visible{opacity:1;pointer-events:auto;transform:none}.nav.is-visible.is-hidden{transform:translateY(-100%)}.nav.is-scrolled{-webkit-backdrop-filter:blur(14px)saturate(1.1);backdrop-filter:blur(14px)saturate(1.1);box-shadow:0 1px 0 var(--line), 0 12px 30px -24px #2a1c1780;background:#e4d5bcdb}.nav__bar{justify-content:space-between;align-items:center;gap:var(--space-5);height:var(--nav-h);max-width:1320px;padding-inline:var(--gutter);margin-inline:auto;display:flex}.nav__brand{align-items:center;gap:var(--space-3);cursor:pointer;background:0 0;border:0;padding:0;display:inline-flex}.nav__brand-mark{width:34px;height:34px;font-family:var(--font-display);color:var(--gold-light);background:radial-gradient(circle at 35% 30%, var(--burgundy-soft), var(--burgundy) 50%, var(--burgundy-deep));box-shadow:inset 0 0 0 3px var(--burgundy), inset 0 0 0 4px #c3a46a80;transition:transform var(--dur-base) var(--ease-out);border-radius:50%;place-items:center;font-size:.95rem;font-style:italic;font-weight:600;display:grid}.nav__brand:hover .nav__brand-mark{transform:rotate(-12deg)}.nav__brand-text{font-family:var(--font-display);color:var(--burgundy-deep);font-size:1.15rem;font-style:italic;font-weight:500}.nav__links{display:none}.nav__links ul{gap:clamp(.75rem,1.6vw,1.6rem);display:flex}.nav__link{padding:var(--space-2) 0;letter-spacing:.17em;text-transform:uppercase;white-space:nowrap;color:var(--text-soft);cursor:pointer;transition:color var(--dur-fast) var(--ease-out);background:0 0;border:0;align-items:center;gap:5px;font-size:.7rem;font-weight:600;display:inline-flex;position:relative}.nav__link:after{content:"";background:var(--burgundy);height:1px;transition:transform var(--dur-base) var(--ease-out);position:absolute;bottom:2px;left:0;right:.17em;transform:scaleX(0)}.nav__link:hover,.nav__link.is-active{color:var(--burgundy)}.nav__link:hover:after,.nav__link.is-active:after{transform:scaleX(1)}.nav__link.is-locked{color:var(--text-muted)}.nav__lock{color:var(--gold);flex:none}.nav__menu-button{align-items:center;gap:var(--space-2);min-height:42px;padding:0 var(--space-4);border:1px solid var(--gold-faint);border-radius:var(--radius-pill);letter-spacing:.2em;text-transform:uppercase;color:var(--burgundy-deep);cursor:pointer;background:#f1e7d599;font-size:.68rem;font-weight:600;display:inline-flex}.nav__progress{background:linear-gradient(90deg, var(--gold-light), var(--burgundy-soft));transform-origin:0;height:1px;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}@media (width>=1100px){.nav__links{display:block}.nav__menu-button{display:none}}@media (width<=400px){.nav__brand-text{font-size:1.05rem}}.nav-sheet{z-index:55;padding:calc(var(--nav-h) + var(--space-5)) var(--gutter) var(--space-7);background:var(--grain), radial-gradient(90% 60% at 50% 0%, #d9b4a866, transparent 70%), var(--bg);justify-content:center;align-items:center;display:flex;position:fixed;inset:0;overflow-y:auto}.nav-sheet[hidden]{display:none}.nav-sheet.is-open{animation:sheet-in .5s var(--ease-out) both}.nav-sheet__list{gap:var(--space-2);flex-direction:column;width:min(100%,420px);display:flex}.nav-sheet__list li{animation:sheet-item .7s var(--ease-out) both;animation-delay:calc(80ms + var(--i) * 55ms)}.nav-sheet__link{align-items:baseline;gap:var(--space-4);width:100%;padding:var(--space-3) 0;border:0;border-bottom:1px solid var(--line);text-align:left;cursor:pointer;background:0 0;display:flex}.nav-sheet__numeral{width:2.2rem;font-family:var(--font-display);color:var(--gold);flex:none;font-size:1rem;font-style:italic}.nav-sheet__label{align-items:center;gap:var(--space-2);font-family:var(--font-display);color:var(--burgundy-deep);transition:transform var(--dur-base) var(--ease-out), color var(--dur-fast);font-size:clamp(1.7rem,6vw,2.2rem);font-weight:500;line-height:1.15;display:inline-flex}.nav-sheet__link:hover .nav-sheet__label,.nav-sheet__link.is-active .nav-sheet__label{color:var(--burgundy);transform:translate(6px)}.nav-sheet__link.is-locked .nav-sheet__label{color:var(--text-muted)}.nav-sheet__link .nav__lock{width:16px;height:16px}.nav-hint{top:calc(var(--nav-h) + 12px + env(safe-area-inset-top));z-index:61;max-width:calc(100% - 2 * var(--gutter));padding:var(--space-3) var(--space-5);border-radius:var(--radius-pill);font-family:var(--font-display);text-align:center;color:var(--on-dark);background:var(--espresso);box-shadow:var(--shadow-lifted);opacity:0;pointer-events:none;transition:opacity var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out);font-size:1.05rem;font-style:italic;position:fixed;left:50%;transform:translate(-50%,-10px)}.nav-hint:empty{padding:0}.nav-hint.is-visible{opacity:1;transform:translate(-50%)}@keyframes sheet-in{0%{opacity:0}}@keyframes sheet-item{0%{opacity:0;transform:translateY(14px)}}.music-player{right:max(var(--gutter), env(safe-area-inset-right));bottom:max(var(--gutter), env(safe-area-inset-bottom));z-index:40;align-items:flex-end;gap:var(--space-2);opacity:0;pointer-events:none;transition:opacity var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out);flex-direction:column;display:flex;position:fixed;transform:translateY(16px)}.music-player.is-visible{opacity:1;pointer-events:auto;transform:none}.music-player__pill{align-items:center;gap:var(--space-3);border-radius:var(--radius-pill);-webkit-backdrop-filter:blur(14px)saturate(1.15);backdrop-filter:blur(14px)saturate(1.15);box-shadow:var(--shadow-soft);transition:box-shadow var(--dur-base) var(--ease-out);background:#ece0cbdb;border:1px solid #94723c59;padding:6px;display:flex}@media (hover:hover){.music-player.is-visible .music-player__pill:hover{box-shadow:var(--shadow-lifted)}}.music-player__button{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:50%;flex:none;place-items:center;width:44px;height:44px;padding:0;display:grid;position:relative}.music-player__button:disabled{cursor:default}.music-player__disc{background:radial-gradient(circle, var(--gold-light) 0 14%, var(--burgundy-deep) 15% 18%, transparent 19%), repeating-radial-gradient(circle, #2a1c17 0 1px, #3a2821 1px 3px);border-radius:50%;animation:6s linear infinite paused music-spin;position:absolute;inset:0;box-shadow:inset 0 0 0 1px #c3a46a66}.music-player__disc:after{content:"";background:linear-gradient(135deg,#ffffff2e,#0000 45%);border-radius:50%;position:absolute;inset:0}.music-player.is-playing .music-player__disc{animation-play-state:running}.music-player__icon{width:22px;height:22px;color:var(--burgundy-deep);background:var(--paper);transition:transform var(--dur-fast) var(--ease-out);border-radius:50%;place-items:center;display:grid;position:relative;box-shadow:0 1px 3px #0000004d}.music-player__icon svg{fill:currentColor}.music-player__button:active .music-player__icon{transform:scale(.88)}.music-player.is-unavailable .music-player__disc{filter:grayscale(.6)opacity(.55)}.music-player.is-unavailable .music-player__icon{opacity:.5}.music-player__meta{flex-direction:column;min-width:0;max-width:9.5rem;line-height:1.2;display:flex}.music-player__title{font-family:var(--font-display);color:var(--burgundy-deep);white-space:nowrap;text-overflow:ellipsis;font-size:1.05rem;font-style:italic;font-weight:600;overflow:hidden}.music-player__sub{letter-spacing:.2em;text-transform:uppercase;white-space:nowrap;color:var(--text-muted);font-size:.6rem;font-weight:600}.music-player__bars{align-items:flex-end;gap:2px;height:14px;display:flex}.music-player__bars span{background:var(--gold);transform-origin:bottom;border-radius:1px;width:2px;height:100%;transform:scaleY(.25)}.music-player.is-playing .music-player__bars span{animation:music-bar 1.1s var(--ease-in-out) infinite alternate}.music-player.is-playing .music-player__bars span:nth-child(2){animation-duration:.9s;animation-delay:-.4s}.music-player.is-playing .music-player__bars span:nth-child(3){animation-duration:1.3s;animation-delay:-.7s}.music-player.is-playing .music-player__bars span:nth-child(4){animation-duration:1s;animation-delay:-.2s}.music-player__more{width:36px;height:36px;color:var(--mocha-deep);cursor:pointer;transition:background var(--dur-fast) var(--ease-out);background:0 0;border:0;border-radius:50%;place-items:center;padding:0;display:grid}.music-player__more:hover:not(:disabled),.music-player.has-panel .music-player__more{background:#7a5f4d24}.music-player__more:disabled{opacity:.4;cursor:default}.music-player__panel{width:240px;padding:var(--space-4) var(--space-5);border-radius:var(--radius-md);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:var(--shadow-lifted);animation:panel-in .35s var(--ease-out) both;background:#f1e7d5f2;border:1px solid #94723c59}.music-player__panel[hidden]{display:none}.music-player__panel-title{font-family:var(--font-display);color:var(--burgundy-deep);font-size:1.15rem;font-style:italic;font-weight:600}.music-player__panel-artist{font-size:var(--text-xs);letter-spacing:.08em;color:var(--text-muted);font-weight:600}.music-player__panel .volume-control{margin-top:var(--space-3)}.volume-control{align-items:center;gap:var(--space-3);display:flex}.volume-control__mute{width:34px;height:34px;color:var(--burgundy);cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;place-items:center;padding:0;display:grid}.volume-control__mute:hover:not(:disabled){background:#6c1a2b14}.volume-control__hint{font-family:var(--font-display);color:inherit;opacity:.8;font-size:.98rem;font-style:italic;line-height:1.3}.volume-control__mute:disabled{opacity:.4;cursor:default}@keyframes music-spin{to{transform:rotate(360deg)}}@keyframes music-bar{0%{transform:scaleY(.25)}to{transform:scaleY(1)}}@keyframes panel-in{0%{opacity:0;transform:translateY(8px)}}@media (width<=480px){.music-player__meta{max-width:6rem}.music-player__bars{display:none}}.ornament{justify-content:center;align-items:center;gap:var(--space-3);color:var(--gold);display:flex}.ornament__line{background:linear-gradient(90deg, transparent, var(--gold));width:clamp(2.5rem,12vw,5rem);height:1px}.ornament__line:last-child{background:linear-gradient(90deg, var(--gold), transparent)}.ornament__mark{flex:none}.footer{z-index:1;align-items:center;gap:var(--space-3);padding:var(--space-8) var(--gutter) calc(var(--space-9) + env(safe-area-inset-bottom));text-align:center;flex-direction:column;display:flex;position:relative}.footer__line{font-family:var(--font-display);font-size:var(--text-xl);color:var(--burgundy-deep);font-style:italic;font-weight:500}.footer__date{font-size:var(--text-xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--gold);font-weight:600}.footer__actions{justify-content:center;gap:var(--space-3);margin-top:var(--space-4);flex-wrap:wrap;display:flex}.footer__button{align-items:center;gap:var(--space-2);min-height:42px;padding:0 var(--space-4);border:1px solid var(--gold-faint);border-radius:var(--radius-pill);letter-spacing:.18em;text-transform:uppercase;color:var(--text-soft);cursor:pointer;transition:background var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out);background:0 0;font-size:.68rem;font-weight:600;display:inline-flex}.footer__button:hover{background:var(--burgundy);border-color:var(--burgundy);color:var(--on-dark)}.letter-paper{background:var(--grain), radial-gradient(120% 80% at 50% 0%, #f8f0e2cc, transparent 70%), linear-gradient(180deg, var(--paper) 0%, var(--paper-edge) 100%);width:100%;max-width:680px;box-shadow:var(--shadow-paper);border-radius:2px;margin-inline:auto;padding:clamp(2.5rem,7vw,4.75rem) clamp(1.5rem,7vw,4.5rem);position:relative}.letter-paper:before{content:"";z-index:-1;background:var(--paper-edge);box-shadow:var(--shadow-soft);border-radius:2px;position:absolute;inset:0;transform:rotate(-1.4deg)translate(-4px,6px)}.letter-paper__border{border:1px solid var(--gold-faint);pointer-events:none;position:absolute;inset:clamp(10px,2vw,16px)}.letter-paper__border:before,.letter-paper__border:after{content:"";border:1px solid #b5925a1f;position:absolute;inset:3px}.letter-paper__content{position:relative}.reveal{opacity:0;filter:blur(3px);transition:opacity 1.1s var(--ease-out), transform 1.1s var(--ease-out), filter 1.1s var(--ease-out);transition-delay:var(--reveal-delay,0s);transform:translateY(18px)}.reveal.is-visible{opacity:1;filter:none;transform:none}.placeholder__tag{vertical-align:.2em;font-family:var(--font-body);letter-spacing:.18em;text-transform:uppercase;color:var(--burgundy-soft);border-radius:var(--radius-pill);border:1px dashed #8b344580;margin-right:.5em;padding:.1em .6em .15em;font-size:.55rem;font-style:normal;font-weight:600;line-height:1.4;display:inline-block}.placeholder__text{color:var(--text-muted);font-style:italic}.together-counter{margin-top:var(--space-2);padding:var(--space-2) var(--space-5);border:1px solid var(--gold-faint);border-radius:var(--radius-pill);cursor:pointer;transition:border-color var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);background:#f1e7d599}.together-counter:hover{border-color:var(--gold);box-shadow:var(--shadow-soft)}.together-counter__value{align-items:baseline;gap:var(--space-2);animation:counter-swap .5s var(--ease-out) both;display:inline-flex}.together-counter__number{font-family:var(--font-display);color:var(--burgundy);font-variant-numeric:lining-nums;font-size:1.5rem;font-weight:600;line-height:1}.together-counter__label{font-size:var(--text-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--text-soft);font-weight:600}@keyframes counter-swap{0%{opacity:0;transform:translateY(6px)}}.intro{z-index:1;padding:calc(var(--nav-h) + clamp(2.5rem, 8vh, 5rem)) var(--gutter) clamp(3rem, 8vh, 5rem);flex-direction:column;align-items:center;gap:clamp(2.5rem,7vw,4.5rem);scroll-margin-top:0;display:flex;position:relative}.intro__masthead{align-items:center;gap:var(--space-4);text-align:center;flex-direction:column;display:flex}.intro__title{letter-spacing:-.01em;font-size:clamp(2.5rem,1.6rem + 4.5vw,4.5rem);font-weight:400}.intro__title em{color:var(--burgundy);font-weight:500}.intro__dates{justify-content:center;align-items:center;gap:var(--space-3);font-family:var(--font-display);font-size:var(--text-lg);color:var(--text-soft);flex-wrap:wrap;font-style:italic;font-weight:500;display:flex}.intro__dates-sep{background:var(--gold);width:clamp(1.5rem,6vw,3rem);height:1px}.intro__paper-wrap{width:100%;max-width:680px}.intro__letter-date{text-align:right;font-family:var(--font-display);color:var(--text-muted);margin-bottom:clamp(1.75rem,5vw,2.75rem);font-size:1.05rem;font-style:italic;font-weight:500}.intro__salutation{margin-bottom:var(--space-5);color:var(--burgundy);font-size:clamp(2rem,1.5rem + 2.4vw,2.9rem);line-height:1.1}.intro__body{font-family:var(--font-display);font-size:var(--text-serif-body);color:var(--text);flex-direction:column;gap:1.15em;font-weight:500;line-height:1.7;display:flex}.intro__body>p:first-child{display:flow-root}.intro__body>p:first-child:not(:has(.placeholder)):first-letter{float:left;color:var(--burgundy);margin:.08em .12em 0 0;font-size:3.4em;line-height:.8}.intro__closing{align-items:flex-end;gap:var(--space-1);text-align:right;flex-direction:column;margin-top:clamp(2rem,6vw,3rem);display:flex}.intro__closing-line{font-family:var(--font-display);color:var(--text-muted);font-size:1.2rem;font-style:italic;font-weight:500}.intro__signature{color:var(--burgundy-deep);transform-origin:100%;font-size:clamp(2.6rem,2rem + 3vw,3.6rem);line-height:1;transform:rotate(-4deg)}.intro__continue-button{align-items:center;gap:var(--space-2);padding:var(--space-3);font-family:var(--font-display);font-size:var(--text-lg);color:var(--text-soft);cursor:pointer;transition:color var(--dur-base) var(--ease-out);background:0 0;border:0;flex-direction:column;font-style:italic;font-weight:500;display:flex}.intro__continue-button svg{color:var(--gold);animation:nudge 2.4s var(--ease-in-out) infinite}.intro__continue-button:hover{color:var(--burgundy)}@keyframes nudge{0%,to{transform:translateY(0)}50%{transform:translateY(5px)}}.section-header{align-items:center;gap:var(--space-4);text-align:center;flex-direction:column;max-width:640px;margin:0 auto clamp(3rem,8vw,5rem);display:flex}.section-header__title{font-size:var(--text-section);letter-spacing:-.01em;font-weight:400}.section-header__intro{font-family:var(--font-display);font-size:var(--text-lg);color:var(--text-soft);font-style:italic;font-weight:500}.section-header--dark .section-header__title{color:var(--on-dark)}.section-header--dark .eyebrow,.section-header--dark .ornament{color:var(--gold-light)}.section-header--dark .section-header__intro{color:var(--on-dark-soft)}.photo-frame{border-radius:var(--radius-sm);width:100%}.photo-frame--image{object-fit:cover;background:var(--taupe-soft);height:auto}.photo-frame--empty{background:var(--grain), repeating-linear-gradient(135deg, transparent 0 11px, #7a5f4d12 11px 12px), linear-gradient(160deg, var(--taupe-soft), var(--taupe));place-items:center;padding:10px;display:grid;box-shadow:inset 0 0 0 1px #4e3a2e1f}.photo-frame--portrait{aspect-ratio:3/4}.photo-frame--landscape{aspect-ratio:4/3}.photo-frame--square{aspect-ratio:1}.photo-frame__inner{justify-content:center;align-items:center;gap:var(--space-2);width:100%;height:100%;color:var(--mocha-deep);text-align:center;border:1px dashed #4e3a2e59;border-radius:2px;flex-direction:column;display:flex}.photo-frame__label{letter-spacing:.2em;text-transform:uppercase;font-size:.66rem;font-weight:600}.photo-frame__path{overflow-wrap:anywhere;max-width:90%;color:var(--burgundy);font-size:.7rem}.photo-frame--large .photo-frame__label{font-size:.78rem}.photo-frame--large.photo-frame--empty{background:var(--grain), repeating-linear-gradient(135deg, transparent 0 13px, #f0e4cf0d 13px 14px), linear-gradient(160deg, #5b463a, #3e2e26);box-shadow:inset 0 0 0 1px #c3a46a40}.photo-frame--large .photo-frame__inner{color:var(--on-dark-soft);border-color:#c3a46a66}.modal{z-index:80;padding:var(--gutter);overscroll-behavior:contain;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:modal-fade .5s var(--ease-out) both;background:#2a1c17b8;place-items:center;display:grid;position:fixed;inset:0;overflow-y:auto}.modal--dark{background:#180f0cf0}.modal__dialog{flex-direction:column;align-items:center;width:100%;display:flex;position:relative}.modal__close{top:max(14px, env(safe-area-inset-top));right:max(14px, env(safe-area-inset-right));z-index:2;width:46px;height:46px;color:var(--on-dark);cursor:pointer;transition:background var(--dur-fast) var(--ease-out), transform var(--dur-base) var(--ease-out);background:#2a1c178c;border:1px solid #c3a46a73;border-radius:50%;place-items:center;padding:0;display:grid;position:fixed}@media (hover:hover){.modal__close:hover{background:var(--burgundy);transform:rotate(90deg)}}@keyframes modal-fade{0%{opacity:0}}.lightbox{align-items:center;gap:var(--space-5);width:100%;min-height:calc(100svh - 2 * var(--gutter));padding-block:var(--space-7) var(--space-4);touch-action:pan-y;flex-direction:column;justify-content:center;display:flex}.lightbox__figure{align-items:center;gap:var(--space-4);width:100%;animation:lightbox-in .6s var(--ease-out) both;flex-direction:column;display:flex}.lightbox__figure.from-left{--from:-40px}.lightbox__figure.from-right{--from:40px}.lightbox__media{justify-content:center;width:100%;display:flex}.lightbox__image.photo-frame--image{object-fit:contain;background:0 0;width:auto;max-width:min(100%,1100px);max-height:72svh;box-shadow:0 30px 80px -20px #0009}.lightbox__image.photo-frame--empty{width:auto;max-width:100%;height:min(62svh,560px)}.lightbox__image.photo-frame--landscape.photo-frame--empty{width:min(100%,760px);height:auto}.lightbox__caption{align-items:center;gap:var(--space-1);text-align:center;flex-direction:column;max-width:560px;display:flex}.lightbox__date{font-size:var(--text-xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--gold-light);font-weight:600}.lightbox__text{font-family:var(--font-display);font-size:var(--text-lg);color:var(--on-dark);font-style:italic;font-weight:500}.lightbox__text .placeholder__text{color:var(--on-dark-soft)}.lightbox__text .placeholder__tag{color:var(--blush);border-color:#d9b4a880}.lightbox__controls{align-items:center;gap:var(--space-5);display:flex}.lightbox__arrow{width:48px;height:48px;color:var(--on-dark);cursor:pointer;transition:background var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);background:0 0;border:1px solid #c3a46a73;border-radius:50%;place-items:center;padding:0;display:grid}@media (hover:hover){.lightbox__arrow:hover{background:var(--burgundy)}}.lightbox__arrow:active{transform:scale(.92)}.lightbox__count{min-width:4.5rem;font-family:var(--font-display);text-align:center;color:var(--on-dark-soft);font-size:1.1rem;font-style:italic}@keyframes lightbox-in{0%{opacity:0;transform:translateX(var(--from,0)) scale(.98);filter:blur(4px)}}.empty-state{align-items:center;gap:var(--space-3);max-width:460px;padding:var(--space-7) var(--space-5);border:1px dashed var(--gold-faint);border-radius:var(--radius-md);text-align:center;color:var(--gold);flex-direction:column;margin-inline:auto;display:flex}.empty-state__title{font-family:var(--font-display);font-size:var(--text-xl);color:var(--burgundy-deep);font-style:italic;font-weight:500}.empty-state__hint{font-size:var(--text-sm);color:var(--text-muted)}.empty-state code{color:var(--burgundy);font-size:.85em}.gallery__filters{justify-content:center;gap:var(--space-2);flex-wrap:wrap;margin-bottom:clamp(2rem,5vw,3rem);display:flex}.gallery__filter{min-height:40px;padding:0 var(--space-5);border:1px solid var(--gold-faint);border-radius:var(--radius-pill);letter-spacing:.18em;text-transform:uppercase;color:var(--text-soft);cursor:pointer;transition:background var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out);background:0 0;font-size:.7rem;font-weight:600}.gallery__filter:hover{border-color:var(--burgundy-soft);color:var(--burgundy)}.gallery__filter.is-active{border-color:var(--burgundy);color:var(--on-dark);background:var(--burgundy)}.gallery__grid{columns:2;padding-top:var(--space-3);column-gap:clamp(.9rem,3vw,2.25rem)}@media (width>=760px){.gallery__grid{columns:3}}.gallery__item{break-inside:avoid;padding:var(--space-3) 2px clamp(1.25rem, 3.5vw, 2.5rem)}.gallery__print{--tilt:-1.2deg;background:var(--grain), linear-gradient(175deg, var(--paper), var(--paper-edge));transform:rotate(var(--tilt));transition:transform .7s var(--ease-out), box-shadow .7s var(--ease-out);border-radius:2px;flex-direction:column;padding:clamp(7px,1.2vw,11px) clamp(7px,1.2vw,11px) 0;display:flex;position:relative;box-shadow:0 1px 2px #2a1c171f,0 14px 28px -14px #2a1c1773}.gallery__item:nth-child(4n+2) .gallery__print{--tilt:1deg}.gallery__item:nth-child(4n+3) .gallery__print{--tilt:-.5deg}.gallery__item:nth-child(4n+4) .gallery__print{--tilt:1.5deg}@media (hover:hover){.gallery__print:hover{transform:rotate(0)translateY(-5px)scale(1.015);box-shadow:0 2px 4px #2a1c171f,0 28px 50px -20px #2a1c178c}}.gallery__tape{z-index:1;clip-path:polygon(2% 8%,98% 0,100% 92%,0 100%);pointer-events:none;background:repeating-linear-gradient(90deg,#ffffff14 0 2px,#0000 2px 5px),#d6c4a4b8;width:clamp(54px,32%,92px);height:22px;position:absolute;top:-10px;left:50%;transform:translate(-50%)rotate(-3deg);box-shadow:0 1px 2px #2a1c1726}.gallery__item:nth-child(3n+2) .gallery__tape{left:22%;transform:translate(-50%)rotate(-28deg)}.gallery__item:nth-child(3n+3) .gallery__tape{left:80%;transform:translate(-50%)rotate(24deg)}.gallery__tile{cursor:zoom-in;background:0 0;border:0;width:100%;padding:0;display:block}.gallery__tile .photo-frame--image{border-radius:1px;width:100%}.gallery__print--screenshot .gallery__tile{background:var(--espresso-soft);border-radius:16px;padding:6px}.gallery__print--screenshot .photo-frame{border-radius:11px}.gallery__caption{min-height:clamp(2.6rem,6vw,3.4rem);padding:var(--space-3) var(--space-2) var(--space-3);flex-direction:column;gap:2px;display:flex}.gallery__caption.is-empty{justify-content:flex-end}.gallery__caption.is-empty:after{content:"";background:linear-gradient(90deg, transparent, var(--line), transparent);height:1px;margin:0 8%;display:block}.gallery__date{letter-spacing:.2em;text-transform:uppercase;color:var(--gold);font-size:.66rem;font-weight:600}.gallery__text{font-family:var(--font-display);color:var(--text-soft);font-size:1.08rem;font-style:italic;font-weight:500;line-height:1.4}@media (width<=480px){.gallery__text{font-size:.98rem}}.wax-seal{width:var(--seal-size);aspect-ratio:1;background:radial-gradient(circle at 35% 30%, #9a3c4d, var(--burgundy) 45%, var(--burgundy-deep) 100%);border-radius:47% 53% 50% 50%/52% 48%;place-items:center;display:grid;position:relative;box-shadow:inset 0 2px 3px #ffffff2e,inset 0 -3px 6px #0000004d,0 4px 10px -2px #2a1c1780}.wax-seal__ring{border:1px solid #c3a46a99;border-radius:50%;position:absolute;inset:14%;box-shadow:inset 0 1px 2px #00000040}.wax-seal__text{font-family:var(--font-display);font-size:calc(var(--seal-size) * .3);white-space:nowrap;color:var(--gold-light);text-shadow:0 1px #00000059;font-style:italic;font-weight:600;position:relative}.letters__grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr));gap:clamp(1.25rem,3vw,2rem);display:grid}.letter-card{aspect-ratio:5/6;border-radius:var(--radius-sm);text-align:center;background:var(--grain), linear-gradient(170deg, #ead9bc, #dcc6a3);width:100%;box-shadow:var(--shadow-soft);cursor:pointer;transition:transform .7s var(--ease-out), box-shadow .7s var(--ease-out);border:0;flex-direction:column;align-items:center;padding:0;display:flex;position:relative;overflow:hidden}.letter-card:after{content:"";border:1px solid var(--gold-faint);pointer-events:none;border-radius:2px;position:absolute;inset:7px}.letter-card__flap{clip-path:polygon(0 0,100% 0,50% 100%);filter:drop-shadow(0 2px 2px #2a1c1726);transform-origin:top;height:36%;transition:transform .8s var(--ease-out);background:linear-gradient(#e1cca8,#e9d8bb);position:absolute;inset:0 0 auto}.letter-card__numeral{z-index:1;font-family:var(--font-display);color:var(--mocha);font-size:.95rem;font-style:italic;font-weight:600;position:absolute;top:12px;left:16px}.letter-card__seal{z-index:1;transition:transform .6s var(--ease-out);position:absolute;top:36%;left:50%;transform:translate(-50%,-50%)}.letter-card__body{align-items:center;gap:var(--space-1);padding:0 var(--space-5) var(--space-5);flex-direction:column;display:flex;position:absolute;inset:auto 0 0}.letter-card__occasion{font-family:var(--font-display);color:var(--text-soft);font-size:1.02rem;font-style:italic;font-weight:500;line-height:1.35}.letter-card__title{font-family:var(--font-display);color:var(--burgundy-deep);font-size:1.4rem;font-weight:600;line-height:1.2}.letter-card__meta{margin-top:var(--space-2);gap:var(--space-3);font-family:var(--font-display);color:var(--text-muted);font-size:.95rem;font-style:italic;display:flex}.letter-card__status{font-family:var(--font-body);letter-spacing:.2em;text-transform:uppercase;color:var(--gold);font-size:.62rem;font-style:normal;font-weight:600}@media (hover:hover){.letter-card:hover{box-shadow:var(--shadow-lifted);transform:translateY(-6px)}.letter-card:hover .letter-card__flap{transform:perspective(600px)rotateX(24deg)}.letter-card:hover .letter-card__seal{transform:translate(-50%,-50%)rotate(-10deg)scale(1.06)}}.letter-card.is-read .letter-card__flap{transform:perspective(600px)rotateX(30deg)}.letter-card.is-read .letter-card__seal{filter:saturate(.7);opacity:.85}.letter-viewer{align-items:center;gap:var(--space-5);width:100%;padding-block:var(--space-8) var(--space-6);perspective:1600px;flex-direction:column;display:flex}.letter-viewer__paper{transform-origin:50% 0;animation:letter-unfold 1.1s var(--ease-out) both}.letter-viewer__creases{pointer-events:none;animation:crease-fade 2.2s var(--ease-out) both;background:linear-gradient(#0000 calc(33.3% - 1px),#4e3a2e24 33.3%,#0000 calc(33.3% + 6px)),linear-gradient(#0000 calc(66.6% - 1px),#4e3a2e1f 66.6%,#0000 calc(66.6% + 6px));position:absolute;inset:0}.letter-viewer__header{justify-content:space-between;align-items:baseline;gap:var(--space-2) var(--space-4);margin-bottom:var(--space-6);padding-bottom:var(--space-4);border-bottom:1px solid var(--gold-faint);flex-wrap:wrap;display:flex}.letter-viewer__title{font-size:clamp(1.5rem,1.2rem + 1.5vw,2.1rem);font-weight:500}.letter-viewer__date{font-family:var(--font-display);color:var(--text-muted);font-style:italic;font-weight:500}.letter-viewer__salutation{margin-bottom:var(--space-4);color:var(--burgundy);font-size:clamp(1.9rem,1.5rem + 2vw,2.6rem);line-height:1.1}.letter-viewer__body{font-family:var(--font-display);font-size:var(--text-serif-body);color:var(--text);flex-direction:column;gap:1.1em;font-weight:500;line-height:1.7;display:flex}.letter-viewer__body p{animation:letter-line .9s var(--ease-out) both;animation-delay:calc(.7s + var(--i) * .12s)}.letter-viewer__closing{margin-top:var(--space-6);flex-direction:column;align-items:flex-end;display:flex}.letter-viewer__closing-line{font-family:var(--font-display);color:var(--text-muted);font-size:1.15rem;font-style:italic;font-weight:500}.letter-viewer__signature{color:var(--burgundy-deep);font-size:clamp(2.4rem,2rem + 2vw,3.2rem);line-height:1;transform:rotate(-4deg)}.letter-viewer__nav{justify-content:space-between;align-items:center;gap:var(--space-4);width:100%;max-width:680px;display:flex}.letter-viewer__nav button{align-items:center;gap:var(--space-2);min-height:44px;padding:0 var(--space-4);border-radius:var(--radius-pill);letter-spacing:.18em;text-transform:uppercase;color:var(--on-dark);cursor:pointer;transition:background var(--dur-fast) var(--ease-out);background:0 0;border:1px solid #c3a46a73;font-size:.7rem;font-weight:600;display:inline-flex}.letter-viewer__nav button:hover:not(:disabled){background:var(--burgundy)}.letter-viewer__nav button:disabled{opacity:.35;cursor:default}.letter-viewer__count{font-family:var(--font-display);color:var(--on-dark-soft);font-style:italic}@keyframes letter-unfold{0%{opacity:0;filter:brightness(.8);transform:rotateX(-70deg)scaleY(.4)translateY(40px)}55%{opacity:1}to{filter:none;transform:none}}@keyframes crease-fade{0%,40%{opacity:1}to{opacity:.12}}@keyframes letter-line{0%{opacity:0;transform:translateY(10px)}}.our-song__card{border-radius:var(--radius-lg);background:var(--grain), radial-gradient(80% 90% at 20% 30%, #6c1a2b59, transparent 70%), linear-gradient(150deg, var(--mocha-deep), var(--espresso));max-width:960px;box-shadow:var(--shadow-lifted);color:var(--on-dark);align-items:center;gap:clamp(2rem,5vw,4rem);margin-inline:auto;padding:clamp(1.75rem,5vw,3.5rem);display:grid}@media (width>=820px){.our-song__card{grid-template-columns:1fr 1.1fr}}.turntable{aspect-ratio:1;width:min(86%,360px);margin-inline:auto;position:relative}.turntable__platter{background:radial-gradient(circle,#1d1310 60%,#33241e 61%,#1d1310 64%);border-radius:50%;position:absolute;inset:4%;box-shadow:0 20px 40px -10px #0009,inset 0 0 0 1px #c3a46a33}.turntable__record{background:conic-gradient(from 30deg,#ffffff12,#0000 12% 45%,#ffffff0f 55%,#0000 65%),repeating-radial-gradient(circle,#191010 0 1.5px,#261a17 1.5px 3px);border-radius:50%;place-items:center;animation:4.5s linear infinite paused record-spin;display:grid;position:absolute;inset:3%}.is-playing .turntable__record{animation-play-state:running}.turntable__label{aspect-ratio:1;background:radial-gradient(circle at 40% 35%, var(--burgundy-soft), var(--burgundy) 55%, var(--burgundy-deep));width:34%;box-shadow:inset 0 0 0 2px #c3a46a8c, inset 0 0 0 8px var(--burgundy);border-radius:50%;place-items:center;display:grid;position:relative}.turntable__label-text{font-family:var(--font-display);color:var(--gold-light);font-size:clamp(1rem,3vw,1.4rem);font-style:italic;font-weight:600}.turntable__label:after{content:"";aspect-ratio:1;background:var(--paper);border-radius:50%;width:3%;position:absolute}.turntable__arm{transform-origin:70% 8%;width:18%;height:70%;transition:transform 1.2s var(--ease-in-out);position:absolute;top:0;right:0;transform:rotate(-22deg)}.is-playing .turntable__arm{transform:rotate(4deg)}.turntable__arm-pivot{aspect-ratio:1;background:radial-gradient(circle at 35% 30%, var(--gold-light), var(--gold) 60%, #6b522b);border-radius:50%;width:46%;position:absolute;top:0;right:10%;box-shadow:0 4px 8px #0006}.turntable__arm-rod{background:linear-gradient(90deg, #8a6c3c, var(--gold-light), #8a6c3c);transform-origin:top;border-radius:2px;width:4px;height:78%;position:absolute;top:10%;right:31%;transform:rotate(14deg)}.turntable__arm-head{background:linear-gradient(180deg, var(--gold-light), var(--gold));border-radius:3px;width:26%;height:12%;position:absolute;bottom:4%;left:2%;transform:rotate(40deg)}.our-song__details{gap:var(--space-2);flex-direction:column;display:flex}.our-song__label{color:var(--gold-light)}.our-song__title{color:var(--on-dark);font-size:clamp(2rem,1.5rem + 2.4vw,3.2rem);font-style:italic;font-weight:500}.our-song__artist{font-size:var(--text-sm);letter-spacing:.1em;color:var(--on-dark-soft);font-weight:600}.our-song__note{margin-top:var(--space-3);font-family:var(--font-display);font-size:var(--text-serif-body);color:var(--on-dark);font-weight:500;line-height:1.6}.our-song__card .placeholder__text{color:var(--on-dark-soft)}.our-song__card .placeholder__tag{color:var(--blush);border-color:#d9b4a880}.our-song__controls{align-items:center;gap:var(--space-4);margin-top:var(--space-5);display:flex}.our-song__play{width:60px;height:60px;color:var(--burgundy-deep);background:radial-gradient(circle at 35% 30%, #f6ead4, var(--gold-light));cursor:pointer;transition:transform var(--dur-base) var(--ease-out);border:0;border-radius:50%;flex:none;place-items:center;padding:0;display:grid;box-shadow:0 10px 24px -8px #0009,inset 0 0 0 1px #fff6}.our-song__play svg{fill:currentColor}.our-song__play:hover:not(:disabled){transform:scale(1.06)}.our-song__play:active:not(:disabled){transform:scale(.95)}.our-song__play:disabled{opacity:.45;cursor:default}.our-song__progress{flex:1;min-width:0}.our-song__card .range::-webkit-slider-runnable-track{background:linear-gradient(90deg, var(--gold-light) var(--fill), #f0e4cf33 var(--fill))}.our-song__card .range::-moz-range-track{background:#f0e4cf33}.our-song__card .range::-moz-range-progress{background:var(--gold-light)}.our-song__card .range::-webkit-slider-thumb{border-color:var(--gold-light)}.our-song__card .range::-moz-range-thumb{border-color:var(--gold-light)}.our-song__times{font-variant-numeric:tabular-nums;color:var(--on-dark-soft);justify-content:space-between;font-size:.72rem;display:flex}.our-song__volume{max-width:260px;margin-top:var(--space-2)}.our-song__volume .volume-control__mute{color:var(--gold-light)}.our-song__empty{margin-top:var(--space-4);font-size:var(--text-sm);color:var(--on-dark-soft)}.our-song__empty .placeholder__tag{color:var(--blush);border-color:#d9b4a880}.our-song__empty code{color:var(--gold-light)}.our-song__hint{margin-top:var(--space-5);text-align:center;font-family:var(--font-display);color:var(--text-muted);font-size:1.05rem;font-style:italic;font-weight:500}@keyframes record-spin{to{transform:rotate(360deg)}}.hearts__board{border:1px solid var(--gold-faint);border-radius:var(--radius-lg);background:var(--grain), radial-gradient(70% 60% at 50% 0%, #d9b4a859, transparent 70%), #ece0cbb3;max-width:880px;box-shadow:var(--shadow-soft);margin-inline:auto;padding:clamp(2rem,5vw,3.5rem) clamp(1rem,4vw,3rem)}.hearts__row{gap:clamp(1rem, 4vw, 1.5rem) var(--space-3);grid-template-columns:repeat(3,1fr);justify-items:center;display:grid}@media (width>=760px){.hearts__row{grid-template-columns:repeat(6,1fr);padding-bottom:28px}.hearts__row li:nth-child(2),.hearts__row li:nth-child(5){transform:translateY(18px)}.hearts__row li:nth-child(3),.hearts__row li:nth-child(4){transform:translateY(28px)}}.heart{align-items:center;gap:var(--space-2);width:84px;padding:var(--space-2) 0;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;flex-direction:column;display:flex;position:relative}.heart__svg{width:58px;height:56px;transition:transform .5s var(--ease-out);animation:heart-breathe 4s var(--ease-in-out) infinite;animation-delay:calc(var(--i) * -.6s);overflow:visible}.heart.is-open .heart__svg{animation:none}.heart__outline{fill:none;stroke:var(--gold);stroke-width:1.3px;stroke-linejoin:round;stroke-dasharray:100;stroke-dashoffset:0}.heart__fill{opacity:0;transform-box:fill-box;transform-origin:50% 100%}.heart__sheen{opacity:0}.heart.is-open .heart__fill{opacity:1}.heart.is-open .heart__outline{stroke:var(--gold-light)}.heart__numeral{font-family:var(--font-display);color:var(--text-muted);transition:color var(--dur-base) var(--ease-out);font-size:1.05rem;font-style:italic;font-weight:600}.heart.is-open .heart__numeral{color:var(--burgundy)}.heart.is-active .heart__numeral{text-decoration:underline;-webkit-text-decoration-color:var(--gold);text-decoration-color:var(--gold);text-underline-offset:5px}@media (hover:hover){.heart:not(.is-open):hover .heart__svg{transform:translateY(-4px)scale(1.06)}.heart:not(.is-open):hover .heart__fill{opacity:.18}}.heart:active .heart__svg{transform:scale(.94)}.heart__fx{top:calc(var(--space-2) + 28px);pointer-events:none;width:0;height:0;position:absolute;left:50%}.heart__particle{opacity:0;border-radius:50%;width:8px;height:8px;position:absolute;top:-4px;left:-4px}.heart__ring{border:1px solid var(--burgundy-soft);opacity:0;border-radius:50%;width:60px;height:60px;position:absolute;top:-30px;left:-30px}.heart--bloom.is-animating .heart__svg{animation:heart-pop .9s var(--ease-out)}.heart--bloom.is-animating .heart__fill{animation:fade-in .6s var(--ease-out) both}.heart--bloom .heart__particle{background:var(--blush);border-radius:50%/60% 60% 40% 40%;width:7px;height:11px}.heart--bloom.is-animating .heart__particle{animation:petal 1.2s var(--ease-out) both;animation-delay:calc(var(--n) * 25ms)}.heart--turn.is-animating .heart__svg{animation:heart-turn 1.1s var(--ease-in-out)}.heart--turn.is-animating .heart__fill{animation:.2s linear .5s both fade-in}.heart--ink.is-animating .heart__fill{animation:ink-rise 1.4s var(--ease-in-out) both}.heart--beat.is-animating .heart__svg{animation:heart-beat 1.1s var(--ease-out)}.heart--beat.is-animating .heart__fill{animation:fade-in .3s var(--ease-out) both}.heart--beat.is-animating .heart__ring{animation:ripple 1.2s var(--ease-out) both}.heart--beat.is-animating .heart__ring--late{animation-delay:.3s}.heart--gild.is-animating .heart__fill{animation:fade-in .5s var(--ease-out) both}.heart--gild.is-animating .heart__sheen{animation:sheen 1.3s var(--ease-in-out) .2s both}.heart--gild .heart__particle{background:var(--gold-light);width:4px;height:4px;box-shadow:0 0 6px var(--gold-light)}.heart--gild.is-animating .heart__particle{animation:dust 1.6s var(--ease-out) both;animation-delay:calc(.3s + var(--n) * 70ms)}.heart--draw.is-animating .heart__outline{animation:draw-line 1.2s var(--ease-in-out) both}.heart--draw.is-animating .heart__fill{animation:fade-in .6s var(--ease-out) 1s both}.hearts__progress{align-items:center;gap:var(--space-2);flex-direction:column;margin-top:clamp(1.5rem,4vw,2.25rem);display:flex}.hearts__dots{gap:10px;display:flex}.hearts__dots span{border:1px solid var(--gold);width:9px;height:9px;transition:background .5s var(--ease-out), transform .5s var(--ease-out);border-radius:50%}.hearts__dots span.is-found{background:var(--burgundy);border-color:var(--burgundy);transform:scale(1.15)}.hearts__count{font-size:var(--text-xs);letter-spacing:.2em;text-transform:uppercase;color:var(--text-muted);font-weight:600}.hearts__message-area{min-height:9.5rem;margin-top:var(--space-5);text-align:center;place-items:center;display:grid}.hearts__prompt{font-family:var(--font-display);font-size:var(--text-lg);color:var(--text-muted);font-style:italic;font-weight:500}.hearts__message{align-items:center;gap:var(--space-3);max-width:560px;animation:message-in .8s var(--ease-out) .25s both;flex-direction:column;display:flex}.hearts__message-label{font-size:var(--text-xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--gold);font-weight:600}.hearts__message-text{font-family:var(--font-display);color:var(--burgundy-deep);margin:0;font-size:clamp(1.35rem,1.1rem + 1.2vw,1.85rem);font-style:italic;font-weight:500;line-height:1.4}.hearts__complete{align-items:center;gap:var(--space-3);text-align:center;animation:message-in 1s var(--ease-out) both;flex-direction:column;margin-top:clamp(2.5rem,6vw,3.5rem);display:flex}.hearts__complete-title{font-family:var(--font-display);font-size:var(--text-xl);color:var(--burgundy);font-style:italic;font-weight:600}.hearts__complete-text{margin-bottom:var(--space-3);color:var(--text-soft)}.hearts__reset{align-items:center;gap:var(--space-2);margin:var(--space-6) auto 0;padding:var(--space-2) var(--space-3);font-size:var(--text-xs);letter-spacing:.12em;color:var(--text-muted);cursor:pointer;text-decoration:underline;-webkit-text-decoration-color:var(--gold-faint);text-decoration-color:var(--gold-faint);text-underline-offset:4px;background:0 0;border:0;font-weight:600;display:flex}.hearts__reset:hover{color:var(--burgundy)}@keyframes heart-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes heart-pop{0%{transform:scale(.85)}45%{transform:scale(1.18)}to{transform:scale(1)}}@keyframes petal{0%{opacity:0;transform:rotate(calc(var(--n) * 60deg)) translateY(0) scale(.4)}25%{opacity:1}to{opacity:0;transform:rotate(calc(var(--n) * 60deg + 40deg)) translateY(-52px) scale(1)}}@keyframes heart-turn{0%{transform:perspective(300px)rotateY(0)}to{transform:perspective(300px)rotateY(360deg)}}@keyframes ink-rise{0%{opacity:1;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes heart-beat{0%{transform:scale(1)}14%{transform:scale(1.24)}28%{transform:scale(1)}42%{transform:scale(1.16)}70%,to{transform:scale(1)}}@keyframes ripple{0%{opacity:.8;transform:scale(.6)}to{opacity:0;transform:scale(1.9)}}@keyframes sheen{0%{opacity:1;transform:translate(0)}to{opacity:1;transform:translate(64px)}}@keyframes dust{0%{opacity:0;transform:rotate(calc(var(--n) * 60deg + 20deg)) translateY(-20px)}30%{opacity:1}to{opacity:0;transform:rotate(calc(var(--n) * 60deg + 20deg)) translateY(-44px)}}@keyframes draw-line{0%{stroke-dashoffset:100px}to{stroke-dashoffset:0}}@keyframes message-in{0%{opacity:0;filter:blur(3px);transform:translateY(12px)}}.sealed-chapter{padding-top:0}.sealed-chapter__inner{align-items:center;gap:var(--space-3);max-width:520px;padding:var(--space-7) var(--space-5);border-radius:var(--radius-lg);text-align:center;color:var(--on-dark);background:var(--grain), radial-gradient(70% 80% at 50% 0%, #6c1a2b80, transparent 70%), linear-gradient(160deg, var(--espresso-soft), var(--espresso));box-shadow:var(--shadow-lifted);flex-direction:column;margin-inline:auto;display:flex}.sealed-chapter__inner .eyebrow{color:var(--gold-light)}.sealed-chapter__icon{width:52px;height:52px;color:var(--gold-light);border:1px solid #c3a46a80;border-radius:50%;place-items:center;display:grid}.sealed-chapter__text{font-family:var(--font-display);font-size:var(--text-lg);color:var(--on-dark);font-weight:500}.sealed-chapter__text em{color:var(--gold-light)}.sealed-chapter__link{padding:var(--space-2) var(--space-4);border-radius:var(--radius-pill);font-size:var(--text-xs);letter-spacing:.2em;text-transform:uppercase;color:var(--gold-light);cursor:pointer;background:0 0;border:1px solid #c3a46a80;font-weight:600}.sealed-chapter__link:hover{background:var(--burgundy);color:var(--on-dark)}.postscript{align-items:center;gap:var(--space-5);text-align:center;width:100%;max-width:640px;animation:ps-fade 1.6s var(--ease-out) both;flex-direction:column;display:flex}.postscript--waiting{min-height:6rem;animation:none}.postscript__lead{color:var(--gold-light);font-size:clamp(2rem,1.5rem + 2.4vw,2.9rem);line-height:1.2}.postscript__button{align-items:center;gap:var(--space-2);min-height:48px;padding:0 var(--space-6);border-radius:var(--radius-pill);font-size:var(--text-xs);letter-spacing:.22em;text-transform:uppercase;color:var(--on-dark);cursor:pointer;animation:ps-fade 1.2s var(--ease-out) .9s both, ps-glow 3s var(--ease-in-out) 2.1s infinite;transition:background var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out);background:#6c1a2b59;border:1px solid #c3a46a8c;font-weight:600;display:inline-flex}.postscript__button svg{color:var(--gold-light)}.postscript__button:hover{background:var(--burgundy);transform:translateY(-2px)}.postscript__button:active{transform:scale(.97)}.postscript__figure{align-items:center;gap:var(--space-4);width:100%;scroll-margin:var(--nav-h);flex-direction:column;display:flex}.postscript__frame{background:#f0e4cf0d;border:1px solid #c3a46a8c;justify-content:center;max-width:100%;padding:clamp(8px,1.6vw,14px);animation:1.8s cubic-bezier(.16,1,.3,1) both ps-zoom;display:flex;position:relative;box-shadow:0 0 0 6px #2a1c1799,0 0 0 7px #c3a46a40,0 50px 90px -30px #000000d9}.postscript__frame:before{content:"";z-index:-1;animation:ps-fade 2.4s var(--ease-out) .4s both;background:radial-gradient(closest-side,#c3a46a47,#0000);border-radius:50%;position:absolute;inset:-18%}.postscript__photo.photo-frame--image{object-fit:contain;background:0 0;border-radius:2px;width:auto;max-width:100%;max-height:min(72svh,680px)}.postscript__photo.photo-frame--empty{width:min(78vw,360px)}.postscript__caption{margin-top:var(--space-2);font-family:var(--font-display);color:var(--on-dark);animation:ps-rise 1.2s var(--ease-out) 1.3s both;font-size:clamp(1.35rem,1.1rem + 1.2vw,1.8rem);font-style:italic;font-weight:500;line-height:1.35}.postscript__closing{font-size:var(--text-xs);letter-spacing:.2em;text-transform:uppercase;color:var(--gold-light);animation:ps-rise 1.2s var(--ease-out) 2.3s both;font-weight:600;line-height:1.8}@keyframes ps-fade{0%{opacity:0}}@keyframes ps-rise{0%{opacity:0;filter:blur(3px);transform:translateY(10px)}}@keyframes ps-zoom{0%{opacity:0;filter:blur(10px)brightness(.6);transform:scale(.55)}55%{opacity:1;filter:blur()brightness()}80%{transform:scale(1.03)}to{transform:scale(1)}}@keyframes ps-glow{0%,to{box-shadow:0 0 #c3a46a00}50%{box-shadow:0 0 0 8px #c3a46a26}}.ending{min-height:100svh;color:var(--on-dark);background:var(--grain), radial-gradient(90% 50% at 50% 0%, #6c1a2b8c, transparent 70%), radial-gradient(80% 40% at 50% 100%, #4e3a2e99, transparent 70%), linear-gradient(180deg, var(--espresso) 0%, #24160f 60%, var(--espresso) 100%);overflow:hidden}.ending__glow{aspect-ratio:1;pointer-events:none;width:min(900px,140vw);animation:candle 7s var(--ease-in-out) infinite;background:radial-gradient(circle,#c3a46a2e,#0000 60%);border-radius:50%;position:absolute;top:-10%;left:50%;transform:translate(-50%)}.ending__inner{flex-direction:column;align-items:center;gap:clamp(3rem,8vw,5rem);display:flex;position:relative}.ending .section-header{margin-bottom:0}.ending__sealed-wrap{align-items:center;gap:var(--space-5);flex-direction:column;width:100%;display:flex}.ending__sealed-note{text-align:center;color:var(--gold-light);transition:opacity .6s var(--ease-out);font-size:clamp(1.9rem,1.5rem + 2vw,2.6rem);line-height:1.2}.ending__sealed-wrap.is-breaking .ending__sealed-note{opacity:0}.ending__sealed{aspect-ratio:3/2;border-radius:var(--radius-sm);background:var(--grain), linear-gradient(170deg, #e0cba7, #c9b08a);width:min(100%,520px);transition:transform .9s var(--ease-in-out), opacity .9s var(--ease-in-out);place-items:center;display:grid;position:relative;box-shadow:0 40px 80px -30px #000c}.ending__sealed:before{content:"";clip-path:polygon(0 0,100% 0,50% 100%);background:linear-gradient(#d6be97,#e0cba7);position:absolute;inset:0 0 45%}.ending__sealed.is-breaking{transform:translateY(-14px)scale(1.02)}.ending__seal-button{align-items:center;gap:var(--space-4);padding:var(--space-3);cursor:pointer;background:0 0;border:0;flex-direction:column;margin-top:10%;display:flex;position:relative}.ending__seal{width:96px;height:96px;animation:seal-glow 3s var(--ease-in-out) infinite;border-radius:50%;place-items:center;display:grid;position:relative}.ending__seal-half{background:radial-gradient(circle at 35% 30%, #9a3c4d, var(--burgundy) 45%, var(--burgundy-deep) 100%);transition:transform .9s var(--ease-out), opacity .9s var(--ease-out);position:absolute;inset:0;box-shadow:inset 0 2px 3px #ffffff2e,inset 0 -3px 6px #0000004d}.ending__seal-half--left{clip-path:polygon(0 0,54% 0,44% 35%,56% 62%,46% 100%,0 100%);border-radius:50%}.ending__seal-half--right{clip-path:polygon(54% 0,100% 0,100% 100%,46% 100%,56% 62%,44% 35%);border-radius:50%}.ending__seal-text{font-family:var(--font-display);color:var(--gold-light);text-shadow:0 1px #0006;transition:opacity .4s var(--ease-out);font-size:1.8rem;font-style:italic;font-weight:600;position:relative}.ending__seal-label{font-size:var(--text-xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--burgundy-deep);transition:opacity .4s var(--ease-out);font-weight:600}.ending__seal-button:hover .ending__seal{transform:scale(1.05)rotate(-4deg)}.is-breaking .ending__seal{animation:none}.is-breaking .ending__seal-half--left{opacity:0;transform:translate(-26px,18px)rotate(-28deg)}.is-breaking .ending__seal-half--right{opacity:0;transform:translate(26px,22px)rotate(24deg)}.is-breaking .ending__seal-text,.is-breaking .ending__seal-label{opacity:0}.ending__letter-wrap{perspective:1600px;width:100%}.ending__letter{transform-origin:50% 0;animation:ending-unfold 1.4s var(--ease-out) both}.ending__salutation{margin-bottom:var(--space-5);color:var(--burgundy);animation:ending-line 1.2s var(--ease-out) .8s both;font-size:clamp(2.2rem,1.6rem + 2.6vw,3.2rem);line-height:1.1}.ending__body{font-family:var(--font-display);color:var(--text);flex-direction:column;gap:1.2em;font-size:clamp(1.22rem,1.08rem + .6vw,1.45rem);font-weight:500;line-height:1.75;display:flex}.ending__body p,.ending__closing{animation:ending-line 1.4s var(--ease-out) both;animation-delay:calc(1.3s + var(--i) * .6s)}.ending__closing{margin-top:var(--space-6);flex-direction:column;align-items:flex-end;display:flex}.ending__closing-line{font-family:var(--font-display);color:var(--text-muted);font-size:1.2rem;font-style:italic;font-weight:500}.ending__signature{color:var(--burgundy-deep);font-size:clamp(2.8rem,2.2rem + 3vw,4rem);line-height:1;transform:rotate(-4deg)}.ending__media{align-items:center;gap:var(--space-4);flex-direction:column;width:100%;max-width:820px;display:flex}.ending__media-frame{background:#f0e4cf0a;border:1px solid #c3a46a73;width:100%;padding:clamp(8px,1.5vw,14px);box-shadow:0 40px 80px -30px #000c}.ending__media-frame .photo-frame--image,.ending__video{object-fit:contain;background:#120b08;width:100%;max-height:80svh}.ending__caption{font-family:var(--font-display);font-size:var(--text-lg);text-align:center;color:var(--on-dark-soft);font-style:italic;font-weight:500}.ending__finale{align-items:center;gap:var(--space-5);text-align:center;flex-direction:column;max-width:680px;display:flex}.ending__finale .ornament{color:var(--gold-light)}.ending__final-line{font-family:var(--font-display);color:var(--on-dark);font-size:clamp(1.8rem,1.3rem + 2.6vw,3rem);font-style:italic;font-weight:500;line-height:1.25}.ending__dates{font-size:var(--text-xs);letter-spacing:.22em;text-transform:uppercase;color:var(--gold-light);font-weight:600}.ending__again{align-items:center;gap:var(--space-2);min-height:44px;padding:0 var(--space-5);border-radius:var(--radius-pill);font-size:var(--text-xs);letter-spacing:.2em;text-transform:uppercase;color:var(--on-dark);cursor:pointer;transition:background var(--dur-base) var(--ease-out);background:0 0;border:1px solid #c3a46a80;font-weight:600;display:inline-flex}.ending__again:hover{background:var(--burgundy)}.ending .placeholder__text{color:var(--on-dark-soft)}.ending .placeholder__tag{color:var(--blush);border-color:#d9b4a880}.ending__letter .placeholder__text{color:var(--text-muted)}.ending__letter .placeholder__tag{color:var(--burgundy-soft);border-color:#8b344573}@keyframes candle{0%,to{opacity:.8;transform:translate(-50%)scale(1)}50%{opacity:1;transform:translate(-50%)scale(1.06)}}@keyframes seal-glow{0%,to{box-shadow:0 0 #c3a46a00}50%{box-shadow:0 0 0 10px #c3a46a2e}}@keyframes ending-unfold{0%{opacity:0;transform:rotateX(-80deg)scaleY(.3)}60%{opacity:1}to{transform:none}}@keyframes ending-line{0%{opacity:0;filter:blur(4px);transform:translateY(12px)}}.ceremony{z-index:90;padding:var(--gutter);background:radial-gradient(60% 50% at 50% 50%, #6c1a2b8c, transparent 75%), var(--espresso);animation:ceremony 4.2s var(--ease-in-out) both;place-items:center;display:grid;position:fixed;inset:0}.ceremony__inner{align-items:center;gap:var(--space-4);text-align:center;flex-direction:column;display:flex}.ceremony__line{background:linear-gradient(90deg, transparent, var(--gold-light), transparent);width:min(60vw,320px);height:1px;animation:ceremony-line 1.4s var(--ease-out) .5s both}.ceremony__small{font-size:var(--text-xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--gold-light);animation:ceremony-text 1.2s var(--ease-out) .9s both;font-weight:600}.ceremony__title{font-family:var(--font-display);color:var(--on-dark);animation:ceremony-text 1.4s var(--ease-out) 1.3s both;font-size:clamp(2.6rem,2rem + 4vw,4.6rem);font-style:italic;font-weight:400;line-height:1}@keyframes ceremony{0%{opacity:0}12%,70%{opacity:1;clip-path:inset(0)}to{opacity:1;clip-path:inset(0 0 100%)}}@keyframes ceremony-line{0%{transform:scaleX(0)}}@keyframes ceremony-text{0%{opacity:0;letter-spacing:.4em;filter:blur(6px);transform:translateY(14px)}}@media (prefers-reduced-motion:reduce){.ceremony{animation:none}}
