@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&family=Manrope:wght@400;500;600;700&display=swap');
:root{--paper:#f5eee4;--ink:#453c32;--muted:#827567;--accent:#975940;--line:#d9caba}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Manrope,Arial,sans-serif}.grain{position:fixed;inset:0;pointer-events:none;opacity:.15;z-index:5;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23867561' opacity='.22' filter='url(%23n)' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}header,footer{max-width:1320px;margin:auto;padding:30px 5%;display:flex;align-items:center;justify-content:space-between}header{border-bottom:1px solid var(--line)}a{color:inherit}.brand{text-decoration:none;font-family:'Cormorant Garamond',Georgia,serif;font-size:28px}.brand span{color:var(--accent);margin-left:10px}.date{font-size:11px;letter-spacing:.14em;color:var(--muted)}h1,h2,p,figure{margin:0}h1,h2{font-family:'Cormorant Garamond',Georgia,serif;font-weight:400}h1{font-size:clamp(64px,7.2vw,112px);line-height:.98;letter-spacing:-.045em}em{font-weight:400;color:var(--accent)}.eyebrow{font-size:10px;letter-spacing:.22em;font-weight:600;color:var(--muted);margin-bottom:29px;line-height:1.8}.intro{font-size:15px;line-height:1.9;margin-top:32px;color:var(--muted)}.waiting{text-align:center;min-height:calc(100svh - 180px);padding:45px 20px 55px;display:flex;flex-direction:column;align-items:center;justify-content:center}.flower{font-size:47px;color:var(--accent);margin-bottom:20px}.waiting .eyebrow{margin-bottom:22px}.waiting h1{font-size:clamp(62px,7vw,96px)}.countdown{display:flex;gap:23px;align-items:flex-start;margin-top:34px}.countdown div{min-width:67px}.countdown b{font:500 48px 'Cormorant Garamond',Georgia,serif;font-variant-numeric:tabular-nums}.countdown span{display:block;font-size:9px;letter-spacing:.16em;color:var(--muted);margin-top:3px}.countdown i{font:30px Georgia;color:#baaa97;margin-top:9px}.waiting-note{font-family:'Cormorant Garamond',Georgia,serif;font-style:italic;font-size:23px;margin-top:35px;color:var(--accent)}.hero{max-width:1220px;margin:auto;padding:76px 5% 95px;display:grid;grid-template-columns:1.1fr 1fr;align-items:center;gap:65px;position:relative}.hero-photo{background:#fffbf4;padding:13px 13px 23px;transform:rotate(3deg);box-shadow:0 16px 45px #493b2420}.hero-photo img{width:100%;height:510px;object-fit:cover;object-position:center 46%;display:block}.hero-photo figcaption{font:italic 22px 'Cormorant Garamond',Georgia,serif;text-align:center;padding-top:17px}.album-link{font-size:11px;display:inline-flex;gap:30px;padding:15px 0;border-bottom:1px solid var(--accent);text-decoration:none;margin-top:23px}.album-link span{font-size:20px;color:var(--accent)}.hero-flower{position:absolute;left:42%;bottom:60px;font-size:70px;color:#ad7e61;transform:rotate(17deg)}.letter{max-width:760px;margin:30px auto 110px;padding:0 28px;text-align:center}.letter h2{font-size:52px;margin-bottom:31px}.letter>p:not(.eyebrow):not(.signature){font-size:15px;line-height:2.05;color:var(--muted);margin:20px 0}.letter blockquote{font:italic 38px/1.25 'Cormorant Garamond',Georgia,serif;color:var(--accent);margin:40px 0}.signature{font:italic 25px 'Cormorant Garamond',Georgia,serif}.signature span{color:var(--accent)}.memories{padding:70px max(5%,calc((100% - 1100px)/2));background:#eae0d3}.section-title{display:flex;justify-content:space-between;align-items:end;margin-bottom:48px;gap:20px}.section-title .eyebrow{margin-bottom:12px}.section-title h2{font-size:54px}.album-number{font-size:10px;white-space:nowrap;color:var(--muted);padding-bottom:9px}.photos{display:grid;grid-template-columns:1fr 1fr;gap:50px 38px}.photos figure{background:#fffbf4;padding:12px 12px 19px;align-self:start;box-shadow:0 8px 25px #493b240d}.photos figure:nth-child(even){margin-top:65px;transform:rotate(2deg)}.photos figure:nth-child(odd){transform:rotate(-1.5deg)}.photo-button{border:0;padding:0;display:block;width:100%;cursor:zoom-in;background:transparent}.photo-button img{width:100%;height:440px;object-fit:cover;display:block}.photos figcaption{font:italic 22px 'Cormorant Garamond',Georgia,serif;padding-top:18px;text-align:center}.closing{text-align:center;padding:95px 20px 100px}.closing>span{font:65px Georgia;color:var(--accent)}.closing p{font:italic 31px/1.35 'Cormorant Garamond',Georgia,serif;margin:22px 0}.closing h2{font-size:52px;margin-top:30px}.closing small{display:block;font-size:12px;margin-top:20px;color:var(--muted)}footer{border-top:1px solid var(--line);font-size:10px;color:var(--muted);gap:20px}footer button{font:inherit;background:none;border:0;border-bottom:1px solid #c6b4a1;padding:5px 0;color:var(--muted);cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:6px}dialog{border:0;padding:0;background:transparent;max-width:95vw;max-height:94svh;overflow:visible}dialog::backdrop{background:#231b16e8}dialog img{display:block;max-width:92vw;max-height:85svh;object-fit:contain}#close-photo{position:absolute;right:0;top:-43px;font:36px Arial;background:none;border:0;color:white;cursor:pointer}[hidden]{display:none!important}@media(max-width:700px){header{padding:22px 6%}.date{font-size:9px}.hero{grid-template-columns:1fr;gap:45px;padding:54px 7% 65px}.hero h1{font-size:76px}.hero-photo{margin:0 12px}.hero-photo img{height:440px}.hero-flower{left:auto;right:7%;bottom:auto;top:265px;font-size:50px}.hero .intro{margin-top:24px}.letter{margin:28px auto 60px}.letter h2{font-size:42px}.letter blockquote{font-size:33px}.letter>p:not(.eyebrow):not(.signature){font-size:14px}.section-title{display:block}.section-title h2{font-size:44px}.album-number{display:block;margin-top:20px}.memories{padding:48px 7%}.photos{grid-template-columns:1fr;gap:35px}.photos figure:nth-child(even){margin-top:0}.photo-button img{height:auto;max-height:560px;object-fit:cover}.closing{padding:65px 20px}.closing h2{font-size:43px}.closing p{font-size:28px}footer{padding:24px 6%;font-size:9px}.eyebrow{font-size:9px;letter-spacing:.17em}.waiting .intro{font-size:14px}.countdown{gap:14px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* A gentle reveal when the countdown finishes. */
.waiting.leaving{pointer-events:none;animation:countdown-away .9s cubic-bezier(.4,0,.2,1) both}
.waiting.leaving .countdown{animation:digits-away .75s ease-in both}
#celebration.arriving .hero-copy{animation:letter-arrive 1.5s cubic-bezier(.16,1,.3,1) both}
#celebration.arriving .hero-photo{animation:photo-arrive 1.8s cubic-bezier(.16,1,.3,1) .15s both}
#celebration.arriving .hero-flower{animation:flower-arrive 1.8s ease .4s both}
.reveal-sparks{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:8}
.reveal-sparks span{position:absolute;left:var(--x);top:68%;color:#b58a50;font-size:var(--size);opacity:0;animation:spark-rise 2.7s ease-out var(--delay) both}
@keyframes countdown-away{0%{opacity:1;transform:translateY(0);filter:blur(0)}100%{opacity:0;transform:translateY(-28px) scale(.98);filter:blur(7px)}}
@keyframes digits-away{to{opacity:0;transform:translateY(-18px);letter-spacing:.12em}}
@keyframes letter-arrive{from{opacity:0;transform:translateY(45px);filter:blur(5px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}
@keyframes photo-arrive{from{opacity:0;transform:translateY(55px) rotate(-3deg) scale(.96)}to{opacity:1;transform:translateY(0) rotate(3deg) scale(1)}}
@keyframes flower-arrive{from{opacity:0;transform:rotate(-35deg) scale(.6)}to{opacity:1;transform:rotate(17deg) scale(1)}}
@keyframes spark-rise{0%{opacity:0;transform:translate(0,20px) rotate(0)}20%{opacity:.65}100%{opacity:0;transform:translate(var(--drift),-65vh) rotate(100deg)}}
@media(prefers-reduced-motion:reduce){.waiting.leaving,#celebration.arriving .hero-copy,#celebration.arriving .hero-photo,#celebration.arriving .hero-flower{animation:none}.reveal-sparks{display:none}}
