:root{--night:#060812;--cream:#fdf3dc;--warm:#ffd98a;--panel:#101220b8;--panel-edge:#ffe2aa47;color:var(--cream);background:var(--night);-webkit-font-smoothing:antialiased;font-family:ui-rounded,Segoe UI Rounded,Nunito,Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{overscroll-behavior:none;background:var(--night);height:100%;margin:0;overflow:hidden}body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}.icon{fill:none;width:100%;height:100%;stroke:var(--cream);stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round}.icon-btn{--btn:48px;width:var(--btn);height:var(--btn);padding:calc(var(--btn) * .22);border-radius:calc(var(--btn) * .28);background:var(--panel);border:2px solid var(--panel-edge);opacity:.8;transition:opacity .2s,transform .15s}.icon-btn:hover{opacity:1}.icon-btn:active{transform:scale(.94)}.btn{border:2px solid var(--panel-edge);background:var(--panel);color:var(--cream);border-radius:999px;padding:10px 26px;font-size:18px;font-weight:700;transition:transform .15s,filter .2s}.btn:hover{filter:brightness(1.15)}.btn:active{transform:scale(.96)}.btn.primary{background:var(--warm);border-color:var(--warm);color:#3a2410}.btn.big{padding:14px 56px;font-size:26px;box-shadow:0 0 40px #ffd27859}.btn.small{padding:8px 16px;font-size:14px}.screen{background:var(--night);position:fixed;inset:0;overflow:hidden}.screen-corner{z-index:2;gap:10px;display:flex;position:absolute}.screen-corner.top-left{top:max(14px, env(safe-area-inset-top));left:max(14px, env(safe-area-inset-left))}.screen-corner.top-right{top:max(14px, env(safe-area-inset-top));right:max(14px, env(safe-area-inset-right))}.house-scene{background:#070b1e;width:100%;height:100%;position:absolute;inset:0}.star{fill:#dfe6f5;animation:3s ease-in-out infinite twinkle}@keyframes twinkle{50%{opacity:.3}}.room .room-fill{fill:#0b0d18;transition:fill .6s}.room .room-frame{fill:none;stroke:#17121f;stroke-width:7px}.room.done .room-fill{fill:url(#room-lit);filter:drop-shadow(0 0 16px #ffbe648c)}.room.done .room-frame{stroke:#6a3e1e}.room.next .room-fill{fill:url(#room-dim);animation:2.4s infinite room-flicker}.room.next .room-frame{stroke:#ffd98a;stroke-width:4px;stroke-dasharray:12 9}.room.soon .room-fill{fill:#16141c;animation:none}.room.soon .room-frame{stroke:#4a4660;stroke-dasharray:none}.room .furn{fill:#5a649629}.room .furn-line{fill:none;stroke:#5a649629;stroke-width:5px;stroke-linecap:round;stroke-linejoin:round}.room .furn-window{fill:#121830}.room.next .furn{fill:#ffd98a29}.room.next .furn-line{stroke:#ffd98a29}.room.done .furn{fill:#6e3a166b}.room.done .furn-line{stroke:#6e3a166b}.room.done .furn-window{fill:#23315e}.room .room-name{fill:#5a5d78;paint-order:stroke;stroke:#0a0b14;stroke-width:6px;stroke-linejoin:round;pointer-events:none;font-size:30px;font-weight:800}.room.done .room-name{fill:#4a2a0e;stroke:#ffeec8d9}.room.next .room-name{fill:var(--warm)}.room.soon .room-name{fill:#8a86a0}.room-soon{fill:#8a86a0;pointer-events:none;font-size:20px;font-style:italic}.room.interactive{cursor:pointer}.room.interactive:hover .room-fill{filter:brightness(1.2)drop-shadow(0 0 18px #ffc87899)}.play-badge circle{fill:var(--warm);stroke:#3a2410;stroke-width:3px;filter:drop-shadow(0 0 12px #ffd278e6)}.play-badge path{fill:#3a2410}.play-badge{animation:1.6s ease-in-out infinite badge-bob}.room.just-lit .room-fill{animation:1.6s ease-out lights-on}.map-fireflies circle{fill:#f6ffb0;filter:drop-shadow(0 0 6px #e6ff8ce6);animation:5s ease-in-out infinite alternate firefly-drift}.map-smoke circle{fill:#aaafc838;transform-box:fill-box;transform-origin:50%;animation:3.9s ease-out infinite smoke-rise}.clouds{animation:40s ease-in-out infinite alternate cloud-drift}@keyframes firefly-drift{0%{opacity:.2;transform:translate(0)}50%{opacity:1}to{opacity:.4;transform:translate(26px,-18px)}}@keyframes smoke-rise{0%{opacity:0;transform:translate(0)scale(.6)}15%{opacity:1}to{opacity:0;transform:translate(30px,-130px)scale(2.2)}}@keyframes cloud-drift{to{transform:translate(80px)}}@keyframes room-flicker{0%,to{fill-opacity:1}8%{fill-opacity:.4}12%{fill-opacity:1}16%{fill-opacity:.5}20%{fill-opacity:1}}@keyframes badge-bob{50%{translate:0 -6px}}@keyframes lights-on{0%,30%{fill-opacity:.1}38%{fill-opacity:.8}44%{fill-opacity:.2}60%,to{fill-opacity:1}}.spotlight{pointer-events:none;position:absolute;inset:0}.title-content{pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:4vh;display:flex;position:absolute;inset:0}.title-content h1{text-align:center;color:var(--warm);text-shadow:0 0 24px #ffc86e8c,0 4px #3a2410;margin:0;padding:0 16px;font-size:clamp(28px,6vw,72px)}.title-content .btn{pointer-events:auto}.map-hint{left:50%;bottom:max(12px, env(safe-area-inset-bottom));background:var(--panel);white-space:nowrap;opacity:.85;border-radius:999px;margin:0;padding:8px 20px;font-size:clamp(13px,2vw,18px);position:absolute;transform:translate(-50%)}.map-hint.done{color:var(--warm);font-weight:700}.album-btn{right:max(14px, env(safe-area-inset-right));bottom:max(12px, env(safe-area-inset-bottom));background:var(--panel);border:2px solid var(--panel-edge);height:48px;color:var(--cream);border-radius:14px;align-items:center;gap:8px;padding:0 16px 0 12px;font-size:18px;font-weight:700;display:flex;position:absolute}.album-btn .icon{width:26px;height:26px}.world-spot .world-hit{fill:#0000}.world-spot.playable{cursor:pointer}.world-spot.playable:hover .world-art{filter:brightness(1.18)drop-shadow(0 0 18px #ffd28273)}.world-spot.locked .world-art{opacity:.45}.world-spot.locked .signpost{opacity:.75}.road{stroke:#6a5a40}.road.lit{stroke:#ffd98a;filter:drop-shadow(0 0 6px #ffd278e6);animation:1.4s linear infinite road-march}.signpost text{pointer-events:none;font-weight:800}.sign-number{fill:#ffd98a;font-size:30px}.sign-name{fill:#fdf3dc;font-size:21px}.sign-sub{fill:#d8c8a8;font-size:14px;font-style:italic;font-weight:600}.sign-dot{fill:#3a2614;stroke:#24160a;stroke-width:1.5px}.sign-dot.on{fill:#ffd98a;filter:drop-shadow(0 0 4px #ffd278e6)}.sign-lock rect{fill:#c9a14a}.sign-lock path{stroke:#c9a14a}.world-spot.complete .signpost rect:nth-of-type(2){stroke:#ffd98a}@keyframes road-march{to{stroke-dashoffset:-18px}}.lighthouse-beam{transform-box:view-box;transform-origin:800px 160px;animation:6s ease-in-out infinite alternate beam-sway}.lighthouse-beam.small{transform-origin:1390px 236px}@keyframes beam-sway{0%{transform:rotate(-14deg)}to{transform:rotate(14deg)}}.wave{animation:5s linear infinite wave-roll}@keyframes wave-roll{to{transform:translate(80px)}}.game-root{touch-action:none;cursor:none;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.stage{--s:.5;flex:none;position:relative}.game-canvas{width:100%;height:100%;display:block}.hud{pointer-events:none;position:absolute;inset:0}.hud [data-ui]{pointer-events:auto;cursor:pointer}.hud .icon-btn{--btn:max(34px, calc(var(--s) * 64px))}.hud-corner{gap:calc(var(--s) * 14px);display:flex;position:absolute}.hud-corner.top-left{top:calc(var(--s) * 22px);left:calc(var(--s) * 22px)}.hud-corner.top-right{top:calc(var(--s) * 22px);right:calc(var(--s) * 22px)}.hud-corner.bottom-right{bottom:calc(var(--s) * 22px);right:calc(var(--s) * 22px)}.hint-btn.ready{opacity:1;border-color:var(--warm);animation:1.6s ease-in-out infinite hint-glow}@keyframes hint-glow{50%{box-shadow:0 0 calc(var(--s) * 40px) #ffd278cc}}.tool-btn{left:calc(var(--s) * 22px);bottom:calc(var(--s) * 22px);width:max(44px, calc(var(--s) * 88px));height:max(44px, calc(var(--s) * 88px));padding:calc(var(--s) * 6px);border-radius:calc(var(--s) * 22px);background:var(--panel);border:calc(var(--s) * 3px) solid var(--warm);position:absolute}.tool-btn.uv{box-shadow:0 0 calc(var(--s) * 26px) #aa6eff99;border-color:#b98aff}.tool-btn.new{animation:1.2s ease-in-out infinite hint-glow}.goal-tray,.inventory{display:flex;position:absolute;left:50%;transform:translate(-50%)}.goal-tray{top:calc(var(--s) * 22px);gap:calc(var(--s) * 12px)}.inventory{bottom:calc(var(--s) * 22px);gap:calc(var(--s) * 24px)}.slot{width:calc(var(--s) * 72px);height:calc(var(--s) * 72px);border-radius:calc(var(--s) * 18px);background:var(--panel);border:calc(var(--s) * 3px) solid var(--panel-edge)}.slot.filled{box-shadow:0 0 calc(var(--s) * 22px) #ffd27859;border-color:#ffd98abf;animation:.35s ease-out slot-pop}.photo-slot{width:calc(var(--s) * 56px);height:calc(var(--s) * 56px);align-self:center}.photo-slot.empty .item-icon,.goal-tray .slot.empty .item-icon{filter:brightness(0)invert()opacity(.22)}.item-icon{width:100%;height:100%;display:block}@keyframes slot-pop{40%{transform:scale(1.25)}}.caption{top:calc(var(--s) * 116px);transform:translate(-50%, calc(var(--s) * -10px));max-width:calc(var(--s) * 1100px);width:max-content;padding:calc(var(--s) * 14px) calc(var(--s) * 32px);background:var(--panel);border:calc(var(--s) * 2px) solid var(--panel-edge);font-size:max(14px, calc(var(--s) * 32px));text-align:center;opacity:0;border-radius:999px;transition:opacity .35s,transform .35s;position:absolute;left:50%}.caption.visible{opacity:1;transform:translate(-50%)}.complete{background:#04050c8c;justify-content:center;align-items:center;animation:.6s ease-out fade-in;display:flex;position:absolute;inset:0}.hud .complete{cursor:default}.complete-card{align-items:center;gap:calc(var(--s) * 20px);padding:calc(var(--s) * 48px) calc(var(--s) * 80px);border-radius:calc(var(--s) * 36px);background:var(--panel);border:calc(var(--s) * 3px) solid var(--panel-edge);flex-direction:column;display:flex}.complete-card h2{font-size:max(22px, calc(var(--s) * 56px));color:var(--warm);margin:0}.complete-actions{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.complete-bulb{width:calc(var(--s) * 90px);height:calc(var(--s) * 90px);box-shadow:0 0 calc(var(--s) * 60px) #ffd278cc, 0 0 calc(var(--s) * 160px) #ffbe5a66;background:radial-gradient(circle at 40% 35%,#fffbe8,#ffd98a 60%,#e8a83c);border-radius:50%;animation:2s ease-in-out infinite glow}@keyframes fade-in{0%{opacity:0}}@keyframes glow{50%{filter:brightness(1.1);transform:scale(1.06)}}.modal-backdrop{z-index:50;cursor:default;background:#03040a99;justify-content:center;align-items:center;padding:16px;animation:.2s ease-out fade-in;display:flex;position:fixed;inset:0}.modal{border:2px solid var(--panel-edge);background:#141627;border-radius:22px;width:min(420px,100%);max-height:100%;padding:18px 22px 22px;overflow-y:auto;box-shadow:0 20px 60px #00000080}.modal-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.modal-head h2{color:var(--warm);margin:0;font-size:24px}.modal .icon-btn{--btn:40px}.toggle-row{justify-content:space-between;align-items:center;padding:10px 0;font-size:18px;display:flex}.switch{border:2px solid var(--panel-edge);background:#2a2c40;border-radius:999px;width:52px;height:30px;padding:0;transition:background .2s;position:relative}.switch.on{background:var(--warm)}.switch-knob{background:var(--cream);border-radius:50%;width:20px;height:20px;transition:transform .2s;position:absolute;top:3px;left:3px}.switch.on .switch-knob{background:#3a2410;transform:translate(22px)}.dev-section{border-top:1px dashed var(--panel-edge);margin-top:14px;padding-top:10px}.dev-section h3{letter-spacing:.08em;text-transform:uppercase;color:#8a86a0;margin:0 0 4px;font-size:13px}.dev-section .toggle-row{padding:6px 0;font-size:15px}.dev-buttons{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.modal.album{width:min(640px,100%)}.album-grid{grid-template-columns:repeat(3,1fr);gap:18px;padding:8px 4px 4px;display:grid}.polaroid{background:#f8f4e8;border-radius:3px;margin:0;padding:8px 8px 0;box-shadow:0 6px 16px #0006}.polaroid-picture,.polaroid-missing{aspect-ratio:4/3;width:100%;display:block}.polaroid-missing{color:#6a6c80;background:#2a2c3a;justify-content:center;align-items:center;font-size:34px;font-weight:700;display:flex}.polaroid figcaption{text-align:center;color:#4a3a2a;padding:6px 0 8px;font-size:13px;font-weight:700}@media (height<=500px){.album-grid{grid-template-columns:repeat(6,1fr);gap:10px}.modal.album{width:min(900px,100%)}}.intro{cursor:pointer}.intro-scene,.intro-torch-layer,.intro-shade{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.intro-scene{pointer-events:auto}.intro-bulb{fill:#fff3c4;filter:drop-shadow(0 0 30px #ffd98a)}.phase-dark .intro-bulb,.phase-roll .intro-bulb,.phase-torch .intro-bulb{fill:#6a6250;filter:none}.intro-shade{background:radial-gradient(circle at 50% 30%,#ffc86e33,#ffc86e00 60%)}.phase-flicker .intro-shade{animation:1.3s step-end both intro-flicker}.phase-dark .intro-shade,.phase-roll .intro-shade{background:#060812f2}.phase-torch .intro-shade{background:radial-gradient(22% 30% at 50% 58%,#ffd2820d 0,#06081240 60%,#060812f2 100%)}@keyframes intro-flicker{0%{background:#060812e6}12%{background:#06081200}30%{background:#060812e6}42%{background:#0608121a}62%{background:#060812f2}70%{background:#06081200}to{background:#060812f2}}.intro-torch{opacity:0;transform:translate(2000px,780px)}.phase-roll .intro-torch,.phase-torch .intro-torch{opacity:1;transition:transform 1.3s cubic-bezier(.2,.7,.3,1);transform:translate(800px,780px)}.phase-roll .intro-torch-spin,.phase-torch .intro-torch-spin{animation:1.3s cubic-bezier(.2,.7,.3,1) both torch-roll}.phase-roll .intro-torch{filter:brightness(.45)}@keyframes torch-roll{0%{transform:rotate(-720deg)}to{transform:rotate(-90deg)}}.intro-skip{opacity:.5;margin:0;font-size:14px;position:absolute;bottom:12px;right:18px}.rotate-prompt{z-index:100;background:var(--night);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:28px;padding:24px;font-size:20px;display:flex;position:fixed;inset:0}.rotate-phone{border:4px solid var(--cream);border-radius:12px;width:56px;height:96px;animation:2.2s ease-in-out infinite rotate-phone;position:relative}.rotate-phone:after{content:"";background:var(--warm);width:10px;height:10px;box-shadow:0 0 14px var(--warm);border-radius:50%;margin-left:-5px;position:absolute;bottom:6px;left:50%}@keyframes rotate-phone{0%,20%{transform:rotate(0)}60%,to{transform:rotate(-90deg)}}
