/* Each memory has its own light; controls inherit that scene's palette. */
:root{--glow:#673844}body{transition:background 1.2s ease;color:#f4ece7}body .nebula{filter:none!important;background:radial-gradient(ellipse at 50% 65%,color-mix(in srgb,var(--glow) 48%,transparent),transparent 55%),radial-gradient(ellipse at 85% 10%,color-mix(in srgb,var(--accent) 8%,transparent),transparent 40%);transition:background 1s}.vignette{background:radial-gradient(ellipse,transparent 45%,#05030450)}[hidden]{display:none!important}button:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.scene em{font-style:normal;color:inherit}.light h2 em{color:inherit}.scene h1,.scene h2{text-shadow:0 3px 30px #0005}.scene{padding-top:86px}.next{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 25%,transparent);background:color-mix(in srgb,var(--bg) 80%,transparent)}.next-arrow{background:var(--accent);color:var(--bg)}.back{color:var(--accent)}.flying-heart{color:var(--accent)}.primary{display:inline-flex;align-items:center;justify-content:center;gap:25px;min-height:48px;padding:12px 24px;background:var(--accent);color:var(--bg);border-radius:30px;font-weight:600;font-size:14px;transition:transform .25s,box-shadow .25s}.primary:hover{transform:translateY(-2px);box-shadow:0 7px 28px #0003}.quiet-button{background:transparent;padding:10px 12px;color:var(--accent);font-size:12px;text-decoration:underline;text-underline-offset:5px}.round{border:1px solid #ffffff24;border-radius:50%;width:40px;height:40px;background:#ffffff06;flex-shrink:0;font-size:19px}
.keepsakes{position:fixed;top:calc(20px + env(safe-area-inset-top,0px));left:5vw;right:5vw;display:flex;justify-content:space-between;z-index:24;pointer-events:none}.keepsakes button{pointer-events:auto;display:flex;gap:10px;align-items:center;border:1px solid color-mix(in srgb,var(--accent) 20%,transparent);background:color-mix(in srgb,var(--bg) 80%,transparent);color:var(--accent);backdrop-filter:blur(12px);padding:9px 15px;border-radius:30px;position:relative;min-height:42px}.keepsakes button>span:first-child{font-size:20px;line-height:1}.dock-label{font-size:11px}.keepsakes i{width:6px;height:6px;background:var(--accent);border-radius:50%;display:none}.keepsakes .ready i{display:block;box-shadow:0 0 14px var(--accent);animation:seal-pulse 2s infinite}
.entry{position:fixed;inset:0;z-index:30;display:flex;align-items:center;flex-direction:column;justify-content:center;gap:25px;padding:32px 22px;background:radial-gradient(ellipse at 50% 50%,#4d2d3038,transparent 70%);overflow:auto}.entry-note{font-size:11px;letter-spacing:2px;color:#ceaca0}.entry h1{font:500 clamp(54px,6.5vw,88px)/.94 var(--serif);text-align:center;letter-spacing:-2px;color:#f5e8dc}.entry p{font:13px/1.75 var(--sans);color:#c8b7b0;text-align:center;max-width:340px;min-height:46px}.entry .primary{--accent:#ecd2bb;--bg:#2b191a;min-width:220px}.envelope{position:relative;width:min(390px,77vw);aspect-ratio:1.65;background:linear-gradient(155deg,#ebd6b7,#cdb395);border-radius:6px;box-shadow:0 28px 70px #0007,inset 0 0 30px #a1886630;margin:8px 0;transform:rotate(-4deg);isolation:isolate;color:#644f44;transition:transform .6s}.envelope:before{content:'';position:absolute;inset:0;background:linear-gradient(32deg,transparent 49.7%,#b79b762e 50%,transparent 50.5%),linear-gradient(-32deg,transparent 49.7%,#b79b762e 50%,transparent 50.5%);border-radius:inherit}.envelope:hover{transform:rotate(-1deg) translateY(-5px)}.envelope-flap{position:absolute;inset:0 0 35%;background:linear-gradient(#eedbbf,#dbc09e);clip-path:polygon(0 0,100% 0,50% 100%);filter:drop-shadow(0 2px 2px #0005)}.wax{position:absolute;left:50%;top:52%;transform:translate(-50%,-50%) rotate(8deg);display:grid;place-items:center;width:65px;height:65px;border-radius:48% 44% 47% 43%;background:radial-gradient(circle at 34% 26%,#a95053,#69272f);border:4px double #b8615c88;box-shadow:2px 6px 8px #6e463955,inset 0 0 0 5px #6b202722;color:#d79388;font:italic 31px var(--serif);text-shadow:0 1px #e1ac9366;z-index:3}.envelope-name{position:absolute;right:18px;bottom:18px;font:italic 18px var(--serif)}.envelope.ready .wax{animation:seal-pulse 2s infinite}.envelope.shake{animation:envelope-shake .6s}.entry .envelope{flex-shrink:0}
.intro{position:fixed;inset:0;z-index:32;background:#120e16;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;gap:32px;animation:intro-arrive .8s both}.intro p{font:500 clamp(44px,7vw,96px)/1.08 var(--serif);text-align:center;z-index:1;animation:intro-words 4.3s both}.intro p span{color:#e6bfcc}.intro b{font:400 12px var(--sans);letter-spacing:4px;text-transform:uppercase;color:#dab5bd;animation:phrase-in 1.5s .6s both}.intro-rings{position:absolute;width:75vw;aspect-ratio:1;border:1px solid #f3c4d233;border-radius:50%;box-shadow:0 0 100px #c78eac18,inset 0 0 150px #e7b1c20d;animation:intro-tunnel 4.3s cubic-bezier(.5,0,.6,1) both}.intro-rings:before,.intro-rings:after{content:'';position:absolute;inset:12%;border:1px solid #e9b1c233;border-radius:50%;box-shadow:0 0 80px #e3b8d222}.intro-rings:after{inset:25%}.intro button{position:absolute;bottom:40px;background:none;color:#d3b7c1;font-size:12px;padding:15px}
.memory-photo,.memory-photo.portrait,.memory-photo.art,.memory-photo.landscape{border-radius:6px;transform:none;animation:none;background:transparent;border:none;box-shadow:none;overflow:visible;max-width:100%;aspect-ratio:auto}.memory-photo img{object-fit:contain;object-position:center!important;border-radius:5px;filter:drop-shadow(0 18px 30px #0003)}.photo-glint{display:none}.memory-photo.portrait{width:auto;height:100%;max-height:52svh;flex:1;aspect-ratio:720/1280}.memory-photo.art{width:min(730px,85vw);max-height:52svh;flex:1}.memory-photo.landscape{width:min(1000px,86vw);height:auto;aspect-ratio:790/429;flex:0 1 auto;margin:auto 0}.photo-scene.active img{animation:memory-reveal 1.1s both}.light-stage>img,.render-stage>img{mask-image:none;mix-blend-mode:normal;animation:none;filter:drop-shadow(0 20px 30px #0003);border-radius:5px}.render-ring{display:none}.light-stage,.render-stage{max-height:55svh}.spotlight{opacity:.35}
.dota{gap:12px}.dota h2{font-size:clamp(29px,3.1vw,49px);max-width:830px}.summon{width:min(780px,100%);min-height:120px}.summon:after{bottom:46px;height:40px}.dota-hero{height:110%;width:61%;bottom:0}.dota-hero.locked{filter:brightness(0) drop-shadow(0 0 1px #efc9c666) drop-shadow(0 0 18px #b0797922);opacity:.55}.dota-hero.locked.aside-left,.dota-hero.locked.aside-right{opacity:.3}.elements{margin-top:0;gap:14px}.elements button{width:39px;height:39px;font-size:19px;background:color-mix(in srgb,var(--bg) 90%,transparent);border-color:#ffffff20;color:#aaa}.elements button.unlocked{color:var(--accent)}.draft-panel{width:min(560px,100%);flex-shrink:0;position:relative;z-index:7}.draft-panel label{display:block;font-size:12px;color:#d3c6c0;margin-bottom:10px;text-align:center}#hero-form{display:flex;gap:8px}#hero-name{width:100%;min-width:0;border:1px solid #ffffff24;border-radius:28px;padding:13px 17px;font:16px var(--sans);color:#f5ece6;background:#ffffff05}#hero-name::placeholder{color:#b7a9a5}#hero-form .primary{padding:10px 19px;min-height:46px}.draft-bottom{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:49px}.draft-bottom p{font-size:11px;line-height:1.5;color:#c8b5b0;max-width:390px}#hint-home{display:block;min-width:99px;min-height:38px}#hint{white-space:nowrap;touch-action:manipulation;border-radius:30px}.escaping{position:fixed;z-index:42;background:var(--accent);color:var(--bg);padding:14px 20px;box-shadow:0 8px 40px #0008;text-decoration:none;transition:left .2s ease,top .2s ease}
.emote{gap:22px}.emote h2{font-size:clamp(31px,3.6vw,52px);max-width:800px}.emote-stage{width:min(620px,88vw);border:1px solid color-mix(in srgb,var(--accent) 22%,transparent);border-radius:18px;background:color-mix(in srgb,var(--bg) 78%,transparent);box-shadow:0 20px 80px #0002;padding:16px 18px 12px;min-height:0;overflow:hidden}.editor-bar{display:flex;align-items:center;justify-content:space-between;width:100%;font-size:11px;color:var(--accent);padding:0 3px 12px;border-bottom:1px solid #ffffff0e;flex-shrink:0}.editor-bar span:first-child{font-weight:700}.emote-view{display:flex;align-items:center;flex:1;min-height:0;width:100%;gap:5px;background:radial-gradient(ellipse,color-mix(in srgb,var(--glow) 40%,transparent),transparent 67%)}.emote-love{height:100%;min-width:0}.emote-character{max-height:none;height:100%;width:100%;animation:none;object-fit:contain;filter:drop-shadow(0 10px 20px #0002)}.emote-view .round{width:34px;height:34px;font-size:17px;color:var(--accent);background:transparent;border-color:color-mix(in srgb,var(--accent) 20%,transparent)}.emote-caption{width:100%;display:flex;align-items:center;gap:14px;font-size:10px;color:var(--accent);padding:10px 4px;flex-shrink:0}.playhead{height:1px;flex:1;background:#ffffff19;position:relative}.playhead:before{content:'';position:absolute;height:7px;width:7px;border-radius:2px;background:var(--accent);top:-3px;left:0;animation:timeline 4s linear infinite}.emote-thumbs{display:flex;gap:7px;width:100%;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#ffffff25 transparent;padding:4px 2px 6px;flex-shrink:0;touch-action:pan-x}.emote-thumbs button{padding:3px;border:1px solid transparent;border-radius:9px;background:#ffffff04;width:44px;height:44px;flex:0 0 44px;opacity:.55;transition:all .25s}.emote-thumbs button[aria-pressed=true]{border-color:var(--accent);background:#ffffff0a;opacity:1}.emote-thumbs img{object-fit:contain}
.ferrari{gap:18px}.ferrari h2{font-size:clamp(35px,4vw,62px)}.race-stage{width:min(800px,90vw);padding:0;justify-content:center;gap:10px}.race-heading{display:flex;align-items:center;gap:10px;color:#dbbfb3;font-size:11px;letter-spacing:1px}.race-heading b{padding:5px 8px;border:1px solid #ffffff20;font-size:10px;color:#f4b0a1;border-radius:5px}.circuit{width:100%;position:relative;aspect-ratio:760/420;max-height:42svh;flex:0 1 auto}.circuit svg{height:100%;width:100%;overflow:visible}.track-edge{fill:none;stroke:#784443;stroke-width:47;stroke-dasharray:14 7}.track-road{fill:none;stroke:#2b2524;stroke-width:39}.track-line{fill:none;stroke:#ffffff17;stroke-width:1;stroke-dasharray:5 10}.circuit .car-travel{position:absolute;left:25%;top:20.2%;width:13%;aspect-ratio:3;will-change:transform;z-index:4}.leclerc-car{animation:none;filter:drop-shadow(0 5px 3px #000a);height:100%;object-fit:contain}.race-center{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;align-items:center;flex-direction:column;gap:8px;width:60%;pointer-events:none}.race-center>span{font-size:11px;color:#c9ada6}.race-center strong{font:500 clamp(45px,7vw,75px)/1 var(--serif);color:#f0c9b9}.race-center small{font:400 16px var(--sans);color:#a0827a}.race-center #race-state{font-size:10px}.accelerate{margin:0;font-size:13px;background:#b6503f18;border-color:#c6846440;color:#f3bfab;padding:0 24px;min-height:44px}.accelerate>span:first-child{font-size:24px}.boosting .accelerate{background:#b6503f40;box-shadow:0 0 32px #c4513333}.race-stage #race-again{min-height:44px}
.achievement-toast{position:fixed;left:50%;top:calc(76px + env(safe-area-inset-top,0px));transform:translateX(-50%);z-index:55;background:color-mix(in srgb,var(--bg) 92%,#fff);border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);color:var(--accent);border-radius:14px;padding:13px 22px;display:flex;align-items:center;gap:16px;box-shadow:0 12px 45px #0005;max-width:90vw;pointer-events:none;animation:toast-in .4s both}.achievement-toast>span{font-size:24px}.achievement-toast div{display:flex;flex-direction:column;gap:4px}.achievement-toast small{font-size:9px;letter-spacing:1px;opacity:.7}.achievement-toast b{font-size:12px;font-weight:500;white-space:nowrap}
dialog{color:var(--ink);background:var(--bg);border:1px solid #ffffff20;border-radius:18px;padding:36px;width:min(590px,calc(100vw - 30px));max-height:85svh;overflow-y:auto;overscroll-behavior:contain;box-shadow:0 30px 150px #0009}dialog::backdrop{background:#080609be;backdrop-filter:blur(10px)}.dialog-close{position:sticky;top:0;margin-left:auto;float:right;z-index:3;width:36px;height:36px;border-radius:50%;background:#0000000d;color:inherit;font-size:27px;line-height:1;display:grid;place-items:center}.dialog-close:focus-visible{outline-color:currentColor}#letter-dialog{background:#e9dcc7;color:#413b34;border:0;border-radius:6px;padding:26px 38px;animation:letter-open .7s both;box-shadow:0 30px 100px #0009}.letter-paper{padding:12px 0 18px}.letter-date{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:#877863}.letter-paper h2{font:500 46px/1.1 var(--serif);margin:26px 0 23px}.letter-paper p{font:400 15px/1.9 var(--sans);margin:0 0 18px}.letter-signature{font:italic 54px var(--serif);color:#965254;display:block;text-align:right}.letter-paper::selection{background:#c58c7f77}#badges-dialog h2{font:500 40px/1.05 var(--serif);margin:10px 0 15px}#badges-dialog>p{font-size:12px;line-height:1.8;color:#bcaeab}#badge-list{margin-top:25px}.badge{display:flex;align-items:center;gap:16px;padding:16px 0;border-top:1px solid #ffffff0d;color:#9a9090}.badge>span{font-size:25px;opacity:.5}.badge b{font-size:13px;font-weight:500}.badge p{font-size:11px;line-height:1.5;margin-top:5px;color:#aca2a0}.badge.earned{color:var(--accent)}.badge.earned>span{opacity:1}
@keyframes intro-tunnel{0%{transform:scale(.4) rotate(-30deg);opacity:0}25%{opacity:1}80%{opacity:1}100%{transform:scale(3) rotate(40deg);opacity:0}}@keyframes intro-words{0%{opacity:0;filter:blur(12px);transform:scale(.94)}22%,80%{opacity:1;filter:blur(0);transform:scale(1)}100%{opacity:0;filter:blur(7px);transform:scale(1.08)}}@keyframes intro-arrive{from{opacity:0}to{opacity:1}}@keyframes seal-pulse{50%{filter:brightness(1.2);box-shadow:0 0 30px #daab7555}}@keyframes envelope-shake{20%,60%{rotate:3deg}40%,80%{rotate:-3deg}}@keyframes memory-reveal{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes toast-in{from{opacity:0;translate:0 -12px}to{opacity:1;translate:0 0}}@keyframes letter-open{from{opacity:0;transform:translateY(25px) rotate(-2deg) scale(.95)}to{opacity:1;transform:translateY(0) rotate(0) scale(1)}}
@media(min-width:1100px) and (min-height:720px){.photo-scene .portrait{flex:0 1 310px;height:65svh;max-height:65svh}.photo-scene .art{flex:0 1 620px;height:58svh}.photo-scene .landscape{height:auto;flex:0 1 650px}.dota{padding-top:85px}.emote-stage{max-height:65svh}.scene.photo-scene{gap:7vw}.scene.photo-scene h2{font-size:clamp(48px,4.6vw,72px)}}
@media(max-width:600px){.scene{padding:82px 6vw calc(100px + var(--safe-bottom));gap:20px}.scene h2{font-size:clamp(31px,8.8vw,43px)}.keepsakes{top:calc(13px + env(safe-area-inset-top,0px));left:5vw;right:5vw}.keepsakes button{padding:7px 12px;min-height:39px}.dock-label{font-size:10px}.entry{gap:22px}.entry h1{font-size:62px}.entry p{font-size:12px}.entry-note{font-size:9px}.envelope{width:78vw;max-width:360px}.entry .primary{font-size:13px;min-height:46px}.memory-photo.portrait{width:auto;height:100%;max-height:52svh}.memory-photo.art{width:88vw;max-height:52svh}.memory-photo.landscape{width:88vw;max-height:50svh;margin:auto 0}.light-stage,.render-stage{max-height:53svh;width:88vw}.dota{gap:9px}.dota h2{font-size:clamp(27px,7.3vw,34px)}.dota-hero{width:100%;height:110%}.dota-hero.aside-left{transform:translateX(-84%) scale(.67)}.dota-hero.aside-right{transform:translateX(-16%) scale(.67)}.summon{min-height:100px}.elements button{width:35px;height:35px;font-size:17px}.summon:after{bottom:36px}.draft-panel label{font-size:11px}.draft-bottom{gap:6px}.draft-bottom p{font-size:10px}#hint-home{min-width:85px}#hint{font-size:11px}#hero-form .primary{font-size:12px;padding:10px 15px}.emote{gap:16px}.emote h2{font-size:clamp(28px,7.6vw,36px)}.emote-stage{padding:12px 10px 8px;width:88vw;border-radius:14px}.emote-thumbs button{width:39px;height:39px;flex-basis:39px}.emote-view .round{width:30px;height:30px}.emote-caption{font-size:9px}.ferrari{gap:24px}.ferrari h2{font-size:clamp(35px,9.3vw,44px)}.race-stage{width:96vw;gap:20px}.race-center strong{font-size:48px}.race-center>span{font-size:9px}.race-center #race-state{font-size:8px}.race-center{gap:5px}.race-heading{font-size:10px}.circuit{flex:0 1 auto;min-height:0}.accelerate{font-size:12px;min-height:45px}.story-controls{bottom:calc(20px + var(--safe-bottom))}.next-copy{font-size:12px}#letter-dialog{padding:20px 24px}.letter-paper p{font-size:13px;line-height:1.85}.letter-paper h2{font-size:40px}.letter-date{font-size:8px}#badges-dialog{padding:23px}#badges-dialog h2{font-size:34px}.achievement-toast{top:65px}}
@media(max-height:720px){.entry{gap:16px;padding:20px}.entry h1{font-size:52px}.entry .envelope{max-width:280px}.entry-note{font-size:9px}.entry p{font-size:11px;min-height:38px}.scene{padding-top:72px;padding-bottom:85px;gap:14px}.scene h2{font-size:clamp(29px,6.8vw,41px)}.dota h2,.emote h2{font-size:clamp(24px,6.5vw,34px)}.dota{gap:7px}.draft-panel label{margin-bottom:7px}.draft-bottom{min-height:39px}.summon{min-height:90px}.emote-stage{padding:9px 10px 6px}.editor-bar{padding-bottom:8px}.emote-thumbs button{width:34px;height:34px;flex-basis:34px}.emote-caption{padding:8px 2px}.race-stage{gap:8px}.race-center strong{font-size:45px}.race-center{gap:4px}.memory-photo.portrait{max-height:48svh}.light-stage,.render-stage{max-height:49svh}.story-controls{bottom:calc(14px + var(--safe-bottom))}}
@media(max-height:500px) and (orientation:landscape){.entry{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto auto auto;gap:8px 25px;padding:22px 10vw}.entry-note{grid-column:1}.entry h1{grid-column:1;grid-row:2;text-align:left;font-size:44px}.entry .envelope{grid-column:2;grid-row:1/3;max-width:250px;width:100%;justify-self:center}.entry p{grid-column:2;grid-row:3;font-size:10px}.entry .primary{grid-column:1;grid-row:3;min-width:0;width:190px;font-size:12px}.scene{padding:60px 6vw 65px;gap:22px}.scene h2{font-size:28px}.scene>div,.scene>figure{max-width:50%}.scene.dota{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr auto;gap:8px 25px}.dota h2{max-width:100%;width:100%;grid-column:1;grid-row:1;font-size:25px}.dota .summon{grid-column:2;grid-row:1/3;width:100%;height:100%;max-width:100%}.dota .draft-panel{grid-column:1;grid-row:2;max-width:100%}.draft-panel label{font-size:9px}.draft-bottom p{font-size:9px}#hero-form .primary{font-size:10px;padding:8px 12px}#hero-name{font-size:14px;padding:8px 12px}.emote-stage{height:64svh;max-height:64svh}.emote-thumbs{display:none}.emote-view .round{width:27px;height:27px}.race-stage{height:65svh;gap:5px}.circuit{max-height:43svh;width:auto;aspect-ratio:760/420;height:100%}.race-center strong{font-size:34px}.race-center>span{font-size:8px}.accelerate{min-height:30px;height:30px;font-size:10px}.race-heading{font-size:8px}.story-controls{bottom:10px}.keepsakes{top:8px}.keepsakes button{min-height:32px;padding:4px 10px}.memory-photo.portrait{max-height:65svh}.light-stage,.render-stage{max-height:65svh}.scene.photo-scene .memory-photo{max-height:62svh}.scene .memory-photo.landscape{height:auto}}
.circuit{width:min(100%,76svh);max-height:none;flex:0 0 auto}.scene{overflow-y:auto;scrollbar-width:none}.scene::-webkit-scrollbar{display:none}.draft-panel,.emote-stage,.race-stage{touch-action:pan-y}

.kindness-meter{cursor:pointer;position:relative;z-index:8;border:1px solid #f4d49b26;border-radius:30px;padding:10px 15px;background:#ffffff05;transition:background .3s,box-shadow .3s,transform .25s;--kindness-progress:0}.kindness-meter:hover,.kindness-meter:focus-visible{background:#ffe6b50e;box-shadow:0 0 28px #efc08018;transform:translateY(-2px)}.kindness-meter i em{width:calc(var(--kindness-progress)*100%);transition:width .35s cubic-bezier(.2,.8,.2,1)}.kindness-meter.complete{border-color:#ffe0a977;background:#ffe4a910;box-shadow:0 0 35px #f7c87533}.kindness-meter.kindness-hit{animation:meter-hit .35s ease-out}.kindness-ar-layer{position:absolute;inset:17% 18% 17%;pointer-events:none;z-index:7}.ar-glyph{position:absolute;left:var(--x);top:var(--y);color:#ffe4ad;font:18px var(--serif);text-shadow:0 0 16px #ffc477;opacity:0;animation:ar-glyph-rise var(--d) ease-out forwards;transform:rotate(var(--r))}.kindness-awake .warm-core{box-shadow:0 0 25px 8px #fff3c5,0 0 90px 30px #ffc98488,0 0 170px 70px #d9947655}.kindness-awake .warm-orbit{border-color:#f7d39b66;animation-duration:7s}.kindness-awake .kindness-note{opacity:1;animation:note-float 3s ease-in-out infinite}.heart-console{position:relative;flex:1;width:min(900px,92vw);min-height:330px;isolation:isolate}.heart-console>p{position:absolute;left:0;top:38%;max-width:290px;color:#d9c1d0;font-size:12px;line-height:1.6;opacity:.8;z-index:5}.heart-track{position:absolute;left:1%;top:65%;width:290px;height:2px;border-radius:2px;background:#f0cce01c;z-index:5}.heart-track b{position:absolute;left:50%;top:50%;width:56px;height:56px;border:1px solid #f3c7dd36;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 28px #d8a2c82b}.heart-track i{position:absolute;left:50%;top:50%;font:19px var(--serif);color:#ffd8eb;text-shadow:0 0 15px #eaa4c7;transform-origin:0 0;z-index:2}.galaxy-heart{left:72%;top:53%;width:390px;height:390px;transform:translate(-50%,-50%);z-index:4;border:1px solid #f5c9df20;box-shadow:0 0 0 14px #f7c9e208,0 0 70px #db9fc83d,inset 0 0 70px #d88bb52d;transition:box-shadow .5s,scale .3s}.galaxy-heart:hover{box-shadow:0 0 0 18px #f7c9e216,0 0 110px #eaaed657,inset 0 0 90px #e7a0c83d}.heart-orbit{position:absolute;inset:18%;border:1px solid #ffd2e543;border-radius:50%;transform:rotate(-25deg) scaleY(.64);animation:heart-orbit-spin 5s linear infinite}.heart-orbit:before,.heart-orbit:after{content:'';position:absolute;inset:-17%;border:1px solid #f8bedd1f;border-radius:50%;transform:rotate(55deg) scaleY(.75)}.heart-orbit:after{inset:15%;transform:rotate(-50deg) scaleY(.7)}.heart-core-mark{position:absolute;left:50%;top:50%;transform:translate(-50%,-57%);font:110px/.8 var(--serif);color:#ffe4ef;text-shadow:0 0 20px #fff,0 0 60px #eaa9d7,0 0 110px #b874ae;animation:heart-beat 1.25s ease-in-out infinite}.heart-score{position:absolute;bottom:20%;left:50%;transform:translateX(-50%);font:12px var(--sans);color:#f7d9e7;letter-spacing:2px}.galaxy-heart.complete{box-shadow:0 0 0 25px #f9d6e52b,0 0 170px #f0a8d98e,inset 0 0 120px #f3b7d562;animation:heart-supernova 2.4s ease-out both}.heart-miss .galaxy-heart{animation:heart-shake .35s ease-out}.finale-particles{position:absolute;inset:0;pointer-events:none;z-index:3}.finale-particles i{position:absolute;left:var(--x);top:var(--y);color:#f8cee4;font:20px var(--serif);opacity:0;animation:finale-particle 2.6s var(--delay) ease-out forwards;text-shadow:0 0 15px #f2a9d5}.finale-awake:after{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 72% 53%,#ffc7e22e,transparent 23%,transparent 52%,#ffb4dc0d 65%,transparent 76%);animation:finale-wash 2.5s ease-out both;z-index:1}
@keyframes meter-hit{50%{scale:1.04;filter:brightness(1.3)}}@keyframes ar-glyph-rise{0%{opacity:0;transform:translateY(12px) rotate(var(--r)) scale(.7)}25%{opacity:1}100%{opacity:0;transform:translateY(-46px) rotate(calc(var(--r) + 25deg)) scale(1.35)}}@keyframes note-float{50%{translate:0 -5px;rotate:2deg}}@keyframes heart-orbit-spin{to{rotate:360deg}}@keyframes heart-beat{0%,100%{scale:1}50%{scale:1.1}}@keyframes heart-shake{25%{translate:-6px 0}75%{translate:6px 0}}@keyframes heart-supernova{0%{scale:1}35%{scale:1.15;filter:brightness(1.4)}100%{scale:1.04;filter:brightness(1.1)}}@keyframes finale-particle{0%{opacity:0;transform:translate(0,0) scale(.2)}18%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(1.5)}}@keyframes finale-wash{0%{opacity:0;scale:.7}35%{opacity:1;scale:1}100%{opacity:.2;scale:1.2}}
@media(max-width:600px){.keepsakes button{padding:7px 9px}.keepsakes .dock-label{display:none}.heart-console{min-height:280px}.heart-console>p{left:4%;top:13%;max-width:220px;font-size:11px}.heart-track{left:8%;top:25%;width:220px}.galaxy-heart{left:50%;top:62%;width:290px;height:290px}.heart-core-mark{font-size:86px}.kindness-meter{width:min(340px,84vw);font-size:10px;padding:9px 11px}.kindness-note{right:-7%;font-size:12px}.kindness-ar-layer{inset:16% 3% 12%}}
@media(max-height:500px) and (orientation:landscape){.circuit{height:auto;width:min(100%,65svh);max-height:none}}
/* The opening is one continuous particle film, with a skip and a replay. */
.intro.cinema{background:#080610;padding:0;gap:0;isolation:isolate;opacity:calc(1 - var(--film-fade,0));animation:none;transition:none}.cinema canvas{position:absolute;inset:0;width:100%;height:100%;z-index:-2}.cinema-shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(#08061066,transparent 23%,transparent 70%,#08061077);z-index:-1}.cinema .cinema-caption{position:absolute;top:12%;font:500 clamp(28px,3.2vw,48px)/1.1 var(--serif);letter-spacing:-.5px;animation:none;opacity:0;transform:translateY(10px);transition:opacity 1.1s,transform 1.1s;color:#e8d7dc}.cinema[data-phase=orbit] .cinema-caption{opacity:1;transform:none}.cinema-date{position:absolute;bottom:22%;font:400 12px var(--sans);letter-spacing:5px;color:#e8c5c6;text-transform:uppercase;opacity:0;transition:opacity 1.2s}.cinema[data-phase=eighteen] .cinema-date{opacity:1}.cinema #skip-intro{bottom:calc(25px + var(--safe-bottom));font-size:12px;letter-spacing:.3px;border:1px solid #e1c4d328;border-radius:30px;padding:12px 20px;background:#17101c80;backdrop-filter:blur(8px);color:#d7c0cd}.replay-film{position:absolute;bottom:calc(110px + var(--safe-bottom));background:none;border:0;color:var(--accent);opacity:.6;font-size:11px;padding:10px 15px;letter-spacing:.4px;transition:opacity .25s}.replay-film:hover{opacity:1}
#smoke-canvas{position:fixed;inset:0;width:100%;height:100%;z-index:18;pointer-events:none}.cat .pet{touch-action:manipulation}
.next{overflow:hidden;animation:next-beacon 3.6s ease-in-out infinite}.next:before{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,transparent 25%,color-mix(in srgb,var(--accent) 15%,transparent) 50%,transparent 70%);transform:translateX(-130%);animation:next-shimmer 5s ease-in-out infinite}.next-arrow{animation:next-nudge 2.4s cubic-bezier(.45,0,.3,1) infinite;position:relative}.next-copy{position:relative}.next:active{scale:.97}.next:hover .next-arrow{box-shadow:0 0 24px color-mix(in srgb,var(--accent) 50%,transparent)}
.kindness{justify-content:flex-start}.kindness h2{max-width:860px}.kindness-meter{display:flex;align-items:center;gap:13px;width:min(360px,72vw);margin-top:-14px;color:#d5c3ab;font-size:11px;letter-spacing:.08em;text-transform:uppercase;opacity:.82}.kindness-meter b{font-size:11px;font-weight:500;color:#ffe8bd;white-space:nowrap}.kindness-meter i{height:3px;flex:1;overflow:hidden;border-radius:5px;background:#ffe3b51c}.kindness-meter i em{display:block;width:100%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#cf916d,#ffe4a9);box-shadow:0 0 14px #f8d28d88}.kindness-spark{position:relative;width:min(440px,80vw);height:min(400px,45svh);min-height:180px;flex:1;background:none;display:grid;place-items:center;border-radius:50%;isolation:isolate}.warm-core{width:28px;height:28px;border-radius:50%;background:#fff0ca;box-shadow:0 0 20px 5px #ffe8b5aa,0 0 65px 20px #ffc98455,0 0 140px 60px #d9947622;animation:warm-breathe 5s ease-in-out infinite}.warm-core:before,.warm-core:after{content:'';position:absolute;left:50%;top:50%;width:1px;height:170px;background:linear-gradient(transparent,#ffe6b299,transparent);transform:translate(-50%,-50%) rotate(35deg)}.warm-core:after{transform:translate(-50%,-50%) rotate(125deg)}.warm-orbit{position:absolute;inset:12%;border-radius:50%;border:1px solid #e9c29930;transform:rotate(-25deg) scaleY(.65);animation:warm-orbit 18s linear infinite}.warm-orbit:before,.warm-orbit:after{content:'';position:absolute;inset:-18%;border:1px solid #e9c29916;border-radius:50%;transform:rotate(55deg) scaleY(.7)}.warm-orbit:after{inset:16%;border-color:#e9c29925;transform:rotate(-40deg)}.kindness-note{position:absolute;top:15%;right:0;font:400 14px/1.5 var(--serif);color:#ecd7b8;text-align:left;opacity:.72;transform:rotate(4deg);text-shadow:0 0 18px #d9947644}.kindness-note:before{content:'✦';margin-right:8px;font:14px var(--sans);color:#f3c98d}.warm-hint{position:absolute;bottom:0;font-size:12px;color:#d5c3ab;opacity:.75}.kindness-spark:active .warm-core{scale:1.25}.race-center #race-state.sr-only{position:absolute;width:1px;height:1px;clip:rect(0,0,0,0)}
@keyframes next-beacon{50%{box-shadow:0 0 22px color-mix(in srgb,var(--accent) 13%,transparent)}}@keyframes next-shimmer{0%,60%{transform:translateX(-130%)}90%,100%{transform:translateX(130%)}}@keyframes next-nudge{0%,35%,75%,100%{translate:0 0}50%{translate:4px 0}60%{translate:1px 0}}@keyframes warm-breathe{50%{scale:1.15;filter:brightness(1.12)}}@keyframes warm-orbit{to{transform:rotate(335deg) scaleY(.65)}}
@media(max-width:600px){.cinema .cinema-caption{top:14%;font-size:30px}.cinema-date{bottom:25%;font-size:11px}.replay-film{bottom:calc(103px + var(--safe-bottom))}.kindness{gap:32px}.kindness-spark{max-height:42svh}}
@media(max-height:700px){.replay-film{bottom:85px;font-size:10px}.kindness{gap:15px}.kindness-spark{min-height:130px}.cinema .cinema-caption{top:10%}.cinema-date{bottom:19%}}
@media(max-height:500px) and (orientation:landscape){.replay-film{bottom:80px;left:9vw}.kindness-spark{height:60svh;max-height:60svh}.cinema .cinema-caption{top:10%;font-size:24px}.cinema-date{bottom:14%;left:8%;font-size:10px}.cinema #skip-intro{bottom:15px;right:20px}.warm-hint{bottom:10px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.intro-rings{opacity:.4}.car-travel{will-change:auto}.playhead:before{left:50%}.replay-film{display:none}}
 .kindness-meter i em{width:calc(var(--kindness-progress)*100%)!important}
