:root{--ink:#0b0a10;--panel:#14111c;--line:#3a3348;--paper:#efe7d6;--dim:#9a92a8;--mint:#b6f2a0;--grass:#5dca55;--alert:#ff5a6a;--sky:#87c8f0}*{box-sizing:border-box;margin:0;padding:0}body,html{min-height:100%;background:#050508;color:var(--paper);font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace}body{overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;border:0}.app{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:12px 12px 88px;transition:background .8s ease}.app.inside{background:radial-gradient(ellipse at 50% 20%,#1a1430 0,#050508 62%)}.app.outside{background:radial-gradient(ellipse at 50% 0,#ffe8a8 0,#87c8f0 42%,#4aa344 100%);padding-bottom:12px}.bezel{width:min(960px,100%);background:#111018;border:4px solid #2a2438;box-shadow:0 0 0 2px #09080e,0 18px 50px rgba(0,0,0,.55)}.app.outside .bezel{background:#e8f4c8;border-color:#2f6b28;box-shadow:0 0 0 2px #1a3d18,0 18px 40px rgba(20,50,10,.25)}.bezel-top{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;color:var(--dim);font-size:11px;letter-spacing:.08em}.app.outside .bezel-top{color:#245020}.dot{width:8px;height:8px;background:var(--alert);box-shadow:0 0 8px var(--alert)}.app.outside .dot{background:var(--grass);box-shadow:0 0 8px var(--grass)}.ghost{background:transparent;letter-spacing:.12em;font-size:10px;color:inherit}.screen{position:relative;background:#000;aspect-ratio:16/9;overflow:hidden}.game-canvas{width:100%;height:100%;display:block;image-rendering:pixelated;image-rendering:crisp-edges}.scanlines,.vignette{pointer-events:none;position:absolute;inset:0}.scanlines{background:repeating-linear-gradient(180deg,rgba(255,255,255,.035) 0,rgba(255,255,255,.035) 1px,transparent 0,transparent 3px);mix-blend-mode:overlay}.vignette{box-shadow:inset 0 0 80px 16px rgba(0,0,0,.55)}.screen.bloom{filter:saturate(1.2) contrast(1.05)}.screen.clear .scanlines,.screen.clear .vignette{display:none}.overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;z-index:3}.overlay.dim{background:rgba(4,3,8,.72)}.landing{background:#000;gap:14px}.landing-mark{font-size:28px;animation:bob 2.2s ease-in-out infinite}.title-xl{font-size:clamp(28px,7vw,52px);letter-spacing:.08em;color:var(--mint)}.sub{color:var(--dim);font-size:13px;max-width:36ch}.fine{color:#6e677c;font-size:11px;max-width:42ch}.controls-hint{color:#4c4658;font-size:10px;letter-spacing:.04em}.btn{background:#1c1826;color:var(--paper);border:2px solid #5a516c;padding:10px 16px;min-width:120px;letter-spacing:.06em;font-size:12px}.btn.primary,.btn:hover{border-color:var(--mint);color:var(--mint)}.btn.primary{background:#16301c}.btn.grass{background:#245820;border-color:#b6f2a0;color:#f4ffe8}.btn.huge{min-width:240px;padding:16px 22px;font-size:16px;animation:pulse 1.4s ease-in-out infinite}.row{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:16px}.panel{background:var(--panel);border:2px solid var(--line);padding:22px 20px 18px;max-width:420px}.panel h2{letter-spacing:.1em;font-size:20px;margin-bottom:8px}.popup-chrome{display:flex;justify-content:space-between;color:#7a7388;font-size:10px;margin-bottom:12px;border-bottom:1px solid #2a2438;padding-bottom:6px}.hud{position:absolute;inset:0;pointer-events:none;z-index:2}.hud-top{display:flex;justify-content:space-between;padding:8px 10px;font-size:11px;letter-spacing:.08em;text-shadow:0 1px 0 #000}.sanity{display:flex;align-items:center;gap:8px}.sanity.low{color:var(--alert)}.meter{width:88px;height:8px;background:#2a2438;border:1px solid #5a516c;display:inline-block;position:relative}.meter>span{position:absolute;inset:0 auto 0 0;background:#b6f2a0}.sanity.low .meter>span{background:var(--alert)}.quest{position:absolute;left:10px;bottom:10px;background:rgba(10,8,16,.78);border:2px solid #2f283c;padding:7px 9px;font-size:10px;display:flex;flex-direction:column;gap:3px}.quest span{color:var(--mint)}.prompt{left:50%;bottom:18px;transform:translateX(-50%);background:#efe7d6;color:#1a1410;padding:5px 8px;font-size:11px;border:2px solid #1a1410;white-space:nowrap}.prompt,.toasts{position:absolute}.toasts{right:10px;top:34px;display:flex;flex-direction:column;gap:6px;align-items:flex-end}.toast{background:#111826;border:2px solid #3b82f6;color:#dbeafe;padding:6px 8px;font-size:10px;max-width:220px;animation:pop .24s ease-out}.share-card{width:min(440px,100%);background:#102014;border:3px solid #b6f2a0;color:#e8ffd0;padding:18px 16px 16px;text-align:left}.share-head{text-align:center;letter-spacing:.16em;font-size:18px;color:#f4ffe8}.share-sub{text-align:center;color:#b7d8a8;font-size:11px;margin:8px 0 14px}.share-body{background:#0a160c;border:2px solid #3d7a32;padding:12px}.share-title{font-size:16px;margin-bottom:6px}.share-name{margin-bottom:8px}.share-body ul{list-style:none;font-size:13px;line-height:1.6}.share-stat{margin-top:6px}.share-stat.muted{color:#8fb887;font-size:11px}.session{margin-top:12px;font-size:12px}.session h3,.share-cta{letter-spacing:.12em;font-size:11px;margin:10px 0 6px}.session dl{display:grid;grid-template-columns:1fr 1fr;grid-gap:6px 12px;gap:6px 12px}.session div{display:flex;justify-content:space-between;gap:8px;border-bottom:1px dashed #2f5a28;padding-bottom:3px}.session dt{color:#8fb887}.mobile-controls{display:none;width:min(960px,100%);margin-top:10px;justify-content:space-between;align-items:flex-end;padding:0 6px}.dpad{display:grid;grid-template-areas:". up ." "left . right" ". down .";grid-gap:6px;gap:6px}.pad{width:52px;height:52px;background:#1c1826;border:2px solid #5a516c;color:var(--paper);font-size:16px;touch-action:none}.pad.up{grid-area:up}.pad.left{grid-area:left}.pad.right{grid-area:right}.pad.down{grid-area:down}.actions{display:flex;gap:8px}.pad.act{width:64px;height:64px;border-radius:999px;background:#16301c;border-color:var(--mint)}@media (max-width:820px),(pointer:coarse){.mobile-controls{display:flex}.app.inside{padding-bottom:12px;justify-content:flex-start;padding-top:8px}.prompt{bottom:8px;font-size:10px}}@media (prefers-reduced-motion:reduce){.btn.huge,.landing-mark,.toast{animation:none}.scanlines{display:none}}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}@keyframes pop{0%{transform:translateY(-6px);opacity:0}to{transform:none;opacity:1}}