:focus-visible{outline:2px solid #bc8752;outline-offset:6px}
.room-glow{animation:warmth 7s ease-in-out infinite alternate}.television{animation:tv-glow 8s ease-in-out infinite alternate}.window i{animation:twinkle 4s ease-in-out infinite alternate}.scene.lean .lulu{transform:rotate(17deg) translateX(50%)}
.opening-copy h1 em{display:inline-block;position:relative}.opening-copy h1 em:after{content:"";position:absolute;left:0;right:-.18em;bottom:-.14em;height:.12em;border-top:1px solid #dfc19680;border-radius:50%;transform:rotate(-6deg)}
.eyebrow,.section-label,.ending>span{font-size:.75rem}.section-label{letter-spacing:.17em}.letter{background:radial-gradient(ellipse at 2% 35%,#eedbcc70,transparent 55%),#fbf8f2}.letter-text p{line-height:1.9}
.secret-button{background:transparent;border:0;border-bottom:1px dashed #a47a5c;padding:.6rem 0;color:#785039;font-family:Georgia,serif;font-style:italic;font-size:1rem;text-align:left}.secret-button span{display:inline-block;margin-left:.6rem;transition:transform .4s}.secret-button:hover span{transform:rotate(90deg)}.secret-note{margin-top:1.5rem;padding:1.2rem 1.5rem;border-left:2px solid #c39875;background:#f1e6d9;font-family:Georgia,serif;font-style:italic;animation:note-in .5s both}
.evenings{overflow:hidden;background:#171f2d;color:#f8ebda;padding-top:7rem;padding-bottom:8rem}.evenings:before,.ending:before{content:"";position:absolute;inset:0;pointer-events:none;background-image:radial-gradient(circle at 9% 19%,#e7cca4 0 1px,transparent 2px),radial-gradient(circle at 89% 35%,#e7cca4 0 1px,transparent 2px),radial-gradient(circle at 27% 76%,#e7cca4 0 1px,transparent 2px),radial-gradient(circle at 79% 81%,#e7cca4 0 1px,transparent 2px),radial-gradient(circle at 65% 12%,#e7cca4 0 1px,transparent 2px),radial-gradient(ellipse at 50% 90%,#7e556b33,transparent 60%);animation:twinkle 6s ease-in-out infinite alternate}
.evenings .section-label{color:#c6ab85}.evenings .rule{background:#c6ab8533}.evenings .eyebrow{color:#d2b18b}.evenings-inner{position:relative;z-index:1}.evenings h2{font-size:clamp(2.6rem,5vw,4.6rem);max-width:17ch;margin:2rem auto 3rem}.evening-lines{color:#ded5d2}.evening-lines p{margin:1.5rem 0}.evening-lines p:last-child{color:#f2cd9d;font-style:italic}.evenings-close{border-color:#d7b58844;color:#e0c2a3;font-family:Georgia,serif;font-style:italic;font-size:1.5rem}
.distance-line{display:flex;align-items:flex-end;gap:1rem;max-width:34rem;margin:3rem auto 1rem;color:#dfc196;font-size:.75rem;letter-spacing:.15em;text-transform:uppercase}.distance-line svg{flex:1;min-width:0;overflow:visible}.distance-line path{fill:none;stroke:#dfc19655;stroke-width:1;stroke-dasharray:2 6}.distance-line circle{fill:#f7d6a3;filter:drop-shadow(0 0 4px #f4bc6a)}.travelling-light{offset-path:path('M10 65 Q200 -40 390 65');animation:across-the-miles 6s ease-in-out infinite}
.placeholder-card{border-radius:50% 50% 1px 1px;background:radial-gradient(circle at 50% 20%,#fbf5e8,#e6d7c5);min-height:25rem}.disc{position:relative;width:9rem;height:9rem;border:0;background:repeating-radial-gradient(circle,#302f34 0 2px,#464047 3px 4px);box-shadow:0 1rem 2rem #57412c22;animation:record-turn 20s linear infinite}.disc:after{content:"us";position:absolute;inset:32%;display:grid;place-items:center;background:#c89c79;border-radius:50%;color:#30242b;font-size:.7rem;letter-spacing:.08em}.photo-frame{transition:transform .8s,box-shadow .8s;background:linear-gradient(145deg,#eee2d1,#d9c4b2);border:12px solid #fffaf1;border-bottom-width:40px;box-shadow:0 12px 40px #5d423b18,12px 14px 0 #e4d9cb}.photo-frame:hover{transform:rotate(-1deg) translateY(-5px)}
.message{background:radial-gradient(ellipse at 80% 20%,#504151,#262633 70%)}.video-frame{border-radius:50% 50% 2px 2px;border-color:#ae8e7977;background:radial-gradient(ellipse at center,#6d526344,#1e2330);min-height:15rem}.treat{background:radial-gradient(ellipse at 50% 10%,#f6e8d8,#e5cfbc)}.ending{position:relative;overflow:hidden;padding-top:6rem}.ending>*{position:relative;z-index:1}.end-heart{color:#e5b99b;font-family:Georgia,serif;font-size:5rem;line-height:1.1;margin-bottom:2rem;text-shadow:0 0 45px #e2a77a66;animation:heartbeat 4s ease-in-out infinite}
#light-trail{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:8}.little-angel{position:fixed;left:0;top:0;width:64px;height:64px;padding:0;border:0;border-radius:50%;background:radial-gradient(circle,#edc58c22,transparent 70%);z-index:10;filter:drop-shadow(0 0 8px #efbb6c88);will-change:transform;touch-action:manipulation}.little-angel svg{width:100%;height:100%;overflow:visible;fill:#edce9e;stroke:#9c7447;stroke-width:.8}.little-angel .wing{fill:#fff2d7;stroke:#b9915b;transform-box:fill-box;animation:wingbeat 2.6s ease-in-out infinite alternate}.wing-left{transform-origin:right bottom}.wing-right{transform-origin:left bottom;animation-delay:-1.3s!important}.little-angel .halo{fill:none;stroke:#e6b861;stroke-width:2}.little-angel .angel-heart{fill:#bf766c;stroke:none}.little-angel:hover{filter:drop-shadow(0 0 13px #efbb6c)}
.angel-note{position:fixed;z-index:11;right:5.4rem;top:var(--note-top,25%);max-width:17rem;margin:0;padding:1rem 1.2rem;border:1px solid #cfa57566;border-radius:1rem 1rem 0 1rem;background:#fff8ec;color:#614735;box-shadow:0 10px 35px #1c182122;font-family:Georgia,serif;font-style:italic;font-size:1.05rem;opacity:0;transform:translateY(8px);pointer-events:none;transition:opacity .3s,transform .3s}.angel-note.is-open{opacity:1;transform:translateY(0)}.motion-toggle{position:fixed;bottom:1rem;right:1rem;z-index:12;border:1px solid #be987044;border-radius:2rem;background:#f8f1e8ed;color:#685441;padding:.5rem .9rem;font-size:.75rem;box-shadow:0 3px 15px #18152112;min-height:36px}
.reveal-ready{opacity:0;transform:translateY(18px);transition:opacity .9s ease,transform .9s ease}.reveal-ready.revealed{opacity:1;transform:none}.love-spark{position:fixed;z-index:12;pointer-events:none;color:#dca96b;left:var(--spark-x);top:var(--spark-y);font-size:1.1rem;animation:spark-flight 1.2s ease-out forwards}
@keyframes wingbeat{from{transform:rotate(-8deg) scaleX(.82)}to{transform:rotate(7deg) scaleX(1)}}@keyframes across-the-miles{0%{offset-distance:0%;opacity:0}15%,85%{opacity:1}100%{offset-distance:100%;opacity:0}}@keyframes warmth{from{opacity:.18;transform:scale(.97)}to{opacity:.4;transform:scale(1.08)}}@keyframes tv-glow{from{box-shadow:0 0 0 .15rem #625463,0 1rem 4rem #b3afc322}to{box-shadow:0 0 0 .15rem #625463,0 1rem 5rem #b3afc35a}}@keyframes twinkle{from{opacity:.35}to{opacity:.9}}@keyframes record-turn{to{transform:rotate(360deg)}}@keyframes heartbeat{0%,100%{transform:scale(1)}50%{transform:scale(1.07)}}@keyframes note-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes spark-flight{to{transform:translate(var(--spark-dx),var(--spark-dy)) rotate(100deg);opacity:0}}
body.motion-paused *,body.motion-paused *:before,body.motion-paused *:after{animation-play-state:paused!important;transition:none!important}body.motion-paused .reveal-ready{opacity:1;transform:none}body.motion-paused #light-trail{opacity:0}
@media(max-width:600px){.little-angel{width:48px;height:48px}.angel-note{right:3.6rem;max-width:calc(100vw - 5rem);font-size:1rem}.evenings{padding-top:5rem;padding-bottom:6rem}.distance-line{gap:.6rem;font-size:.65rem}.letter-text,.opening-copy>p{padding-right:1rem}.motion-toggle{font-size:.7rem;bottom:.6rem;right:.6rem}.ending{padding-bottom:7rem}.scene.lean .lulu{transform:rotate(17deg) translateX(60%)}}
.video-frame{width:100%;min-width:0}.video-frame span{max-width:100%}
@media(max-width:600px){.video-frame{min-height:0;aspect-ratio:4/3;font-size:1.15rem;padding:1.5rem}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.reveal-ready{opacity:1;transform:none}#light-trail{display:none}.travelling-light{display:none}}

