:root{--bg-deep: #0a0e1a;--bg-panel: rgba(12, 18, 36, .92);--accent-purple: #9b7bff;--accent-curse: #c084fc;--accent-danger: #ef4444;--text-primary: #f1f5f9;--text-muted: #94a3b8;--safe-top: var(--discord-safe-area-inset-top, env(safe-area-inset-top, 0px));--safe-right: var(--discord-safe-area-inset-right, env(safe-area-inset-right, 0px));--safe-bottom: var(--discord-safe-area-inset-bottom, env(safe-area-inset-bottom, 0px));--safe-left: var(--discord-safe-area-inset-left, env(safe-area-inset-left, 0px))}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;user-select:none}html,body,#root{width:100%;height:100%;min-height:100dvh;min-height:100vh;overflow:hidden;background:var(--bg-deep);color:var(--text-primary);font-family:Segoe UI,system-ui,sans-serif}.app-shell{position:relative;display:flex;flex-direction:column;width:100%;height:100%;min-height:0;min-height:100dvh;min-height:100vh;padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left);touch-action:manipulation}.app-shell.in-run{touch-action:none;overscroll-behavior:none}.solo-prelude{position:relative;flex:1;min-height:0}.game-container{flex:1;position:relative;min-height:0;overflow:hidden}.game-container canvas{display:block;margin:0 auto}.app-shell.in-run .game-container canvas{pointer-events:none!important}html.floating-joystick-active{touch-action:none;overscroll-behavior:none}html.floating-joystick-active .joystick-stick[data-measure="1"],html.joystick-large-touch .joystick-stick[data-measure="1"]{--joystick-diameter: min(32vw, 120px)}html.joystick-large-touch .joystick-stick[data-measure="1"]{--joystick-diameter: min(36vw, 140px)}.panel{background:var(--bg-panel);border:1px solid rgba(155,123,255,.35);border-radius:12px;backdrop-filter:blur(8px)}.btn{position:relative;padding:10px 18px;border:none;border-radius:8px;font-weight:600;cursor:pointer;transition:transform .1s,filter .15s,box-shadow .15s;-webkit-tap-highlight-color:transparent;user-select:none;touch-action:manipulation;overflow:hidden}.btn:active{transform:scale(.96);filter:brightness(1.08)}.btn:focus-visible{outline:2px solid rgba(192,132,252,.9);outline-offset:2px}.btn:disabled{cursor:not-allowed;filter:grayscale(.35) brightness(.85);transform:none}.btn:after{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(circle at center,#ffffff59,#fff0 60%);opacity:0;pointer-events:none;transform:scale(.6);transition:opacity .45s ease,transform .45s ease}.btn[data-tap="1"]:after{opacity:1;transform:scale(1.15);transition:opacity 0s,transform 0s}.btn-primary{background:linear-gradient(135deg,#7c3aed,#4f46e5);color:#fff}.btn-secondary{background:#94a3b833;color:var(--text-primary);border:1px solid rgba(148,163,184,.3)}.btn-ready{background:linear-gradient(135deg,#059669,#10b981);color:#fff}.lobby-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:0;z-index:10;pointer-events:auto;overflow:hidden;background:radial-gradient(ellipse at center,#0a0e1ab3,#0a0e1af2)}.lobby-scroll{flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;display:flex;flex-direction:column;align-items:center;gap:12px;padding:8px 12px 12px;width:100%}.lobby-heading{font-size:1.1rem;text-align:center;flex-shrink:0}.lobby-footer{flex-shrink:0;display:flex;gap:10px;width:100%;max-width:420px;margin:0 auto;padding:10px 12px calc(8px + var(--safe-bottom));background:linear-gradient(to top,rgba(10,14,26,.98) 70%,rgba(10,14,26,.85) 90%,transparent);border-top:1px solid rgba(155,123,255,.2)}.lobby-footer .btn{flex:1;min-height:48px}.hud-top{position:absolute;top:calc(12px + var(--safe-top));left:calc(14px + var(--safe-left));right:calc(14px + var(--safe-right));display:flex;justify-content:space-between;align-items:flex-start;gap:12px;z-index:5;pointer-events:none}.hud-top>div{display:flex;flex-direction:column;gap:4px;align-items:flex-start}.hud-top>div:last-child{align-items:flex-end}.hud-plate{padding:6px 10px;border-radius:8px;background:#0000008c;font-size:12px;border-left:3px solid var(--accent-purple)}.character-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;max-width:420px;width:90%}.char-card{padding:12px;border-radius:10px;border:2px solid transparent;cursor:pointer;text-align:left;background:#0006}.char-card.selected{border-color:var(--accent-purple);box-shadow:0 0 20px #9b7bff66}.char-card-portrait-wrap{display:flex;align-items:center;justify-content:center;height:104px;margin-bottom:8px;background:transparent;filter:drop-shadow(0 4px 8px rgba(0,0,0,.55))}.char-card-portrait{display:block;max-height:100%;max-width:100%;width:auto;height:auto;object-fit:contain;image-rendering:auto}.char-card h3{font-size:14px;margin-bottom:4px}.char-card p{font-size:11px;color:var(--text-muted)}.draft-overlay{position:absolute;inset:0;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:#000000bf;pointer-events:auto}.draft-card{width:min(320px,90%);padding:14px;border-radius:10px;background:var(--bg-panel);border:1px solid rgba(155,123,255,.5);cursor:pointer;text-align:left}.draft-card:hover{border-color:#c084fc}.joystick-stick{position:fixed;width:var(--joystick-diameter, 112px);height:var(--joystick-diameter, 112px);margin:0;pointer-events:none;visibility:hidden;opacity:0;z-index:9;background:transparent!important;border:1px dashed rgba(155,123,255,.18)!important;backdrop-filter:none!important;border-radius:50%!important}.joystick-stick.joystick-visible{visibility:visible;opacity:1}.joystick-active{border-radius:50%}.joystick-stick.joystick-active.joystick-pressed{background:radial-gradient(circle,#9b7bff26,#00000059 70%)!important;border:2px solid rgba(192,132,252,.6)!important;box-shadow:0 0 24px #9b7bff59}.joystick-knob{position:absolute;left:50%;top:50%;width:44px;height:44px;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle at 35% 35%,#c084fc,#6d28d9);border:2px solid rgba(255,255,255,.5);box-shadow:0 4px 12px #00000080;pointer-events:none}.minimap{position:absolute;top:calc(72px + var(--safe-top));right:calc(12px + var(--safe-right));padding:4px;z-index:6;pointer-events:none;opacity:.9}.char-card:hover{box-shadow:0 0 16px #9b7bff59;transform:translateY(-2px)}.char-card{transition:transform .15s,box-shadow .15s}.draft-card:hover{transform:scale(1.02);box-shadow:0 0 20px #c084fc66}.draft-card{transition:transform .12s,box-shadow .12s}.low-hp-vignette{position:fixed;inset:0;pointer-events:none;z-index:4;box-shadow:inset 0 0 120px 40px #ef444459;animation:hp-pulse 1.2s ease-in-out infinite}@keyframes hp-pulse{0%,to{opacity:.6}50%{opacity:1}}.boss-bar-wrap{position:absolute;top:calc(50% - 12px);left:50%;transform:translate(-50%);width:min(320px,70%);z-index:6;pointer-events:none}.boss-bar-label{font-size:10px;text-align:center;color:#fca5a5;letter-spacing:.15em;margin-bottom:4px;text-shadow:0 0 8px #ef4444}.boss-bar-track{height:10px;background:#0009;border-radius:5px;overflow:hidden;border:1px solid rgba(239,68,68,.5)}.boss-bar-fill{height:100%;background:linear-gradient(90deg,#b91c1c,#ef4444,#fbbf24);border-radius:5px;transition:width .2s ease}.loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:12px}.loading-screen h1{font-size:1.25rem;letter-spacing:.05em}.loading-screen p{color:var(--text-muted);font-size:.875rem}.error-banner{color:#fca5a5;font-size:.8rem;max-width:320px;text-align:center}.title-screen{position:relative;flex:1;min-height:0;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:12px;z-index:20;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:12px 16px calc(16px + var(--safe-bottom));background:radial-gradient(ellipse at 50% 30%,#1a1040 0%,var(--bg-deep) 55%)}.title-glow{position:absolute;width:320px;height:320px;border-radius:50%;background:radial-gradient(circle,rgba(155,123,255,.25),transparent 70%);pointer-events:none}.title-logo{font-size:clamp(1.35rem,6vw,2.5rem);letter-spacing:.14em;font-weight:800;z-index:1;background:linear-gradient(135deg,#c084fc,#f472b6,#fbbf24);-webkit-background-clip:text;background-clip:text;color:transparent;text-align:center;flex-shrink:0}.title-sub{color:var(--text-muted);font-size:.9rem;z-index:1}.title-highscore{color:var(--accent-curse);font-size:.85rem;z-index:1}.title-actions{display:flex;flex-direction:column;gap:10px;z-index:1;width:min(320px,100%);flex-shrink:0}.title-actions .btn-large{min-height:48px}.title-controls{margin-top:12px;padding:10px 14px;font-size:.75rem;color:var(--text-muted);text-align:center;z-index:1}.title-controls kbd{background:#ffffff1a;padding:2px 6px;border-radius:4px;font-size:.7rem}.btn-large{padding:14px 24px;font-size:1rem}.btn-ghost{background:transparent;color:var(--text-muted);border:1px solid rgba(148,163,184,.25)}.back-btn{position:absolute;top:calc(8px + var(--safe-top));left:calc(8px + var(--safe-left));z-index:15}.hp-xp-column{position:absolute;left:calc(12px + var(--safe-left));top:72px;width:min(160px,40vw);z-index:6;pointer-events:none}.bar-label{font-size:10px;color:var(--text-muted);margin-bottom:2px}.bar-track{position:relative;height:9px;background:#0000008c;border:1px solid rgba(255,255,255,.08);border-radius:5px;overflow:hidden;margin-bottom:8px}.bar-fill{height:100%;border-radius:4px;transition:width .15s ease}.hp-fill{background:linear-gradient(90deg,#ef4444,#f87171)}.xp-fill{background:linear-gradient(90deg,#7c3aed,#c084fc)}.bar-track-regen:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#22c55e00,#4ade808c,#22c55e00);background-size:200% 100%;animation:regen-sweep 1.4s linear infinite;pointer-events:none;mix-blend-mode:screen}@keyframes regen-sweep{0%{background-position:200% 0}to{background-position:-200% 0}}.technique-bar{position:absolute;bottom:calc(170px + var(--safe-bottom));left:50%;transform:translate(-50%);display:flex;flex-wrap:wrap;gap:6px;padding:6px 10px;z-index:6;pointer-events:none;max-width:calc(100% - 320px);max-height:70px;overflow:hidden;justify-content:center}.tech-chip{position:relative;display:flex;gap:6px;align-items:center;padding:4px 8px;background:#00000073;border-radius:6px;font-size:10px;border:1px solid rgba(155,123,255,.35);overflow:hidden}.tech-chip.tech-passive{border-color:#c084fc8c;background:#4c1d9559}.tech-cd-bar{position:absolute;left:0;bottom:0;height:2px;width:100%;background:linear-gradient(90deg,#c084fcd9,#9b7bff80);transform-origin:left center;transform:scaleX(var(--cd-progress, 0));transition:transform 60ms linear;pointer-events:none}.tech-name{color:var(--text-primary)}.tech-lv{color:var(--accent-curse);font-weight:700}.tip-toast{position:absolute;bottom:calc(240px + var(--safe-bottom));left:50%;transform:translate(-50%);padding:6px 12px;font-size:.72rem;color:var(--text-muted);z-index:6;pointer-events:none;max-width:70%;text-align:center;opacity:.85}.domain-btn{position:absolute;bottom:calc(28px + var(--safe-bottom));right:calc(20px + var(--safe-right));z-index:7}.dash-btn{position:absolute;bottom:calc(28px + var(--safe-bottom));right:calc(220px + var(--safe-right));z-index:7;min-width:64px;min-height:40px;padding:6px 12px;display:flex;align-items:center;gap:6px;background:#0f172ad9;border:1px solid rgba(125,211,252,.5);color:#e0f2fe;overflow:hidden}.dash-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#38bdf833,#38bdf80d);transform-origin:bottom;transform:scaleY(calc(var(--dash-progress, 0)));transition:transform .1s linear;pointer-events:none}.dash-btn:disabled{opacity:.55;cursor:not-allowed}.dash-btn .dash-glyph{font-size:1.15rem;font-weight:700;position:relative;z-index:1;line-height:1}.dash-btn .dash-label{font-size:.75rem;letter-spacing:.04em;text-transform:uppercase;position:relative;z-index:1;line-height:1.1}.streak-plate{border-color:#f59e0b!important;color:#fde68a;animation:streak-pulse 1s ease-in-out infinite alternate}.run-summary{font-size:.85rem;padding:12px 14px;display:flex;flex-direction:column;gap:4px;text-align:left}.run-summary-row{display:flex;justify-content:space-between;align-items:baseline;color:var(--text-muted)}.run-summary-row strong{color:var(--text-primary);font-variant-numeric:tabular-nums}.run-summary-divider{height:1px;background:#9b7bff2e;margin:6px 0}.run-summary-title{font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:#c4b5fd;margin-bottom:4px}.pause-cheatsheet{margin-top:12px;padding:10px 12px;background:#0f172a8c;border:1px solid rgba(155,123,255,.18);border-radius:8px;display:flex;flex-direction:column;gap:4px;font-size:.85rem;text-align:left}.pause-cheatsheet-title{font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:#c4b5fd;margin-bottom:6px}.pause-cheatsheet-row{display:flex;justify-content:space-between;align-items:center;gap:16px;color:var(--text-muted)}.pause-cheatsheet-keys{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.pause-cheatsheet-row kbd{display:inline-block;padding:1px 7px;font-size:.72rem;background:#0f172ae6;border:1px solid rgba(155,123,255,.35);border-bottom-width:2px;border-radius:4px;color:#e2e8f0;font-family:ui-monospace,Cascadia Mono,Source Code Pro,monospace}.mute-flash{position:absolute;top:calc(20px + var(--safe-top));left:50%;transform:translate(-50%);z-index:16;padding:6px 14px;background:#0f172ad9;border:1px solid rgba(155,123,255,.45);color:#e2e8f0;border-radius:999px;font-size:.85rem;letter-spacing:.05em;text-transform:uppercase;animation:mute-flash-fade 1.5s ease forwards}@keyframes mute-flash-fade{0%{opacity:0;transform:translate(-50%,-8px)}15%{opacity:1;transform:translate(-50%)}80%{opacity:1}to{opacity:0}}@keyframes streak-pulse{0%{box-shadow:0 0 #f59e0b00}to{box-shadow:0 0 12px 1px #f59e0b66}}.hud-pause-btn{position:absolute;bottom:calc(28px + var(--safe-bottom));right:calc(160px + var(--safe-right));z-index:8;width:44px;height:44px;padding:0;border-radius:50%;font-size:1.1rem;background:#0f172ad9;border:1px solid rgba(155,123,255,.35);color:var(--text-primary)}.boss-plate{border-color:#ef4444!important}.warn-plate{border-color:#fbbf24!important;color:#fde68a}.shield-plate{border-color:#38bdf8b3!important;color:#bae6fd;background:#082f4973!important}.record-badge{color:#86efac;font-weight:600}.overlay-panel{position:absolute;inset:0;z-index:30;background:#000000d9}.modal-backdrop{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:50}.modal{width:min(360px,92%);padding:20px;pointer-events:auto}.modal h2{margin-bottom:16px;font-size:1.1rem}.setting-row{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;font-size:.85rem}.setting-row input[type=range]{width:120px}.setting-row select{background:#0006;color:var(--text-primary);border:1px solid rgba(148,163,184,.3);border-radius:6px;padding:4px 8px}.setting-row.checkbox{justify-content:flex-start}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.title-talismans{color:#c084fc;font-size:.9rem;margin-bottom:8px}.party-strip{position:absolute;top:calc(52px + var(--safe-top));left:calc(12px + var(--safe-left));display:flex;flex-direction:column;gap:4px;z-index:5;pointer-events:none;max-width:160px}.party-chip{font-size:.65rem;display:flex;align-items:center;gap:6px}.party-chip.self{border-color:var(--accent-purple)}.party-portrait{width:22px;height:22px;object-fit:contain;image-rendering:pixelated}.revive-overlay{position:absolute;bottom:calc(200px + var(--safe-bottom));left:50%;transform:translate(-50%);padding:12px 16px;z-index:8;min-width:220px;text-align:center;pointer-events:none}.revive-title{font-weight:700;font-size:.85rem;margin-bottom:8px}.revive-hint{font-size:.7rem;color:var(--text-muted);margin-top:6px}.revive-track{height:8px;background:#00000080;border-radius:4px;overflow:hidden}.revive-fill{height:100%;background:linear-gradient(90deg,#ef4444,#f87171);transition:width .1s linear}.revive-fill.ally{background:linear-gradient(90deg,#22c55e,#86efac)}.spectate-banner{border-color:#94a3b8}.domain-indicator{position:absolute;top:calc(44px + var(--safe-top));left:50%;transform:translate(-50%);padding:6px 12px;font-size:.7rem;z-index:6;pointer-events:none}.domain-indicator.ready{opacity:.6;border-color:#9b7bff66}.domain-indicator.active{border-color:#c084fc;color:#e9d5ff;animation:domain-pulse 1.2s ease-in-out infinite}.domain-indicator.blocked,.domain-indicator.spent{opacity:.55;font-size:.65rem}@keyframes domain-pulse{50%{box-shadow:0 0 12px #c084fc80}}.domain-btn-large{padding:14px 22px;font-size:1rem}.draft-random{margin-top:10px;width:100%}.shop-modal{max-height:85vh;overflow-y:auto}.shop-balance{margin-bottom:8px}.shop-list{list-style:none;display:flex;flex-direction:column;gap:8px}.shop-item{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;gap:12px}.shop-cost{display:block;font-size:.75rem;color:var(--accent-curse);margin-top:4px}@media(prefers-reduced-motion:reduce){.domain-indicator.active{animation:none}}.app-shell{--hud-scale: 1}.hud-plate,.bar-track,.hud-top,.boss-bar-wrap,.run-stats,.tech-chip,.party-strip{zoom:var(--hud-scale)}@supports not (zoom: 1){.hud-plate{transform:scale(var(--hud-scale));transform-origin:top right}}.toast-feed{position:absolute;top:calc(64px + var(--safe-top));left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:6px;z-index:25;pointer-events:none;align-items:center;max-width:90%}.toast{padding:8px 14px;border-radius:8px;font-size:.85rem;font-weight:600;background:#0f172aeb;border:1px solid rgba(255,255,255,.1);animation:toast-in .24s ease-out;letter-spacing:.02em}.toast-info{color:#e2e8f0}.toast-warn{color:#fbbf24;border-color:#fbbf2480}.toast-achieve{color:#c084fc;border-color:#c084fc99;box-shadow:0 0 18px #c084fc59}.toast-ally{color:#34d399;border-color:#34d39980}@keyframes toast-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.damage-flash{position:absolute;inset:0;pointer-events:none;z-index:30;box-shadow:inset 0 0 80px 30px #ef444499;animation:damage-pulse .22s ease-out}@keyframes damage-pulse{0%{opacity:0}40%{opacity:1}to{opacity:0}}.run-stats{position:absolute;top:88px;right:12px;padding:8px 12px;font-size:.7rem;z-index:9;min-width:140px}.run-stats-row{display:flex;justify-content:space-between;gap:12px;margin-top:2px}.modal-backdrop{position:absolute;inset:0;background:#0a0e1ab3;display:flex;align-items:center;justify-content:center;z-index:100}.modal{padding:22px 24px;min-width:320px;max-width:86vw;max-height:86vh;overflow-y:auto}.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:14px;flex-wrap:wrap}.settings-section{margin-top:14px;margin-bottom:6px;font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-purple)}.setting-row{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:6px 0;font-size:.85rem}.setting-row.checkbox{justify-content:flex-start;gap:10px}.setting-row input[type=range]{flex:1;max-width:180px}.title-glow{position:absolute;inset:0;background:radial-gradient(circle at 50% 40%,rgba(192,132,252,.25),transparent 60%);pointer-events:none}.title-sub{color:var(--text-muted);font-size:.9rem;letter-spacing:.1em}.title-stats{display:flex;gap:14px;margin:10px 0}.title-highscore{color:var(--text-muted);font-size:.85rem}.title-actions-row{display:flex;gap:8px}.title-actions-row .btn{flex:1}.btn-large{font-size:1.05rem;padding:14px 28px}.btn-ghost{background:transparent;color:var(--text-muted)}.title-controls{margin-top:14px;padding:8px 14px;font-size:.7rem;color:var(--text-muted);text-align:center}.title-controls kbd{background:#ffffff14;border:1px solid rgba(255,255,255,.18);border-radius:4px;padding:1px 5px;font-size:.7rem;margin:0 2px}.tutorial-list{list-style:disc;padding-left:20px;margin:12px 0}.tutorial-list li{padding:4px 0;font-size:.88rem}.tutorial-list kbd{background:#ffffff14;border:1px solid rgba(255,255,255,.18);border-radius:4px;padding:1px 5px;font-size:.75rem;margin:0 2px}.stats-modal{min-width:340px}.stats-list{list-style:none;display:flex;flex-direction:column;gap:4px;margin:8px 0}.stats-row{display:flex;justify-content:space-between;padding:6px 8px;font-size:.82rem;border-bottom:1px solid rgba(255,255,255,.06)}.achievement-grid{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin-top:8px}.achievement-card{padding:10px;border-radius:8px;background:#0f172a99;border:1px solid rgba(255,255,255,.08)}.achievement-card.earned{border-color:#c084fc80;box-shadow:0 0 12px #c084fc33}.achievement-card strong{font-size:.82rem;display:block;margin-bottom:4px}.achievement-card p{font-size:.72rem;color:var(--text-muted)}.ping-wheel-backdrop{position:absolute;inset:0;background:#0a0e1a80;display:flex;align-items:center;justify-content:center;z-index:60}.ping-wheel{position:relative;width:200px;height:200px;border-radius:50%;background:#0f172ab3;border:2px solid rgba(192,132,252,.4);display:flex;align-items:center;justify-content:center}.ping-wheel-btn{position:absolute;top:50%;left:50%;margin:-22px;width:76px;height:44px;font-size:.8rem}.ping-wheel-center{color:var(--text-muted);font-size:.85rem;letter-spacing:.1em}.hud-ping-btn{position:absolute;bottom:calc(28px + var(--safe-bottom));right:calc(220px + var(--safe-right));font-size:1.1rem;width:44px;height:44px;padding:0;border-radius:50%;background:#0f172ad9;border:1px solid rgba(155,123,255,.35);z-index:8}.conn-banner{position:absolute;top:calc(8px + var(--safe-top));left:50%;transform:translate(-50%);padding:6px 14px;background:#0f172aeb;border-radius:8px;font-size:.8rem;z-index:80;border:1px solid rgba(239,68,68,.5)}.conn-banner.reconnecting{border-color:#fbbf2480;color:#fbbf24}.conn-banner.lost{display:flex;gap:10px;align-items:center}.ping-chip{position:absolute;top:calc(8px + var(--safe-top));right:12px;padding:4px 8px;font-size:.72rem;z-index:6}.ping-chip.good{color:#34d399}.ping-chip.ok{color:#fbbf24}.ping-chip.bad{color:#ef4444}.ready-countdown{padding:8px 16px;font-size:1.05rem;color:#34d399;text-align:center;border-color:#34d39966;animation:countdown-pulse 1s infinite}@keyframes countdown-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}.draft-card.confirm{background:#c084fc26;border-color:#c084fc80}.draft-upgrade{display:inline-block;margin-left:6px;padding:1px 5px;font-size:.62rem;background:#c084fc4d;border-radius:4px;color:#f5d0fe;letter-spacing:.08em}.draft-synergy{font-size:.7rem;color:#34d399;margin-top:4px}.draft-card.banish-card{background:#ef44441a;border-color:#ef444466}.draft-actions{display:flex;gap:8px;margin-top:8px;justify-content:center;flex-wrap:wrap}.online-avatar-strip{position:absolute;top:calc(56px + var(--safe-top));right:12px;display:flex;gap:4px;z-index:5}.online-avatar{width:28px;height:28px;border-radius:50%;border:2px solid rgba(255,255,255,.2);background:#1a1a2e}.party-avatar{width:22px;height:22px;border-radius:50%;margin-right:6px;vertical-align:middle}.color-blind .hp-fill{background:linear-gradient(90deg,#fe4,#f70)}.color-blind .xp-fill{background:linear-gradient(90deg,#0df,#c084fc)}.color-blind .boss-bar-fill{background:linear-gradient(90deg,#f70,#fe4)}.color-blind .low-hp-vignette{box-shadow:inset 0 0 80px 60px #ff770080}.error-banner{color:var(--accent-danger);border:1px solid rgba(239,68,68,.4);background:#ef444414;padding:10px 14px;border-radius:8px;margin-bottom:12px;max-width:380px;text-align:center}.overlay-panel{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:#0a0e1aeb;z-index:40}.keybindings-modal{min-width:360px}.keybindings-list{list-style:none;display:flex;flex-direction:column;gap:6px;margin:8px 0}.keybinding-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.05);font-size:.85rem}.keybinding-label{color:var(--text-primary)}.keybinding-slots{display:flex;gap:6px}.key-slot{min-width:78px;font-family:monospace;font-size:.78rem;padding:6px 8px}.key-slot.capturing{background:#c084fc40;border-color:#c084fc99;color:#f5d0fe;animation:countdown-pulse .8s infinite}@media(prefers-reduced-motion:reduce){.toast,.damage-flash,.ready-countdown,.domain-indicator.active{animation:none}}.mutator-picker{margin:12px 0;width:100%;max-width:480px}.mutator-toggle{width:100%}.mutator-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;margin-top:8px}.mutator-card{background:#0f172abf;border:2px solid rgba(255,255,255,.08);border-radius:8px;padding:10px;text-align:left;color:var(--text);cursor:pointer;transition:transform .08s,border-color .15s,background .15s}.mutator-card:hover:not(:disabled){transform:translateY(-1px)}.mutator-card.selected{background:#7c3aed2e}.mutator-card:disabled{opacity:.45;cursor:not-allowed}.mutator-card-name{font-weight:700;margin-bottom:4px}.mutator-card-blurb{font-size:.78rem;color:var(--text-muted);line-height:1.25}.stage-picker{width:100%;max-width:480px;margin:10px 0}.stage-picker-label{font-weight:600;margin-bottom:6px}.stage-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.stage-card{background:#0f172ab3;border:2px solid rgba(255,255,255,.08);border-radius:8px;padding:6px;display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;color:var(--text);transition:border-color .15s,transform .08s}.stage-card:hover{transform:translateY(-1px)}.stage-card.selected{border-color:#a78bfa;background:#a78bfa1f}.stage-swatch{width:100%;height:36px;border-radius:4px;border:1px solid rgba(255,255,255,.08)}.stage-name{font-size:.78rem;text-align:center;font-weight:600}.stage-blurb{font-size:.66rem;color:var(--text-muted);line-height:1.2;text-align:center}@media(max-width:600px){.stage-grid{grid-template-columns:repeat(2,1fr)}}.btn-ult{position:absolute;right:calc(20px + var(--safe-right));bottom:calc(104px + var(--safe-bottom));width:78px;height:78px;border-radius:50%;background:#4c1d95b3;border:2px solid rgba(167,139,250,.65);color:#fff;font-weight:700;font-size:.78rem;letter-spacing:.5px;z-index:8;cursor:pointer;opacity:.85;transition:opacity .2s,box-shadow .2s,transform .1s}.btn-ult:disabled{opacity:.55;cursor:not-allowed}.btn-ult.ready{box-shadow:0 0 14px 3px #a78bfab3;opacity:1;animation:ult-pulse 1.1s ease-in-out infinite}.btn-ult.active{background:#c084fcd9;animation:none;box-shadow:0 0 24px 6px #d8b4fee6}@keyframes ult-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.ult-label{display:block}.practice-plate{position:fixed;left:50%;top:16px;transform:translate(-50%);background:#22c55e2e;border:1px solid rgba(74,222,128,.5);font-weight:700;font-variant-numeric:tabular-nums}.tech-detail-overlay{position:fixed;inset:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:50}.tech-detail-card{max-width:360px;width:calc(100vw - 32px);padding:20px;display:flex;flex-direction:column;gap:10px}.tech-detail-name{margin:0;font-size:1.15rem;color:#c084fc}.tech-detail-lv{color:var(--text-muted);font-size:.85rem}.tech-detail-desc{color:var(--text-muted);font-size:.9rem}.tech-detail-row{display:flex;justify-content:space-between}.tech-detail-synergy-title{font-weight:600;margin-top:4px}.tech-detail-synergy{padding:4px 8px;border-radius:6px;font-size:.85rem}.tech-detail-synergy.active{background:#4ade8029}.tech-detail-synergy.locked{background:#ffffff0d;color:var(--text-muted)}.tech-detail-need{font-size:.78rem}.tech-chip{background:#0f172aa6;border:1px solid rgba(255,255,255,.1);color:var(--text);cursor:pointer}.tech-chip:hover{background:#7c3aed2e}.color-blind{--hp-color: #1f77ff;--xp-color: #f5d142;--crit-color: #ffa500}.color-blind .hp-fill{background:var(--hp-color)!important}.color-blind .xp-fill{background:var(--xp-color)!important}.color-blind .crit-text{color:var(--crit-color)!important}.spectator-cycle-btn{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:7;background:#0f172ad9}html.touch-device .btn{min-height:44px}html.touch-device .btn-large{min-height:52px;font-size:1.05rem}html.viewport-short .title-controls,html.touch-device.viewport-short .title-controls{display:none}html.touch-device .title-logo{font-size:clamp(1.2rem,5vw,1.75rem);letter-spacing:.1em}html.touch-device .character-grid{max-width:min(420px,100%);width:100%;gap:8px}html.touch-device .char-card-portrait-wrap{height:72px}html.touch-device .char-card h3{font-size:.9rem}html.touch-device .char-card p{font-size:.72rem}html.touch-device .domain-btn{right:calc(12px + var(--safe-right));bottom:calc(12px + var(--safe-bottom));min-width:88px;min-height:48px}html.touch-device .dash-btn{right:calc(12px + var(--safe-right));bottom:calc(68px + var(--safe-bottom));min-width:80px;min-height:38px;padding:5px 10px}html.touch-device .btn-ult{right:calc(12px + var(--safe-right));bottom:calc(132px + var(--safe-bottom));width:64px;height:64px}@media(max-width:520px),(max-height:740px){.title-screen{justify-content:flex-start;padding-top:8px}.title-controls{display:none}.title-stats{flex-wrap:wrap;justify-content:center}}
