:root{--color-primary: #9fe870;--color-on-primary: #0b1a0e;--color-primary-soft: #c9f3ab;--color-primary-tint: rgba(159, 232, 112, .16);--color-energy: #7cc8ff;--color-energy-tint: rgba(124, 200, 255, .12);--color-energy-tint-strong: rgba(124, 200, 255, .22);--color-primary-glow: rgba(159, 232, 112, .3);--color-primary-glow-strong: rgba(159, 232, 112, .55);--color-health: #f2efe6;--color-danger: #ff9a4a;--color-on-danger: #1f0d02;--color-danger-soft: #ffd2ad;--color-nucleus: #b69cff;--color-background: #0e1a1d;--color-surface: rgba(9, 20, 22, .62);--color-surface-strong: rgba(9, 20, 22, .7);--color-surface-inset: #0f2023;--color-text: #eaf3ef;--color-text-muted: #a8bdb6;--color-border: rgba(214, 236, 228, .14);--color-border-strong: rgba(234, 243, 239, .7);--color-track: rgba(255, 255, 255, .1);--color-success: #9fe870;--color-warning: #ffd166;--color-threat: #ff4f45;--color-threat-glow: rgba(255, 79, 69, .55);--color-threat-faint: rgba(255, 79, 69, 0);--color-caution: rgba(255, 209, 102, .5);--font-family-base: "Noto Sans KR", system-ui, -apple-system, "Segoe UI", sans-serif;--font-family-mono: "IBM Plex Mono", ui-monospace, monospace;--font-family-display: "Space Grotesk", var(--font-family-base);--font-size-xs: 11px;--font-size-sm: 12px;--font-size-md: 14px;--font-size-lg: 15px;--font-size-xl: 18px;--font-size-display: 26px;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--radius-sm: 10px;--radius-md: 12px;--radius-lg: 14px;--radius-xl: 16px;--radius-full: 999px;--glass-blur: 10px;--border-default: 1px solid var(--color-border);--hud-action-size: 68px;--hud-icon-button: 44px;--hud-minimap: 156px;--hud-status-width: 600px;--hud-goal-width: 316px;--touch-target-min: 44px;--motion-fast: .15s;--motion-normal: .25s;--motion-ease: cubic-bezier(.2, 0, 0, 1);--z-world: 0;--z-hud: 10;--z-overlay: 100}@media(prefers-reduced-motion:reduce){:root{--motion-fast: 0ms;--motion-normal: 0ms}}html,body{margin:0;height:100%;background:var(--color-background);overflow:hidden}body{font-family:var(--font-family-base);color:var(--color-text);font-size:var(--font-size-md);line-height:var(--line-height-normal)}#app{position:relative;width:100vw;height:100vh}#world{position:absolute;inset:0;width:100%;height:100%;display:block;z-index:var(--z-world)}#hud{position:absolute;inset:0;z-index:var(--z-hud);pointer-events:none}#hud button{pointer-events:auto;font:inherit;color:inherit;cursor:pointer}#hud .mono{font-family:var(--font-family-mono);font-variant-numeric:tabular-nums}#hud .muted{color:var(--color-text-muted)}.glass{background:var(--color-surface);backdrop-filter:blur(var(--glass-blur));border:var(--border-default)}.icon-btn{width:var(--hud-icon-button);height:var(--hud-icon-button);border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center}#hud svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.hud-brand{position:absolute;left:var(--space-6);top:var(--space-5);display:flex;align-items:center;gap:var(--space-4)}.hud-brand .logo{font-family:var(--font-family-display);font-size:var(--font-size-display);font-weight:600;letter-spacing:-.5px;line-height:1.1}.hud-brand .sub{font-size:var(--font-size-sm);color:var(--color-text-muted)}.hud-brand .mode{padding:6px var(--space-3);border-radius:var(--radius-full);background:#9fe87024;border:1px solid rgba(159,232,112,.45);font-size:13px;font-weight:var(--font-weight-medium);color:var(--color-primary-soft)}.hud-goal{position:absolute;left:var(--space-6);top:92px;width:var(--hud-goal-width);box-sizing:border-box;padding:var(--space-4) 18px;border-radius:var(--radius-lg);display:flex;flex-direction:column;gap:var(--space-3)}.hud-goal .head{display:flex;justify-content:space-between;align-items:baseline}.hud-goal .title{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold)}.hud-goal .row{display:flex;justify-content:space-between;font-size:var(--font-size-md)}.hud-goal .item{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-md)}.hud-goal .item.done{color:var(--color-text-muted)}.hud-goal .item.done span{text-decoration:line-through}.hud-goal .item svg{width:16px;height:16px}.hud-goal .item.done svg{color:var(--color-primary)}.hud-goal .item.todo svg{color:var(--color-text-muted)}.bar{height:6px;border-radius:3px;background:var(--color-track);overflow:hidden}.bar>i{display:block;height:100%;border-radius:inherit;background:var(--color-primary);transition:width var(--motion-normal) var(--motion-ease)}.bar.health>i{background:var(--color-health)}.hud-time{position:absolute;left:50%;top:var(--space-5);transform:translate(-50%);display:flex;align-items:center;gap:var(--space-1);padding:4px 4px 4px var(--space-4);border-radius:var(--radius-full)}.hud-time .label{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-right:6px}.hud-time .clock{font-size:var(--font-size-xl);font-weight:var(--font-weight-medium);margin-right:var(--space-2)}.hud-time button{width:var(--hud-icon-button);height:var(--hud-icon-button);border-radius:50%;border:0;background:#ffffff14;display:flex;align-items:center;justify-content:center}.hud-view{position:absolute;left:50%;top:76px;transform:translate(-50%);font-size:var(--font-size-sm);color:var(--color-text-muted);letter-spacing:1px;padding:3px 10px;border-radius:var(--radius-full);background:#09141680}.hud-menu{position:absolute;right:var(--space-6);top:var(--space-5);display:flex;gap:var(--space-2)}.hud-map{position:absolute;left:var(--space-6);bottom:var(--space-6);display:flex;align-items:flex-end;gap:var(--space-3)}.minimap{width:var(--hud-minimap);height:var(--hud-minimap);border-radius:50%;background:var(--color-surface-strong);border:1px solid rgba(214,236,228,.2);position:relative;overflow:hidden}.minimap canvas{position:absolute;inset:0;width:100%;height:100%}.hud-zoom{display:flex;flex-direction:column;gap:var(--space-2)}.hud-zoom .icon-btn{font-size:20px}.scalebar{display:flex;flex-direction:column;gap:var(--space-1);padding-top:var(--space-1)}.scalebar i{display:block;height:6px;border:2px solid var(--color-text);border-top:0;box-sizing:border-box}.scalebar span{font-size:var(--font-size-sm)}.hud-status{position:absolute;left:50%;bottom:var(--space-6);transform:translate(-50%);width:var(--hud-status-width);box-sizing:border-box;padding:14px var(--space-5);border-radius:var(--radius-xl);display:flex;align-items:center;gap:var(--space-5)}.hud-status .avatar{width:56px;height:56px;border-radius:50%;background:#eaf3ef1a;border:1px solid rgba(234,243,239,.35);display:flex;align-items:center;justify-content:center;flex:none}.hud-status .avatar svg{width:38px;height:38px}.hud-status .body{flex:1;display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.hud-status .head{display:flex;justify-content:space-between;align-items:baseline}.hud-status .name{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold)}.hud-status .name small{font-weight:var(--font-weight-regular);color:var(--color-text-muted);font-size:13px}.hud-status .grid{display:grid;grid-template-columns:44px minmax(0,1fr) 36px;align-items:center;column-gap:10px;row-gap:6px;font-size:var(--font-size-sm);color:var(--color-text-muted)}.hud-status .grid .bar{height:8px;border-radius:4px}.hud-status .grid .val{color:var(--color-text)}.hud-actions{position:absolute;right:var(--space-6);bottom:var(--space-6);display:flex;gap:14px;align-items:flex-end}.hud-actions .act{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:var(--font-size-sm)}.action-btn{width:var(--hud-action-size);height:var(--hud-action-size);border-radius:50%;border:2px solid rgba(234,243,239,.35);background:var(--color-surface);display:flex;align-items:center;justify-content:center}.action-btn svg{width:28px;height:28px}.action-btn.primary{border-color:var(--color-border-strong)}.action-btn.pressed{background:#9fe87040;border-color:var(--color-primary)}.action-btn:disabled{opacity:.45;cursor:not-allowed}.action-btn.gauge{border-color:#eaf3ef33;padding:4px;box-sizing:border-box;background:conic-gradient(var(--color-primary) 0 var(--gauge, 0%),rgba(255,255,255,.08) var(--gauge, 0%) 100%)}.action-btn.gauge>span{width:100%;height:100%;border-radius:50%;background:var(--color-surface-inset);display:flex;align-items:center;justify-content:center}.hud-fps{position:absolute;right:var(--space-6);top:76px;font-size:var(--font-size-sm);padding:3px 10px;border-radius:var(--radius-full);background:#09141680;display:none}.hud-fps.on{display:block}.hud-fps.bad{color:var(--color-danger)}.hud-warn{position:absolute;left:50%;top:118px;transform:translate(-50%);display:flex;align-items:center;gap:var(--space-2);padding:8px 16px;border-radius:var(--radius-full);background:#ff9a4a2e;border:1px solid var(--color-danger);color:var(--color-danger);font-weight:var(--font-weight-bold);font-size:var(--font-size-md);animation:hud-pulse .5s ease-in-out infinite alternate}.hud-warn[hidden]{display:none}.hud-threat{position:absolute;inset:0;opacity:0;transition:opacity .18s linear;pointer-events:none}.hud-threat-glow{position:absolute;inset:0;--gx: 50%;--gy: 50%;background:radial-gradient(circle at var(--gx) var(--gy),var(--color-caution),transparent 45%),radial-gradient(ellipse at center,transparent 58%,var(--color-caution) 100%)}.hud-threat-glow.predator{background:radial-gradient(circle at var(--gx) var(--gy),var(--color-threat-glow),var(--color-threat-faint) 50%),radial-gradient(ellipse at center,transparent 55%,var(--color-threat-glow) 100%);animation:threat-beat .7s ease-in-out infinite alternate}.hud-threat-label[hidden]{display:none}.hud-radar{position:absolute;left:50%;top:50%;width:240px;height:240px;transform:translate(-50%,-50%);border-radius:50%;overflow:hidden}.hud-radar svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}#hud .hud-radar .ring{fill:none;stroke:var(--color-caution);stroke-width:1.2;stroke-dasharray:2 5;opacity:.55}#hud .hud-radar .ring.inner{opacity:.25}#hud .hud-radar .cross{stroke:var(--color-caution);stroke-width:.6;opacity:.15;fill:none}.hud-radar-sweep{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,var(--color-caution),transparent 22%,transparent);opacity:.35;animation:radar-sweep 2.4s linear infinite;animation-play-state:paused}.hud-threat.on .hud-radar-sweep{animation-play-state:running}#hud .hud-radar .blip .arc{fill:none;stroke:var(--color-warning);stroke-width:6;stroke-linecap:round;filter:drop-shadow(0 0 4px var(--color-caution))}#hud .hud-radar .blip .dot{fill:var(--color-warning);stroke:none}#hud .hud-radar .blip.predator .arc{stroke:var(--color-threat);filter:drop-shadow(0 0 6px var(--color-threat-glow))}#hud .hud-radar .blip.predator .dot{fill:var(--color-threat);animation:radar-blip .5s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:center}@keyframes radar-sweep{to{transform:rotate(360deg)}}@keyframes radar-blip{0%{transform:scale(.8);opacity:.7}to{transform:scale(1.35);opacity:1}}@media(prefers-reduced-motion:reduce){.hud-radar-sweep{animation:none;opacity:.15}}.hud-threat-label{position:absolute;left:50%;top:208px;transform:translate(-50%);padding:6px 14px;border-radius:var(--radius-full);background:var(--color-surface-strong);border:1px solid var(--color-threat);color:var(--color-threat);font-weight:var(--font-weight-bold);font-size:var(--font-size-sm);white-space:nowrap}@keyframes threat-beat{0%{opacity:.7}to{opacity:1}}@keyframes threat-arrow{0%{transform:rotate(180deg) scale(.9)}to{transform:rotate(180deg) scale(1.12)}}#hud.observing .hud-threat{display:none}.hud-warn .dot{width:10px;height:10px;border-radius:50%;background:var(--color-danger)}@keyframes hud-pulse{0%{opacity:.75;transform:translate(-50%) scale(1)}to{opacity:1;transform:translate(-50%) scale(1.04)}}.hud-toast{position:absolute;left:50%;top:160px;transform:translate(-50%);padding:6px 14px;border-radius:var(--radius-full);background:var(--color-surface);border:var(--border-default);font-size:var(--font-size-md);color:var(--color-primary-soft)}.hud-toast[hidden]{display:none}.bar.health>i.low{background:var(--color-danger)}.action-btn.gauge.ready{border-color:var(--color-primary);box-shadow:0 0 0 3px #9fe87040}.gameover{position:absolute;inset:0;z-index:var(--z-overlay);display:flex;align-items:center;justify-content:center;background:#091416b8;backdrop-filter:blur(6px);pointer-events:auto}.gameover[hidden]{display:none}.gameover .card{width:420px;max-width:calc(100vw - 32px);box-sizing:border-box;padding:var(--space-6);border-radius:var(--radius-xl);background:var(--color-surface-strong);border:var(--border-default);display:flex;flex-direction:column;gap:var(--space-4)}.gameover h2{margin:0;font-family:var(--font-family-display);font-size:var(--font-size-display);font-weight:600}.gameover .cause{color:var(--color-danger);font-size:var(--font-size-md)}.gameover table{width:100%;border-collapse:collapse;font-size:var(--font-size-md)}.gameover td{padding:6px 0;border-bottom:1px solid rgba(234,243,239,.08);vertical-align:top}.gameover td:last-child{text-align:right;font-family:var(--font-family-mono);font-variant-numeric:tabular-nums}.gameover .best{color:var(--color-text-muted);font-size:var(--font-size-sm)}.gameover .new{color:var(--color-primary-soft);font-size:var(--font-size-sm);margin-left:6px}.gameover button{align-self:stretch;padding:12px;border-radius:var(--radius-md);border:1px solid var(--color-primary);background:#9fe87029;color:var(--color-primary-soft);font-weight:var(--font-weight-bold);font-size:var(--font-size-lg);font:inherit;cursor:pointer}.icon-btn{position:relative}.icon-btn.on{border-color:var(--color-primary);color:var(--color-primary-soft)}.icon-btn .badge{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--color-primary);color:#0e1a1d;font-size:11px;font-weight:var(--font-weight-bold);display:flex;align-items:center;justify-content:center}.icon-btn .badge[hidden]{display:none}.hud-observe{position:absolute;left:var(--space-6);top:92px;width:var(--hud-goal-width);box-sizing:border-box;padding:var(--space-4) 18px;border-radius:var(--radius-lg);display:flex;flex-direction:column;gap:var(--space-3)}.hud-observe[hidden]{display:none}.hud-observe .head{display:flex;justify-content:space-between;align-items:baseline}.hud-observe .title{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold)}.hud-observe .row{display:flex;justify-content:space-between;align-items:center;font-size:var(--font-size-md)}.hud-observe .speed{margin-left:4px;padding:2px 8px;border-radius:var(--radius-full);border:1px solid rgba(234,243,239,.25);background:transparent;font-size:12px}.hud-observe .speed.on{border-color:var(--color-primary);color:var(--color-primary-soft);background:#9fe87024}#hud.observing .hud-goal,#hud.observing .hud-status,#hud.observing .hud-actions,#hud.observing .hud-warn{display:none}.codex{position:absolute;inset:0;z-index:calc(var(--z-overlay) + 1);display:flex;align-items:center;justify-content:center;background:#091416b3;backdrop-filter:blur(6px);pointer-events:auto}.codex[hidden]{display:none}.codex .panel{width:920px;max-width:calc(100vw - 32px);max-height:calc(100vh - 48px);box-sizing:border-box;border-radius:var(--radius-xl);background:var(--color-surface-strong);border:var(--border-default);display:grid;grid-template-columns:240px 1fr;overflow:hidden}.codex .list{border-right:var(--border-default);display:flex;flex-direction:column;overflow:auto}.codex .list .head{padding:var(--space-5) var(--space-5) var(--space-3);font-family:var(--font-family-display);font-size:var(--font-size-xl);font-weight:600}.codex .list .head small{display:block;font-family:var(--font-family-base);font-size:var(--font-size-sm);color:var(--color-text-muted);font-weight:var(--font-weight-regular)}.codex .entry{display:flex;align-items:center;gap:var(--space-3);padding:10px var(--space-5);border:0;background:transparent;text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer}.codex .entry.on{background:#9fe8701a}.codex .entry .sw{width:34px;height:22px;object-fit:contain;flex:none}.codex .detail{padding:var(--space-5) var(--space-6);overflow:auto;display:flex;flex-direction:column;gap:var(--space-4)}.codex .detail h2{margin:0;font-family:var(--font-family-display);font-size:var(--font-size-display);font-weight:600}.codex .detail .latin{color:var(--color-text-muted);font-style:italic;font-size:var(--font-size-md);font-family:var(--font-family-base);font-weight:var(--font-weight-regular)}.codex .tag{display:inline-block;padding:2px 8px;border-radius:var(--radius-full);border:1px solid rgba(234,243,239,.3);font-size:12px;margin-right:6px}.codex .section{display:flex;flex-direction:column;gap:6px}.codex .section h3{margin:0;font-size:var(--font-size-sm);letter-spacing:1px;color:var(--color-text-muted)}.codex .section p{margin:0;font-size:var(--font-size-md);line-height:var(--line-height-normal)}.codex .section .src{font-size:12px;color:var(--color-text-muted)}.codex .section.game{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:#9fe87014;border:1px solid rgba(159,232,112,.25)}.codex .locked-msg{color:var(--color-text-muted)}.codex .list .entries{display:flex;flex-direction:column}.codex .hero{display:flex;gap:var(--space-5);align-items:flex-start}.codex .preview-wrap{flex:none;width:400px;height:280px;border-radius:50%;overflow:hidden;background:#0b1416;border:1px solid rgba(234,243,239,.25);box-shadow:inset 0 0 40px #0009,0 0 0 4px #091416cc,0 0 0 5px #eaf3ef1f}.codex .preview-wrap.locked{background:radial-gradient(circle,#1a2628,#070d10 80%)}.codex .preview{display:block;width:100%;height:100%}.codex .titles{display:flex;flex-direction:column;gap:6px;min-width:0}.codex .tagline{margin:0;font-size:var(--font-size-md);color:var(--color-primary-soft)}.codex .tags{display:flex;flex-wrap:wrap;gap:6px}.codex .tag{margin:0;white-space:normal;border-radius:var(--radius-md)}.codex .section.fun{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:#eaf3ef0d;border:1px solid rgba(234,243,239,.12)}.codex .detail>.src{font-size:12px;color:var(--color-text-muted)}.hud-status.compact{bottom:96px;right:12px;left:auto}.hud-actions{bottom:12px}.tutorial,.hud-observe{width:calc(100vw - 24px);top:60px}.codex .close{position:absolute;top:20px;right:24px;width:var(--hud-icon-button);height:var(--hud-icon-button);border-radius:50%;border:var(--border-default);background:var(--color-surface);color:inherit;font-size:18px;cursor:pointer}[hidden]{display:none!important}.hud-status.compact{width:auto;min-width:220px;padding:12px var(--space-5)}.hud-status.compact .head{gap:var(--space-4)}#hud.in-menu>*{display:none}.menu{position:absolute;inset:0;z-index:var(--z-overlay);pointer-events:auto}.menu[data-view=main]{background:linear-gradient(90deg,#060c0df5,#060c0dd9 36%,#060c0d33 70%)}.menu[data-view=mode],.menu[data-view=pause],.menu[data-view=settings]{display:flex;align-items:center;justify-content:center;background:#091416b8;backdrop-filter:blur(6px)}.menu button{font:inherit;color:inherit;cursor:pointer}.menu-main{position:absolute;inset:0}.menu-main .col{position:absolute;left:96px;top:96px;width:520px;max-width:calc(100vw - 48px);display:flex;flex-direction:column;gap:40px}.menu-main .titles{display:flex;flex-direction:column;gap:12px}.menu-main .studio{font-size:13px;color:var(--color-text-muted);letter-spacing:2px}.menu-main h1{margin:0;font-family:var(--font-family-display);font-size:84px;font-weight:600;letter-spacing:-2px;line-height:1}.menu-main p{margin:0;font-size:18px;color:#c3d3ce;line-height:1.6}.menu-main .nav{display:flex;flex-direction:column;gap:10px}.menu-main .item{display:flex;align-items:center;gap:16px;padding:16px 22px;border-radius:14px;background:#eaf3ef0f;border:1px solid var(--color-border);text-align:left}.menu-main .item:hover{background:#eaf3ef1f}.menu-main .item.primary{padding:18px 22px;background:var(--color-primary);color:var(--color-on-primary);border-color:var(--color-primary)}.menu-main .item.primary:hover{background:var(--color-primary-soft)}.menu-main .item svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}.menu-main .item .txt{display:flex;flex-direction:column}.menu-main .item .txt b{font-size:17px;font-weight:var(--font-weight-medium)}.menu-main .item.primary .txt b{font-size:20px;font-weight:var(--font-weight-bold)}.menu-main .item .txt small{font-size:13px;color:var(--color-text-muted)}.menu-main .item.primary .txt small{color:var(--color-on-primary);opacity:.8}.menu-main .item .key{margin-left:auto;font-size:13px}.menu-main .item.play-online{border-radius:var(--radius-full);padding:20px 28px;box-shadow:0 6px 24px var(--color-primary-glow);animation:play-glow 1.6s ease-in-out infinite alternate}.menu-main .item.play-ai{border-radius:var(--radius-full);padding:14px 28px;border-color:var(--color-energy);background:var(--color-energy-tint)}.menu-main .item.play-ai:hover{background:var(--color-energy-tint-strong)}.menu-main .item.play-ai .txt b{font-weight:var(--font-weight-bold)}@keyframes play-glow{0%{box-shadow:0 4px 16px var(--color-primary-glow)}to{box-shadow:0 6px 30px var(--color-primary-glow-strong)}}.menu-main .best{position:absolute;right:64px;bottom:64px;width:300px;box-sizing:border-box;padding:18px 20px;border-radius:14px;display:flex;flex-direction:column;gap:12px}.menu-main .best .label{font-size:12px;color:var(--color-text-muted);letter-spacing:1.5px}.menu-main .best .grid{display:grid;grid-template-columns:minmax(0,1fr) auto;row-gap:8px;font-size:14px}.menu-main .version{position:absolute;left:96px;bottom:40px;font-size:12px;color:#8ea39c}.menu .card{width:420px;max-width:calc(100vw - 32px);box-sizing:border-box;padding:var(--space-6);border-radius:var(--radius-xl);background:var(--color-surface-strong);border:var(--border-default);display:flex;flex-direction:column;gap:var(--space-3)}.menu .card h2{margin:0 0 var(--space-2);font-family:var(--font-family-display);font-size:var(--font-size-display);font-weight:600}.menu .btn{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:12px 16px;border-radius:var(--radius-md);border:var(--border-default);background:#eaf3ef0f;font-size:var(--font-size-lg)}.menu .btn.primary{border-color:var(--color-primary);background:#9fe87029;color:var(--color-primary-soft);font-weight:var(--font-weight-bold)}.menu .card.mode{width:480px}.menu .opt{display:flex;align-items:center;gap:var(--space-4);padding:16px 20px;border-radius:var(--radius-md);border:var(--border-default);background:#eaf3ef0f;text-align:left}.menu .opt:hover:not(:disabled){background:#eaf3ef1f}.menu .opt.primary{background:var(--color-primary);color:var(--color-on-primary);border-color:var(--color-primary)}.menu .opt.primary:hover{background:var(--color-primary-soft)}.menu .opt:disabled{cursor:not-allowed;opacity:.6}.menu .opt svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}.menu .opt .txt{display:flex;flex-direction:column;gap:2px;min-width:0}.menu .opt .txt b{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold)}.menu .opt .txt small{font-size:var(--font-size-sm);color:var(--color-text-muted)}.menu .opt.primary .txt small{color:var(--color-on-primary);opacity:.8}.menu .opt .badge{margin-left:auto;padding:2px 8px;border-radius:var(--radius-full);border:var(--border-default);font-size:var(--font-size-sm);color:var(--color-text-muted);white-space:nowrap}.menu .btn.small{padding:6px 12px;font-size:var(--font-size-sm)}.menu .btn:disabled{opacity:.6;cursor:default}.menu .btn small{font-size:var(--font-size-sm);font-weight:var(--font-weight-regular)}.menu .settings .row{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);font-size:var(--font-size-md);padding:6px 0;border-bottom:1px solid rgba(234,243,239,.08)}.menu .seg{display:flex;border-radius:var(--radius-full);border:var(--border-default);overflow:hidden}.menu .seg button{padding:6px 12px;border:0;background:transparent;font-size:var(--font-size-sm)}.menu .seg button.on{background:#9fe8702e;color:var(--color-primary-soft)}.menu .note{margin:0;font-size:var(--font-size-sm)}.menu .actions{display:flex;gap:var(--space-3)}.menu .actions .btn{flex:1;justify-content:center}.gameover button.secondary{border-color:var(--color-border);background:#eaf3ef0f;color:var(--color-text);font-weight:var(--font-weight-regular);font-size:var(--font-size-md)}.tutorial{position:absolute;left:var(--space-6);top:92px;width:var(--hud-goal-width);box-sizing:border-box;padding:var(--space-4) 18px;border-radius:var(--radius-lg);display:flex;flex-direction:column;gap:var(--space-3);pointer-events:auto;transition:border-color .3s}.tutorial.done{border-color:var(--color-primary);box-shadow:0 0 0 3px #9fe87033}.tutorial .head{display:flex;justify-content:space-between;align-items:baseline}.tutorial .title{font-size:var(--font-size-sm);letter-spacing:1px;color:var(--color-primary-soft);font-weight:var(--font-weight-bold)}.tutorial .skip{border:0;background:transparent;color:var(--color-text-muted);font-size:var(--font-size-sm);padding:0}.tutorial p{margin:0;font-size:var(--font-size-md);line-height:var(--line-height-normal)}.tutorial .dots{display:flex;gap:6px}.tutorial .dots i{width:8px;height:8px;border-radius:50%;background:var(--color-track)}.tutorial .dots i.on{background:var(--color-primary-soft)}.tutorial .dots i.done{background:var(--color-primary);opacity:.6}.tutorial .ok{align-self:flex-start;padding:6px 14px;border-radius:var(--radius-full);border:1px solid var(--color-primary);background:#9fe87029;color:var(--color-primary-soft);font-size:var(--font-size-sm)}#hud.observing .tutorial,#hud.touch .hud-fps{display:none}#hud.touch .action-btn,#hud.touch .icon-btn{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.hud-pvp{position:absolute;right:var(--space-6);top:112px;width:220px;box-sizing:border-box;padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);display:flex;flex-direction:column;gap:var(--space-2);font-size:var(--font-size-sm);pointer-events:none}.hud-pvp[hidden]{display:none}.hud-pvp .head{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-md);font-weight:var(--font-weight-medium)}.hud-pvp .dot{width:8px;height:8px;border-radius:var(--radius-full);background:var(--color-danger);flex:none}.hud-pvp .dot.on{background:var(--color-primary)}.hud-pvp .label{color:var(--color-text-muted);letter-spacing:1px}.hud-pvp ol{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:2px}.hud-pvp li{display:grid;grid-template-columns:16px minmax(0,1fr) auto;gap:var(--space-2)}.hud-pvp li .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hud-pvp li.me{color:var(--color-primary-soft);font-weight:var(--font-weight-bold)}.hud-pvp .hint{color:var(--color-text-muted);line-height:1.4}@media(max-width:960px),(max-height:520px){.hud-pvp{right:12px;top:60px;width:168px;padding:var(--space-2) var(--space-3)}.hud-pvp .hint{display:none}.codex .preview-wrap{width:300px;height:200px}.hud-brand .sub,.hud-brand .mode{display:none}.hud-brand{left:12px;top:10px}.hud-brand .logo{font-size:20px}.hud-time{transform:translate(-50%) scale(.85);transform-origin:top center}.hud-view{display:none}.hud-menu{right:12px;top:10px;gap:6px}.hud-map{left:12px;bottom:12px}.minimap,.minimap canvas{width:96px;height:96px}.hud-zoom .icon-btn{display:none}.hud-status.compact{left:auto;right:12px;bottom:100px;transform:none;min-width:0;padding:8px 12px}.hud-status .avatar{display:none}.hud-actions{right:12px;bottom:12px;gap:10px}.hud-actions .act>span{display:none}.action-btn{width:52px;height:52px}.action-btn.primary{width:72px;height:72px}.tutorial,.hud-observe{left:12px;top:56px;width:240px;padding:10px 12px}.tutorial p{font-size:var(--font-size-sm)}.hud-warn{top:60px;font-size:var(--font-size-sm)}.hud-threat-label{top:136px;font-size:var(--font-size-xs)}.hud-toast{top:100px;font-size:var(--font-size-sm)}.menu-main .col{left:24px;top:20px;right:24px;width:auto;max-width:none;flex-direction:row;align-items:center;gap:24px}.menu-main .titles{flex:1;min-width:0}.menu-main h1{font-size:40px}.menu-main p{font-size:13px}.menu-main .nav{flex:0 0 300px;gap:8px}.menu-main .item{padding:8px 14px;gap:10px}.menu-main .item.primary{padding:10px 14px}.menu-main .item.play-online,.menu-main .item.play-ai{padding:10px 18px}.menu-main .item .txt b,.menu-main .item.primary .txt b{font-size:15px}.menu-main .item .txt small{display:none}.menu-main .item svg{width:20px;height:20px}.menu-main .best{left:24px;right:auto;bottom:16px;width:220px;padding:8px 12px;gap:6px;font-size:12px}.menu-main .best .grid{font-size:12px}.menu-main .version{display:none}.menu .card{padding:var(--space-4);gap:var(--space-2);max-height:calc(100vh - 24px);overflow:auto}.menu .card h2{font-size:var(--font-size-xl);margin:0}.menu .btn{padding:8px 12px;font-size:var(--font-size-md)}.menu .settings .row{padding:3px 0;font-size:var(--font-size-sm)}.scalebar{display:none}}@media(max-width:640px){.codex{align-items:stretch}.codex .panel{width:100%;max-width:none;max-height:none;height:100%;border-radius:0;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}.codex .detail{min-width:0;overflow-x:hidden}.codex .tag{white-space:normal;text-align:center}.codex .list{border-right:0;border-bottom:var(--border-default);overflow:visible}.codex .list .head{padding:14px 16px 6px;font-size:var(--font-size-lg)}.codex .list .entries{flex-direction:row;overflow-x:auto;gap:4px;padding:0 10px 10px}.codex .entry{width:auto;flex:none;padding:6px 10px;border-radius:var(--radius-full);border:1px solid transparent;font-size:var(--font-size-sm)}.codex .entry.on{border-color:var(--color-primary)}.codex .detail{padding:14px 16px 24px}.codex .hero{flex-direction:column;align-items:center;gap:12px}.codex .preview-wrap{width:min(100%,300px);height:190px}.codex .titles{align-items:center;text-align:center;width:100%}.codex .locked-msg{white-space:normal}.codex .tags{justify-content:center}.codex .close{top:10px;right:10px}.menu-main .col{flex-direction:column;align-items:stretch;top:24px}.menu-main .nav{flex:none}.menu-main .best{display:none}.hud-time{left:12px;top:44px;transform:none}.hud-menu .icon-btn{width:40px;height:40px}.tutorial,.hud-observe{top:96px}.hud-warn{top:100px}.hud-threat-label{top:176px}.hud-toast{top:140px}}.credits{position:absolute;inset:0;z-index:calc(var(--z-overlay) + 2);overflow:hidden;background:radial-gradient(ellipse at 50% 120%,#203b3cf5,#091416fa 60%);pointer-events:auto;animation:credits-in 1.6s ease-out both}.credits[hidden]{display:none}.credits .roll{position:absolute;left:50%;top:100%;width:min(560px,calc(100vw - 32px));transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:var(--space-6);text-align:center;color:var(--color-text);animation-name:credits-roll;animation-timing-function:linear;animation-fill-mode:forwards}.credits h1{margin:0;font-family:var(--font-family-display);font-size:calc(var(--font-size-display) * 2.2);font-weight:600;color:var(--color-primary-soft);letter-spacing:.02em}.credits .lead{margin:0 0 var(--space-6);font-size:var(--font-size-lg);color:var(--color-text-muted)}.credits .sub{margin:calc(var(--space-4) * -1) 0 var(--space-6);color:var(--color-text-muted)}.credits .role{display:flex;flex-direction:column;gap:var(--space-1)}.credits .role small{font-size:var(--font-size-sm);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.08em}.credits .role span{font-size:var(--font-size-lg)}.credits .role .path{font-size:var(--font-size-md);line-height:1.6;color:var(--color-primary-soft)}.credits .cast{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2) var(--space-6);width:100%}.credits .cast li{display:flex;flex-direction:column;font-size:var(--font-size-md)}.credits .cast i{font-size:var(--font-size-sm);color:var(--color-text-muted)}.credits .thanks{margin:var(--space-6) 0 0;font-family:var(--font-family-display);font-size:var(--font-size-display);color:var(--color-primary-soft)}.credits .skip{position:absolute;right:var(--space-4);bottom:var(--space-4);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-border);background:#eaf3ef0f;color:var(--color-text);font:inherit;cursor:pointer}@keyframes credits-roll{0%{transform:translate(-50%)}to{transform:translate(-50%,calc(-100% - 45vh))}}@keyframes credits-in{0%{background-color:#f6faf0;opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){.credits .roll{animation:none;top:var(--space-6)}.credits{overflow-y:auto}}.ending-light{position:absolute;inset:0;pointer-events:none;opacity:0;background:radial-gradient(circle at 50% 50%,#fffae400,#fff6d6e6 75%);z-index:calc(var(--z-overlay) - 1)}.codex .start-btn{align-self:flex-start;margin:var(--space-2) 0;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-primary);background:var(--color-primary-tint);color:var(--color-primary-soft);font:inherit;font-weight:var(--font-weight-bold);cursor:pointer}.codex .start-hint{margin:var(--space-2) 0;color:var(--color-text-muted);font-size:var(--font-size-sm)}.codex .start-hint.on{color:var(--color-primary-soft)}.codex .start-btn.armed{border-color:var(--color-danger);color:var(--color-danger);background:transparent}.codex .start-block{display:flex;flex-direction:column;gap:var(--space-1);margin:var(--space-2) 0;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-inset)}.codex .name-field{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--color-text-muted)}.codex .name-field input{flex:1;min-width:0;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);font:inherit;font-size:var(--font-size-md)}.codex .name-field input:focus{outline:none;border-color:var(--color-primary)}.codex .name-preview{color:var(--color-primary-soft);font-weight:var(--font-weight-bold);font-size:var(--font-size-lg)}.codex .start-block .start-hint{margin:0;font-size:var(--font-size-xs)}.codex .start-row{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.codex .start-row .start-btn{margin:var(--space-1) 0 0}.gameover .who{color:var(--color-primary-soft);font-weight:var(--font-weight-bold);margin-top:var(--space-1)}
