:root{--bg:#171613;--bg2:#1e1d19;--ink:#f1eee7;--muted:#aaa69c;--warm:#e8a88b;--line:rgba(255,255,255,0.15);--serif:"Cormorant Garamond",Georgia,serif;--sans:"DM Sans",Arial,sans-serif;--paper:#1e1d19;--dark:#171613}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}
section{scroll-margin-top:100px}
body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.6 var(--sans);-webkit-font-smoothing:antialiased;width:100%;overflow-x:hidden}
body:has(dialog[open]){overflow:hidden}
h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-weight:400;line-height:1.05}
button,a{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
button{font:inherit;cursor:pointer;color:inherit}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%;height:auto}
button:disabled{cursor:default;opacity:.6}
button:focus-visible,a:focus-visible{outline:2px solid var(--warm);outline-offset:6px}
[hidden]{display:none!important}
::selection{background:var(--warm);color:var(--dark)}
em{font-family:var(--serif);font-weight:400}

.section-shell{width:100%;max-width:1600px;padding-inline:max(24px,4vw);margin:0 auto;box-sizing:border-box}
.eyebrow{font-size:10px;line-height:1.7;letter-spacing:1.8px;font-weight:500;color:var(--muted)}
.button{border:0;min-height:54px;padding:15px 24px;display:inline-flex;align-items:center;justify-content:space-between;gap:32px;font-size:12px;transition:background .2s,transform .2s;border-radius:30px}
.button:hover{transform:translateY(-2px)}
.button-warm{background:var(--warm);color:#211c18}
.button-warm:hover{background:#f2b99e}
.button-dark{background:#282620;color:var(--ink);border:1px solid var(--line)}
.text-button{background:none;border:0;padding:12px 0;font-size:12px;text-decoration:underline;text-underline-offset:6px;color:var(--ink)}
.text-link{font-size:12px;text-decoration:underline;text-underline-offset:6px;color:var(--warm)}
.circle-button{width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--line);background:rgba(23,22,19,0.4);border-radius:50%;font-size:19px;line-height:1;transition:background .2s;color:var(--ink)}
.circle-button:hover{background:rgba(255,255,255,0.15)}

.site-header{position:absolute;left:0;right:0;top:0;padding:30px max(24px,4vw);display:flex;align-items:center;justify-content:space-between;gap:32px;z-index:5;color:#fff;width:100%}
.wordmark{display:flex;align-items:center;gap:20px;font-size:31px;font-weight:600;letter-spacing:-1.5px}
.wordmark span{font-size:9px;font-weight:400;letter-spacing:1px;border-left:1px solid rgba(255,255,255,0.3);padding-left:20px}
.site-header nav{display:flex;gap:32px;margin-left:auto;margin-right:40px;font-size:11px}
.site-header nav a{padding:10px 0;border-bottom:1px solid transparent}
.site-header nav a:hover{border-color:var(--warm)}
.music-button{border:0;background:none;display:flex;align-items:center;gap:10px;min-height:44px;font-size:11px}
.equalizer{display:flex;gap:3px;height:14px;align-items:center}
.equalizer i{width:2px;height:6px;background:currentColor}
.equalizer i:nth-child(2){height:12px;animation-delay:-.3s!important}
.equalizer i:nth-child(3){height:9px;animation-delay:-.5s!important}
.music-button[aria-pressed=true] .equalizer i{animation:equalize .7s alternate infinite}

.hero{height:100svh;min-height:730px;max-height:1150px;position:relative;isolation:isolate;overflow:hidden;background:#171613;width:100%}
.hero-slides,.hero-slide,.hero-shade{position:absolute;inset:0;width:100%;height:100%}
.hero-slide{opacity:0;transition:opacity 1.2s ease;overflow:hidden}
.hero-slide.is-active{opacity:1;z-index:1}
.hero-slide img,.hero-slide video{position:absolute;inset:0;height:100%;width:100%;object-fit:cover;object-position:var(--hero-position,50% 48%);transform:scale(1.02);transition:transform 6.8s linear}
.hero-slide.is-active img,.hero-slide.is-active video{transform:scale(1.065)}
.hero.is-paused .hero-slide img,.hero.is-paused .hero-slide video{transition:none;transform:scale(1.035)}
.hero-shade{z-index:2;background:linear-gradient(90deg,#171613 0%,rgba(23,22,19,0.92) 30%,rgba(23,22,19,0.4) 60%,rgba(23,22,19,0.15) 85%),linear-gradient(0deg,#171613 0%,transparent 35%,rgba(23,22,19,0.4) 100%);pointer-events:none}
.hero-copy{position:absolute;left:max(24px,4vw);bottom:160px;z-index:3;max-width:600px}
.hero-copy .eyebrow{font-size:9px;letter-spacing:2px;margin-bottom:30px;color:#d2c6b5}
.hero h1{font-family:var(--sans);font-size:clamp(75px,8.5vw,140px);font-weight:500;letter-spacing:-6px;line-height:.95;color:#ffffff}
.hero h1 em{font-size:1.18em;color:var(--warm);letter-spacing:-5px;line-height:.95}
.hero-message{font-size:13px;line-height:1.85;color:#ded5c9;margin-top:24px}
.hero-cta{display:inline-flex;align-items:center;gap:49px;border-bottom:1px solid #dfd1c1;font-size:12px;padding:12px 0;margin-top:24px;color:#ffffff}
.hero-cta span{font-size:22px;color:var(--warm)}
.hero-bottom{position:absolute;z-index:3;left:max(24px,4vw);right:max(24px,4vw);bottom:41px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.hero-dedication{font-size:10px;line-height:1.7;color:#b8b0a4}
.hero-player{display:flex;align-items:center;gap:10px}
.frame-count{font-size:10px;letter-spacing:2px;margin-right:15px;font-variant-numeric:tabular-nums;color:#ffffff}
.hero-player .circle-button{border-color:rgba(255,255,255,0.4);background:rgba(23,22,19,0.5);font-size:17px}
.hero-progress{position:absolute;z-index:3;bottom:0;left:max(24px,4vw);right:max(24px,4vw);display:flex;gap:5px;height:3px}
.hero-progress span{flex:1;background:rgba(255,255,255,0.2);position:relative;overflow:hidden}
.hero-progress span:after{content:"";position:absolute;inset:0;background:var(--warm);transform:scaleX(0);transform-origin:left}
.hero-progress span.done:after{transform:scaleX(1)}
.hero-progress span.current:after{animation:slide-progress 5.5s linear forwards}
.hero.is-paused .hero-progress span.current:after{animation-play-state:paused}

.memories-section{padding-block:100px 90px;background:#171613;width:100%;box-sizing:border-box}
.section-heading{display:grid;grid-template-columns:1fr 1fr;gap:23px 50px;align-items:end;margin-bottom:53px}
.section-heading .eyebrow{grid-column:1/-1;color:var(--muted)}
.section-heading h2{font-size:clamp(42px,4.8vw,66px);letter-spacing:-2.6px;line-height:1.04;color:#ffffff}
.section-heading h2 em{font-size:1.18em;color:var(--warm)}
.section-heading>p:last-child{font-size:12px;line-height:1.9;color:var(--muted);max-width:250px;justify-self:end;text-align:right}
.memory-layout{display:grid;grid-template-columns:minmax(280px,0.4fr) 1fr;gap:48px;align-items:stretch;width:100%}
.memory-info{padding-top:15px;display:flex;flex-direction:column;justify-content:space-between;gap:35px}
.memory-index{font-size:106px;letter-spacing:-7px;line-height:1;color:#8c8a80;font-weight:400;font-variant-numeric:tabular-nums}
.memory-info .eyebrow{font-size:8px;color:var(--muted);margin-bottom:16px}
.memory-info h3{font-size:28px;line-height:1.2;letter-spacing:-.8px;max-width:280px;color:#ffffff}
.memory-info p:not(.eyebrow){font-size:11px;color:var(--muted);max-width:260px;margin-top:16px;line-height:1.8}
.memory-navigation{display:flex;align-items:center;gap:12px}
.memory-navigation .text-button{margin-left:8px;font-size:10px}
.memory-hint{font-size:9px;color:#b3afa4;margin-top:auto}
.memory-screen{position:relative;background:#0d0d0b;border:1px solid rgba(255,255,255,0.12);border-radius:12px;min-width:0;overflow:hidden;width:100%;min-height:500px}
.memory-slides{position:relative;height:600px;max-height:75vh;width:100%}
.memory-slide{position:absolute;inset:0;opacity:0;transition:opacity .65s ease;pointer-events:none;display:flex;align-items:center;justify-content:center;width:100%;height:100%}
.memory-slide.is-active{opacity:1;z-index:1;pointer-events:auto;cursor:pointer}
.memory-slide img,.memory-slide video{width:100%;height:100%;object-fit:contain}
.expand-photo{position:absolute;bottom:18px;right:18px;z-index:2;background:rgba(17,16,14,0.85);color:#ffffff;border:1px solid rgba(255,255,255,0.25);padding:10px 16px;font-size:10px;backdrop-filter:blur(8px);border-radius:20px}
.expand-photo span{margin-left:14px;color:var(--warm)}
.memory-thumbnails{display:flex;justify-content:flex-start;gap:10px;padding-top:22px;overflow-x:auto;padding-bottom:10px;width:100%;scrollbar-width:thin}
.memory-thumb{border:2px solid transparent;padding:3px;background:none;position:relative;width:69px;height:79px;flex-shrink:0;opacity:.45;transition:opacity .25s,border-color .25s;border-radius:6px}
.memory-thumb img,.memory-thumb video{height:100%;width:100%;object-fit:cover;border-radius:4px}
.thumb-play-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;font-size:12px;background:rgba(0,0,0,0.6);width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;pointer-events:none}
.memory-thumb[aria-current=true],.memory-thumb:hover{opacity:1}
.memory-thumb[aria-current=true]{border-color:var(--warm)}

.celebration-section{background:#11100e;padding-block:90px 80px;border-block:1px solid rgba(255,255,255,0.08);overflow:hidden;width:100%}
.cake-heading{position:relative;z-index:10;margin-bottom:32px}
.cake-heading .eyebrow{color:var(--muted);font-size:9px;margin-bottom:19px}
.cake-heading h2{font-size:60px;letter-spacing:-2.5px;line-height:1.15;padding-bottom:8px;overflow:visible;color:#ffffff}
.cake-heading h2 em{color:var(--warm);font-size:1.18em}
.ceremony{display:grid;grid-template-columns:1.3fr 1fr;gap:40px;align-items:center;position:relative;z-index:1}
.cake-stage{min-width:0;position:relative}
.cake-art{position:relative;width:112%;margin-left:-6%;margin-top:0}
.photographic-cake{position:relative;aspect-ratio:1;isolation:isolate}
.cake-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;mask-image:linear-gradient(90deg,transparent,black 9%,black 91%,transparent)}
.cake-whole{opacity:1;transition:opacity .9s}
.cake-cut{opacity:0;transition:opacity .9s}
.cake-stage.is-cut .cake-cut{opacity:1}
.cake-stage.is-cut .cake-whole{opacity:0}
.cake-stage-bottom{display:flex;align-items:center;justify-content:space-between;gap:15px;font-size:11px;color:#d8d1c7;margin-top:14px;position:relative;z-index:2;padding-top:4px}
.cake-stage-bottom>span:last-child{font-size:8px;letter-spacing:1.8px;white-space:nowrap;color:var(--warm)}
.photo-candle{position:absolute;left:var(--left);bottom:var(--base);height:15%;width:36px;transform:translateX(-50%);padding:0;background:none;border:0;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:flex-end}
.photo-candle .wax{display:block;width:8px;height:66%;border-radius:3px 3px 1px 1px;background:repeating-linear-gradient(155deg,#c5a570 0px,#c5a570 5px,#fff2cf 6px,#edd1a1 8px,#fff2cf 10px,#c5a570 12px);box-shadow:inset 2px 0 2px #fff9,-1px 1px 3px #0008}
.wick{height:5px;width:1.5px;background:#2e2015;z-index:2}
.photo-candle .flame{display:block;position:absolute;left:50%;bottom:calc(66% + 4px);margin-left:-6px;width:12px;height:25px;border-radius:60% 40% 50% 50% / 75% 75% 25% 25%;background:radial-gradient(ellipse at 50% 80%,#fffdef 0%,#ffe29b 35%,#f5a448 72%,#d56c27 100%);box-shadow:0 0 10px 3px #f7b75265,0 0 33px 12px #ffc77b25;transform-origin:50% 100%;animation:flicker .75s ease-in-out alternate infinite}
.photo-candle:nth-of-type(2n) .flame{animation-delay:-.5s;animation-duration:.9s}
.photo-candle .flame i{position:absolute;bottom:1px;left:4px;width:4px;height:9px;background:#fffef3;border-radius:50%}
.photo-candle.out .flame{opacity:0;animation:none;transition:opacity .2s}
.photo-candle .smoke{opacity:0;position:absolute;bottom:70%;left:calc(50% - 6px);width:13px;height:25px;border-radius:50%;background:radial-gradient(ellipse,#c7c0b67a,transparent 65%);pointer-events:none}
.photo-candle.out .smoke{animation:smoke 1.8s ease-out}
.cake-stage.is-cut .photo-candle{opacity:0;transition:opacity .5s}
.cake-knife{position:absolute;left:55%;top:35%;height:34%;width:3%;z-index:5;opacity:0;transform:rotate(-25deg);transform-origin:50% 0;pointer-events:none}
.cake-knife:before{content:"";position:absolute;top:0;left:0;width:100%;height:38%;background:linear-gradient(90deg,#201a16,#4c3b2c,#1d1814);border-radius:5px}
.cake-knife span{position:absolute;top:35%;left:0;width:100%;height:65%;background:linear-gradient(90deg,#77817b,#f2eee1 45%,#9eaaa1);border-radius:0 0 0 65%}
.cake-stage.cutting .cake-knife{animation:knife 1.1s ease-in-out}
.cut-guide{position:absolute;left:50%;top:51%;width:18%;height:3px;background:#ddd3b77d;transform:rotate(25deg);transform-origin:left;opacity:0}
.ceremony-controls{padding:54px 0 18px 25px;max-width:415px}
.ceremony-steps{display:flex;list-style:none;padding:0;margin:0 0 50px;gap:24px;font-size:10px;color:#858279}
.ceremony-steps span{font-size:8px;margin-right:7px}
.ceremony-steps .active{color:var(--warm)}
.ceremony-steps .done{color:#c8b3a0}
.ceremony-controls>.eyebrow{font-size:8px;color:var(--warm);margin-bottom:15px}
.ceremony-controls h3{font:42px/1.06 var(--serif);margin-bottom:21px;letter-spacing:-.5px;color:#ffffff}
.ceremony-controls>p:not(.eyebrow):not(.status-note){font-size:12px;line-height:1.85;max-width:310px;color:var(--muted)}
.ceremony-actions{display:flex;flex-direction:column;align-items:stretch;gap:11px;margin-top:28px;max-width:350px}
.ceremony-actions .button{font-size:11px;gap:14px}
.ceremony-actions .text-button{align-self:flex-start;text-decoration:none;border-bottom:1px solid rgba(255,255,255,0.25);font-size:10px}
.status-note{font-size:9px;line-height:1.6;color:#a8a297;margin-top:16px;max-width:330px}
.ceremony-controls .text-link{display:inline-block;margin-top:20px;font-size:11px}
.mic-meter{margin-top:18px}
.meter-track{height:3px;background:rgba(255,255,255,0.1)}
.meter-track span{display:block;height:100%;width:0;background:var(--warm);transition:width .1s}
.mic-meter>span{font-size:9px;color:var(--muted);display:block;margin-top:7px}

.letter-section{background:#171613;color:var(--ink);padding-block:110px;width:100%}
.letter-layout{display:grid;grid-template-columns:.85fr 1.15fr;gap:120px;align-items:center;width:100%}
.letter-aside>.eyebrow{font-size:8px;color:var(--muted)}
.letter-aside h2{font-size:84px;letter-spacing:-4px;margin:24px 0 35px;color:#ffffff}
.letter-aside h2 em{font-size:1.2em;line-height:.9;color:var(--warm)}
.letter-aside figure{width:195px}
.letter-aside img{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:50% 35%;border-radius:10px}
.letter-aside figcaption{font-size:9px;color:var(--muted);margin-top:12px}
.letter-holder{border-top:1px solid rgba(255,255,255,0.15);padding-top:32px;min-width:0}
.letter-date{font-size:10px;letter-spacing:1px;color:var(--muted)}
.letter-teaser{font:52px/1.14 var(--serif);letter-spacing:-1px;margin:42px 0;color:#ffffff}
.letter-teaser em{color:var(--warm)}
.letter-personal{font-size:10px;color:var(--muted);margin-top:23px}
.letter-paper{animation:letter-in .5s ease both}
.letter-paper h3{font:italic 40px var(--serif);margin:28px 0 25px;color:var(--warm)}
.letter-paper #letter-text p{font:22px/1.5 var(--serif);margin-bottom:20px;color:var(--ink)}
.letter-signoff{font:italic 28px var(--serif);color:var(--warm);margin:29px 0 22px}
.letter-options{display:flex;justify-content:space-between;gap:20px}
.letter-options .text-button{font-size:10px}

.site-footer{display:flex;justify-content:space-between;align-items:center;padding:28px max(24px,4vw);gap:25px;background:#171613;border-top:1px solid rgba(255,255,255,0.1);width:100%}
.site-footer>a:first-child{font-size:23px;letter-spacing:-1px;color:#ffffff}
.site-footer>span{font-size:8px;letter-spacing:1.2px;color:var(--muted)}
.site-footer>a:last-child{font-size:10px;color:var(--muted)}

#celebration-canvas{position:fixed;inset:0;pointer-events:none;z-index:20;width:100%;height:100%}
.photo-dialog{background:#0d0d0b;color:var(--ink);border:0;padding:28px 72px;width:100vw;height:100dvh;max-width:100vw;max-height:100dvh;margin:0}
.photo-dialog::backdrop{background:rgba(13,13,11,0.95);backdrop-filter:blur(10px)}
.photo-dialog[open]{display:flex;align-items:center;justify-content:center}
.photo-dialog figure{height:100%;max-width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.photo-dialog figure img{max-height:calc(100dvh - 165px);max-width:100%;width:auto;object-fit:contain}
.photo-dialog figcaption{font-size:15px;margin:14px 0 6px;color:#ffffff}
.photo-dialog #photo-counter{font-size:9px;letter-spacing:2px;color:var(--muted)}
.photo-dialog .text-button{font-size:10px;padding:8px 0;color:var(--warm)}

.letter-dialog{background:#0d0d0b;color:var(--ink);border:0;padding:40px 24px;width:100vw;height:100dvh;max-width:100vw;max-height:100dvh;margin:0;overflow-y:auto}
.letter-dialog::backdrop{background:rgba(13,13,11,0.95);backdrop-filter:blur(10px)}
.letter-dialog[open]{display:flex;align-items:center;justify-content:center}
.letter-dialog-container{max-width:650px;width:100%;padding:44px 36px;background:#171613;border:1px solid rgba(255,255,255,0.15);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,0.8);position:relative;animation:letter-in .4s ease-out}
.letter-modal-salutation{font:italic 38px var(--serif);margin:20px 0 20px;color:var(--warm)}
.letter-modal-text p{font:20px/1.6 var(--serif);margin-bottom:18px;color:#f1eee7}
.letter-dialog .letter-options{margin-top:32px;display:flex;align-items:center;justify-content:space-between;gap:16px}

.dialog-close,.photo-arrow{position:absolute;background:rgba(255,255,255,0.08);color:var(--ink);border:1px solid rgba(255,255,255,0.25);width:44px;height:44px;border-radius:50%;font:24px var(--sans);display:grid;place-items:center;transition:background .2s}
.dialog-close:hover,.photo-arrow:hover{background:rgba(255,255,255,0.2)}
.dialog-close{right:22px;top:22px;font-size:28px}
.photo-arrow{top:50%}
.photo-previous{left:18px}
.photo-next{right:18px}

.toast{position:fixed;left:50%;bottom:25px;transform:translate(-50%,20px);background:#1e1d19;color:var(--ink);border:1px solid rgba(255,255,255,0.2);padding:14px 22px;font-size:12px;line-height:1.6;width:max-content;max-width:calc(100% - 36px);box-shadow:0 8px 30px rgba(0,0,0,0.5);border-radius:30px;opacity:0;pointer-events:none;z-index:30;transition:opacity .25s,transform .25s;text-align:center}
.toast.visible{opacity:1;transform:translate(-50%,0)}
.skip-link{position:fixed;top:-100px;left:18px;padding:14px;background:#1e1d19;color:var(--ink);border:1px solid var(--warm);border-radius:8px;z-index:100}
.skip-link:focus{top:15px}
.noscript-note{padding:20px;background:#1e1d19;color:var(--ink)}

@keyframes flicker{0%{transform:rotate(-3deg) scale(.98,1.04)}45%{transform:rotate(3deg) scale(.93,.96)}100%{transform:rotate(-2deg) scale(1,1.07)}}
@keyframes equalize{from{transform:scaleY(.4)}to{transform:scaleY(1.1)}}
@keyframes smoke{0%{opacity:.1;transform:translateY(0) scale(.7)}20%{opacity:.7}100%{opacity:0;transform:translate(12px,-45px) scale(2.5)}}
@keyframes knife{0%{opacity:0;transform:translateY(-65px) rotate(-25deg)}20%{opacity:1;transform:translateY(-30px) rotate(-25deg)}70%{opacity:1;transform:translateY(55px) rotate(-25deg)}100%{opacity:0;transform:translate(25px,-30px) rotate(-25deg)}}
@keyframes slide-progress{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes letter-in{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:none}}

@media(min-width:1550px){.hero-copy{bottom:190px}.hero-message{font-size:14px}.hero h1{font-size:150px}}
@media(max-width:1100px){.site-header{padding:25px 32px}.site-header nav{gap:20px;margin-right:15px}.hero{min-height:720px}.hero-copy{left:32px;bottom:155px}.hero h1{font-size:95px;letter-spacing:-4px}.hero-bottom{left:32px;right:32px}.hero-progress{left:32px;right:32px}.memory-layout{gap:35px;grid-template-columns:.5fr 1fr}.memory-slides{height:520px}.memory-info h3{font-size:25px}.memory-index{font-size:88px}.ceremony{gap:20px}.ceremony-controls{padding-left:15px}.ceremony-controls h3{font-size:36px}.cake-heading h2{font-size:52px}.letter-layout{gap:60px}.letter-teaser{font-size:46px}.site-footer{padding-inline:32px}}
@media(max-width:760px){.site-header{padding:20px 20px}.wordmark{font-size:24px;gap:12px}.wordmark span{padding-left:12px;font-size:8px}.site-header nav{display:none}.music-button{font-size:10px}.hero{height:100svh;min-height:750px}.hero-shade{background:linear-gradient(0deg,#171613 0%,rgba(23,22,19,0.92) 20%,rgba(23,22,19,0.5) 45%,rgba(23,22,19,0.1) 75%,rgba(23,22,19,0.6) 100%)}.hero-copy{left:20px;right:20px;bottom:140px}.hero-copy .eyebrow{font-size:7px;letter-spacing:1.4px;margin-bottom:20px}.hero h1{font-size:75px;letter-spacing:-4px;line-height:.95}.hero h1 em{font-size:1.14em;letter-spacing:-3px}.hero-message{font-size:11px;margin-top:19px;line-height:1.8}.hero-cta{font-size:11px;margin-top:15px;padding:8px 0;gap:40px}.hero-bottom{left:20px;right:20px;bottom:28px;align-items:end}.hero-dedication{font-size:8px;line-height:1.8;max-width:130px}.hero-player{gap:7px;flex-wrap:wrap;justify-content:flex-end;width:150px}.hero-player .circle-button{width:35px;height:35px;font-size:15px}.frame-count{font-size:8px;margin:0 5px 2px 0;width:100%;text-align:right}.hero-progress{left:20px;right:20px;height:2px}.memories-section{padding-block:65px 50px}.section-heading{display:block;margin-bottom:33px}.section-heading .eyebrow{font-size:8px;margin-bottom:16px}.section-heading h2{font-size:44px;letter-spacing:-2px}.section-heading>p:last-child{text-align:left;font-size:11px;margin-top:20px;max-width:none}.memory-layout{display:flex;flex-direction:column;gap:24px}.memory-info{display:grid;grid-template-columns:56px 1fr;gap:16px 18px;padding:0}.memory-index{font-size:61px;letter-spacing:-4px;align-self:center}.memory-info>div:nth-child(2){padding-top:7px}.memory-info .eyebrow{display:none}.memory-info h3{font-size:20px;max-width:none;letter-spacing:-.4px}.memory-info p:not(.eyebrow){font-size:10px;max-width:none;margin-top:7px}.memory-navigation{grid-column:1/-1;gap:9px}.memory-navigation .circle-button{width:37px;height:37px}.memory-navigation .text-button{font-size:10px}.memory-hint{font-size:8px;grid-column:1/-1;margin-top:-3px}.memory-slides{height:480px}.expand-photo{bottom:12px;right:12px;font-size:9px}.memory-thumbnails{gap:7px;padding-top:15px}.memory-thumb{height:64px;width:56px;padding:2px}.celebration-section{padding-block:60px 50px}.cake-heading .eyebrow{font-size:7px;letter-spacing:1.1px;margin-bottom:16px}.cake-heading h2{font-size:42px;letter-spacing:-2px;line-height:1.15;padding-bottom:8px}.ceremony{display:block}.cake-art{margin-top:0;width:118%;margin-left:-9%}.cake-stage-bottom{margin-top:-8px;font-size:9px}.photo-candle{width:28px}.photo-candle .wax{width:6px}.photo-candle .flame{width:10px;height:20px;margin-left:-5px;box-shadow:0 0 9px 3px #f7b75260,0 0 20px 8px #ffc77b22}.ceremony-controls{padding:35px 0 0;max-width:none}.ceremony-steps{margin-bottom:25px;gap:20px;font-size:10px}.ceremony-controls h3{font-size:34px;max-width:300px;margin-bottom:18px}.ceremony-controls>.eyebrow{font-size:7px}.ceremony-controls>p:not(.eyebrow):not(.status-note){font-size:12px;max-width:none}.ceremony-actions{max-width:none;margin-top:24px}.ceremony-actions .button{font-size:12px}.ceremony-actions .text-button{font-size:11px;align-self:center}.status-note{font-size:9px;max-width:none}.letter-section{padding-block:65px}.letter-layout{display:block}.letter-aside{position:relative;min-height:220px;padding-right:125px}.letter-aside>.eyebrow{font-size:7px;max-width:160px;display:block;letter-spacing:1.1px}.letter-aside h2{font-size:65px;margin:20px 0;letter-spacing:-3px}.letter-aside figure{position:absolute;right:0;top:0;width:108px}.letter-aside figcaption{font-size:8px;line-height:1.5;margin-top:8px}.letter-holder{padding-top:25px}.letter-teaser{font-size:43px;margin-block:30px}.letter-date{font-size:9px}.letter-personal{font-size:10px}.letter-paper #letter-text p{font-size:21px}.letter-paper h3{font-size:35px}.letter-signoff{font-size:26px}.site-footer{padding:26px 20px;flex-wrap:wrap;gap:20px}.site-footer>span{order:3;width:100%;font-size:7px}.site-footer>a:last-child{font-size:9px}.photo-dialog{padding:65px 16px 90px}.photo-dialog figure img{max-height:calc(100dvh - 230px)}.photo-dialog figcaption{font-size:13px}.photo-arrow{top:auto;bottom:24px}.photo-previous{left:calc(50% - 57px)}.photo-next{right:calc(50% - 57px)}.dialog-close{top:14px;right:14px}.toast{font-size:11px}}
@media(max-width:370px){.hero h1{font-size:68px}.hero{min-height:750px}.hero-copy{bottom:157px}.section-heading h2{font-size:41px}.cake-heading h2{font-size:37px}.letter-aside{padding-right:110px}.letter-aside figure{width:96px}.letter-aside h2{font-size:57px}.letter-teaser{font-size:38px}.hero-player{width:130px}.hero-dedication{max-width:115px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.hero-slide img,.hero-slide.is-active img{transform:none}#celebration-canvas{display:none}.hero-progress span.current:after{transform:scaleX(1)}}
