:root{--bg: #050806;--bg-2: #0a120c;--panel: rgba(10, 24, 14, .82);--panel-border: rgba(88, 255, 128, .22);--green: #58ff80;--green-dim: #1f7a3a;--green-glow: rgba(88, 255, 128, .35);--amber: #ffb020;--amber-dim: #7a5210;--cyan: #4be3ff;--cyan-dim: #176b7c;--red: #ff4b4b;--red-dim: #7a1c1c;--violet: #c88bff;--violet-dim: #5a3a80;--text: #cfe9d4;--text-dim: #7fa387;--font-mono: "SF Mono", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", ui-monospace, monospace;--radius: 6px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px);--tap: 44px;--tile-missile: var(--red);--tile-shield: var(--cyan);--tile-energy: var(--amber);--tile-repair: var(--green);--tile-intel: var(--violet);--tile-missile-dim: var(--red-dim);--tile-shield-dim: var(--cyan-dim);--tile-energy-dim: var(--amber-dim);--tile-repair-dim: var(--green-dim);--tile-intel-dim: var(--violet-dim);--dur: 1;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;background:var(--bg);color:var(--text);font-family:var(--font-mono);font-size:15px;line-height:1.35;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;overflow:hidden}body{position:fixed;inset:0;width:100%;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}#root{height:100%;width:100%;overflow:hidden}button,input,select{font:inherit;color:inherit}button{cursor:pointer;touch-action:manipulation}::selection{background:var(--green-dim)}.app{position:relative;height:100%;width:100%;display:flex;flex-direction:column;padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left);background:radial-gradient(ellipse at 50% 40%,#0b1a10 0%,var(--bg) 70%)}.screen{flex:1;min-height:0;display:flex;flex-direction:column;padding:12px;gap:10px;overflow:hidden}.screen.scroll{overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.crt:before{content:"";pointer-events:none;position:absolute;inset:0;z-index:50;background:repeating-linear-gradient(to bottom,#0000 0px 2px,#0000002e 3px 4px);mix-blend-mode:multiply}.crt:after{content:"";pointer-events:none;position:absolute;inset:0;z-index:51;background:radial-gradient(ellipse at center,#0000 55%,#0000008c)}.crt.flicker .screen{animation:flicker 4s infinite steps(1)}@keyframes flicker{0%,92%,to{opacity:1}93%{opacity:.96}94%{opacity:1}97%{opacity:.97}}.glow{text-shadow:0 0 6px var(--green-glow),0 0 14px rgba(88,255,128,.15)}.shake{animation:shake calc(.35s * var(--dur)) ease-in-out}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-4px,2px)}40%{transform:translate(4px,-2px)}60%{transform:translate(-3px,-1px)}80%{transform:translate(3px,1px)}}h1,h2,h3{margin:0;font-weight:700;letter-spacing:.08em;color:var(--green)}h1{font-size:clamp(28px,9vw,44px)}h2{font-size:clamp(16px,4.5vw,20px)}h3{font-size:13px;color:var(--text-dim);letter-spacing:.16em}.mono-dim{color:var(--text-dim)}.small{font-size:12px}.tiny{font-size:11px}.amber{color:var(--amber)}.red{color:var(--red)}.cyan{color:var(--cyan)}.green{color:var(--green)}.violet{color:var(--violet)}.center{text-align:center}.panel{background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius);padding:10px 12px;box-shadow:inset 0 0 24px #58ff800a}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--tap);min-width:var(--tap);padding:10px 16px;background:#58ff800f;border:1px solid var(--green-dim);border-radius:var(--radius);color:var(--green);letter-spacing:.1em;text-transform:uppercase;font-weight:700;transition:background calc(.12s * var(--dur)),transform calc(.08s * var(--dur))}.btn:active{transform:scale(.98);background:#58ff8029}.btn:focus-visible{outline:2px solid var(--green);outline-offset:2px}.btn.primary{background:#58ff8029;border-color:var(--green);box-shadow:0 0 16px #58ff802e}.btn.danger{color:var(--red);border-color:var(--red-dim);background:#ff4b4b0f}.btn.amber{color:var(--amber);border-color:var(--amber-dim);background:#ffb0200f}.btn.block{width:100%}.btn:disabled{opacity:.4;cursor:default}.stack{display:flex;flex-direction:column;gap:10px}.row{display:flex;align-items:center;gap:10px}.row.between{justify-content:space-between}.grow{flex:1;min-width:0}.bar{position:relative;height:12px;background:#ffffff0d;border:1px solid rgba(255,255,255,.08);border-radius:3px;overflow:hidden}.bar>.fill{height:100%;transition:width calc(.35s * var(--dur)) ease-out;box-shadow:0 0 10px currentColor}.bar.integrity>.fill{background:var(--green);color:var(--green)}.bar.enemy>.fill{background:var(--red);color:var(--red)}.bar.shield>.fill{background:var(--cyan);color:var(--cyan)}.bar.energy>.fill{background:var(--amber);color:var(--amber)}.bar.thin{height:8px}.bar-label{display:flex;justify-content:space-between;font-size:11px;letter-spacing:.12em;color:var(--text-dim);margin-bottom:3px}.bar-label b{color:var(--text);font-weight:600}.bar.flash>.fill{animation:barflash calc(.35s * var(--dur)) ease-out}@keyframes barflash{0%{filter:brightness(2.4)}to{filter:brightness(1)}}.combat{display:grid;grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);gap:8px;height:100%;width:100%;min-width:0;padding:8px 10px 10px;overflow:hidden}.combat>*{min-width:0}.combat.landscape{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr);grid-template-areas:"board side"}.combat.landscape .board-wrap{grid-area:board}.combat.landscape .side{grid-area:side;display:flex;flex-direction:column;gap:8px;min-height:0;overflow:hidden}.enemy-panel{display:flex;flex-direction:column;gap:6px;min-width:0}.enemy-head{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}.enemy-head>.grow{min-width:0}.enemy-name{font-size:13px;letter-spacing:.12em;color:var(--red);font-weight:700;line-height:1.15;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.enemy-desig{font-size:11px;color:var(--text-dim);letter-spacing:.12em}.intent{display:flex;align-items:center;gap:8px;padding:6px 10px;min-height:36px;min-width:0;max-width:55%;flex-shrink:1;border:1px solid var(--amber-dim);border-radius:var(--radius);background:#ffb0200f;color:var(--amber);font-size:12px;letter-spacing:.1em;font-weight:700;white-space:nowrap;overflow:hidden}.intent>span:last-child{overflow:hidden;text-overflow:ellipsis}.intent.danger{border-color:var(--red);color:var(--red);background:#ff4b4b1a;animation:pulse-red calc(1.2s * var(--dur)) infinite}.intent.changed{animation:intent-pop calc(.5s * var(--dur)) ease-out}@keyframes pulse-red{0%,to{box-shadow:0 0 #ff4b4b00}50%{box-shadow:0 0 14px #ff4b4b80}}@keyframes intent-pop{0%{transform:scale(1.08);filter:brightness(1.8)}to{transform:scale(1);filter:brightness(1)}}.board-wrap{position:relative;display:flex;align-items:center;justify-content:center;min-height:0;min-width:0}.board{position:relative;aspect-ratio:1 / 1;width:min(100%,100cqmin);max-height:100%;touch-action:none;-webkit-user-select:none;user-select:none;display:grid;gap:4px;padding:6px;background:#00000059;border:1px solid var(--panel-border);border-radius:8px;box-shadow:inset 0 0 40px #58ff800d,0 0 20px #00000080}.board.locked{filter:saturate(.9)}.board.overkill{animation:overkill-flash calc(.7s * var(--dur)) ease-out}@keyframes overkill-flash{0%{box-shadow:0 0 60px var(--amber),inset 0 0 80px #ffb02080}to{box-shadow:inset 0 0 40px #58ff800d,0 0 20px #00000080}}.board.grid-pulse:after{content:"";position:absolute;inset:0;border-radius:8px;pointer-events:none;background:linear-gradient(90deg,transparent 0%,rgba(88,255,128,.08) 50%,transparent 100%);background-size:200% 100%;animation:gridpulse calc(6s * var(--dur)) linear infinite}@keyframes gridpulse{0%{background-position:200% 0}to{background-position:-200% 0}}.tile{position:relative;display:flex;align-items:center;justify-content:center;border-radius:6px;border:1px solid var(--tile-dim);background:linear-gradient(180deg,#ffffff0a,#00000040);color:var(--tile-color);transition:transform calc(.12s * var(--dur)) ease-out,box-shadow calc(.12s * var(--dur)),opacity calc(.22s * var(--dur));will-change:transform}.tile svg{width:62%;height:62%;display:block;filter:drop-shadow(0 0 4px currentColor)}.tile.selected{transform:scale(1.12);box-shadow:0 0 14px var(--tile-color),inset 0 0 10px var(--tile-color);border-color:var(--tile-color);background:#ffffff0f;z-index:2;animation:tile-pulse calc(.9s * var(--dur)) infinite alternate}@keyframes tile-pulse{0%{filter:brightness(1)}to{filter:brightness(1.5)}}.tile.removing{opacity:0;transform:scale(.3) rotate(15deg)}.tile.spawn{animation:tile-spawn calc(.26s * var(--dur)) ease-out}@keyframes tile-spawn{0%{transform:translateY(-40%);opacity:0}to{transform:translateY(0);opacity:1}}.tile.locked{color:#5a6a5e;border-color:#2b352e;background:repeating-linear-gradient(45deg,#00000080 0 4px,#5a6a5e33 4px 8px)}.tile.locked svg{opacity:.35;filter:none}.tile.corrupted{border-color:var(--red);background:repeating-linear-gradient(0deg,#ff4b4b26 0 2px,#0000004d 2px 4px);animation:corrupt-jitter calc(.4s * var(--dur)) infinite steps(2)}@keyframes corrupt-jitter{0%{transform:translate(0)}50%{transform:translate(1px,-1px)}to{transform:translate(-1px,1px)}}.tile.wild{border-color:#fff;color:#fff;background:conic-gradient(from 0deg,var(--red),var(--amber),var(--green),var(--cyan),var(--violet),var(--red))}.tile.wild svg{color:#050806;filter:none}.tile .badge{position:absolute;top:1px;right:3px;font-size:9px;color:var(--red);font-weight:700}.tile.locked .badge{color:#8a9a8e}.tile.invalid-flash{animation:invalid calc(.2s * var(--dur))}@keyframes invalid{0%,to{transform:translate(0)}50%{transform:translate(-3px);border-color:var(--red)}}.path-overlay{position:absolute;inset:0;pointer-events:none;z-index:3}.path-overlay polyline{fill:none;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;opacity:.85;filter:drop-shadow(0 0 6px currentColor)}.chain-counter{position:absolute;top:-14px;left:50%;transform:translate(-50%);z-index:4;pointer-events:none;padding:2px 10px;border-radius:12px;background:#000000bf;border:1px solid var(--panel-border);font-size:12px;letter-spacing:.1em;white-space:nowrap}.floaters{position:absolute;inset:0;pointer-events:none;z-index:5;overflow:visible}.floater{position:absolute;left:50%;font-weight:700;font-size:22px;letter-spacing:.06em;text-shadow:0 0 10px currentColor;animation:float-up calc(.9s * var(--dur)) ease-out forwards}.floater.enemy{top:8%}.floater.player{bottom:10%}.floater.crit{font-size:30px}.floater.travel{animation:travel-up calc(.55s * var(--dur)) ease-in forwards}@keyframes float-up{0%{transform:translate(-50%);opacity:1}to{transform:translate(-50%,-40px);opacity:0}}@keyframes travel-up{0%{transform:translate(-50%,200px) scale(.6);opacity:.6}to{transform:translate(-50%) scale(1);opacity:1}}.player-panel{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px}.player-panel .full{grid-column:1 / -1}.abilities{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.ability{min-width:0;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:52px;padding:6px 4px;background:#4be3ff0d;border:1px solid var(--cyan-dim);border-radius:var(--radius);color:var(--cyan);font-size:11px;letter-spacing:.08em;font-weight:700;line-height:1.1}.ability small{font-size:10px;color:var(--text-dim);letter-spacing:.05em;font-weight:400;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ability>span{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ability.ready{border-color:var(--cyan);box-shadow:0 0 10px #4be3ff40}.ability.active{border-color:var(--amber);color:var(--amber)}.ability:disabled{opacity:.45}.ability:active:not(:disabled){transform:scale(.97)}.status-chips{display:flex;flex-wrap:wrap;gap:4px;min-height:18px}.chip{font-size:10px;letter-spacing:.1em;padding:1px 6px;border-radius:3px;border:1px solid currentColor;opacity:.9}.log{height:52px;overflow:hidden;padding:4px 8px;font-size:11px;line-height:1.45;background:#0006;border:1px solid rgba(88,255,128,.12);border-radius:var(--radius);color:var(--text-dim)}.log.expanded{height:40vh;overflow-y:auto}.log .line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.log .line.good{color:var(--green)}.log .line.bad{color:var(--red)}.log .line.warn{color:var(--amber)}.log .line.system{color:var(--cyan)}.log .line .t{opacity:.5;margin-right:6px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px;letter-spacing:.12em;color:var(--text-dim);min-width:0}.topbar>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.icon-btn{min-width:var(--tap);min-height:var(--tap);display:inline-flex;align-items:center;justify-content:center;background:transparent;border:1px solid var(--panel-border);border-radius:var(--radius);color:var(--green);font-size:14px;letter-spacing:.1em}.overlay{position:absolute;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:20px;background:#020503db;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}.overlay .panel{width:min(100%,420px);max-height:100%;overflow-y:auto}.modal-title{font-size:18px;letter-spacing:.14em}.banner{position:absolute;left:0;right:0;top:40%;z-index:30;text-align:center;padding:14px;background:#000c;border-top:1px solid var(--amber);border-bottom:1px solid var(--amber);color:var(--amber);font-weight:700;letter-spacing:.14em;font-size:14px;animation:banner-in calc(.4s * var(--dur)) ease-out;pointer-events:none}@keyframes banner-in{0%{transform:scaleY(0);opacity:0}to{transform:scaleY(1);opacity:1}}.toast{position:absolute;left:50%;bottom:calc(var(--safe-bottom) + 16px);transform:translate(-50%);z-index:60;max-width:calc(100% - 32px);padding:10px 14px;background:#000000e6;border:1px solid var(--green);border-radius:var(--radius);color:var(--green);font-size:12px;letter-spacing:.08em;box-shadow:0 0 20px #58ff8033}.toast .row{margin-top:8px}.title-screen{justify-content:center;align-items:center;text-align:center;gap:16px}.title-art{position:relative;display:inline-block;padding:14px 18px;border:1px solid var(--green-dim);border-radius:8px;background:#00000059}.title-art .sub{font-size:10px;letter-spacing:.3em;color:var(--text-dim);margin-top:6px}.title-menu{width:min(100%,360px)}.cursor:after{content:"_";animation:blink 1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.typed{white-space:pre-wrap}.menu-hint{font-size:11px;color:var(--text-dim);letter-spacing:.1em}.card{display:flex;flex-direction:column;gap:6px;width:100%;min-height:var(--tap);padding:12px;text-align:left;background:#58ff800a;border:1px solid var(--panel-border);border-radius:var(--radius);color:var(--text)}.card:active{background:#58ff801f}.card .name{color:var(--green);letter-spacing:.12em;font-weight:700;font-size:13px}.card .desc{font-size:12px;color:var(--text-dim)}.card.locked{opacity:.45}.card.selected{border-color:var(--green);box-shadow:0 0 12px var(--green-glow)}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:var(--tap);padding:4px 0;border-bottom:1px dashed rgba(88,255,128,.12)}.setting-row .label{font-size:13px;letter-spacing:.08em}.setting-row .hint{font-size:11px;color:var(--text-dim)}.toggle{width:58px;height:32px;border-radius:16px;border:1px solid var(--green-dim);background:#00000080;position:relative;flex-shrink:0}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:12px;background:var(--text-dim);transition:transform calc(.15s * var(--dur)),background calc(.15s * var(--dur))}.toggle.on{border-color:var(--green)}.toggle.on:after{transform:translate(26px);background:var(--green);box-shadow:0 0 8px var(--green)}.seg{display:flex;border:1px solid var(--green-dim);border-radius:var(--radius);overflow:hidden}.seg button{flex:1;min-height:40px;background:transparent;border:0;color:var(--text-dim);font-size:11px;letter-spacing:.1em;font-weight:700}.seg button.on{background:#58ff8029;color:var(--green)}.stat-grid{display:grid;grid-template-columns:1fr auto;gap:4px 12px;font-size:13px}.stat-grid dt{color:var(--text-dim);letter-spacing:.08em}.stat-grid dd{margin:0;text-align:right;color:var(--text);font-weight:600}.tutorial-box{position:absolute;left:10px;right:10px;bottom:calc(var(--safe-bottom) + 10px);z-index:35;padding:10px 12px;background:#000000eb;border:1px solid var(--amber);border-radius:var(--radius);color:var(--text);font-size:13px;box-shadow:0 0 24px #ffb02033}.tutorial-box .step{font-size:10px;letter-spacing:.2em;color:var(--amber);margin-bottom:4px}.hidden-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}textarea.save-box{width:100%;min-height:120px;background:#00000080;border:1px solid var(--green-dim);color:var(--text);font-size:11px;border-radius:var(--radius);padding:8px;-webkit-user-select:text;user-select:text}.reduced-motion,.reduced-motion *{animation:none!important;transition:none!important}.reduced-motion .tile.selected{transform:scale(1.06)}@media(prefers-reduced-motion:reduce){:root{--dur: 0}.crt.flicker .screen{animation:none}}@media(max-height:700px){.log{height:36px;font-size:10px}.ability{min-height:44px}.combat{gap:6px}.panel{padding:6px 10px}.bar{height:10px}.bar.thin{height:6px}html,body{font-size:14px}}@media(max-width:360px){.intent>.tiny{display:none}}@media(max-width:360px){html,body{font-size:13px}.combat{padding:6px 6px 8px;gap:6px}.topbar{font-size:10px;letter-spacing:.08em}.enemy-name{font-size:11px}.intent{font-size:11px;padding:4px 8px;min-height:32px}.ability{font-size:10px;min-height:44px}.ability small{font-size:9px}.abilities{gap:5px}.log{height:44px}.btn{padding:8px 10px;letter-spacing:.06em}}.slider{-webkit-appearance:none;appearance:none;flex:1;height:28px;background:transparent;min-width:120px}.slider::-webkit-slider-runnable-track{height:6px;background:#58ff8026;border-radius:3px;border:1px solid var(--green-dim)}.slider::-moz-range-track{height:6px;background:#58ff8026;border-radius:3px;border:1px solid var(--green-dim)}.slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:26px;height:26px;margin-top:-11px;border-radius:13px;background:var(--green);border:2px solid var(--bg);box-shadow:0 0 8px var(--green)}.slider::-moz-range-thumb{width:24px;height:24px;border-radius:12px;background:var(--green);border:2px solid var(--bg);box-shadow:0 0 8px var(--green)}.slider:focus-visible{outline:2px solid var(--green);outline-offset:2px}
