:root{--bg:#241018;--ivory:#f4e9db;--gold:#cfb180;--muted:#bea9a8;--blush:#eed0ca}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:85px}body{margin:0;background:var(--bg);color:var(--ivory);font-family:Arial,sans-serif;font-size:16px;line-height:1.7}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,video:focus-visible,audio:focus-visible{outline:3px solid var(--gold);outline-offset:5px}button{min-height:44px}h1,h2,p,figure{margin:0}h1,h2{font-family:Georgia,serif;font-weight:400;line-height:1.06;letter-spacing:-.045em}h1{font-size:clamp(48px,7vw,96px)}h2{font-size:clamp(42px,5.8vw,78px)}em{color:var(--gold);font-weight:400}p{margin-top:20px}img{display:block;width:100%;height:100%;object-fit:cover}header{position:sticky;top:0;z-index:5;display:flex;justify-content:space-between;align-items:center;padding:18px 5%;background:#241018f0;border-bottom:1px solid #ffffff12;backdrop-filter:blur(15px)}.brand{font:italic 24px Georgia}.brand span{color:var(--gold)}nav{display:flex;gap:32px;font-size:12px;letter-spacing:.04em}.music{border:1px solid #ffffff25;border-radius:30px;background:transparent;color:var(--ivory);padding:5px 17px;font-size:12px}.music[aria-pressed=true]{color:var(--gold);box-shadow:0 0 20px #cfb18022}.section{padding:110px 7%;max-width:1600px;margin:auto}.eyebrow{font-size:10px;font-weight:600;letter-spacing:.24em;color:var(--gold);margin:0 0 24px}.muted{color:var(--muted)}.small,small{font-size:12px}.button{display:inline-flex;gap:25px;align-items:center;justify-content:center;background:var(--gold);color:#2b151d;border:0;padding:16px 26px;border-radius:2px;transition:background .25s,transform .25s}.button:hover{background:#e2cda8;transform:translateY(-2px)}.text-link{display:inline-block;border:0;border-bottom:1px solid var(--gold);padding:10px 0;background:transparent;color:var(--gold);font-size:13px}.text-link span{padding-left:22px}.opening{min-height:100svh;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:70px 24px;position:relative;overflow:hidden;background:radial-gradient(ellipse at 50% 40%,#71324055,transparent 65%),#1e1017}.opening h1{position:relative;animation:entrance 1.4s both}.opening-name{font:italic 30px Georgia;color:var(--gold)}.opening>.button{margin:35px 0 25px}.opening small{color:var(--muted);letter-spacing:.05em}.ornament{color:var(--gold);font-size:42px;margin:0 0 28px}.dust{position:absolute;inset:0;pointer-events:none;background-image:radial-gradient(circle,#d6ac794a 1px,transparent 2px),radial-gradient(circle,#e3b8ac45 2px,transparent 3px);background-size:119px 137px,241px 223px;animation:drift 18s linear infinite;opacity:.5}.opening.leaving{opacity:0;transition:opacity .65s}.hero{display:grid;grid-template-columns:1.05fr 1fr;gap:9%;align-items:center;position:relative;min-height:85vh;padding-top:70px}.hero-copy .muted{max-width:380px;font-size:14px}.dedication{font:22px/1.6 Georgia;margin:30px 0 0}.hero-copy .text-link{margin-top:25px}.hero-frame{height:560px;padding:12px 12px 45px;background:#e7d5c4;transform:rotate(3deg);position:relative;color:#3d2530;box-shadow:0 20px 80px #0005}.hero-frame img{height:100%;filter:saturate(.8)}.hero-frame figcaption{font-size:9px;letter-spacing:.17em;text-align:center;padding-top:15px}.frame-note{position:absolute;bottom:90px;left:-50px;color:var(--ivory);font:italic 26px Georgia;transform:rotate(-10deg);text-shadow:0 2px 12px #000}.hero-number{position:absolute;bottom:35px;font-size:9px;letter-spacing:.23em;color:var(--muted)}.section-title{max-width:650px;margin-bottom:70px}.section-title>p:last-child{max-width:440px;color:var(--muted);font-size:14px}.timeline{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:50px 100px}.timeline:before{content:'';position:absolute;width:1px;left:50%;top:0;bottom:0;background:#cfb18044}.milestone{padding:20px 0;position:relative}.milestone:nth-child(even){margin-top:100px}.milestone:before{content:'✧';position:absolute;right:-61px;color:var(--gold)}.milestone:nth-child(even):before{left:-60px;right:auto}.milestone h3{font:32px Georgia;font-weight:400;margin:12px 0}.milestone p{font-size:14px;color:var(--muted);max-width:350px}.milestone .date{color:var(--gold);font-size:10px;letter-spacing:.16em}.milestone img{height:200px;margin:20px 0;max-width:350px;border-radius:3px}.memories{max-width:none;background:radial-gradient(ellipse at 20% 30%,#f9e0d8,transparent 60%),var(--blush);color:#41232b;overflow:hidden}.memories em{color:#8d4c59}.memories .eyebrow{color:#8d4c59}.memories .muted,.memories .section-title>p:last-child{color:#79545a}.gallery{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:36px 28px;padding:0 12px 40px}.polaroid{border:0;background:#fff9ef;padding:10px 10px 16px;box-shadow:0 6px 12px #4c20221a;color:#41232b;transform:rotate(-3deg);transition:transform .3s,box-shadow .3s;position:relative;text-align:left;width:100%;align-self:start}.polaroid:nth-child(3n){transform:rotate(4deg);margin-top:24px}.polaroid:nth-child(5n){transform:rotate(2deg)}.polaroid:hover{transform:rotate(0) translateY(-7px);box-shadow:0 15px 30px #4c202230;z-index:1}.polaroid img{aspect-ratio:4/5;height:auto}.polaroid:nth-child(3n+2) img{aspect-ratio:1/1}.polaroid .caption{display:block;font:italic 19px/1.3 Georgia;padding:15px 4px 0}.polaroid .date{font-size:10px;color:#79545a;display:block;margin:5px}.polaroid:nth-child(7n+1):after{content:'♡';position:absolute;right:-12px;top:-32px;font:64px Georgia;color:#47252d;transform:rotate(20deg);pointer-events:none}.film-layout{display:grid;grid-template-columns:1.8fr 1fr;gap:55px;align-items:center}.screen{position:relative;background:#160d11;aspect-ratio:16/10;overflow:hidden;border:1px solid #cfb18033}video{width:100%;height:100%;object-fit:contain}.video-fallback{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;flex-direction:column;background:radial-gradient(ellipse,#70424b88,#1e121c);text-align:center;padding:24px}.video-fallback span{font-size:44px;color:var(--gold)}.video-fallback small{color:var(--muted)}.clips button{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid #ffffff22;background:transparent;color:var(--ivory);padding:18px 10px;font:20px Georgia}.clips button[aria-pressed=true]{color:var(--gold);background:#cfb1800b}.clips button span{font:11px Arial;margin-right:16px;color:var(--muted)}.letter-section{max-width:none;background:#f2e6d6;color:#412b2a;position:relative}.letter-wrap{max-width:670px;margin:auto}.letter-section .eyebrow{color:#8d5f45}.letter-section em{color:#996749}.dark{background:#41232b;color:#f2e6d6;margin-top:35px}.letter-section article{font:20px/1.95 Georgia;animation:entrance .7s both}.salutation{font-style:italic;font-size:28px;margin-top:40px}.signature{font-style:italic;margin:30px 0}.voice{border-top:1px solid #412b2a33;padding-top:22px;margin-top:45px}.voice .text-link{color:#714937;border-color:#714937}.voice audio{width:100%;margin-top:20px}.voice .small{color:#79545a}.counter-section{text-align:center}.counter{display:flex;justify-content:center;gap:50px;flex-wrap:wrap;margin:50px 0 25px}.counter div{min-width:95px}.counter strong{display:block;font:64px Georgia;color:var(--gold)}.counter span{font-size:10px;letter-spacing:.2em;text-transform:uppercase}.wish-section{text-align:center;background:radial-gradient(ellipse at 50% 55%,#69303c55,transparent 65%);position:relative;overflow:hidden}.cake{width:240px;height:220px;margin:60px auto 25px;position:relative}.candles{display:flex;gap:34px;justify-content:center;height:65px;align-items:end}.candles i{display:block;width:9px;height:45px;background:repeating-linear-gradient(45deg,#dbb780 0 5px,#f1dfbc 5px 10px);position:relative}.candles b{position:absolute;top:-25px;left:0;width:10px;height:20px;border-radius:60% 40% 60% 40%;background:#ffe3a6;box-shadow:0 0 20px #ffc778;animation:flicker 1.8s infinite alternate}.cake-top{height:25px;border-radius:50%;background:#fae6d4;position:relative;z-index:1}.cake-tier{height:100px;background:linear-gradient(90deg,#b26a70,#dc9d9b,#b26a70);margin-top:-12px;border-radius:0 0 16px 16px;display:grid;place-items:center;border-bottom:12px solid #e9c3b1}.cake-tier span{font:38px Georgia;color:#f5e3d4}.cake-base{height:12px;background:#cfb180;border-radius:50%;width:280px;margin-left:-20px}.cake.out b{animation:none;opacity:0;transform:translateY(-15px);transition:.5s}.wish-message{color:var(--gold);font:italic 23px/1.5 Georgia;min-height:70px;max-width:560px;margin:25px auto}.confetto{position:absolute;top:40%;width:6px;height:12px;background:var(--gold);animation:confetti 2.5s ease-out forwards}.finale{display:grid;grid-template-columns:1fr 1fr;gap:10%;align-items:center}.finale figure{height:500px;overflow:hidden;border-radius:180px 180px 2px 2px}.finale p{max-width:400px;color:var(--muted)}.finale .text-link{margin-top:30px}.made{font:italic 18px Georgia;margin-top:60px}footer{padding:30px 7%;border-top:1px solid #ffffff20;font-size:9px;letter-spacing:.2em;display:flex;justify-content:space-between}dialog{border:1px solid #cfb18066;background:#241018;color:var(--ivory);padding:25px;width:min(92vw,900px);max-height:94svh}dialog::backdrop{background:#10070de8;backdrop-filter:blur(8px)}.lightbox-content img{height:65svh;object-fit:contain}.lightbox-content p{text-align:center;font:20px Georgia}.lightbox-nav{display:flex;justify-content:center;align-items:center;gap:35px;margin-top:20px}.lightbox-nav button,.close{background:transparent;border:1px solid #ffffff40;color:var(--ivory);width:45px;font-size:22px}.close{position:absolute;right:15px;top:15px;background:#241018;z-index:2}.toast{position:fixed;bottom:25px;right:20px;z-index:20;max-width:calc(100% - 40px);background:#f2e6d6;color:#41232b;padding:0;font-size:13px;border-radius:3px}.toast:not(:empty){padding:14px 22px}.skip{position:fixed;top:-100px;z-index:30;background:var(--ivory);color:var(--bg);padding:15px}.skip:focus{top:10px}.js .reveal{opacity:0;transform:translateY(25px);transition:opacity .8s,transform .8s}.js .reveal.visible{opacity:1;transform:none}[hidden]{display:none!important}@keyframes entrance{from{opacity:0;transform:translateY(20px);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}@keyframes drift{to{transform:translateY(-137px)}}@keyframes flicker{to{transform:scale(.88) rotate(7deg)}}@keyframes confetti{to{transform:translate(var(--x),var(--y)) rotate(480deg);opacity:0}}@media(min-width:900px){.hero-frame img{animation:gentle 20s ease-in-out infinite alternate}@keyframes gentle{to{object-position:52% 48%}}}@media(max-width:900px){.section{padding:80px 6%}.hero{gap:6%}.hero-frame{height:430px}.gallery{grid-template-columns:repeat(3,minmax(0,1fr));gap:28px 20px}nav{gap:18px}.film-layout{gap:30px}.timeline{gap:35px 65px}.milestone:before{right:-44px}.milestone:nth-child(even):before{left:-43px}.finale{gap:6%}.finale figure{height:400px}}@media(max-width:600px){header{padding:12px 5%;flex-wrap:wrap;gap:10px}.brand{font-size:22px}nav{order:3;width:100%;justify-content:space-between;font-size:11px;gap:8px}.music{font-size:11px}.section{padding:70px 6%}.hero{grid-template-columns:1fr;padding-top:55px;gap:45px}.hero h2{font-size:58px}.hero-frame{height:440px;width:88%;margin:auto}.frame-note{left:-15px;font-size:24px}.hero-number{position:static;margin-top:20px}.opening h1{font-size:49px}.opening .eyebrow{font-size:9px;letter-spacing:.17em}.opening .button{gap:12px;padding:16px 20px}.timeline{display:block;padding-left:25px}.timeline:before{left:0}.milestone,.milestone:nth-child(even){margin:0 0 35px;padding:0}.milestone:before,.milestone:nth-child(even):before{left:-34px;right:auto}.gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 17px;padding:0 2px 25px}.polaroid{padding:7px 7px 12px}.polaroid .caption{font-size:16px}.polaroid:nth-child(7n+1):after{font-size:44px;top:-23px;right:-9px}.film-layout,.finale{grid-template-columns:1fr;gap:40px}.counter{gap:25px}.counter strong{font-size:46px}.counter div{min-width:90px}.letter-section article{font-size:18px}.finale figure{height:410px;width:90%;margin:auto}.lightbox-content img{height:55svh}.section-title{margin-bottom:45px}.screen{aspect-ratio:4/3}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.js .reveal{opacity:1;transform:none}.opening h1{filter:none}}
.birthday-date{display:inline-block;color:var(--gold);border:1px solid #cfb18066;background:#cfb1800c;border-radius:40px;padding:10px 24px;font:20px/1.4 Georgia,serif;letter-spacing:.04em;margin-top:20px;position:relative}.hero-birthday{margin-top:26px;font-size:clamp(19px,3vw,25px);box-shadow:0 0 30px #cfb1800a}
.surprise-countdown{position:relative;margin-top:24px;text-align:center;padding:18px 30px;border:1px solid #cfb18044;border-radius:8px;background:#cfb18008;max-width:100%}.countdown-label{margin:0;color:var(--muted);font-size:11px;letter-spacing:.14em;text-transform:uppercase}.countdown-digits{font:clamp(36px,7vw,52px)/1.4 Georgia,serif;color:var(--gold);font-variant-numeric:tabular-nums;letter-spacing:.08em;margin-top:8px}.countdown-status{margin:0;color:var(--gold);font:italic 17px/1.5 Georgia,serif}.surprise-countdown.ready{border-color:var(--gold)}
.countdown-digits{display:flex;justify-content:center;gap:clamp(12px,3vw,28px);letter-spacing:0}.countdown-unit{display:flex;flex-direction:column;align-items:center;min-width:42px}.countdown-unit strong{font-weight:400}.countdown-unit small{font:9px/1.5 Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.countdown-target{font-size:12px;color:var(--gold);margin-top:16px}.countdown-clock{font-size:11px;color:var(--muted);margin-top:6px}.countdown-status:not(:empty){margin-top:12px}@media(max-width:400px){.surprise-countdown{padding:18px 16px}.countdown-digits{font-size:32px}}
.top-countdown{position:sticky;top:0;z-index:10;width:100%;max-width:none;margin:0;border-radius:0;border-width:0 0 1px;padding:10px 5%;display:grid;grid-template-columns:1fr auto 1fr;gap:4px 24px;align-items:center;background:#241018f5;backdrop-filter:blur(15px)}.top-countdown .countdown-label{text-align:left}.top-countdown .countdown-digits{grid-column:2;grid-row:1 / span 2;margin:0;font-size:27px;gap:20px}.top-countdown .countdown-target{grid-column:3;grid-row:1;text-align:right;margin:0}.top-countdown .countdown-clock{grid-column:3;grid-row:2;text-align:right;margin:0}.top-countdown .countdown-status{grid-column:1;grid-row:2;text-align:left;margin:0;font-size:12px}body:has(.top-countdown) header{top:82px}html:has(.top-countdown){scroll-padding-top:180px}@media(max-width:600px){.top-countdown{grid-template-columns:1fr auto;padding:8px 4%;gap:4px 12px}.top-countdown .countdown-label{font-size:9px;letter-spacing:.05em}.top-countdown .countdown-digits{grid-column:2;grid-row:1 / span 3;font-size:23px;gap:10px}.top-countdown .countdown-unit{min-width:30px}.top-countdown .countdown-unit small{font-size:7px}.top-countdown .countdown-target{grid-column:1;grid-row:2;text-align:left;font-size:10px}.top-countdown .countdown-clock{grid-column:1;grid-row:3;text-align:left;font-size:9px}.top-countdown .countdown-status{grid-column:1 / -1;grid-row:4;text-align:center}body:has(.top-countdown) header{top:86px}html:has(.top-countdown){scroll-padding-top:195px}}
body:has(.top-countdown) header{top:var(--countdown-height,86px)}html:has(.top-countdown){scroll-padding-top:calc(var(--countdown-height,86px) + var(--navigation-height,85px) + 15px)}
