:root{--paper: #f6ecd8;--ink: #3a2f27;--accent: #f0b357;--star: #fdf4e1;--shell: rgba(18, 20, 34, .55);--radius: 14px;--serif: Georgia, "Iowan Old Style", "Palatino Linotype", "Times New Roman", serif;--sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--chrome-h: 170px;--gutter: clamp(.6rem, 3vw, 1.6rem);--scene-pad: clamp(.8rem, 3vw, 1.6rem);--stage-cap: calc(100svh - var(--chrome-h) - 1rem);--art-cap: calc(var(--stage-cap) - 2 * var(--scene-pad) - 2px)}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;padding:0;min-height:100%;background:#0b1020;color:var(--paper);font-family:var(--serif);overflow-x:hidden}#app{position:relative;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;width:100%;max-width:100%}.backdrop{position:fixed;inset:0;width:100%;height:100%;z-index:0;display:block}.skip-link{position:absolute;left:-9999px;z-index:10}.skip-link:focus{left:.5rem;top:.5rem;background:var(--paper);color:var(--ink);padding:.4rem .7rem;border-radius:8px}.topbar,.navbar,.stage{position:relative;z-index:1}.topbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem;padding:max(.6rem,env(safe-area-inset-top)) max(var(--gutter),env(safe-area-inset-right)) .6rem max(var(--gutter),env(safe-area-inset-left));background:linear-gradient(to bottom,#080a16bf,#080a1600)}.brand{margin:0;font-size:clamp(1rem,3.4vw,1.4rem);font-weight:500;letter-spacing:.02em;color:var(--star)}.controls{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.btn{font:inherit;font-family:var(--sans);font-size:.84rem;min-height:44px;padding:.5rem .9rem;border-radius:999px;border:1px solid rgba(253,244,225,.35);background:#0a0e1c8c;color:var(--star);cursor:pointer;transition:background .16s ease,border-color .16s ease,transform .12s ease}.btn:hover:not(:disabled){background:#fdf4e129}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.4;cursor:default}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn--primary{background:var(--accent);border-color:transparent;color:#241a0d;font-weight:600}.btn--ghost{padding:.45rem .7rem}.btn--icon,.btn--code{display:inline-flex;align-items:center;justify-content:center;gap:.4rem}.btn__icon,.btn__text{pointer-events:none}.btn__icon{display:inline-flex;flex:none;width:18px;height:18px}.btn__icon svg{display:block;width:100%;height:100%}.btn--code{font-variant-numeric:tabular-nums;letter-spacing:.06em}.btn--ghost.is-on{border-color:var(--accent)}.btn--act{margin:.2rem auto .4rem;display:block;background:#fdf4e124;border-color:var(--accent)}.volume{display:flex;align-items:center;gap:.35rem;font-family:var(--sans);font-size:.72rem;color:var(--star);opacity:.85}.volume__label{display:none}.volume input{width:72px;accent-color:var(--accent);height:44px}.stage{flex:1;display:flex;justify-content:center;padding:0 max(var(--gutter),env(safe-area-inset-right)) 1rem max(var(--gutter),env(safe-area-inset-left))}.scene{width:100%;max-width:44rem;background:var(--shell);backdrop-filter:blur(5px);border:1px solid rgba(253,244,225,.14);border-radius:var(--radius);padding:var(--scene-pad);opacity:1;display:grid;grid-template-columns:minmax(0,1fr);grid-template-areas:"head" "art" "text";align-content:start;column-gap:clamp(1rem,2.4vw,2rem)}.scene__head{grid-area:head;min-width:0}.scene__art-col{grid-area:art;min-width:0}.scene__text-col{grid-area:text;min-width:0}.scene.is-entering{animation:scene-in .64s cubic-bezier(.2,.7,.3,1) both;transform-origin:20% 100%}@keyframes scene-in{0%{opacity:0;transform:translateY(18px) rotate(-.8deg) scale(.985)}60%{opacity:1}to{opacity:1;transform:none}}.scene__counter{margin:0;font-family:var(--sans);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;opacity:.6}.scene__title{margin:.2rem 0 .7rem;font-size:clamp(1.3rem,5.4vw,2rem);font-weight:500;color:var(--star)}.scene-art{position:relative;width:100%;max-width:calc(var(--art-cap) * 16 / 10);margin-inline:auto;aspect-ratio:16 / 10;border-radius:10px;overflow:hidden;background:#080a1659;border:1px solid rgba(253,244,225,.12);touch-action:none;cursor:pointer}.scene-art:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.scene-art__svg,.scene-art__image{display:block;width:100%;height:100%}.scene-art__image,.scene-art__parallax,.scene-art__svg--overlay{position:absolute;inset:0}.scene-art__svg--overlay .art-backdrop{opacity:0}.scene-art__parallax{overflow:hidden}.scene-art__layer{position:absolute;display:block;width:100%;height:100%;object-fit:cover}.scene-art__layer--back{inset:0}.scene-art__layer--front{width:auto;height:58%;inset:auto 8% 6% auto;animation:fox-drift 9s ease-in-out infinite}@keyframes fox-drift{0%,to{transform:translateY(0)}50%{transform:translateY(-2.5%)}}.art-layer{pointer-events:none}.hotspot{fill:transparent;cursor:pointer}.hotspot:hover{fill:#fdf4e114}.glow-soft{filter:drop-shadow(0 0 3px var(--accent))}.smoke{animation:smoke 4.5s ease-in-out infinite}@keyframes smoke{0%,to{opacity:.4}50%{opacity:.85}}.pulley-turn{transform-box:fill-box;transform-origin:center;animation:spin 2.4s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.map-planet.is-visited circle{filter:drop-shadow(0 0 2px var(--accent))}.fox-bond.is-tamed,.sky-star.is-lit{filter:drop-shadow(0 0 3px var(--accent))}.fox-bond{transform-box:view-box;animation:fox-bond-drift 9s ease-in-out infinite}@keyframes fox-bond-drift{0%,to{transform:translateY(0)}50%{transform:translateY(-1.45px)}}.lamp-glow{filter:drop-shadow(0 0 4px #f0b357)}.scene__hint,.scene__status{margin:.6rem 0 .2rem;font-family:var(--sans);font-size:.86rem;line-height:1.5;opacity:.9}.scene__status{min-height:1.4em;color:var(--accent)}.scene__prose{margin-top:.9rem;font-size:clamp(1rem,2.6vw,1.1rem);line-height:1.65}.scene__prose p{margin:0 0 .85rem}.reveal{animation:reveal .7s ease both;animation-delay:calc(var(--i, 0) * .16s)}@keyframes reveal{0%{opacity:0;transform:translateY(8px);text-shadow:0 0 12px var(--accent)}to{opacity:1;transform:none;text-shadow:none}}.scene__reward{margin:.4rem 0 0;font-style:italic;color:var(--star)}.scene__transition{margin:.5rem 0 0;padding-top:.6rem;border-top:1px solid rgba(253,244,225,.16);opacity:.85}.navbar{display:flex;align-items:center;gap:.6rem;padding:.6rem max(var(--gutter),env(safe-area-inset-right)) max(.7rem,env(safe-area-inset-bottom)) max(var(--gutter),env(safe-area-inset-left));background:linear-gradient(to top,#080a16cc,#080a1600)}.progressbar{flex:1;height:4px;border-radius:999px;background:#fdf4e138;overflow:hidden}.progressbar__fill{display:block;height:100%;width:0;background:var(--accent);transition:width .42s ease}.map{position:fixed;inset:0;z-index:5;display:grid;place-items:center;padding:1rem;background:#040610b3}.map[hidden]{display:none}.map__panel{width:min(32rem,100%);max-height:80vh;overflow:auto;background:#0c1020f5;border:1px solid rgba(253,244,225,.2);border-radius:var(--radius);padding:1rem}.map__panel h3{margin:0 0 .6rem;font-weight:500;color:var(--star)}.map__list{list-style:none;margin:0 0 .8rem;padding:0;display:grid;gap:.3rem}.map__item{width:100%;display:flex;align-items:center;gap:.6rem;min-height:44px;padding:.4rem .6rem;border-radius:10px;border:1px solid transparent;background:transparent;color:var(--star);font:inherit;font-family:var(--sans);font-size:.86rem;text-align:left;opacity:.45;cursor:default}.map__item.is-visited{opacity:1;cursor:pointer;border-color:#fdf4e12e}.map__item.is-visited:hover{background:#fdf4e11a}.map__dot{width:10px;height:10px;border-radius:50%;background:#fdf4e14d;flex:none}.map__item.is-visited .map__dot{background:var(--star)}.map__item.is-complete .map__dot{background:var(--accent);box-shadow:0 0 6px var(--accent)}.map__num{font-variant-numeric:tabular-nums;opacity:.6;width:1.4em}.map__actions{display:flex;justify-content:space-between;gap:.5rem}.footnotes{position:relative;z-index:1;padding-inline:max(.5rem,env(safe-area-inset-left)) max(.5rem,env(safe-area-inset-right))}.audio-hint,.rights{margin:0 auto .4rem;padding:0 1rem;max-width:44rem;font-family:var(--sans);font-size:.72rem;text-align:center;opacity:.6}.audio-hint:empty{display:none}@media (max-width: 560px){.topbar{flex-wrap:nowrap;gap:.4rem}.brand{min-width:0;font-size:clamp(.95rem,3.6vw,1.15rem);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.controls{flex:none;flex-wrap:nowrap;gap:.3rem}.topbar .btn--icon .btn__text,.topbar .btn--code .btn__text{display:none}.topbar .btn--icon,.topbar .btn--code{width:44px;min-width:44px;padding:0;gap:0}.volume{display:none}}@media (max-width: 420px){.controls{gap:.25rem}.brand{font-size:clamp(.75rem,3.4vw,1.1rem)}.btn{font-size:.78rem;padding:.45rem .6rem}.volume input{width:56px}.scene{padding:.7rem}}@media (min-width: 720px){.volume__label{display:inline}}@media (orientation: landscape) and (min-width: 900px),(orientation: landscape) and (max-height: 560px){.scene{max-width:min(100%,140rem);max-height:var(--stage-cap);grid-template-columns:minmax(0,6fr) minmax(0,4fr);grid-template-areas:"art head" "art text";grid-template-rows:auto minmax(0,1fr);align-content:stretch}.scene__art-col{align-self:center}.scene__text-col{min-height:0;overflow-y:auto;overscroll-behavior:contain}.scene__prose,.scene__hint,.scene__status{max-width:38rem}.scene__head{margin-bottom:.2rem}.scene__title{margin-top:0}}@media (orientation: landscape) and (max-height: 560px){:root{--scene-pad: .6rem}.topbar,.navbar{padding-block:.3rem}.scene__prose{margin-top:.5rem}.scene__head{display:flex;align-items:baseline;gap:.5rem;margin-bottom:0}.scene__counter{flex:none;font-size:.6rem}.scene__title{margin:0;font-size:clamp(1.05rem,2.4vw,1.3rem)}.scene__replay{margin-top:0}.btn--act{margin-block:.15rem}.scene__text-col{scrollbar-width:thin;scrollbar-gutter:stable}}.scene-art__image,.scene-art__layer--back{animation:kenburns 44s ease-in-out infinite alternate}@keyframes kenburns{0%{transform:translate3d(var(--px, 0%),var(--py, 0%),0) scale(1.03)}50%{transform:translate3d(calc(var(--px, 0%) + .8%),calc(var(--py, 0%) - .6%),0) scale(1.07)}to{transform:translate3d(calc(var(--px, 0%) - .8%),calc(var(--py, 0%) + .4%),0) scale(1.045)}}.scene-art[data-kind=little-planet] .scene-art__image{animation:planet-bob 13s ease-in-out infinite}@keyframes planet-bob{0%,to{transform:translate3d(var(--px, 0%),var(--py, 0%),0) scale(1.04)}50%{transform:translate3d(var(--px, 0%),calc(var(--py, 0%) - 1.2%),0) scale(1.05) rotate(.5deg)}}.scene-art[data-kind=fox] .scene-art__layer--back{animation:wheat-sway 8s ease-in-out infinite}@keyframes wheat-sway{0%,to{transform:translateZ(0) scale(1.05)}50%{transform:translate3d(-.9%,.2%,0) scale(1.05) rotate(-.4deg)}}.art-layer{transform-box:fill-box;animation:layer-bob 5.5s ease-in-out infinite}@keyframes layer-bob{0%,to{translate:0 0}50%{translate:0 -1px}}.boa-reveal{animation:graphite-in .9s ease both}@keyframes graphite-in{0%{opacity:0}to{opacity:1}}.ambient{position:absolute;inset:0;overflow:hidden;pointer-events:none}.amb{position:absolute;display:block}.amb--star{width:3px;height:3px;border-radius:50%;background:var(--star);box-shadow:0 0 6px var(--star);animation:amb-twinkle var(--dur, 4s) ease-in-out var(--delay, 0s) infinite}@keyframes amb-twinkle{0%,to{opacity:.15;transform:scale(var(--s, 1))}50%{opacity:.95;transform:scale(calc(var(--s, 1) * 1.35))}}.amb--mote{width:2px;height:2px;border-radius:50%;background:var(--star);opacity:.4;animation:amb-mote var(--dur, 6s) ease-in-out var(--delay, 0s) infinite alternate}@keyframes amb-mote{0%{opacity:.12;transform:translateZ(0) scale(var(--s, 1))}to{opacity:.55;transform:translate3d(14px,-18px,0) scale(var(--s, 1))}}.amb--sand{width:14px;height:1.5px;border-radius:2px;background:var(--star);animation:amb-sand var(--dur, 5s) linear var(--delay, 0s) infinite}@keyframes amb-sand{0%{opacity:0;transform:translate3d(-30px,0,0) scaleX(var(--s, 1))}12%{opacity:.4}88%{opacity:.35}to{opacity:0;transform:translate3d(430px,-14px,0) scaleX(var(--s, 1))}}.amb--cloud{width:90px;height:18px;border-radius:50%;background:var(--star);opacity:.1;filter:blur(7px);animation:amb-cloud calc(var(--dur, 6s) * 4) ease-in-out var(--delay, 0s) infinite alternate}@keyframes amb-cloud{0%{transform:translate3d(-26px,0,0) scale(var(--s, 1))}to{transform:translate3d(26px,2px,0) scale(var(--s, 1))}}.amb--petal{width:5px;height:7px;border-radius:60% 40%;background:var(--accent);animation:amb-petal calc(var(--dur, 5s) * 1.6) ease-in-out var(--delay, 0s) infinite}@keyframes amb-petal{0%{opacity:0;transform:translate3d(0,-12px,0) rotate(0) scale(var(--s, 1))}15%{opacity:.75}85%{opacity:.55}to{opacity:0;transform:translate3d(18px,46px,0) rotate(160deg) scale(var(--s, 1))}}.ambient[data-ambient=lamp] .amb--glow{left:53.75%!important;top:17%!important}.amb--glow{width:46px;height:46px;margin:-23px 0 0 -23px;border-radius:50%;background:radial-gradient(circle,#f0b35780,#f0b35700 70%);animation:amb-flicker 2.8s ease-in-out infinite}@keyframes amb-flicker{0%,to{opacity:.55;transform:scale(.92)}42%{opacity:.95;transform:scale(1.06)}58%{opacity:.7;transform:scale(.98)}}.amb--shooting{width:54px;height:1.6px;border-radius:2px;background:linear-gradient(to left,var(--star),rgba(253,244,225,0));opacity:0;animation:amb-shooting 7.5s ease-in var(--delay, 0s) infinite}@keyframes amb-shooting{0%{opacity:0;transform:translateZ(0) rotate(20deg)}4%{opacity:.9}26%{opacity:0;transform:translate3d(220px,86px,0) rotate(20deg)}to{opacity:0;transform:translate3d(220px,86px,0) rotate(20deg)}}.burst{position:absolute;z-index:3;pointer-events:none}.burst__spark{position:absolute;border-radius:50%;background:var(--accent);box-shadow:0 0 6px var(--accent);animation:burst-fly var(--bdur, .6s) cubic-bezier(.15,.6,.4,1) forwards}.burst--big .burst__spark:nth-child(odd){background:var(--star);box-shadow:0 0 8px var(--star)}@keyframes burst-fly{0%{opacity:1;transform:translateZ(0) scale(1)}to{opacity:0;transform:translate3d(var(--dx, 0),var(--dy, 0),0) scale(.15)}}.stardust{position:absolute;inset:0;overflow:hidden;pointer-events:none;border-radius:var(--radius)}.stardust__fleck{position:absolute;top:96%;width:3px;height:3px;border-radius:50%;background:var(--star);box-shadow:0 0 5px var(--star);opacity:0;animation:stardust-rise var(--sdur, .9s) ease-out var(--sdelay, 0ms) forwards}@keyframes stardust-rise{0%{opacity:0;transform:translateZ(0)}25%{opacity:.85}to{opacity:0;transform:translate3d(6px,-140px,0) scale(.4)}}.scene.is-celebrating .scene-art{animation:celebrate .65s ease-out}@keyframes celebrate{0%,to{transform:scale(1)}35%{transform:scale(1.015)}}.cover{position:fixed;inset:0;z-index:8;pointer-events:none;background:radial-gradient(ellipse at 50% 38%,#10142aeb,#060812f7);animation:cover-fade 4.6s ease forwards}@keyframes cover-fade{0%,72%{opacity:1}to{opacity:0}}.cover__star{position:absolute;width:3px;height:3px;border-radius:50%;background:var(--star);box-shadow:0 0 7px var(--star);opacity:0;animation:cover-star 1.6s ease var(--cdelay, 0ms) forwards}@keyframes cover-star{0%{opacity:0;transform:scale(.4)}to{opacity:.9;transform:scale(1)}}.cover__title{position:absolute;top:42%;left:0;right:0;margin:0;text-align:center;font-size:clamp(1.6rem,6vw,2.8rem);color:var(--star);letter-spacing:.04em}.cover__letter{display:inline-block;white-space:pre;opacity:0;animation:cover-letter .7s ease var(--ldelay, 0ms) forwards}@keyframes cover-letter{0%{opacity:0;transform:translateY(.35em)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.scene.is-entering{animation:fade-in .26s ease both}.reveal{animation:fade-in .26s ease both;animation-delay:0ms}.smoke,.pulley-turn,.fox-bond,.scene-art__layer--front,.scene-art__image,.scene-art__layer--back,.scene-art[data-kind=little-planet] .scene-art__image,.scene-art[data-kind=fox] .scene-art__layer--back,.art-layer,.amb,.boa-reveal,.scene.is-celebrating .scene-art{animation:none}.ambient,.burst,.stardust,.cover{display:none}.progressbar__fill{transition:none}@keyframes fade-in{0%{opacity:0}to{opacity:1}}}[data-reduced=true] .smoke,[data-reduced=true] .pulley-turn,[data-reduced=true] .fox-bond,[data-reduced=true] .scene-art__layer--front,[data-reduced=true] .scene-art__image,[data-reduced=true] .scene-art__layer--back,[data-reduced=true] .art-layer,[data-reduced=true] .amb,[data-reduced=true] .boa-reveal,[data-reduced=true] .scene.is-celebrating .scene-art{animation:none}[data-reduced=true] .ambient,[data-reduced=true] .burst,[data-reduced=true] .stardust,[data-reduced=true] .cover{display:none}.eggs{position:absolute;inset:0;pointer-events:none}.egg{pointer-events:auto;position:absolute;width:44px;height:44px;margin:-22px 0 0 -22px;padding:0;border:none;border-radius:50%;background:radial-gradient(circle,#ffecaa47,#ffecaa00 70%);cursor:pointer;opacity:.55;transition:opacity .18s ease,transform .18s ease,box-shadow .18s ease}.egg:hover,.egg:focus-visible{opacity:1;box-shadow:0 0 18px 4px #ffecaa80;outline:none}.egg:focus-visible{outline:2px solid rgba(255,236,170,.9);outline-offset:2px}.egg.is-found{background:radial-gradient(circle,#ffecaa80,#ffecaa00 70%);opacity:.8}.egg--wiggle.is-live{animation:egg-wiggle .6s ease}.egg--spin.is-live{animation:egg-spin .7s ease}.egg--bob.is-live{animation:egg-bob .65s ease}.egg--glow.is-live{animation:egg-glow .8s ease}.egg--pop.is-live{animation:egg-pop .5s ease}.egg--fly.is-live{animation:egg-fly .9s ease}.egg--sway.is-live{animation:egg-sway .8s ease}.egg--flash.is-live{animation:egg-glow .5s ease,egg-pop .5s ease}@keyframes egg-wiggle{25%{transform:rotate(-9deg)}50%{transform:rotate(8deg)}75%{transform:rotate(-5deg)}}@keyframes egg-spin{to{transform:rotate(360deg)}}@keyframes egg-bob{30%{transform:translateY(-8px)}60%{transform:translateY(2px)}}@keyframes egg-glow{40%{opacity:1;box-shadow:0 0 26px 8px #ffecaabf}}@keyframes egg-pop{35%{transform:scale(1.35)}}@keyframes egg-fly{40%{transform:translate(10px,-14px);opacity:1}70%{transform:translate(-6px,-22px);opacity:.7}}@keyframes egg-sway{25%{transform:translate(-6px) rotate(-4deg)}65%{transform:translate(6px) rotate(4deg)}}[data-reduced=true] .egg.is-live{animation:none;opacity:1;box-shadow:0 0 18px 4px #ffecaa99}.egg-count__icon{width:.95em;height:.95em;vertical-align:-.12em;margin-right:.3em;color:var(--accent)}.scene__eggs{margin:.3rem 0 0;font-size:.82rem;opacity:.75}.scene{position:relative}.scene__replay{margin:.2rem 0 0;font-size:.82rem}
