:root{--ink: #04070c;--ink-2: #080d15;--panel: rgba(12, 20, 30, .72);--line: rgba(110, 242, 255, .16);--phos: #5ee9ff;--phos-dim: rgba(94, 233, 255, .42);--amber: #ffb547;--violet: #b98cff;--gold: #ffe066;--blood: #ff3d6e;--text: #cfe6ef;--text-dim: #6f8b99;--display: "Bruno Ace SC", "IBM Plex Mono", monospace;--mono: "IBM Plex Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:radial-gradient(1100px 700px at 50% -10%,#0d2233 0%,transparent 60%),radial-gradient(800px 600px at 100% 100%,#1a1030 0%,transparent 55%),var(--ink);color:var(--text);font-family:var(--mono);font-weight:300;-webkit-font-smoothing:antialiased}.grain,.scanlines{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:60}.grain{opacity:.055;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/></filter><rect width='180' height='180' filter='url(%23n)'/></svg>");mix-blend-mode:overlay}.scanlines{background:repeating-linear-gradient(to bottom,rgba(0,0,0,.28) 0 1px,transparent 1px 3px);opacity:.5}.app{min-height:100%;padding:26px clamp(14px,4vw,46px) 60px}.masthead{position:relative;text-align:center;margin-bottom:22px}.masthead h1{font-family:var(--display);font-size:clamp(28px,5vw,52px);letter-spacing:.16em;margin:0;color:var(--phos);text-shadow:0 0 24px rgba(94,233,255,.55),0 0 60px rgba(94,233,255,.2)}.masthead h1 span{color:var(--amber);text-shadow:0 0 24px rgba(255,181,71,.5)}.masthead p{margin:6px 0 0;font-size:11px;letter-spacing:.34em;text-transform:uppercase;color:var(--text-dim)}.audiobar{position:absolute;top:26px;right:clamp(14px,4vw,46px);display:flex;align-items:center;gap:8px;padding:6px 10px;background:#04080d99;border:1px solid var(--line)}.abtn{display:grid;place-items:center;width:28px;height:24px;padding:0;font:inherit;font-size:9px;letter-spacing:.1em;color:var(--text-dim);background:transparent;border:1px solid transparent;cursor:pointer;transition:.18s}.abtn svg{width:17px;height:17px;fill:currentColor;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}.abtn svg .waves,.abtn svg .x{fill:none}.abtn:not(.is-off){color:var(--phos)}.abtn.is-off{color:var(--blood)}.abtn.wide{width:auto;padding:0 7px;border-color:var(--line)}.abtn.wide.is-on{color:var(--gold);border-color:#ffe06680;background:#ffe06614}.abtn:hover{filter:brightness(1.3)}.aslider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:74px;height:3px;background:#5ee9ff33;outline:none;cursor:pointer}.aslider::-webkit-slider-thumb{-webkit-appearance:none;width:9px;height:14px;background:var(--phos);box-shadow:0 0 8px var(--phos);cursor:pointer}.aslider::-moz-range-thumb{width:9px;height:14px;border:0;background:var(--phos);cursor:pointer}.asrc{font-size:8.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-dim);opacity:.65;min-width:52px}@media (max-width: 700px){.audiobar{position:static;margin:12px auto 0;width:fit-content}}.stage{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:28px;max-width:1180px;margin:0 auto;align-items:start}@media (max-width: 940px){.stage{grid-template-columns:minmax(0,1fr)}}.column-main{display:flex;flex-direction:column;gap:18px;min-width:0}.enemy{position:relative;display:grid;grid-template-columns:74px 1fr;gap:16px;align-items:center;padding:14px 18px;background:var(--panel);border:1px solid var(--line);border-radius:2px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.enemy:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;border-left:2px solid var(--blood);pointer-events:none}.enemy.is-hit{animation:shake .42s cubic-bezier(.36,.07,.19,.97)}@keyframes shake{10%,90%{transform:translate(-3px)}20%,80%{transform:translate(5px)}30%,50%,70%{transform:translate(-8px)}40%,60%{transform:translate(8px)}}.enemy-portrait svg{width:74px;height:74px;filter:drop-shadow(0 0 10px rgba(255,61,110,.35))}.enemy-portrait .shell{fill:#ff3d6e12;stroke:var(--blood);stroke-width:2}.enemy-portrait .core{fill:#ff3d6e24;stroke:#ff3d6e99;stroke-width:1.2}.enemy-portrait .eye{fill:var(--gold);animation:blink 4.2s infinite}@keyframes blink{0%,92%,to{opacity:1}95%{opacity:.1}}.enemy-portrait .maw{fill:none;stroke:var(--blood);stroke-width:2;stroke-linecap:round}.enemy-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:7px}.enemy-name{font-family:var(--display);font-size:13px;letter-spacing:.22em;color:var(--blood)}.enemy-hp-num{font-size:17px;font-weight:600;color:var(--text)}.enemy-hp-num em{font-style:normal;font-size:11px;color:var(--text-dim)}.hpbar{position:relative;height:12px;background:#ff3d6e14;border:1px solid rgba(255,61,110,.28);overflow:hidden}.hpbar-fill{height:100%;background:linear-gradient(90deg,#ff3d6e,#ff8a4c);box-shadow:0 0 16px #ff3d6eb3;transition:width .55s cubic-bezier(.2,.9,.2,1)}.hpbar-ticks{position:absolute;top:0;right:0;bottom:0;left:0;background:repeating-linear-gradient(90deg,transparent 0 15px,rgba(4,7,12,.85) 15px 16px);pointer-events:none}.telegraph{margin-top:8px;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim)}.telegraph strong{color:var(--amber);font-size:13px}.telegraph.is-imminent{color:var(--blood);animation:throb .9s ease-in-out infinite}.telegraph.is-imminent strong{color:var(--blood)}@keyframes throb{50%{opacity:.35}}.float-layer{position:absolute;right:22px;top:4px;pointer-events:none}.dmg-float{position:absolute;right:0;font-family:var(--display);font-size:26px;color:var(--gold);text-shadow:0 0 20px rgba(255,224,102,.7);animation:floatUp .9s ease-out forwards}@keyframes floatUp{0%{transform:translateY(14px) scale(.7);opacity:0}25%{transform:translateY(0) scale(1.15);opacity:1}to{transform:translateY(-38px) scale(1);opacity:0}}.board-wrap{position:relative;align-self:center;width:min(100%,520px);margin:0 auto}.board,.burn-overlay{width:100%;display:block;overflow:visible}.burn-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.arena-ring{fill:none;stroke:#5ee9ff1a;stroke-width:1;stroke-dasharray:2 7}.arena-ring.faint{stroke:#5ee9ff0d;stroke-dasharray:1 12}.edge-ghost{stroke:#78aabe21;stroke-width:1;stroke-dasharray:3 8}.edge-drawn{stroke:var(--phos);stroke-width:3;stroke-linecap:round;filter:url(#glow);stroke-dasharray:var(--len);stroke-dashoffset:var(--len);animation:draw .15s cubic-bezier(.4,0,.2,1) forwards}.edge-drawn.is-diagonal{stroke:var(--amber)}@keyframes draw{to{stroke-dashoffset:0}}.edge-erased{stroke:var(--blood);stroke-width:3;stroke-linecap:round;filter:url(#glow);animation:erase .7s ease-out forwards}@keyframes erase{0%{opacity:1;stroke-width:3}30%{opacity:1;stroke-width:7}to{opacity:0;stroke-width:.5}}.edge-burn{stroke:var(--gold);stroke-width:4;stroke-linecap:round;filter:url(#glow);stroke-dasharray:var(--len);animation:burn .5s ease-in forwards}@keyframes burn{0%{stroke-dashoffset:0;opacity:1;transform:translateY(0)}to{stroke-dashoffset:calc(var(--len) * -1);opacity:0;transform:translateY(-70px)}}.board.is-firing .edge-drawn{opacity:.25;transition:opacity .2s}.figure-fill{fill:var(--fig);fill-opacity:.13;stroke:var(--fig);stroke-opacity:.35;stroke-width:1;animation:figIn .42s cubic-bezier(.2,1.4,.4,1) both}.fig-star{fill-opacity:.2;animation:figStar .9s ease-out both}@keyframes figIn{0%{fill-opacity:.6;transform:scale(1.06);transform-origin:center}to{fill-opacity:.13;transform:scale(1)}}@keyframes figStar{0%{fill-opacity:.85}40%{fill-opacity:.25}70%{fill-opacity:.6}to{fill-opacity:.2}}.figure-break{fill:var(--fig);stroke:var(--fig);stroke-width:2;animation:figBreak .7s steps(1,end) forwards}@keyframes figBreak{0%,20%,40%{fill-opacity:.45;stroke-opacity:1}10%,30%,50%{fill-opacity:0;stroke-opacity:.2}to{fill-opacity:0;stroke-opacity:0}}.star-halo{fill:none;stroke:var(--gold);stroke-width:1.5;stroke-opacity:.55;filter:url(#glow);animation:haloSpin 9s linear infinite;transform-origin:220px 218px}@keyframes haloSpin{to{transform:rotate(360deg)}}.star-burst .board{animation:burst 1.1s ease-out}@keyframes burst{0%{filter:brightness(2.6) saturate(1.6)}to{filter:none}}.vertex{cursor:pointer}.vertex-hit{fill:transparent}.vertex-disc{fill:#060c12eb;stroke:var(--phos-dim);stroke-width:1.6;transition:all .22s ease}.vertex-value{text-anchor:middle;font-family:var(--display);font-size:18px;fill:var(--text);transition:fill .22s ease;pointer-events:none}.vertex.is-legal:hover .vertex-disc{stroke:var(--phos);fill:#5ee9ff24;r:25;filter:url(#glow)}.vertex.is-locked{cursor:not-allowed}.vertex.is-locked .vertex-disc{stroke:#7896a533;fill:#060c1299}.vertex.is-locked .vertex-value{fill:#a0b9c36b}.vertex.is-current .vertex-disc{stroke:var(--amber);stroke-width:2.4;fill:#ffb54729;filter:url(#glow)}.vertex.is-current .vertex-value{fill:var(--gold)}.vertex-pulse{fill:none;stroke:var(--amber);stroke-width:1.2;animation:pulse 1.6s ease-out infinite}@keyframes pulse{0%{r:24;opacity:.9}to{r:42;opacity:0}}.budget{position:absolute;top:4px;left:0;text-align:left;line-height:1}.budget-num{display:block;font-family:var(--display);font-size:34px;color:var(--phos);text-shadow:0 0 20px rgba(94,233,255,.5)}.budget-label{font-size:9px;letter-spacing:.22em;text-transform:uppercase;color:var(--text-dim)}.budget.is-low .budget-num{color:var(--blood);text-shadow:0 0 22px rgba(255,61,110,.7);animation:throb 1s ease-in-out infinite}.verdict{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;gap:18px;background:#04070cdb;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:figIn .4s ease both}.verdict p{margin:0;font-family:var(--display);font-size:40px;letter-spacing:.18em;text-align:center}.verdict.v-victory p{color:var(--gold);text-shadow:0 0 40px rgba(255,224,102,.6)}.verdict.v-defeat p{color:var(--blood);text-shadow:0 0 40px rgba(255,61,110,.6)}.verdict button{font:inherit;font-size:13px;letter-spacing:.2em;text-transform:uppercase;padding:12px 26px;background:transparent;color:var(--text);border:1px solid var(--phos-dim);cursor:pointer;transition:.2s}.verdict button:hover{background:#5ee9ff1f;border-color:var(--phos)}.counters{display:grid;grid-template-columns:1fr 1fr;gap:14px}.counter{padding:12px 16px;background:var(--panel);border:1px solid var(--line);border-left:2px solid var(--phos);display:flex;align-items:baseline;justify-content:space-between}.counter.mult{border-left-color:var(--amber)}.counter-label{font-size:10px;letter-spacing:.3em;color:var(--text-dim)}.counter-value{font-family:var(--display);font-size:30px;color:var(--phos);line-height:1}.counter.mult .counter-value{color:var(--amber)}.pop{animation:pop .26s cubic-bezier(.2,1.6,.4,1);display:inline-block}@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.32);filter:brightness(1.8)}to{transform:scale(1)}}.validate{position:relative;font-family:var(--display);font-size:20px;letter-spacing:.16em;padding:18px 24px;color:var(--ink);background:linear-gradient(100deg,var(--gold),var(--amber));border:0;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;box-shadow:0 0 34px #ffb54747;transition:transform .12s,box-shadow .2s,filter .2s}.validate:hover:not(:disabled){filter:brightness(1.12);box-shadow:0 0 52px #ffb54773}.validate:active:not(:disabled){transform:translateY(2px)}.validate:disabled{background:#1e2c38b3;color:var(--text-dim);box-shadow:none;cursor:not-allowed}.validate-dmg{font-family:var(--mono);font-size:14px;font-weight:600;letter-spacing:.08em;padding:5px 12px;background:#04070cd1;color:var(--gold);white-space:nowrap}.validate:disabled .validate-dmg{color:var(--text-dim)}.validate-flag{position:absolute;top:-9px;left:16px;font-family:var(--mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;padding:2px 8px;background:var(--blood);color:#fff}.validate.is-forced{animation:throb 1.1s ease-in-out infinite}.figure-chips{list-style:none;display:flex;flex-wrap:wrap;gap:7px;margin:0;padding:0}.chip{font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:4px 9px;color:var(--fig);border:1px solid color-mix(in srgb,var(--fig) 40%,transparent);background:color-mix(in srgb,var(--fig) 9%,transparent)}.chip b{color:#fff}.chip i{font-style:normal;opacity:.75}.fill-overflow{fill:var(--text-dim);font-family:var(--mono);font-size:10px;letter-spacing:.1em;opacity:.55}.stepper{display:grid;grid-template-columns:repeat(6,1fr);gap:4px}.step{font:inherit;font-size:12px;padding:7px 0;color:var(--text-dim);background:#04080dcc;border:1px solid var(--line);cursor:pointer;transition:.15s}.step:hover{border-color:var(--phos-dim);color:var(--text)}.step.is-on{color:var(--ink);background:var(--phos);border-color:var(--phos);box-shadow:0 0 14px #5ee9ff66}.group h3.sub{margin-top:14px}.log{height:172px;overflow-y:auto;padding:12px 14px;background:#04080dad;border:1px solid var(--line);font-size:11.5px;line-height:1.5;scrollbar-width:thin;scrollbar-color:var(--phos-dim) transparent}.log-line{margin:0 0 3px;color:var(--text-dim);display:flex;gap:8px;align-items:baseline;animation:logIn .3s ease both}@keyframes logIn{0%{opacity:0;transform:translate(-6px)}}.log-dot{width:4px;height:4px;flex:0 0 4px;background:currentColor;transform:translateY(-1px)}.k-move{color:#7f9dab}.k-figure{color:var(--phos)}.k-star{color:var(--gold)}.k-break{color:var(--violet)}.k-enemy{color:var(--blood)}.k-validate{color:var(--amber)}.k-relic{color:#8fd6a4}.k-sys{color:#fff}.settings{position:sticky;top:22px;padding:18px;background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;flex-direction:column;gap:18px}.panel-title{font-family:var(--display);font-size:13px;letter-spacing:.24em;margin:0;color:var(--phos)}.group h3{margin:0 0 9px;font-size:9px;letter-spacing:.26em;text-transform:uppercase;color:var(--text-dim);border-bottom:1px solid var(--line);padding-bottom:6px}.values-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.value-cell{display:flex;flex-direction:column;gap:3px;font-size:9px;color:var(--text-dim);text-align:center}.field{display:block;margin-bottom:10px}.field-label{display:block;font-size:10px;letter-spacing:.08em;color:var(--text-dim);margin-bottom:4px}.field-hint{font-size:9px;color:var(--text-dim)}input[type=number],select{width:100%;font:inherit;font-size:13px;padding:6px 8px;color:var(--text);background:#04080dcc;border:1px solid var(--line);border-radius:0;outline:none;transition:border-color .2s}input[type=number]:focus,select:focus{border-color:var(--phos)}.value-cell input{text-align:center;padding:5px 2px}.switch{display:flex;gap:8px;align-items:center;width:100%;text-align:left;font:inherit;font-size:10.5px;line-height:1.35;padding:8px 9px;color:var(--text-dim);background:#04080d99;border:1px solid var(--line);cursor:pointer;transition:.2s}.switch:hover{border-color:var(--phos-dim)}.switch.is-on{color:var(--text);border-color:#5ee9ff73}.switch-led{width:7px;height:7px;flex:0 0 7px;border:1px solid var(--text-dim);border-radius:50%}.switch.is-on .switch-led{background:var(--phos);border-color:var(--phos);box-shadow:0 0 10px var(--phos)}.relic{width:100%;display:flex;gap:10px;align-items:flex-start;text-align:left;font:inherit;padding:9px 10px;margin-bottom:7px;color:var(--text-dim);background:#04080d99;border:1px solid var(--line);cursor:pointer;transition:.2s}.relic:hover{border-color:var(--phos-dim)}.relic.is-on{color:var(--text);border-color:var(--gold);background:#ffe06612;box-shadow:inset 0 0 22px #ffe0660f}.relic-led{width:7px;height:7px;flex:0 0 7px;margin-top:4px;border:1px solid var(--text-dim);border-radius:50%}.relic.is-on .relic-led{background:var(--gold);border-color:var(--gold);box-shadow:0 0 10px var(--gold)}.relic-text strong{display:block;font-size:11px;letter-spacing:.06em}.relic-text em{display:block;margin-top:3px;font-style:normal;font-size:10px;line-height:1.45;opacity:.72}.replay{font:inherit;font-size:12px;letter-spacing:.22em;text-transform:uppercase;padding:11px;color:var(--phos);background:transparent;border:1px solid var(--phos-dim);cursor:pointer;transition:.2s}.replay:hover{background:#5ee9ff1f;border-color:var(--phos)}.settings-note{margin:0;font-size:9.5px;line-height:1.5;color:var(--text-dim);opacity:.7}@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
