/* Quiet depth: readable letter panels and a softly lit, integrated landscape. */
:root{--scene-x:0px;--scene-y:0px;--galaxy-angle:0deg}
body:before{background-image:linear-gradient(90deg,#050c286b,#050c283d),url("images/landscape-v3.png");filter:saturate(.72) brightness(.72);transform:translate(var(--scene-x),var(--scene-y)) scale(1.09);will-change:transform}
body:after{background:linear-gradient(180deg,#080f2533,#080f2510 50%,#080f254d);box-shadow:inset 0 0 140px #060b2a66}
.galaxy-plane{position:fixed;left:94%;top:100px;width:550px;height:550px;z-index:-2;pointer-events:none;opacity:.38;mix-blend-mode:screen;mask-image:radial-gradient(ellipse,#000 10%,#0009 36%,transparent 67%);transform:translate(-50%,-50%) translate(calc(var(--scene-x)*1.8),calc(var(--scene-y)*1.4)) rotate(-28deg) scaleY(.5);transform-origin:center;will-change:transform}
.galaxy-disc{display:block;width:100%;height:100%;object-fit:contain;transform:rotate(var(--galaxy-angle));mask-image:radial-gradient(circle,#000 12%,#0009 35%,transparent 66%);filter:blur(1.4px) saturate(.6);will-change:transform}
.nebula{z-index:-1;background:radial-gradient(ellipse at 20% 65%,#ff97d20b,transparent 35%),radial-gradient(ellipse at 85% 35%,#8182fd0b,transparent 40%)}
.hero{isolation:isolate;max-height:none;padding-bottom:80px;row-gap:8px}
.hero-copy{z-index:2;padding:22px 0;position:relative}
.hero-copy:before{content:"";position:absolute;inset:-55px -55px;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 40% 48%,#070e25ed 14%,#070e25b8 42%,transparent 72%)}
.hero h1{text-shadow:0 2px 18px #080c25,0 0 35px #e8b7e51a}.hero h1 em{filter:none}
.hero-description,.hero .text-link{text-shadow:0 2px 6px #080c25}.hero .dedication{color:#e1d8ed}
.portrait-universe{z-index:1}
.portrait{box-shadow:0 14px 40px #02071799,0 0 14px #b5b7dc25;border-color:#e8e5f1b3;animation-duration:10s}
.portrait-center{box-shadow:0 18px 48px #020717aa,0 0 21px #d8b9dc38;border-color:#fff0f4cc}
.orbit{opacity:.48}.orbit-star{opacity:.75}
.hero-reverie{position:relative;grid-column:1/-1;height:clamp(300px,34vw,420px);overflow:hidden;margin:0 -2%;pointer-events:none;mask-image:linear-gradient(transparent,#000 16%,#000 96%,transparent);border-radius:30px}
.hero-reverie img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 100%;mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);transform:scale(1.04) translate(calc(var(--scene-x)*.22),calc(var(--scene-y)*.12));filter:saturate(.85)}
.reverie-light{position:absolute;inset:0;background:radial-gradient(ellipse at 48% 65%,#f4a9b315,transparent 45%);mix-blend-mode:screen;animation:reverie-breathe 10s ease-in-out infinite alternate}
.moments,.letter-section,.question,.together{background:linear-gradient(125deg,#0b1637ed,#11172bdf 58%,#201b36e6);backdrop-filter:blur(12px);border-color:#d8c6e738;box-shadow:inset 0 1px 0 #f7d9ff0d,0 20px 60px #02071650;text-shadow:0 1px 3px #050b20}
.question{background:radial-gradient(ellipse at 50% 48%,#8d5b7626,transparent 70%),linear-gradient(125deg,#10182aef,#21182de8)}
.section-top,.section-heading,.memory,.letter-intro,.question h2,.question-prelude,.question-description,.together-heading,.future-list,.closing{position:relative}
.section-heading>p,.memory>p:last-child,.letter-intro>p:not(.eyebrow),.question-description,.composite-note{color:#e9e2ef}
.memory>p:last-child{font-size:15px}.question-description{font-size:16px;line-height:2.1}.gentle-note{color:#cfc5da}.next-chapter p{color:#d8cde2}
h2{text-shadow:0 2px 8px #040a1e}h2 em{text-shadow:0 0 18px #f19be92b}
.letter-paper{text-shadow:none;background:#f2e9dffb;color:#493649}
.envelope{background:linear-gradient(145deg,#50405aeb,#29314feb);box-shadow:0 18px 48px #02071680,0 0 35px #e5abf11c}
.dream-scenes{max-width:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:23px;margin:65px auto 0;text-align:left}
.dream-card{min-width:0;border:1px solid #ead1ff3d;border-radius:18px;background:linear-gradient(145deg,#1d2942e6,#1d2033eb);padding:9px;transition:transform .4s,box-shadow .4s,border-color .4s;overflow:hidden}
.dream-stage{position:relative;display:block;width:100%;padding:0;border:0;background:transparent;border-radius:12px;overflow:hidden}
.dream-stage svg{display:block;width:100%;height:auto;aspect-ratio:360/220}
.scene-play-mark{position:absolute;right:11px;bottom:7px;font-size:23px;color:#ffe9fa;text-shadow:0 0 12px #b59fe4}
.dream-card p{font-family:var(--serif);display:flex;align-items:baseline;gap:12px;border:0;margin:0;padding:18px 9px 14px;font-size:16px;line-height:1.9;letter-spacing:.5px;color:#fff4fb}
.dream-card p>span{font-size:14px;color:#ffd1ed;flex-shrink:0}
.dream-card:hover,.dream-card.is-replaying{transform:translateY(-5px);border-color:#ffcaf0b3;box-shadow:0 0 30px #d9a2f347}
.dream-card.is-replaying .scene-play-mark{animation:scene-spark 1.4s ease-out 2}
.dream-stage svg *{animation-play-state:paused!important}
.dream-card.is-in-view svg *{animation-play-state:running!important}
.dream-card.is-replaying svg *{animation-duration:.9s!important}
.swimmer{animation:swimmer-glide 3s ease-in-out infinite alternate}.swimmer-girl{animation-delay:-1.6s}
.swim-arm{transform-box:view-box;transform-origin:0 0;animation:freestyle-arm 1.5s linear infinite}.arm-two{animation-delay:-.75s}
.swim-leg{transform-box:fill-box;transform-origin:right center;animation:flutter-kick .5s ease-in-out infinite alternate}.leg-two{animation-delay:-.25s}
.pool-shimmer{animation:water-current 4s linear infinite}.pool-ripple{animation:ripple-glimmer 2.2s ease-in-out infinite alternate}.swim-bubbles{animation:bubble-rise 2.8s ease-out infinite}
.cook-hand{transform-box:fill-box;transform-origin:0 20%;animation:cook-stir 2.5s ease-in-out infinite}.toast-hand{transform-box:fill-box;transform-origin:100% 0;animation:cook-stir 2.5s -1.2s ease-in-out infinite reverse}
.breakfast-steam{animation:breakfast-steam 3s ease-in-out infinite}.breakfast-toast{animation:toast-pop 5.5s ease-in-out infinite}.breakfast-egg{animation:egg-flip 5s ease-in-out infinite;transform-box:fill-box;transform-origin:center}.kitchen-heart{animation:little-heart 4s ease-in-out infinite}.breakfast-sun{animation:sun-glow 6s ease-in-out infinite alternate}
.travel-couple{animation:travel-sway 4.8s ease-in-out infinite;transform-origin:50% 90%}.camera-hand{transform-box:fill-box;transform-origin:0 90%;animation:selfie-pose 4.8s ease-in-out infinite}.camera-flash{animation:camera-flash 4.8s linear infinite}.travel-cloud{animation:cloud-pass 13s ease-in-out infinite alternate}.travel-snapshot{animation:photo-float 4.8s ease-in-out infinite}.travel-case{animation:case-roll 4.8s ease-in-out infinite}
.motion-paused .dream-card *,.motion-paused .reverie-light{animation-play-state:paused!important}
.music-player{position:fixed;left:22px;bottom:17px;z-index:12;width:228px;padding:8px 13px 7px;border:1px solid #e3bcf385;border-radius:17px;background:linear-gradient(120deg,#152448b8,#382a4c9c);backdrop-filter:blur(12px);box-shadow:0 0 22px #e3a6e31a;text-shadow:0 1px 4px #071029}
#music-toggle{display:grid;grid-template-columns:27px 1fr 20px;align-items:center;width:100%;gap:7px;border:0;padding:0;background:transparent;text-align:left}
.music-symbol{font-size:26px;color:#f4c9ee;text-shadow:0 0 15px #d3a7e9}.music-copy strong{display:block;font-size:11px;font-weight:400;letter-spacing:.6px;color:#fff0fa}.music-copy small{display:block;font-size:8px;color:#ddc8ea;letter-spacing:.5px;margin-top:2px}
.music-bars{display:flex;align-items:center;justify-content:center;gap:3px;height:25px}.music-bars i{width:2px;height:8px;background:#ffd5f0;border-radius:3px;animation:equalizer .8s ease-in-out infinite alternate;animation-play-state:paused}.music-bars i:nth-child(2){animation-delay:-.3s}.music-bars i:nth-child(3){animation-delay:-.6s}.music-player.is-playing .music-bars i{animation-play-state:running}
.music-volume{display:flex;align-items:center;gap:7px;margin:3px 2px 0 32px;color:#ddc1e5;font-size:10px;line-height:1;height:12px}.music-volume input{width:100%;height:3px;accent-color:#e9b3e4;cursor:pointer}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.site-footer{padding-bottom:120px}
@keyframes swimmer-glide{to{transform:translate(13px,-2px)}}
@keyframes freestyle-arm{0%{transform:rotate(-25deg) scaleX(1)}35%{transform:rotate(100deg) scaleX(.8)}65%{transform:rotate(210deg) scaleX(.8)}100%{transform:rotate(335deg) scaleX(1)}}
@keyframes flutter-kick{from{transform:rotate(-8deg)}to{transform:rotate(9deg)}}
@keyframes water-current{to{transform:translateX(45px)}}
@keyframes ripple-glimmer{to{opacity:.18;transform:translateX(-12px)}}
@keyframes bubble-rise{0%{opacity:0;transform:translate(12px,5px)}35%{opacity:.7}100%{opacity:0;transform:translate(-17px,-12px)}}
@keyframes cook-stir{50%{transform:rotate(-10deg)}}
@keyframes breakfast-steam{0%,100%{opacity:.15;transform:translateY(4px)}50%{opacity:.9;transform:translateY(-8px)}}
@keyframes toast-pop{0%,35%,65%,100%{transform:translateY(0)}45%,53%{transform:translateY(-16px)}}
@keyframes egg-flip{0%,50%,85%,100%{transform:translateY(0) rotate(0)}68%{transform:translateY(-18px) rotate(180deg)}84%{transform:translateY(0) rotate(360deg)}}
@keyframes little-heart{0%,100%{opacity:.3;transform:translateY(4px)}50%{opacity:1;transform:translateY(-7px)}}
@keyframes sun-glow{to{opacity:.5}}
@keyframes travel-sway{50%{transform:rotate(1deg) translateY(-2px)}}
@keyframes selfie-pose{0%,100%{transform:rotate(0)}35%,58%{transform:rotate(-7deg)}}
@keyframes camera-flash{0%,37%,43%,100%{opacity:0}39%,41%{opacity:1}}
@keyframes cloud-pass{to{transform:translateX(30px)}}
@keyframes photo-float{0%,100%{translate:0 0}50%{translate:0 -8px}}
@keyframes case-roll{50%{transform:translateX(3px) rotate(1deg)}}
@keyframes scene-spark{0%{scale:1;opacity:1}70%{scale:1.8;opacity:0}100%{scale:1;opacity:0}}
@keyframes equalizer{to{height:20px}}
@keyframes reverie-breathe{from{opacity:.25}to{opacity:.8}}
@media(hover:hover) and (min-width:761px){.portrait-universe{transform:perspective(1300px) rotateY(var(--portrait-tilt,0deg));transition:transform .25s}}
@media(max-width:1050px){.dream-scenes{gap:13px}.dream-card p{font-size:14px;padding:14px 5px 8px;gap:8px}}
@media(max-width:760px){.hero{padding-bottom:68px;row-gap:0}.hero-copy{padding:8px 0}.hero-copy:before{inset:-30px -10%;background:radial-gradient(ellipse,#070e25e6 18%,#070e2599 52%,transparent 75%)}.hero-reverie{height:230px;margin:4px -6% 0;border-radius:0}.hero-reverie img{object-position:68% 100%;mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}.galaxy-plane{opacity:.24}.scroll-cue{bottom:20px}.moments,.letter-section,.question,.together{background:linear-gradient(120deg,#0b1637f2,#17192be8);backdrop-filter:blur(10px);border-color:#e4cbff32}.question{background:linear-gradient(125deg,#10182af5,#281b31eb)}.memory>p:last-child,.question-description{font-size:14px;line-height:2.05}.dream-scenes{grid-template-columns:1fr;max-width:340px;gap:20px;margin-top:40px}.dream-card{padding:10px}.dream-card p{font-size:17px;padding:17px 8px 11px}.music-player{left:12px;bottom:12px;width:211px;border-radius:15px;padding:7px 11px 6px}.music-copy strong{font-size:10px}.music-copy small{font-size:7px}.music-symbol{font-size:24px}.music-volume{margin-top:3px}.motion-toggle{bottom:17px;right:12px;padding:8px 10px;font-size:8px}.site-footer{padding-bottom:120px}}
@media(prefers-reduced-motion:reduce){.dream-card *,.music-bars i,.reverie-light{animation:none!important}.galaxy-disc,.galaxy-plane,body:before{will-change:auto}}
