:root{--bg: #05060f;--panel: #0b0d1f;--line: #1e2340;--cyan: #00f0ff;--magenta: #ff2bd6;--purple: #7b2bff;--yellow: #ffe600;--green: #05ffa1;--red: #ff3b5c;--font-ui: "Courier New", ui-monospace, monospace;--card-w: 120px;--card-h: 168px;--gold: #ffd700;--ink: #c7d0f5;--ink-dim: #9fa8dc;--ink-faint: #6b7299;--cyan-bright: #c9fbff;--magenta-bright: #ffc4f2;--rarity-common: #8b9dc3;--rarity-uncommon: var(--cyan);--rarity-rare: var(--magenta);--glow-cyan: 0 0 8px rgba(0, 240, 255, .6);--glow-magenta: 0 0 8px rgba(255, 43, 214, .6);--gold-glow: 0 0 16px rgba(255, 215, 0, .55);--red-glow: 0 0 10px rgba(255, 59, 92, .45);--shadow: 0 2px 8px rgba(0, 0, 0, .4);--cyan-soft: rgba(0, 240, 255, .12);--magenta-soft: rgba(255, 43, 214, .12);--purple-soft: rgba(123, 43, 255, .16);--red-soft: rgba(255, 59, 92, .14);--panel-hi: rgba(255, 255, 255, .06);--bg-veil: rgba(5, 6, 15, .88);--card-bg-top: #131736;--card-bg-bottom: #0a0c1d;--card-face: linear-gradient(165deg, var(--card-bg-top), var(--panel) 58%, var(--card-bg-bottom));--card-frame: linear-gradient( 155deg, rgba(0, 240, 255, .55), rgba(123, 43, 255, .45) 55%, rgba(255, 43, 214, .5) )}*,*:before,*:after{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--bg);color:var(--cyan);font-family:var(--font-ui);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}#app{position:relative;min-height:100%;overflow:hidden;background:var(--bg)}#app>*{position:relative;z-index:1}::selection{background:var(--magenta-soft);color:var(--ink)}:focus-visible{outline:1px solid var(--cyan);outline-offset:2px}#app:before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background-image:repeating-linear-gradient(90deg,#00f0ff00 0 19px,#00f0ff0d 19px 22px,#00f0ff00 22px 43px),repeating-linear-gradient(180deg,#05ffa100 0 9px,#05ffa10a 9px 11px,#05ffa100 11px 26px)}@media (prefers-reduced-motion: no-preference){#app:before{animation:rain-drift 24s linear infinite}}@keyframes rain-drift{0%{background-position:0 0}to{background-position:0 104px}}*{scrollbar-width:thin;scrollbar-color:var(--line) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--purple)}.panel{background:var(--panel);border:1px solid var(--cyan);border-radius:6px;box-shadow:var(--glow-cyan),inset 0 0 24px #00f0ff0a}.btn{display:inline-block;padding:8px 18px;border:1px solid var(--cyan);border-radius:4px;background:transparent;color:var(--cyan);font-family:var(--font-ui);font-size:14px;letter-spacing:.08em;cursor:pointer;transition:background-color .15s,box-shadow .15s,color .15s,transform .1s,opacity .15s}.btn:hover:not(:disabled){background:var(--cyan-soft);color:var(--cyan-bright);box-shadow:var(--glow-cyan)}.btn:active:not(:disabled){transform:translateY(1px) scale(.98);box-shadow:none}.btn:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}.btn--danger,.btn.danger{color:var(--magenta);border-color:var(--magenta)}.btn--danger:hover:not(:disabled),.btn.danger:hover:not(:disabled){background:var(--magenta-soft);color:var(--magenta-bright);box-shadow:var(--glow-magenta)}.btn--flash{animation:btn-flash .3s ease-out}@keyframes btn-flash{0%,to{background:transparent}40%{background:var(--red-soft);border-color:var(--red);color:var(--red);box-shadow:var(--red-glow)}}.hud{display:flex;align-items:center;flex-wrap:wrap;gap:10px 18px;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--cyan);box-shadow:var(--glow-cyan)}.hud__name{font-size:16px;color:var(--ink);letter-spacing:.1em}.hud__hp,.hud__block,.hud__energy{display:flex;align-items:center;gap:6px}.hud__label{font-size:12px;color:var(--ink-faint)}.hud__value{font-size:14px;font-weight:700;color:var(--ink)}.hud__chips{display:flex;gap:4px}.hud__meta{margin-left:auto;font-size:12px;color:var(--ink-faint);white-space:nowrap}.bar{width:140px;height:10px;overflow:hidden;border:1px solid var(--line);border-radius:2px;background:var(--panel-hi)}.bar__fill{height:100%;width:100%;transition:width .2s ease}.bar__fill--hp{background:var(--red);box-shadow:var(--red-glow)}.bar__fill--block{background:var(--cyan);box-shadow:var(--glow-cyan)}.energy{display:inline-flex;gap:4px}.energy__gem{width:14px;height:14px;border:1px solid var(--line);border-radius:2px;background:transparent;transform:rotate(45deg);transition:border-color .15s,background-color .15s,box-shadow .15s,opacity .15s}.energy__gem--filled{border-color:var(--cyan);background:var(--cyan-soft);box-shadow:var(--glow-cyan)}.energy__gem--empty{opacity:.35}.status-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border:1px solid var(--purple);border-radius:999px;background:var(--purple-soft);color:var(--ink);font-size:12px;line-height:1.4;white-space:nowrap}.status-chip__icon{font-size:13px;line-height:1}.status-chip__count{color:var(--cyan);font-weight:700}.status-chip--buff{border-color:var(--cyan);background:var(--cyan-soft)}.status-chip--debuff{border-color:var(--red);background:var(--red-soft)}.enemy-card{position:relative;display:flex;flex-direction:column;gap:8px;width:180px;padding:12px;background:var(--panel);border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow);transition:border-color .15s,box-shadow .15s,background-color .15s,transform .15s}.enemy-card__name{font-size:14px;color:var(--ink);text-align:center;letter-spacing:.05em}.enemy-card__intent{display:flex;align-items:center;justify-content:center;gap:6px;min-height:26px;border:1px dashed var(--line);border-radius:4px;background:var(--panel-hi);font-size:12px;color:var(--ink-dim)}.enemy-card__intent-icon{font-size:15px;line-height:1;color:var(--cyan)}.enemy-card__intent-val{font-size:13px;font-weight:700;color:var(--yellow)}.enemy-card__hp{display:flex;align-items:center;gap:6px}.enemy-card__hp-val{min-width:3.5em;font-size:12px;color:var(--ink);text-align:right}.enemy-card__block{position:absolute;top:-8px;right:-8px;padding:2px 7px;border:1px solid var(--cyan);border-radius:999px;background:var(--panel);color:var(--cyan);font-size:12px;font-weight:700;box-shadow:var(--glow-cyan)}.enemy-card__chips{display:flex;flex-wrap:wrap;gap:4px;min-height:18px}.targeting .enemy-card{border-color:var(--red);box-shadow:var(--red-glow);cursor:crosshair}.targeting .enemy-card:hover{border-color:var(--red);background:var(--red-soft);box-shadow:0 0 0 1px var(--red),var(--red-glow);transform:translateY(-2px)}.card{position:relative;flex:0 0 auto;display:flex;flex-direction:column;gap:4px;width:var(--card-w);height:var(--card-h);padding:12px 8px 8px;border:1px solid transparent;border-radius:8px;background:var(--card-face) padding-box,var(--card-frame) border-box;cursor:pointer;box-shadow:var(--shadow);user-select:none;transition:transform .18s,box-shadow .18s,filter .18s}.card:hover{transform:translateY(-8px);box-shadow:var(--glow-cyan)}.card.selected{z-index:2;transform:translateY(-16px);box-shadow:0 0 0 1px var(--gold),var(--gold-glow)}.card__cost{position:absolute;top:6px;left:6px;display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:1px solid var(--cyan);border-radius:50%;background:var(--bg);color:var(--cyan);font-size:13px;font-weight:700;box-shadow:var(--glow-cyan)}.card__name{margin-top:4px;font-size:13px;color:var(--ink);text-align:center;letter-spacing:.04em}.card__desc{flex:1;overflow:hidden;font-size:11px;line-height:1.45;color:var(--ink-dim)}.card__rarity{position:absolute;top:0;left:0;right:0;height:3px;border-radius:8px 8px 0 0}.card--common .card__rarity{background:var(--rarity-common)}.card--uncommon .card__rarity{background:var(--rarity-uncommon)}.card--rare .card__rarity{background:var(--rarity-rare);box-shadow:var(--glow-magenta)}.card-out{animation:card-out .2s ease-in forwards;pointer-events:none}@keyframes card-out{0%{opacity:1;transform:translateY(0) rotate(0) scale(1)}to{opacity:0;transform:translateY(-40px) rotate(14deg) scale(.85)}}.hand{display:flex;align-items:flex-end;gap:12px;padding:24px 16px 10px;overflow-x:auto;overflow-y:hidden}.enemy-row{display:flex;align-items:flex-start;justify-content:center;flex-wrap:wrap;gap:24px;padding:12px}.hint{color:var(--yellow);font-size:13px;letter-spacing:.06em}.log{overflow-y:auto;padding:10px 12px;background:var(--bg-veil);border:1px solid var(--line);border-radius:4px;color:var(--green);font-size:12px;line-height:1.6}.log__line{word-break:break-all}.log__line:before{content:"> ";color:var(--cyan)}.log__line--error{color:var(--red)}#app>.overlay{position:fixed;inset:0;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;background:var(--bg-veil);animation:overlay-in .25s ease-out}.overlay__title{margin:0;font-size:42px;letter-spacing:.25em;color:var(--ink)}.overlay__sub{margin:0;font-size:14px;color:var(--ink-dim)}.overlay__actions{display:flex;gap:12px}.overlay--win .overlay__title{color:var(--cyan);text-shadow:var(--glow-cyan)}.overlay--lose .overlay__title{color:var(--red);text-shadow:var(--red-glow)}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.pressable{cursor:pointer}.pressable:hover{filter:brightness(1.12)}.pressable:active{filter:brightness(.95)}.fx-off,.fx-off *,.fx-off *:before,.fx-off *:after{transition:none!important;animation:none!important}@media (prefers-reduced-motion: reduce){*,*:before,*:after{transition:none!important;animation:none!important}}.card__type{position:absolute;top:6px;right:6px;padding:0 5px;border:1px solid var(--line);border-radius:4px;background:var(--panel);font-size:11px;line-height:1.5;color:var(--ink-faint)}.card__exhaust{position:absolute;right:8px;bottom:4px;padding:0 6px;border:1px solid var(--magenta);border-radius:999px;font-size:10px;line-height:1.6;color:var(--magenta)}.title-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;min-height:100vh;background:var(--bg)}.title-screen__title{margin:0;font-size:44px;letter-spacing:.28em;color:var(--cyan);text-align:center;text-shadow:var(--glow-cyan)}.battle__footer{display:flex;justify-content:flex-end;gap:10px;padding:10px 16px}.audio-toggle{padding:4px 12px;font-size:12px;letter-spacing:.06em;white-space:nowrap}.log{max-height:200px}@keyframes fx-glitch-slice{0%{clip-path:inset(0 0 92% 0)}33%{clip-path:inset(12% 0 66% 0)}66%{clip-path:inset(46% 0 28% 0)}to{clip-path:inset(0 0 92% 0)}}@keyframes fx-glitch-rgb{0%{text-shadow:3px 0 rgba(255,59,92,.9),-3px 0 rgba(0,240,255,.9)}50%{text-shadow:-3px 0 rgba(255,59,92,.9),3px 0 rgba(0,240,255,.9)}to{text-shadow:3px 0 rgba(255,59,92,.9),-3px 0 rgba(0,240,255,.9)}}@keyframes fx-glitch-jitter{0%{transform:translate(2px) skew(-1deg)}50%{transform:translate(-2px) skew(1deg)}to{transform:translate(2px) skew(-1deg)}}.glitching{animation:fx-glitch-slice .1s steps(2,jump-none) infinite,fx-glitch-rgb .1s steps(2,jump-none) infinite,fx-glitch-jitter .1s steps(2,jump-none) infinite}.hitstop,.hitstop *{animation-play-state:paused!important}.phase-blocked .btn{opacity:.45;pointer-events:none}.phase-blocked .card{filter:saturate(.4) brightness(.8)}#app>.overlay .btn{pointer-events:auto;opacity:1;cursor:pointer}.class-select{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;min-height:100vh;padding:32px 16px}.class-select__title{margin:0;font-size:32px;letter-spacing:.2em;color:var(--ink)}.class-select__sub{margin:0;font-size:13px;color:var(--ink-dim)}.class-grid{display:grid;grid-template-columns:repeat(4,200px);gap:16px;margin:10px 0 18px}@media (max-width: 920px){.class-grid{grid-template-columns:repeat(2,200px)}}.class-card--ironclad{--class-accent: #ff8c42;--class-glow: rgba(255, 140, 66, .45)}.class-card--silent{--class-accent: #05ffa1;--class-glow: rgba(5, 255, 161, .45)}.class-card--defect{--class-accent: #00f0ff;--class-glow: rgba(0, 240, 255, .45)}.class-card--watcher{--class-accent: #ffe600;--class-glow: rgba(255, 230, 0, .45)}.class-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px;padding:22px 14px 16px;background:var(--panel);border:1px solid var(--class-accent, var(--line));border-radius:8px;font-family:var(--font-ui);color:var(--ink);cursor:pointer;text-align:center;transition:border-color .15s,box-shadow .15s,transform .15s}.class-card:hover:not(:disabled){transform:translateY(-3px);box-shadow:0 0 12px var(--class-glow)}.class-card__name{font-size:18px;font-weight:700;letter-spacing:.12em;color:var(--class-accent, var(--ink))}.class-card__desc{min-height:2.6em;font-size:12px;color:var(--ink-dim)}.class-card__hp{font-size:12px;color:var(--ink-faint)}.class-card__status{padding:2px 10px;border:1px solid var(--cyan);border-radius:999px;font-size:11px;color:var(--cyan)}.class-card:disabled{cursor:not-allowed;opacity:.55;filter:saturate(.35)}.class-card:disabled .class-card__status{border-color:var(--ink-faint);color:var(--ink-faint)}.map-screen{display:flex;flex-direction:column;align-items:center;gap:14px;min-height:100vh;padding:18px 16px 32px}.run-hud{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px 22px;width:100%;max-width:820px;padding:10px 18px;background:var(--panel);border:1px solid var(--cyan);border-radius:6px;box-shadow:var(--glow-cyan)}.run-hud__item{display:flex;align-items:baseline;gap:8px}.run-hud__label{font-size:12px;color:var(--ink-faint)}.run-hud__value{font-size:14px;font-weight:700;color:var(--ink);white-space:nowrap}.map{position:relative;display:flex;flex-direction:column;gap:22px;width:100%;max-width:760px;padding:28px 18px;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow)}.map-connectors{position:absolute;inset:0;z-index:0;width:100%;height:100%;pointer-events:none}.map-connector{stroke:var(--line);stroke-width:1}.map-connector--from-current{stroke:var(--cyan);stroke-width:1.5;opacity:.9}.map-row{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;gap:16px;min-height:64px}.map-node{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;width:58px;height:58px;border:1px solid var(--line);border-radius:6px;background:var(--bg);font-family:var(--font-ui);transition:border-color .15s,box-shadow .15s,transform .15s,opacity .15s}.map-node__badge{font-size:16px;font-weight:700;line-height:1;letter-spacing:.05em}.map-node__id{font-size:9px;color:var(--ink-faint);line-height:1}.map-node__mark{position:absolute;top:-7px;right:-7px;display:flex;align-items:center;justify-content:center;width:16px;height:16px;border:1px solid var(--green);border-radius:50%;background:var(--bg);color:var(--green);font-size:10px;line-height:1}.map-node--start .map-node__badge{color:var(--ink-dim)}.map-node--combat .map-node__badge{color:var(--cyan)}.map-node--elite .map-node__badge{color:var(--magenta)}.map-node--event .map-node__badge{color:var(--purple)}.map-node--shop .map-node__badge{color:var(--yellow)}.map-node--rest .map-node__badge{color:var(--green)}.map-node--chest .map-node__badge{color:var(--gold)}.map-node--boss .map-node__badge{color:var(--red)}.map-node--start{border-style:dashed}.map-node--current{border-color:var(--gold);box-shadow:var(--gold-glow)}.map-node--current .map-node__badge{color:var(--gold)}.map-node--reachable{border-color:var(--cyan);box-shadow:var(--glow-cyan);cursor:pointer}.map-node--reachable:hover{transform:translateY(-3px);background:var(--cyan-soft)}.map-node--locked{opacity:.4;filter:saturate(.5)}.map-node--visited{opacity:.85;filter:none}.map-hint{max-width:760px;padding:6px 14px;border:1px dashed var(--line);border-radius:4px;background:var(--panel-hi);color:var(--ink-faint);font-size:12px;text-align:center}.map-screen__back{margin-top:6px}.node-panel{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;min-height:100vh;padding:32px 16px}.node-panel__title{margin:0;font-size:30px;letter-spacing:.22em;color:var(--ink)}.node-panel__sub{margin:0;font-size:13px;color:var(--ink-dim)}.reward-cards{display:flex;justify-content:center;flex-wrap:wrap;gap:20px}.reward-card:hover{transform:translateY(-10px);box-shadow:0 0 0 1px var(--gold),var(--gold-glow)}.event-panel__text{max-width:620px;margin:0;padding:14px 18px;border:1px dashed var(--line);border-radius:6px;background:var(--panel);color:var(--ink-dim);font-size:14px;line-height:1.7;text-align:center}.event-choices{display:flex;flex-direction:column;align-items:stretch;gap:10px;width:100%;max-width:480px}.event-choice{display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 16px}.event-choice__summary{font-size:12px;color:var(--yellow);letter-spacing:.04em}.shop-gold{padding:6px 16px;border:1px solid var(--yellow);border-radius:999px;background:var(--panel);color:var(--yellow);font-size:14px;font-weight:700;letter-spacing:.08em}.shop-section{width:100%;max-width:840px;padding:16px 18px;border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:var(--shadow)}.shop-section__title{margin:0 0 12px;font-size:15px;letter-spacing:.12em;color:var(--cyan)}.shop-shelf{display:flex;justify-content:center;flex-wrap:wrap;gap:18px}.shop-card{display:flex;flex-direction:column;align-items:center;gap:8px}.shop-card .card{cursor:default}.shop-card__price{padding:2px 10px;border:1px solid var(--yellow);border-radius:999px;color:var(--yellow);font-size:12px;font-weight:700}.shop-potions{display:flex;justify-content:center;flex-wrap:wrap;gap:14px}.shop-potion{display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid var(--green);border-radius:6px}.shop-potion__name{color:var(--ink);font-size:13px}.shop-potion__price{color:var(--yellow);font-size:12px;font-weight:700}.shop-relics{display:flex;justify-content:center;flex-wrap:wrap;gap:18px}.shop-relic{display:flex;flex-direction:column;align-items:center;gap:8px}.shop-relic__face{display:flex;flex-direction:column;gap:4px;width:210px;min-height:120px;padding:12px 10px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:var(--shadow)}.shop-relic__face--common{border-color:var(--rarity-common)}.shop-relic__face--uncommon{border-color:var(--rarity-uncommon)}.shop-relic__face--rare{border-color:var(--rarity-rare);box-shadow:var(--glow-magenta)}.shop-relic__rarity{font-size:10px;letter-spacing:.16em;color:var(--ink-dim)}.shop-relic__name{font-size:14px;font-weight:700;color:var(--ink);letter-spacing:.06em}.shop-relic__desc{flex:1;font-size:12px;line-height:1.5;color:var(--ink-dim)}.shop-relic__empty{padding:10px 16px;border:1px dashed var(--line);border-radius:6px;color:var(--ink-dim);font-size:12px;letter-spacing:.1em}.shop-remove{display:flex;flex-direction:column;gap:6px;max-height:220px;overflow-y:auto}.shop-remove__row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 10px;border:1px solid var(--line);border-radius:4px;background:var(--panel-hi)}.shop-remove__name{color:var(--ink);font-size:13px}.shop-footer{display:flex;justify-content:center;gap:12px}.rest-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:18px}.rest-action{display:flex;flex-direction:column;align-items:center;gap:10px;width:250px;padding:18px 14px;border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:var(--shadow)}.rest-action__title{font-size:16px;letter-spacing:.12em;color:var(--green)}.rest-action__desc{margin:0;min-height:2.6em;font-size:12px;color:var(--ink-dim);text-align:center}.chest-contents{display:flex;flex-direction:column;gap:10px;min-width:320px}.chest-item{padding:10px 16px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink);font-size:14px;text-align:center}.chest-item--gold{border-color:var(--yellow);color:var(--yellow)}.chest-item--card{border-color:var(--cyan);color:var(--cyan)}.chest-item--relic{border-color:var(--purple);color:var(--purple)}.chest-item__name{font-weight:700}.chest-item__desc{margin-top:4px;font-size:12px;line-height:1.5;color:var(--ink-dim)}.end-screen--win .node-panel__title{color:var(--cyan);text-shadow:var(--glow-cyan)}.end-screen--lose .node-panel__title{color:var(--red);text-shadow:var(--red-glow)}.end-stats{display:flex;justify-content:center;flex-wrap:wrap;gap:14px;max-width:720px}.end-stat{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:110px;padding:14px 18px;border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:var(--shadow)}.end-stat__label{font-size:12px;color:var(--ink-faint)}.end-stat__value{font-size:20px;font-weight:700;color:var(--cyan)}
