:root{color-scheme:dark;--rose:#f3b4bc;--cream:#fff3eb;--gold:#dbb39a;--ink:#24111b}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#1d1019;color:var(--cream);font-family:Lora,Georgia,serif;line-height:1.65}.atmosphere{position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at 12% 15%,#71394b66,transparent 43%),radial-gradient(ellipse at 90% 65%,#743e4b55,transparent 48%);z-index:-1}button,a{font:inherit}button{cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible{outline:3px solid #ffd5df;outline-offset:4px}.sound{position:fixed;right:18px;top:18px;z-index:10;background:#351b29e8;border:1px solid #d4a0a4;border-radius:50px;color:#fff0eb;padding:10px 16px;font-size:.75rem}.cover{min-height:100svh;display:grid;grid-template-columns:1.1fr .9fr;align-items:center;gap:5vw;max-width:1440px;margin:auto;padding:100px 8vw 80px;position:relative}.eyebrow{font-family:Lora,serif;font-size:.65rem;letter-spacing:.22em;text-transform:uppercase;color:#e6b6ad}.script{font:clamp(2rem,4vw,3.4rem) 'Great Vibes',cursive;color:var(--rose);margin:.4em 0}.cover h1,.journey-intro h2,.chapter h2,dialog h2{font:400 clamp(3.3rem,7vw,7rem)/.98 'Cormorant Garamond',Georgia,serif;letter-spacing:-.03em;margin:0}.cover h1 em,.journey-intro em{color:var(--rose);font-weight:400}.intro,.description{max-width:40rem;color:#e4cdd0;font-size:clamp(.95rem,1.3vw,1.08rem)}.button{display:inline-flex;align-items:center;justify-content:center;gap:1rem;border-radius:3px;padding:13px 23px;text-decoration:none;font-size:.82rem;transition:background .2s,transform .2s}.button:hover{transform:translateY(-2px)}.primary{background:#e9a4ae;color:#301620;border:1px solid #e9a4ae}.outline{background:transparent;color:#f9e5e2;border:1px solid #c39296}.outline:hover{background:#ffffff12}.install-link{display:block;margin-top:25px;padding:0;border:0;background:none;color:#e8c5c0;text-decoration:underline;font-size:.78rem}.cover-photo{position:relative;max-width:440px;justify-self:center;padding:12px;border:1px solid #c48d8a;border-radius:49% 49% 4px 4px;transform:rotate(3deg);background:#56303a}.cover-photo img{width:100%;aspect-ratio:3/4;object-fit:cover;display:block;border-radius:48% 48% 2px 2px}.cover-photo span{position:absolute;bottom:-16px;right:-18px;padding:9px 20px;background:#e6b1ad;color:#48202b;font:1.5rem 'Great Vibes',cursive}.cover-bottom{position:absolute;bottom:25px;left:8vw;font-size:.58rem;letter-spacing:.2em;color:#b99596}.cover-bottom span{margin:0 15px}.journey-intro{text-align:center;padding:120px 20px 60px}.journey-intro h2{font-size:clamp(3rem,6vw,5rem)}.journey-intro>p:last-child{color:#d4b8b9}.chapter{display:grid;grid-template-columns:120px 1fr;gap:4vw;max-width:1050px;margin:auto;padding:95px 30px;border-top:1px solid #c1908950}.chapter-number{font:3rem 'Cormorant Garamond',serif;color:#d69aa3}.chapter-number span{font: .65rem Lora,serif;letter-spacing:.1em;color:#ad8988}.chapter-content{text-align:center}.chapter h2{font-size:clamp(3rem,6vw,5.5rem)}.description{margin:25px auto 40px}.counter-label{font-size:.6rem;letter-spacing:.2em;color:#d7a7a6}.counter{display:flex;justify-content:center;flex-wrap:wrap;gap:clamp(10px,2.3vw,30px);margin:20px auto 35px}.counter span{min-width:48px}.counter strong{display:block;font:400 clamp(2rem,4vw,3rem)/1 'Cormorant Garamond',serif;font-variant-numeric:tabular-nums;color:#ffd4d3}.counter small{font-size:.62rem;color:#cfaeae}.actions,.proposal-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.details{margin:25px auto 0;max-width:560px;padding:16px;border:1px solid #a7757d;background:#301a26}.details p{margin:5px}.proposal{margin:70px auto 0;padding:35px 20px;border:1px solid #bc8791;background:radial-gradient(circle at center,#823d5255,transparent 75%)}.proposal h3{font:2.5rem 'Cormorant Garamond',serif;margin:0 0 20px}.heart{font-size:5rem;line-height:1;color:#f18fa6;text-shadow:0 0 35px #f878a7}.no-slot{display:inline-block}footer{text-align:center;padding:90px 20px;color:#dfb8bb}footer a{font-size:.8rem}dialog{width:min(92vw,760px);max-height:90dvh;overflow:auto;border:1px solid #bc8791;background:#2b1722;color:#fff1e9;padding:clamp(20px,4vw,38px);box-shadow:0 24px 90px #0009}dialog::backdrop{background:#100912df}dialog h2{font-size:clamp(2.5rem,5vw,4rem)}.dialog-head{display:flex;justify-content:space-between;align-items:start;gap:20px}.icon-button{background:none;border:0;color:#fff;font-size:2rem;line-height:1}.gallery-note{font-size:.8rem;color:#d9babc}.photo-stage{height:min(55dvh,600px);display:grid;place-items:center;background:#170d13}.photo-stage img{width:100%;height:100%;object-fit:contain}.photo-stage p{text-align:center;padding:20px}.gallery-controls{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:15px;font-size:.8rem}.celebration-content{text-align:center;position:relative;z-index:1}.celebration-content p{color:#f2d4d2}.balloons{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-bottom:15px}.balloons span{background:#a55970;border-radius:50%;padding:15px;font-size:.65rem;animation:float 3s ease-in-out infinite alternate}.balloons span:nth-child(even){animation-delay:-1.5s;background:#b67783}@keyframes float{to{transform:translateY(-8px)}}@media(max-width:700px){.cover{grid-template-columns:1fr;padding:105px 25px 75px;gap:50px}.cover-photo{width:min(75%,310px)}.cover h1{font-size:clamp(3.7rem,14vw,5rem)}.cover-bottom{left:25px}.journey-intro{padding:90px 20px 50px}.chapter{display:block;padding:65px 20px}.chapter-number{font-size:2rem;margin-bottom:20px}.counter{gap:15px}.counter span{min-width:54px}.gallery-controls .button{padding:10px}.sound{top:10px;right:10px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

.heart-svg{width:100px;height:90px;filter:drop-shadow(0 0 18px #f878a7);animation:heartbeat 2.4s ease-in-out infinite}@keyframes heartbeat{50%{transform:scale(1.08)}}
.atmosphere::before,.atmosphere::after{content:"♡  ♡  ·  ♡  ♡  ·  ♡  ♡  ·  ♡";position:absolute;inset:5% 3%;color:#efadb7;opacity:.2;font-size:1.2rem;letter-spacing:4vw;line-height:12;word-spacing:3vw;animation:drift 18s ease-in-out infinite alternate}.atmosphere::after{inset:30% 0 0;opacity:.12;transform:rotate(8deg);animation-delay:-9s}@keyframes drift{to{transform:translateY(-24px)}}
[hidden]{display:none!important}.site-nav{position:fixed;z-index:20;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;gap:15px;padding:12px 5vw;background:#24111bef;border-bottom:1px solid #bc879144}.site-nav a{text-decoration:none}.nav-brand{font:1.8rem 'Great Vibes',cursive;color:var(--rose)}.site-nav nav{display:flex;gap:clamp(12px,3vw,32px);font-size:.75rem}.site-nav nav a[aria-current=page]{color:var(--rose);border-bottom:1px solid var(--rose)}.cover-actions,.audio-controls{display:flex;flex-wrap:wrap;gap:12px}.audio-controls{justify-content:center}.view{min-height:100svh;padding-top:55px}.story{max-width:1100px;margin:0 auto 80px;padding:0 30px;display:grid;grid-template-columns:minmax(220px,.85fr) 1.15fr;gap:clamp(30px,6vw,80px);align-items:center}.story img{width:100%;max-height:580px;aspect-ratio:4/5;object-fit:cover;border:1px solid #bc8791;border-radius:48% 48% 3px 3px}.story h2{font:400 clamp(3rem,5vw,5rem)/1 'Cormorant Garamond',serif;margin:0}.typewriter{white-space:pre-line;color:#f0d7d5;min-height:8em;margin:25px 0 10px;cursor:pointer}.typewriter.typing::after{content:'|';color:var(--rose);animation:blink .8s step-end infinite}.text-button{border:0;background:none;color:#e8b5b4;padding:5px 0;text-decoration:underline}.story-nav{display:flex;justify-content:space-between;gap:12px;margin-top:35px}.story-nav button:disabled{opacity:.4;cursor:default}.story .proposal{margin-top:25px}.story .heart{font-size:initial}.story .proposal h3{margin-top:10px}@keyframes blink{50%{opacity:0}}@media(max-width:700px){.story{grid-template-columns:1fr;padding:0 22px}.story img{max-height:360px;aspect-ratio:4/3;object-fit:cover}.journey-view .journey-intro{padding-bottom:30px}.cover-actions .button{flex:1;white-space:nowrap}.site-nav{padding:10px 18px}.site-nav nav{gap:14px}}
#celebration{position:fixed;overflow:hidden}.balloons{position:absolute;inset:0;overflow:hidden;pointer-events:none;margin:0}.balloons span{position:absolute;top:-120px;left:5%;animation:balloon-rain 8s linear infinite;opacity:.7}.balloons span:nth-child(2){left:30%;animation-delay:-2s}.balloons span:nth-child(3){left:55%;animation-delay:-4s}.balloons span:nth-child(4){left:75%;animation-delay:-6s}@keyframes balloon-rain{to{transform:translateY(110vh) rotate(12deg)}}
.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}.site-nav #sound{position:static;padding:7px 10px;font-size:.7rem}.story-photo-wrap{min-width:0}.story-photo-wrap p{min-height:250px;display:grid;place-items:center;text-align:center;border:1px solid #bc8791;color:#e4cdd0}.photo-enter{animation:photo-enter .45s ease both}@keyframes photo-enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(max-width:700px){.site-nav #sound{font-size:0;padding:7px}.site-nav #sound span{font-size:.65rem}.site-nav{gap:8px}.site-nav nav{gap:9px}}

/* A small glass keepsake for the soundtrack. */
.music-widget{position:fixed;z-index:30;right:24px;bottom:24px;display:flex;align-items:center;gap:14px;width:min(390px,calc(100vw - 32px));padding:11px 14px 11px 17px;border:1px solid #e7b8aa70;border-radius:999px;background:linear-gradient(120deg,#542c3cdb,#271521ec);box-shadow:0 12px 38px #10060da6,inset 0 1px #fff2e522;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
.music-info{min-width:0;flex:1;display:flex;flex-direction:column;line-height:1.2}.music-caption{font-size:.53rem;letter-spacing:.18em;color:#d6aaa3}.music-info #track-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 1.05rem 'Cormorant Garamond',Georgia,serif;color:#fff1e9}.music-controls{display:flex;align-items:center;gap:4px}.music-controls button{display:grid;place-items:center;width:36px;height:36px;padding:0;border:0;border-radius:50%;background:transparent;color:#f9d8d2;font-size:.95rem}.music-controls button:hover{background:#ffffff18}.music-controls .music-play{background:#efb5b8;color:#38202a;font-size:.8rem}.music-wave{display:flex;align-items:center;gap:3px;height:20px}.music-wave i{width:2px;height:5px;border-radius:4px;background:#eab5b4;opacity:.5}.music-widget.is-playing .music-wave i{animation:music-wave 1s ease-in-out infinite alternate;opacity:1}.music-widget.is-playing .music-wave i:nth-child(2){animation-delay:-.5s}.music-widget.is-playing .music-wave i:nth-child(3){animation-delay:-.25s}@keyframes music-wave{to{height:18px}}
.chapter{display:block;margin:26px auto;padding:clamp(35px,6vw,75px);border:1px solid #d8aaa05c;border-radius:24px;background:linear-gradient(135deg,#57304070,#291821a8);box-shadow:0 18px 50px #0f080b40,inset 0 1px #fff2e514;backdrop-filter:blur(8px)}.story-copy,.proposal,.details,dialog{border-radius:20px;border:1px solid #d7a99b70;background-color:#3b2232bb;box-shadow:inset 0 1px #fff4e41c,0 12px 35px #160a1040}.story-copy{padding:clamp(24px,4vw,48px)}.button{border-radius:999px;box-shadow:inset 0 1px #fff5e33b;transition:transform .2s,background .2s,box-shadow .2s}.button:hover{box-shadow:inset 0 1px #fff5e35c,0 7px 18px #d79b9b26}footer{padding-bottom:125px}
@media(max-width:700px){.music-widget{bottom:max(12px,env(safe-area-inset-bottom));right:12px;width:min(350px,calc(100vw - 24px));gap:9px;padding:8px 10px 8px 14px}.music-controls button{width:34px;height:34px}.chapter{margin:18px 16px;padding:36px 20px}.site-nav nav{gap:14px}.story-copy{padding:25px 20px}.cover-actions .button{white-space:normal}}
@media(prefers-reduced-motion:reduce){.music-widget.is-playing .music-wave i{animation:none;height:10px}}
.journey-view{padding:105px 20px 120px;display:flex;align-items:center;justify-content:center}.journey-view .story{width:min(1100px,100%);margin:0 auto;padding:0}.story-copy.scene-enter{animation:scene-arrive .7s ease both}.story-ending{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}.story-ending p{width:100%;color:#f3d5d1}.story-nav{align-items:center}.story-nav #story-back{border-color:transparent;background:transparent;box-shadow:none}.story-nav #story-next{margin-left:auto}@keyframes scene-arrive{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media(max-width:700px){.journey-view{display:block;padding:85px 0 calc(110px + env(safe-area-inset-bottom))}.journey-view .story{padding:0 20px}.story-ending .button{width:100%}}
.chapter,.story-copy,.proposal,.details,dialog{border-radius:clamp(28px,4vw,40px);border-color:#e5b9b080;box-shadow:0 18px 48px #16090d50,inset 0 1px 0 #ffece42c}.button{border-radius:999px}.button:active{transform:scale(.98);box-shadow:inset 0 2px 8px #29111d26}
html,*{scrollbar-width:thin;scrollbar-color:#472635 #170d13}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-track{background:#170d13}::-webkit-scrollbar-thumb{background:#472635;border:1px solid #753b4f;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#f3b4bc}.ending-active .story-photo-wrap,.ending-active .story-copy>p:not(.story-ending p),.ending-active #story-title,.ending-active #typewriter,.ending-active #skip,.ending-active #proposal,.ending-active .story-nav{display:none}.ending-active .story{display:block;max-width:620px}.ending-active .story-ending{text-align:center;justify-content:center}.ending-active .story-ending h2{width:100%}@media(max-width:700px){html,*{scrollbar-width:none;-ms-overflow-style:none}::-webkit-scrollbar{display:none;width:0;height:0}.journey-view{padding-bottom:calc(120px + env(safe-area-inset-bottom))}.journey-view .story-copy{padding-bottom:120px}}
.lock-screen{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:24px;overflow:auto;background:radial-gradient(ellipse at 50% 25%,#71394b99,transparent 62%),#1d1019;transition:opacity .35s,transform .35s}.lock-screen.unlocking{opacity:0;transform:scale(1.02);pointer-events:none}.lock-card{width:min(100%,470px);padding:clamp(28px,7vw,52px);text-align:center;border:1px solid #e5b9b080;border-radius:38px;background:#3b2232d9;box-shadow:0 22px 65px #10060d99,inset 0 1px #fff4e424;backdrop-filter:blur(14px)}.lock-heart{font-size:4rem;line-height:1;color:#f3b4bc;text-shadow:0 0 25px #f878a7}.lock-card h1{font:400 clamp(2.7rem,7vw,4rem)/1.05 'Cormorant Garamond',Georgia,serif;margin:20px 0}.lock-card p{color:#ead0d0}.lock-card form{display:grid;gap:14px;margin-top:26px}.lock-card input{width:100%;padding:14px 20px;border:1px solid #d6a5a6;border-radius:999px;background:#201019b8;color:#fff1e9;font:inherit}.lock-card input:focus-visible{outline:3px solid #ffd5df;outline-offset:3px}.lock-error{margin:0;color:#ffc5cc!important;font-size:.85rem}.lock-card.shake{animation:lock-shake .35s ease}@keyframes lock-shake{25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}footer #relock{margin:22px auto 0}
@media(prefers-reduced-motion:reduce){.lock-card.shake{animation:none}.lock-screen{transition:none}}
.volume-controls{display:flex;align-items:center;gap:3px;flex:none}.volume-controls button{width:32px;height:36px;display:grid;place-items:center;border:0;border-radius:50%;background:transparent;color:#f9d8d2;font-size:.9rem;cursor:pointer}.volume-controls button:hover{background:#ffffff18}.volume-controls input{width:65px;height:26px;accent-color:#e9a4ae;cursor:pointer}.music-widget{width:min(490px,calc(100vw - 32px))}@media(max-width:700px){.music-widget{width:min(calc(100% - 24px),420px);gap:5px;padding-left:10px}.volume-controls{gap:0}.volume-controls input{width:48px}.volume-controls button{width:30px}.music-controls{gap:0}.music-controls button{width:32px;height:34px}.music-info #track-name{font-size:.95rem}.music-wave{display:none}}
