@font-face{font-family:Manrope;src:url('assets/fonts/manrope-normal-400.ttf') format('truetype');font-display:swap}@font-face{font-family:Manrope;src:url('assets/fonts/manrope-normal-600.ttf') format('truetype');font-weight:600;font-display:swap}@font-face{font-family:Memory;src:url('assets/fonts/cormorant-garamond-normal-500.ttf');font-weight:500;font-display:swap}@font-face{font-family:Memory;src:url('assets/fonts/cormorant-garamond-italic-400.ttf');font-style:italic;font-display:swap}
:root{--paper:#f7f3eb;--ink:#163e34;--muted:#626d62;--gold:#896131;--line:#163e3426;--ease:cubic-bezier(.22,1,.36,1)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:80px}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.8 Manrope,sans-serif}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #c79b58;outline-offset:5px}a{color:inherit}img{display:block;width:100%;height:100%;object-fit:cover}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:Memory,Georgia,serif;font-weight:500;line-height:1.04}h2{font-size:clamp(40px,5vw,78px);letter-spacing:-.035em}em{font-weight:400}button{border:0}body.locked{overflow:hidden}[hidden]{display:none!important}.eyebrow{font-size:11px;letter-spacing:.22em;text-transform:uppercase;font-weight:600}.wrap{max-width:1200px;margin:auto;padding-inline:48px}.section{padding-block:118px}.section-intro{max-width:670px;margin-bottom:55px}.section-intro .eyebrow{margin-bottom:20px;color:var(--gold)}.section-intro p:last-child{margin-top:25px;color:var(--muted);max-width:480px}.pill{display:inline-flex;align-items:center;justify-content:center;gap:22px;background:var(--ink);color:#fff;border-radius:50px;padding:17px 27px;font-size:13px;font-weight:600;min-height:54px}.pill span{font-size:22px}.quiet{background:transparent;color:var(--ink);border-bottom:1px solid var(--line);padding:8px 0}.site-header{height:80px;display:flex;align-items:center;justify-content:space-between;max-width:1440px;margin:auto;padding:0 48px}.site-header .logo{width:155px;height:auto;object-fit:contain}.header-note{font-size:10px;letter-spacing:.19em}.top-line{width:30px;height:1px;background:var(--gold);display:inline-block;margin-right:15px;vertical-align:middle}.gate{position:fixed;inset:0;z-index:20;background:#153e33;min-height:100svh;display:grid;place-items:center;overflow:hidden;color:#f8f2e9;padding:28px}.gate:before,.gate:after{content:'';position:absolute;border:1px solid #d8b98225;border-radius:50%;width:min(85vw,920px);height:min(85vw,920px);pointer-events:none}.gate:after{width:min(115vw,1300px);height:min(115vw,1300px)}.gate-content{position:relative;z-index:1;text-align:center;max-width:500px}.gate-brand{font:italic 27px Memory,Georgia;margin-bottom:clamp(20px,5vh,60px)}.key-symbol{font-size:48px;color:#d8b982;display:block;line-height:1;margin-bottom:30px}.gate h1{font-size:clamp(45px,7vw,78px);letter-spacing:-.035em;margin:18px 0 26px}.gate p{color:#d9e0d8;font-size:13px;max-width:340px;margin:auto}.password-form{display:flex;max-width:350px;margin:30px auto 0;border:1px solid #ffffff45;border-radius:100px;padding:6px;background:#ffffff09}.password-form input{width:100%;min-width:0;border:0;color:white;background:transparent;padding:12px 18px;outline-offset:0}.password-form input::placeholder{color:#d9e0d8}.password-form button{border-radius:50%;width:48px;flex-shrink:0;background:#dfc496;color:#153e33;font-size:25px}.error{min-height:25px;font-size:12px;color:#ffd0bc!important}.demo-hint{display:block;font-size:11px;color:#c1cfc4;margin-top:35px}.gate-leaving{animation:gateAway 1.25s var(--ease) both}.gate-leaving .gate-content{animation:gateContentAway .65s ease both}.entrance-curtain{position:fixed;inset:0;z-index:19;pointer-events:none;display:flex}.entrance-curtain i{width:50%;height:100%;background:#153e33;transform-origin:left;animation:curtainLeft 1.8s var(--ease) both}.entrance-curtain i:last-child{animation-name:curtainRight}.hero{max-width:1440px;margin:auto;display:grid;grid-template-columns:.95fr 1.05fr;min-height:calc(100svh - 80px);position:relative}.hero-copy{display:flex;justify-content:center;flex-direction:column;padding:65px 65px 105px 7vw;position:relative}.hero h1{font-size:clamp(70px,7.4vw,115px);line-height:.96;letter-spacing:-.04em;margin:28px 0}.hero h1 em{color:#a0794b;display:block}.hero-sub{max-width:330px;color:var(--muted);font-size:14px}.hero-sign{font:italic 27px Memory;margin:32px 0}.hero-visual{position:relative;min-height:550px;overflow:hidden;margin:20px 28px 35px 0;border-radius:180px 180px 8px 8px}.hero-visual img{object-position:50% 40%;animation:photoBreathe 20s ease-in-out infinite alternate}.hero-visual:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 55%,#10261d78)}.photo-caption{position:absolute;z-index:1;bottom:38px;left:34px;color:#fff}.photo-caption p{font:italic 30px Memory}.photo-caption span{font-size:10px;letter-spacing:.2em}.scroll-link{position:absolute;left:7vw;bottom:28px;display:flex;gap:15px;align-items:center;text-decoration:none;font-size:10px;letter-spacing:.17em}.scroll-line{height:42px;width:1px;overflow:hidden;background:var(--line);position:relative}.scroll-line:after{content:'';position:absolute;top:-100%;left:0;width:1px;height:100%;background:var(--gold);animation:scrollLine 2.2s ease infinite}.hero-spark{position:absolute;right:22px;top:30%;font:60px Memory;color:#cbb389;pointer-events:none;animation:float 6s ease-in-out infinite}.opening .hero-copy>*{animation:liftIn 1.3s var(--ease) both}.opening .hero h1{animation-delay:.15s}.opening .hero-sub{animation-delay:.35s}.opening .hero-sign{animation-delay:.55s}.opening .hero-visual{animation:heroEnter 1.7s var(--ease) both}.quote-section{text-align:center;max-width:900px;margin:auto;padding:95px 30px}.little-heart{display:block;font:33px Memory;color:var(--gold);margin-bottom:22px}.quote-section h2{font-size:clamp(37px,5vw,65px)}.quote-section p{max-width:560px;margin:26px auto 0;color:var(--muted)}.memories{display:grid;grid-template-columns:1fr 1fr 1fr;align-items:center;gap:30px;padding:0 0 70px}.photo-button{padding:0;background:transparent;position:relative;display:block;width:100%;overflow:hidden}.print{background:#fffaf2;padding:12px 12px 24px;box-shadow:0 14px 38px #163e3415;transform:rotate(-4deg)}.print:nth-child(2){transform:rotate(2deg);margin-top:85px}.print:nth-child(3){transform:rotate(5deg)}.print .photo-button{aspect-ratio:4/5}.print p{font:italic 25px Memory;padding-top:16px;text-align:center}.photo-button img{transition:transform .8s var(--ease)}.photo-button:hover img{transform:scale(1.045)}.photo-button:after{content:'↗';position:absolute;right:14px;bottom:14px;background:#faf8f0dc;color:var(--ink);width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-size:19px}.vow{background:#173f35;color:#fbf5e9;position:relative;overflow:hidden}.vow:before{content:'♡';position:absolute;right:-50px;top:-120px;color:#d3b58b0e;font:600px Memory;line-height:1}.vow-grid{display:grid;grid-template-columns:1fr 1fr;gap:85px;align-items:center;position:relative}.vow .eyebrow{color:#d6bd92}.vow h2{margin:20px 0 24px}.vow p{color:#d3ded4}.vow-photo{aspect-ratio:4/5;border-radius:170px 170px 8px 8px;overflow:hidden}.counter{display:flex;gap:28px;margin:35px 0}.counter>div{border-right:1px solid #d8c7a54d;padding-right:26px}.counter>div:last-child{border:0}.counter strong{display:block;font:55px Memory;font-weight:500;line-height:1.1}.counter span{display:block;font-size:9px;letter-spacing:.15em}.vow small{color:#d6bd92;font-size:11px}.timeline{position:relative;margin-top:50px}.timeline:before,.timeline-progress{content:'';position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--line)}.timeline-progress{bottom:auto;height:0;background:var(--gold);transition:height .4s linear}.moment{display:grid;grid-template-columns:1fr 1fr;gap:110px;align-items:center;padding:0 0 85px;position:relative}.moment:before{content:'';position:absolute;left:calc(50% - 5px);top:34%;width:11px;height:11px;border-radius:50%;border:2px solid var(--paper);background:var(--gold);box-shadow:0 0 0 5px var(--paper)}.moment:nth-child(2n) .moment-photo{order:2}.moment-photo{aspect-ratio:4/3;border-radius:4px}.moment-copy time{font-size:11px;color:var(--gold);letter-spacing:.1em}.moment-copy h3{font-size:42px;margin:12px 0 20px}.moment-copy p{font-size:13px;color:var(--muted);max-width:380px}.moment:last-child{padding-bottom:0}.wide-memory{position:relative;max-width:1440px;margin:0 auto;aspect-ratio:2/1;overflow:hidden}.wide-memory img{object-position:50% 42%}.wide-memory:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 20%,#152f269c)}.wide-caption{position:absolute;z-index:1;bottom:60px;left:7vw;right:7vw;color:#fff}.wide-caption .eyebrow{margin-bottom:15px}.wide-caption h2{font-size:clamp(35px,5vw,73px);max-width:780px}.children-heading{text-align:center;margin:0 auto 65px;max-width:700px}.children-heading .eyebrow{color:var(--gold);margin-bottom:20px}.children-heading p:last-child{margin:24px auto 0;max-width:460px;color:var(--muted)}.children{display:grid;grid-template-columns:1fr 1fr;gap:50px}.child{padding:30px;background:#efede3;border-radius:180px 180px 8px 8px;text-align:center}.child:nth-child(2){background:#eceee4}.child .photo-button{aspect-ratio:4/5;border-radius:150px 150px 3px 3px}.child h3{font-size:60px;margin:26px 0 7px}.child time{font-size:10px;letter-spacing:.14em;color:#687265}.child p{margin:22px auto;font-size:13px;max-width:340px}.child-counter{font:28px Memory;border-top:1px solid var(--line);padding-top:20px}.child-counter small{display:block;font:10px Manrope;margin-top:5px;letter-spacing:.08em}.scribble{color:var(--gold);font:30px Memory}.album{background:#ebe9de}.album-top{display:flex;justify-content:space-between;align-items:end;margin-bottom:45px;gap:35px}.album-top .section-intro{margin:0}.album-top small{font-size:11px;color:var(--muted)}.album-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.album-grid .photo-button{aspect-ratio:4/5;border-radius:3px}.album-grid .photo-button:nth-child(5n+2){margin-top:28px}.album-quote{text-align:center;font:italic 37px Memory;margin-top:65px}.music{display:grid;grid-template-columns:1fr 1fr;gap:90px;align-items:center}.music-art{position:relative;padding:35px 45px 35px 0}.music-cover{width:75%;aspect-ratio:1;position:relative;z-index:1;box-shadow:0 20px 35px #163e3420;border:9px solid #fffdf5}.record{position:absolute;right:0;top:50%;width:65%;aspect-ratio:1;border-radius:50%;background:repeating-radial-gradient(circle,#172d26 0 3px,#253e32 4px 5px);transform:translateY(-50%);display:grid;place-items:center}.record:after{content:'♡';display:grid;place-items:center;border-radius:50%;background:#c5aa76;color:var(--ink);width:32%;aspect-ratio:1;font-size:30px}.playing .record{animation:recordSpin 12s linear infinite}.music .eyebrow{color:var(--gold)}.music h2{margin:18px 0 25px}.music p{color:var(--muted);margin-bottom:28px;max-width:380px}.music small{display:block;margin-top:16px;color:var(--muted);font-size:10px}.final{background:#173e33;color:#fff9ee;text-align:center;padding-block:100px;position:relative;overflow:hidden}.final .eyebrow{color:#dbc39b}.final h2{max-width:780px;margin:20px auto 30px}.final p{max-width:480px;margin:0 auto;color:#dbe1d7}.letter-trigger{margin:40px auto 0;background:#eadbc3;color:#173e33;padding:25px 50px;border-radius:3px;box-shadow:0 18px 30px #071e1850;transform:rotate(-2deg);transition:transform .4s var(--ease);font:italic 28px Memory}.letter-trigger:hover{transform:rotate(0) translateY(-5px)}.final-heart{position:absolute;font:300px Memory;line-height:1;color:#ffffff05;left:-50px;bottom:-40px}.closing{display:grid;grid-template-columns:1fr 1fr;gap:50px;align-items:center}.closing .photo-button{aspect-ratio:4/3}.closing h2{font-size:clamp(40px,5vw,65px)}.closing p{margin:25px 0;color:var(--muted)}.signature{font:italic 35px Memory;color:var(--gold)}footer{text-align:center;border-top:1px solid var(--line);padding:35px 24px;font-size:11px;color:var(--muted)}footer img{width:115px;height:auto;margin:0 auto 14px}.preview-tools{padding:20px;text-align:center;background:#eee9de;font-size:11px}.preview-tools a{margin:0 10px}.preview-tools summary{cursor:pointer;font-weight:600}.preview-tools p{margin-top:15px}.floating-music{position:fixed;bottom:max(20px,env(safe-area-inset-bottom));right:22px;z-index:10;width:48px;height:48px;border:1px solid #ece5d475;border-radius:50%;background:#174134;color:white;box-shadow:0 5px 15px #163e3420;font-size:20px}.floating-music .bars{display:flex;justify-content:center;gap:3px;align-items:center;height:18px}.bars i{display:block;width:2px;height:6px;background:#e8d0a7}.playing .bars i{animation:bars 1s ease-in-out infinite alternate}.bars i:nth-child(2){animation-delay:.3s!important}.bars i:nth-child(3){animation-delay:.6s!important}.dialog{border:0;padding:0;max-width:min(92vw,850px);max-height:90svh;background:var(--paper);color:var(--ink);border-radius:5px}.dialog::backdrop{background:#10271fe6;backdrop-filter:blur(6px)}.dialog-close{position:sticky;float:right;top:15px;margin:15px;z-index:2;width:40px;height:40px;border-radius:50%;background:#173e33;color:white;font-size:24px}.lightbox img{width:100%;height:auto;max-height:78svh;object-fit:contain}.lightbox p{padding:20px;text-align:center;font-size:13px}.letter{padding:50px 65px;max-width:650px;position:relative}.letter:before{content:'';position:absolute;inset:20px;border:1px solid #a47a4340;pointer-events:none}.letter h2{font-size:50px;margin-bottom:28px}.letter p{margin-bottom:24px;font:22px/1.65 Memory}.letter .signature{margin-top:30px}.dialog[open]{animation:letterOpen .7s var(--ease)}.reveal{transition:opacity 1s var(--ease),transform 1.25s var(--ease);transition-delay:var(--delay,0s)}.js .reveal:not(.visible){opacity:0;transform:translateY(45px)}.js .print.reveal:not(.visible){transform:translateY(60px) rotate(-8deg)}.reveal.visible{opacity:1}.petal{position:absolute;width:12px;height:20px;border-radius:80% 0 80% 0;background:#ccb49a70;pointer-events:none;animation:petalFloat 12s ease-in-out infinite;top:20%;left:3%}.petal:nth-child(2){left:91%;top:50%;animation-delay:-6s}.petal:nth-child(3){left:46%;top:82%;width:8px;height:14px;animation-delay:-9s}
@keyframes liftIn{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:none}}@keyframes heroEnter{from{clip-path:inset(0 0 100% 0);transform:translateY(30px)}to{clip-path:inset(0);transform:none}}@keyframes photoBreathe{from{transform:scale(1)}to{transform:scale(1.06)}}@keyframes scrollLine{to{top:100%}}@keyframes float{50%{transform:translateY(-12px) rotate(8deg)}}@keyframes bars{to{height:18px}}@keyframes recordSpin{to{transform:translateY(-50%) rotate(360deg)}}@keyframes gateAway{to{opacity:0;visibility:hidden}}@keyframes gateContentAway{to{opacity:0;transform:translateY(-25px)}}@keyframes curtainLeft{to{transform:translateX(-100%)}}@keyframes curtainRight{to{transform:translateX(100%)}}@keyframes letterOpen{from{opacity:0;transform:perspective(1200px) rotateX(-15deg) translateY(35px)}to{opacity:1;transform:none}}@keyframes petalFloat{50%{transform:translate(25px,80px) rotate(85deg)}to{transform:translate(0,0) rotate(0)}}
@media(min-width:1600px){.hero-copy{padding-left:100px}.scroll-link{left:100px}}@media(max-width:900px){.wrap{padding-inline:30px}.hero-copy{padding-inline:35px}.hero h1{font-size:75px}.hero-visual{margin-right:20px}.vow-grid,.music{gap:40px}.moment{gap:65px}.counter{gap:18px}.counter>div{padding-right:18px}.children{gap:25px}.child{padding:22px}.album-grid{grid-template-columns:repeat(3,1fr)}.scroll-link{left:35px}}@media(max-width:620px){.wrap{padding-inline:24px}.section{padding-block:72px}.site-header{height:64px;padding:0 24px}.site-header .logo{width:126px}.header-note{font-size:8px;letter-spacing:.1em}.top-line{display:none}.hero{min-height:calc(100svh - 64px);display:block;padding-bottom:76px}.hero-copy{padding:22px 24px 0;position:relative;z-index:2;min-height:0}.hero .eyebrow{font-size:9px}.hero h1{font-size:clamp(47px,12vw,70px);margin:14px 0 17px;line-height:1}.hero h1 em{display:inline}.hero-sub{font-size:12px;line-height:1.7;max-width:270px}.hero-sign{font-size:23px;margin:16px 0}.hero-visual{height:clamp(230px,37svh,430px);min-height:0;margin:4px 24px 0;border-radius:100px 100px 5px 5px}.hero-visual img{object-position:50% 40%}.photo-caption{bottom:20px;left:23px}.photo-caption p{font-size:23px}.photo-caption span{font-size:8px}.scroll-link{left:24px;bottom:18px;font-size:9px}.scroll-line{height:35px}.hero-spark{right:23px;top:25px;font-size:35px}.quote-section{padding:65px 24px}.quote-section p{font-size:13px}.memories{gap:14px;grid-template-columns:1fr 1fr;padding-bottom:20px}.print{padding:7px 7px 14px}.print:nth-child(2){margin-top:45px}.print:nth-child(3){grid-column:1/-1;width:65%;margin:10px auto}.print p{font-size:21px;padding-top:10px}.vow-grid{display:flex;flex-direction:column;gap:40px}.vow-photo{width:85%;aspect-ratio:4/4.5;align-self:center}.counter{gap:23px}.counter strong{font-size:48px}.vow-grid>div{width:100%}.timeline:before,.timeline-progress{left:9px}.moment{grid-template-columns:1fr;gap:22px;padding:0 0 55px 38px}.moment:before{left:4px;top:25px}.moment:nth-child(2n) .moment-photo{order:0}.moment-copy h3{font-size:37px}.moment-copy p{font-size:13px}.moment-photo{aspect-ratio:4/3}.wide-memory{aspect-ratio:4/5}.wide-caption{left:24px;bottom:35px;right:24px}.children{grid-template-columns:1fr;gap:35px}.child{padding:25px;max-width:430px;margin:auto;width:100%}.child .photo-button{aspect-ratio:4/4.3}.children-heading{margin-bottom:40px}.album-grid{grid-template-columns:1fr 1fr;gap:12px}.album-grid .photo-button:nth-child(5n+2){margin-top:0}.album-top{display:block}.album-top small{display:block;margin-top:25px}.album-quote{font-size:30px;margin-top:40px}.music{grid-template-columns:1fr;gap:30px}.music-art{max-width:400px;margin:auto;width:100%;padding-block:20px}.music h2{font-size:48px}.final{padding-block:75px}.final h2{font-size:46px}.final p{font-size:13px}.letter-trigger{padding:20px 40px;font-size:25px}.closing{grid-template-columns:1fr;gap:35px}.closing .photo-button{aspect-ratio:4/4.5}.closing p{font-size:13px}.letter{padding:55px 35px 35px}.letter h2{font-size:39px}.letter p{font-size:20px}.floating-music{right:16px;width:43px;height:43px}.gate{padding:24px}.gate h1{font-size:55px}.gate-brand{margin-bottom:30px}.key-symbol{margin-bottom:20px;font-size:35px}.demo-hint{margin-top:22px}}
@media(max-height:700px) and (max-width:620px){.hero-copy{padding-top:10px}.hero h1{font-size:45px;margin:10px 0}.hero-sign{margin:10px 0}.hero-visual{height:32svh}.hero-sub{font-size:11px}.gate-brand{margin-bottom:16px}.gate h1{font-size:43px;margin:12px 0 18px}.key-symbol{margin-bottom:12px}.password-form{margin-top:18px}.demo-hint{margin-top:12px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.js .reveal:not(.visible){opacity:1;transform:none}.hero-visual img{transform:none}.gate-leaving{opacity:0}.entrance-curtain{display:none}}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.hero-visual>img{position:absolute;inset:0}.counter{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.counter>div{min-width:0;padding-right:12px}.hero-visual:not(.on-screen)>img,.music:not(.on-screen) .record{animation-play-state:paused}@media(max-width:620px){.counter strong{font-size:clamp(36px,10vw,48px)}}
