:root{--bg: #0e1117;--panel: #171b24;--panel-2: #1f2531;--line: #2b3242;--ink: #e6e9ef;--muted: #8a93a6;--p1: #4ea1ff;--p2: #ff6b6b;--accent: #ffd24a;--good: #4ade80;--bad: #f87171;--radius: 12px;font-family:system-ui,-apple-system,Noto Sans TC,PingFang TC,sans-serif}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;background:var(--bg);color:var(--ink)}button{font:inherit;color:inherit;cursor:pointer}.app{max-width:760px;margin:0 auto;padding:12px 14px 14px}.app.app-battle{height:100dvh;display:flex;flex-direction:column;gap:8px;padding:10px 14px;overflow:hidden}.app.app-battle>.title{margin:0;flex:0 0 auto}.app.app-battle>.battle-root,.app.app-battle>.resolve-stage{flex:1 1 0;min-height:0;display:flex;flex-direction:column;gap:8px}.app.app-battle .status,.app.app-battle .hand-head,.app.app-battle .hand,.app.app-battle .actions,.app.app-battle .hint,.app.app-battle .ai-recap,.app.app-battle .resolve-bar,.app.app-battle .card-arena{margin:0;flex:0 0 auto}.app.app-battle .board-fit{flex:1 1 0;min-height:0;display:flex;align-items:center;justify-content:center}.app.app-battle .board{margin:0;height:100%;width:auto;aspect-ratio:4 / 3;max-width:100%}.app.app-battle .log{flex:0 1 auto;margin:0;max-height:88px}.app.app-battle .battle-root>.hint:last-child{flex:0 0 auto;margin-top:4px!important}.app.app-battle .hand{grid-template-columns:repeat(7,minmax(92px,1fr));overflow-x:auto;scrollbar-width:thin;padding-bottom:2px}.app.app-battle .hand .card{min-height:0;padding:7px 8px}.app.app-battle .hand .card .cmeta{line-height:1.3}.title{display:flex;align-items:baseline;gap:10px;margin:4px 0 14px}.title h1{font-size:20px;margin:0;letter-spacing:1px}.title .sub{color:var(--muted);font-size:12px}.title .profile-chip{margin-left:auto;color:var(--muted);font-size:12px;padding:3px 10px;border:1px solid var(--line);border-radius:999px;white-space:nowrap}.title .mute-btn{margin-left:8px;background:none;border:1px solid var(--line);border-radius:8px;padding:2px 8px;font-size:14px;cursor:pointer;line-height:1.4}.title .sub+.mute-btn{margin-left:auto}.pick-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:12px 0}.char-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px;text-align:left;transition:border-color .15s,transform .08s}.char-card:active{transform:scale(.98)}.char-card.sel{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.char-card h3{margin:0 0 6px;font-size:16px}.char-card .stat{font-size:12px;color:var(--muted);line-height:1.6}.char-card .ult{margin-top:8px;font-size:12px;color:var(--accent)}.diff-row{display:flex;gap:8px;margin:8px 0 16px}.diff-row button{flex:1;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px}.diff-row button.sel{border-color:var(--p1);color:var(--p1)}.primary{width:100%;background:linear-gradient(135deg,#3b82f6,#6366f1);border:none;border-radius:10px;padding:13px;font-weight:600;font-size:15px}.primary:disabled{opacity:.4;cursor:not-allowed}.status{display:flex;gap:10px;margin-bottom:12px}.fighter{flex:1;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px}.fighter .name{display:flex;justify-content:space-between;font-size:13px;margin-bottom:6px}.fighter.p1 .name b{color:var(--p1)}.fighter.p2 .name b{color:var(--p2)}.bar{position:relative;height:8px;border-radius:6px;background:var(--panel-2);overflow:hidden;margin-bottom:5px}.bar>i{display:block;height:100%;transition:width .4s ease}.bar.hp>i{background:var(--good)}.bar.hp>i.pending{position:absolute;top:0;height:100%;background:color-mix(in srgb,var(--good) 38%,#fff 0%);opacity:.5;transition:opacity .3s ease}.bar.mp>i{background:var(--p1)}.bar.charge>i{background:var(--accent)}.fighter .nums{font-size:11px;color:var(--muted);display:flex;justify-content:space-between}.ult-ready{color:var(--accent);font-weight:600}.board{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(3,1fr);gap:6px;aspect-ratio:4 / 3;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:6px;margin-bottom:12px}.cell{position:relative;background:var(--panel-2);border-radius:8px;display:flex;align-items:center;justify-content:center}.cell.hit-atk{box-shadow:0 0 0 2px var(--bad) inset;background:color-mix(in srgb,var(--bad) 14%,var(--panel-2))}.cell.move-target{box-shadow:0 0 0 2px var(--accent) inset;cursor:pointer}.cell.move-target:after{content:"↘";color:var(--accent);font-size:20px;opacity:.7}.pawn{width:70%;height:70%;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;color:#0e1117}.pawn.p1{background:var(--p1)}.pawn.p2{background:var(--p2)}.pawn-slot{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.sprite-pawn{width:100%;height:100%;background-repeat:no-repeat;image-rendering:pixelated;filter:drop-shadow(0 0 0 transparent)}.sprite-pawn.p1{filter:drop-shadow(0 1px 2px rgba(0,0,0,.5)) drop-shadow(0 0 3px color-mix(in srgb,var(--p1) 55%,transparent))}.sprite-pawn.p2{filter:drop-shadow(0 1px 2px rgba(0,0,0,.5)) drop-shadow(0 0 3px color-mix(in srgb,var(--p2) 55%,transparent))}.sprite-pawn.hurt{animation:sprite-hurt .45s ease}@keyframes sprite-hurt{0%,to{filter:none}30%{filter:brightness(1.6) saturate(.4) drop-shadow(0 0 8px var(--bad))}}.pawn.hurt{animation:pawn-hurt .45s ease}@keyframes pawn-hurt{0%,to{box-shadow:0 0 0 0 transparent}30%{box-shadow:0 0 0 4px var(--bad),0 0 18px 4px var(--bad);filter:brightness(1.4) saturate(1.6)}}.cell.fx-flash{animation:cell-flash .5s ease}@keyframes cell-flash{0%,to{box-shadow:0 0 0 0 transparent;background:var(--panel-2)}40%{box-shadow:0 0 0 2px var(--bad) inset;background:color-mix(in srgb,var(--bad) 28%,var(--panel-2))}}.float-dmg{position:absolute;top:2px;left:50%;transform:translate(-50%);font-weight:800;font-size:18px;color:var(--bad);text-shadow:0 1px 3px #000;pointer-events:none;z-index:5}.hand-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:13px}.slots{display:flex;gap:6px}.slot{width:30px;height:30px;border-radius:7px;border:1px dashed var(--line);display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--muted)}.slot.filled{border-style:solid;border-color:var(--accent);color:var(--accent)}.hand{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:9px;text-align:left;min-height:78px;display:flex;flex-direction:column;gap:4px;transition:border-color .12s,transform .08s}.card:active{transform:scale(.97)}.card:disabled{opacity:.35;cursor:not-allowed}.card.armed{border-color:var(--accent)}.card .cname{font-weight:600;font-size:13px}.card .cmeta{font-size:11px;color:var(--muted);line-height:1.5}.glyph{position:absolute;top:8px;right:8px;display:grid;grid-template-columns:repeat(3,6px);grid-template-rows:repeat(3,6px);gap:1px}.glyph .g-cell{width:6px;height:6px;border-radius:1px;background:var(--panel-2)}.glyph .g-self{background:var(--ink)}.glyph-attack .g-hit{background:var(--bad)}.glyph-move .g-hit{background:var(--accent)}.glyph-far{position:absolute;right:-10px;top:4px;font-size:10px;color:var(--muted)}.card{position:relative}.card .kind-attack{color:var(--bad)}.card .kind-move{color:var(--p1)}.card .kind-defend{color:var(--good)}.card .kind-support{color:#38bdf8}.card .kind-ultimate{color:var(--accent)}.actions{display:flex;gap:8px;margin-top:12px}.actions button{flex:1;background:var(--panel-2);border:1px solid var(--line);border-radius:10px;padding:11px;font-weight:600}.actions .go{background:linear-gradient(135deg,#16a34a,#22c55e);border:none}.actions button:disabled{opacity:.4;cursor:not-allowed}.hint{font-size:12px;color:var(--muted);margin:8px 0;min-height:16px}.hint.move{color:var(--accent)}.log{margin-top:14px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px;max-height:150px;overflow-y:auto;font-size:12px;line-height:1.7}.log .ev-p1{color:var(--p1)}.log .ev-p2{color:var(--p2)}.log .ev-sys{color:var(--muted)}.over{text-align:center;padding:24px 12px}.over h2{margin:0 0 6px;font-size:26px}.over.win h2{color:var(--good)}.over.lose h2{color:var(--bad)}.card.no-mp{opacity:.4;border-color:var(--p2)}.card.no-mp .cname:after{content:" · MP不足";color:var(--p2);font-size:10px;font-weight:400}.ai-recap{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:8px 0;font-size:12px;color:var(--muted)}.recap-card{font-style:normal;padding:2px 8px;border-radius:6px;background:var(--panel-2);border:1px solid var(--line);color:var(--ink)}.recap-card.kind-attack{border-color:var(--p2);color:var(--p2)}.recap-card.kind-move{color:var(--accent)}.resolve-stage{display:flex;flex-direction:column}.resolve-bar{display:flex;align-items:center;justify-content:space-between;margin:4px 0 10px}.resolve-head{font-size:14px;font-weight:600;color:var(--accent)}.skip-btn{padding:5px 14px;font-size:13px;border-radius:8px;background:var(--panel-2);border:1px solid var(--line);color:var(--ink);cursor:pointer;transition:border-color .12s,background .12s}.skip-btn:hover{border-color:var(--accent);color:var(--accent)}.card-arena{min-height:86px;margin-top:12px;display:flex;align-items:center;justify-content:center}.arena-row{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;width:100%}.arena-card{min-width:120px;padding:14px 12px;border-radius:12px;text-align:center;font-weight:700;font-size:15px;background:var(--panel);border:2px solid var(--line);box-shadow:0 6px 20px #0006}.arena-card.p1{border-color:var(--p1);color:var(--p1)}.arena-card.p2{border-color:var(--p2);color:var(--p2)}.arena-card.kind-attack{background:color-mix(in srgb,var(--bad) 12%,var(--panel))}.arena-card.kind-move{background:color-mix(in srgb,var(--accent) 12%,var(--panel))}.arena-card.kind-support{background:color-mix(in srgb,#38bdf8 12%,var(--panel))}.arena-card.kind-ultimate{border-color:var(--accent);color:var(--accent);box-shadow:0 0 18px 2px color-mix(in srgb,var(--accent) 40%,transparent)}.arena-vs{font-size:14px;font-weight:800;color:var(--muted);flex:0 0 auto}.over .reward{display:inline-flex;flex-direction:column;gap:4px;margin:10px 0 14px}.over .reward .exp-line{color:var(--accent);font-weight:700;font-size:15px}.over .reward .levelup{color:var(--good);font-weight:700;font-size:14px;animation:pop .5s ease}@keyframes pop{0%{transform:scale(.6);opacity:0}60%{transform:scale(1.15)}to{transform:scale(1);opacity:1}}.over .over-actions{display:flex;gap:10px;justify-content:center;margin-top:16px}.over .over-actions .ghost,.coach-actions .ghost{background:none;border:1px solid var(--line);color:var(--muted)}.coach-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#080a10b8;display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}.coach-card{background:var(--card, #161b26);border:1px solid var(--line);border-radius:14px;padding:22px 20px;max-width:340px;text-align:center;box-shadow:0 16px 40px #00000080}.coach-card h3{margin:6px 0 8px;font-size:18px;color:var(--accent)}.coach-card p{margin:0 0 16px;font-size:13px;line-height:1.7;color:#c9d1de}.coach-progress{display:flex;gap:6px;justify-content:center;margin-bottom:4px}.coach-progress .dot{width:8px;height:8px;border-radius:50%;background:var(--line);transition:background .2s}.coach-progress .dot.on{background:var(--accent)}.coach-actions{display:flex;gap:10px;justify-content:center}.screen{max-width:720px;margin:0 auto;width:100%}.screen-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.screen-head h2{margin:0;font-size:20px}.screen-head>span:last-child{min-width:56px}.coin-badge{color:var(--accent);font-weight:700}.warn{color:var(--bad);text-align:center;margin:8px 0}.lobby-screen{max-width:880px}.lobby-stage{position:relative;width:100%;aspect-ratio:1672 / 941;background-size:cover;background-position:center;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:0 8px 30px #00000080;image-rendering:pixelated}.lobby-prop{position:absolute;padding:0;border:0;background-color:transparent;background-repeat:no-repeat;cursor:pointer;image-rendering:pixelated;filter:drop-shadow(0 2px 4px rgba(0,0,0,.6));transition:filter .12s,transform .08s;transform-origin:bottom center;z-index:1}.lobby-prop:hover{filter:drop-shadow(0 0 8px color-mix(in srgb,var(--accent) 70%,transparent)) drop-shadow(0 2px 4px rgba(0,0,0,.6))}.lobby-prop:active{transform:translateY(1px) scale(.97)}.lobby-prop.prop-banner-r:active,.lobby-prop.prop-torch-r:active,.lobby-prop.prop-chess-r:active{transform:scaleX(-1) translateY(1px) scale(.97)}.prop-banner-l{left:3%;top:6%}.prop-banner-r{right:3%;top:6%}.prop-torch-l{left:24%;top:30%}.prop-torch-r{right:24%;top:30%}.prop-crystal{left:50%;top:22%;transform:translate(-50%)}.prop-crystal:active{transform:translate(-50%) translateY(1px) scale(.97)}.prop-chess-l{left:30%;bottom:4%}.prop-chess-r{right:30%;bottom:4%}.lobby-ui{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;gap:14px;padding:clamp(12px,3vw,28px);z-index:2;pointer-events:none}.lobby-ui .player-card,.lobby-ui .lobby-menu{pointer-events:auto}.lobby-ui .player-card{background:color-mix(in srgb,var(--panel) 78%,transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);margin-bottom:0}.player-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:18px}.pc-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}.pc-name{font-size:20px;font-weight:700}.pc-lv{color:var(--accent);font-weight:700}.exp-track{position:relative;height:18px;background:var(--panel-2);border-radius:9px;overflow:hidden;margin-bottom:10px}.exp-fill{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,var(--p1),var(--accent));transition:width .4s ease}.exp-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--ink);text-shadow:0 1px 2px rgba(0,0,0,.6)}.pc-stats{display:flex;flex-wrap:wrap;gap:14px;color:var(--muted);font-size:14px}.pc-stats span{color:var(--ink)}.lobby-menu{display:grid;grid-template-columns:1fr 1fr;gap:12px}.lobby-entry{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:16px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;text-align:left;transition:border-color .15s,transform .1s}.lobby-entry:hover{border-color:var(--accent)}.lobby-entry:active{transform:scale(.98)}.lobby-entry.primary-entry{grid-column:1 / -1;border-color:color-mix(in srgb,var(--accent) 50%,var(--line));background:color-mix(in srgb,var(--accent) 8%,var(--panel))}.le-icon{font-size:26px}.le-title{font-size:17px;font-weight:700}.le-sub{font-size:13px;color:var(--muted)}.chapter{margin-bottom:22px}.chapter.locked{opacity:.45}.chapter-title{margin:0 0 10px;font-size:16px;color:var(--accent)}.stage-row{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.stage-node{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 8px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;text-align:center;transition:border-color .15s,transform .1s}.stage-node:active{transform:scale(.97)}.stage-node.open{border-color:var(--p1)}.stage-node.done{border-color:var(--good);background:color-mix(in srgb,var(--good) 8%,var(--panel))}.stage-node.locked{opacity:.4;cursor:not-allowed}.stage-node.boss{border-width:2px}.stage-node.boss.open{border-color:var(--p2);box-shadow:0 0 12px color-mix(in srgb,var(--p2) 40%,transparent)}.sn-badge{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--panel-2);font-weight:700}.stage-node.done .sn-badge{background:var(--good);color:#0a0e14}.stage-node.boss .sn-badge{background:color-mix(in srgb,var(--p2) 30%,var(--panel-2))}.sn-name{font-size:13px;font-weight:700}.sn-sub{font-size:11px;color:var(--muted);line-height:1.3}.sn-reward{font-size:11px;color:var(--accent)}.story-screen{min-height:360px;display:flex;flex-direction:column;cursor:pointer;-webkit-user-select:none;user-select:none}.story-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.story-head h2{margin:0;color:var(--accent)}.story-box{flex:1;display:flex;flex-direction:column;justify-content:center;gap:14px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:28px 24px;min-height:180px}.story-speaker{font-weight:700;color:var(--p1);font-size:16px}.story-text{font-size:18px;line-height:1.7}.story-progress{margin-top:16px;text-align:center;color:var(--muted);font-size:13px}.pity-bar{position:relative;height:22px;background:var(--panel-2);border-radius:11px;overflow:hidden;margin:14px 0}.pity-fill{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,var(--p2),var(--accent));transition:width .3s ease}.pity-text{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:12px;text-shadow:0 1px 2px rgba(0,0,0,.6)}.gacha-actions{display:flex;gap:12px;justify-content:center;margin:16px 0}.gacha-results{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-top:18px}.gacha-card{display:flex;flex-direction:column;align-items:center;gap:3px;padding:12px 6px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);text-align:center;animation:gc-pop .3s ease backwards}.gacha-results .gacha-card:nth-child(n){animation-delay:calc(var(--i, 0) * .04s)}@keyframes gc-pop{0%{transform:scale(.7);opacity:0}to{transform:scale(1);opacity:1}}.gc-name{font-weight:700;font-size:14px}.gc-rarity{font-size:11px}.gc-meta{font-size:11px;color:var(--muted)}.gc-new{font-size:11px;font-weight:700;color:var(--good)}.gc-dup{font-size:10px;color:var(--muted)}.deck-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px;margin-bottom:18px}.deck-card{display:flex;flex-direction:column;align-items:center;gap:3px;padding:12px 6px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;text-align:center}.deck-card.sel{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.dc-name{font-weight:700;font-size:14px}.dc-rarity{font-size:11px}.dc-meta{font-size:11px;color:var(--muted)}.rarity-common .gc-rarity,.rarity-common .dc-rarity{color:var(--muted)}.rarity-rare{border-color:color-mix(in srgb,var(--p1) 55%,var(--line))}.rarity-rare .gc-rarity,.rarity-rare .dc-rarity{color:var(--p1)}.rarity-epic{border-color:color-mix(in srgb,var(--accent) 65%,var(--line));box-shadow:0 0 10px color-mix(in srgb,var(--accent) 25%,transparent)}.rarity-epic .gc-rarity,.rarity-epic .dc-rarity{color:var(--accent)}.reward .coin-line{color:var(--accent);font-weight:700}.reward .firstclear{color:var(--good)}@media(max-width:560px){.lobby-menu{grid-template-columns:1fr}.gacha-results,.stage-row{grid-template-columns:repeat(2,1fr)}}
