: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-lobby{max-width:none;width:100vw;height:100dvh;margin:0;padding:0;position:relative;overflow:hidden}.app.app-lobby>.title{position:absolute;top:0;left:0;right:0;z-index:10;margin:0;padding:10px 18px;background:linear-gradient(180deg,rgba(8,10,16,.7),transparent);pointer-events:none}.app.app-lobby>.title .profile-chip,.app.app-lobby>.title button{pointer-events:auto}.app.app-scene{max-width:none;width:100vw;height:100dvh;margin:0;padding:0;position:relative;overflow:hidden}.app.app-scene>.title{position:absolute;top:0;left:0;right:0;z-index:10;margin:0;padding:8px 18px;background:linear-gradient(180deg,rgba(8,10,16,.72),transparent);pointer-events:none}.app.app-scene>.title .profile-chip,.app.app-scene>.title button{pointer-events:auto}.app.app-scene>.screen{height:100%}.app.app-battle{height:100dvh;display:flex;flex-direction:column;gap:8px;padding:10px 14px;overflow:hidden;position:relative;background-image:linear-gradient(180deg,#0a0c1252,#0a0c123d),url(/art/scene-battle.png);background-size:cover;background-position:center center;image-rendering:pixelated}.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}.app.app-battle .fighter{background:color-mix(in srgb,var(--panel) 64%,transparent);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border-color:color-mix(in srgb,var(--line) 65%,transparent);box-shadow:0 3px 14px #00000073}.app.app-battle .board{background:transparent;border:1px solid color-mix(in srgb,var(--accent) 38%,transparent);box-shadow:0 0 0 1px #00000059,0 6px 30px #0000008c,inset 0 0 60px #0006}.app.app-battle .cell{background:transparent;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 22%,transparent)}.app.app-battle .cell.hit-atk,.app.app-battle .cell.move-target{background:color-mix(in srgb,var(--accent) 14%,transparent)}.app.app-battle .cell .pawn-slot:after{content:"";position:absolute;left:50%;bottom:9%;width:56%;height:12%;transform:translate(-50%);background:radial-gradient(ellipse at center,rgba(0,0,0,.5),transparent 70%);pointer-events:none;z-index:-1}.app.app-battle .hand{background:color-mix(in srgb,var(--bg) 50%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1px solid color-mix(in srgb,var(--line) 45%,transparent);border-radius:var(--radius);padding:8px}.app.app-battle .hand .card{background:color-mix(in srgb,var(--panel) 88%,transparent)}.app.app-battle .hand .card.armed{box-shadow:0 0 14px color-mix(in srgb,var(--accent) 40%,transparent)}.app.app-battle .hand-head,.app.app-battle .ai-recap{background:color-mix(in srgb,var(--bg) 46%,transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);border-radius:var(--radius);padding:6px 12px}.app.app-battle .actions button{background:color-mix(in srgb,var(--panel-2) 78%,transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.app.app-battle .actions .go{background:linear-gradient(135deg,#16a34a,#22c55e)}.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-flip{width:100%;height:100%}.sprite-pawn{width:100%;height:100%;background-repeat:no-repeat;image-rendering:pixelated;filter:drop-shadow(0 0 0 transparent);transform-origin:50% 100%}.sprite-pawn.breathe{animation:sprite-breathe 3.4s ease-in-out infinite}.sprite-pawn.p2.breathe{animation-delay:-1.7s}@keyframes sprite-breathe{0%,to{transform:scaleY(1) translateY(0)}50%{transform:scaleY(1.035) translateY(-1.5%)}}.sprite-pawn.breathe-hard{animation:sprite-breathe-hard 1.5s ease-in-out infinite}.sprite-pawn.p2.breathe-hard{animation-delay:-.75s}@keyframes sprite-breathe-hard{0%,to{transform:scaleY(1) translateY(0) rotate(0)}25%{transform:scaleY(1.075) translateY(-3%) rotate(-.8deg)}60%{transform:scaleY(.97) translateY(.5%) rotate(.6deg)}}.sprite-pawn.breathe-hard{filter:drop-shadow(0 1px 2px rgba(0,0,0,.5)) drop-shadow(0 0 6px color-mix(in srgb,var(--bad) 60%,transparent))}@media(prefers-reduced-motion:reduce){.sprite-pawn.breathe,.sprite-pawn.breathe-hard{animation:none}}.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))}}.board.board-shake{animation:board-shake .32s cubic-bezier(.36,.07,.19,.97)}@keyframes board-shake{0%,to{transform:translate(0)}20%{transform:translate(-3px,1px)}40%{transform:translate(3px,-2px)}60%{transform:translate(-2px,2px)}80%{transform:translate(2px,-1px)}}@media(prefers-reduced-motion:reduce){.board.board-shake{animation:none}}.board.board-windup-lethal{position:relative;animation:board-lethal-zoom .6s ease-out both;z-index:1}.board.board-windup-lethal:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--radius);pointer-events:none;background:radial-gradient(ellipse at center,transparent 30%,color-mix(in srgb,var(--bad) 12%,transparent) 62%,rgba(0,0,0,.55) 100%);box-shadow:inset 0 0 40px color-mix(in srgb,var(--bad) 45%,transparent);animation:lethal-pulse .6s ease-in-out;z-index:3}@keyframes board-lethal-zoom{0%{transform:scale(1)}55%{transform:scale(1.045)}to{transform:scale(1.03)}}@keyframes lethal-pulse{0%{opacity:0}35%{opacity:1}to{opacity:.9}}.sprite-pawn.windup-ult{animation:ult-charge .65s ease-out;z-index:2}.sprite-pawn.windup-ult-p1{filter:drop-shadow(0 0 4px color-mix(in srgb,var(--p1) 90%,white)) drop-shadow(0 0 14px var(--p1)) drop-shadow(0 0 24px color-mix(in srgb,var(--p1) 70%,transparent)) brightness(1.25)}.sprite-pawn.windup-ult-p2{filter:drop-shadow(0 0 4px color-mix(in srgb,var(--p2) 90%,white)) drop-shadow(0 0 14px var(--p2)) drop-shadow(0 0 24px color-mix(in srgb,var(--p2) 70%,transparent)) brightness(1.25)}@keyframes ult-charge{0%{transform:scale(1) translateY(0)}30%{transform:scale(1.08) translateY(-4%)}45%{transform:scale(1.05) translateY(-3%) translate(-1.5%)}60%{transform:scale(1.1) translateY(-4%) translate(1.5%)}to{transform:scale(1.06) translateY(-3%)}}@media(prefers-reduced-motion:reduce){.board.board-windup-lethal{animation:none}.board.board-windup-lethal:after{animation:none;opacity:.9}.sprite-pawn.windup-ult{animation:none}}.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-stage{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center center;image-rendering:pixelated;display:flex;align-items:center;justify-content:center;overflow-y:auto}.over-stage:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#0000008c,#00000059 45%,#000000a6);pointer-events:none}.over{position:relative;z-index:1;text-align:center;width:min(560px,92vw);padding:28px 22px;background:color-mix(in srgb,var(--bg) 72%,transparent);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border:1px solid color-mix(in srgb,var(--line) 60%,transparent);border-radius:var(--radius);box-shadow:0 10px 40px #0009}.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}.ghost{background:none;border:1px solid var(--line);color:var(--ink);border-radius:var(--radius);padding:8px 14px;cursor:pointer;transition:border-color .15s,color .15s}.ghost:hover{border-color:var(--accent);color:var(--accent)}.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:none;width:100%;height:100%}.lobby-stage{position:relative;width:100%;height:100%;background-size:cover;background-position:center center;overflow:hidden;image-rendering:pixelated}.lobby-stage:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(110% 80% at 50% 42%,rgba(120,150,210,.2),transparent 62%),linear-gradient(180deg,rgba(0,0,0,.3),transparent 30%,transparent 68%,rgba(0,0,0,.42));pointer-events:none;z-index:0}.scene-screen{max-width:none;width:100%;height:100%}.scene-stage{position:relative;width:100%;height:100%;background-size:cover;background-position:center center;overflow:hidden;image-rendering:pixelated;display:flex;flex-direction:column}.scene-stage:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(115% 85% at 50% 44%,rgba(120,150,210,.16),transparent 64%),linear-gradient(180deg,rgba(0,0,0,.42),transparent 26%,transparent 64%,rgba(0,0,0,.52));pointer-events:none;z-index:0}.scene-head{position:relative;z-index:4;flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:46px 22px 10px}.scene-head h2{margin:0;font-size:clamp(18px,2.4vmin,28px);text-shadow:0 2px 8px rgba(0,0,0,.8)}.scene-head .scene-head-right{min-width:56px;text-align:right;text-shadow:0 2px 6px rgba(0,0,0,.8)}.scene-body{position:relative;z-index:2;flex:1 1 0;min-height:0;width:min(720px,92vw);margin:0 auto;padding:18px 22px 28px;overflow-y:auto;background:color-mix(in srgb,var(--bg) 58%,transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);border-left:1px solid color-mix(in srgb,var(--line) 50%,transparent);border-right:1px solid color-mix(in srgb,var(--line) 50%,transparent)}.scene-body.wide{width:min(1080px,96vw)}.scene-body-bare{position:relative;z-index:2;flex:1 1 0;min-height:0;width:100%;overflow-y:auto}.lobby-hud{position:absolute;top:14px;left:14px;z-index:3;min-width:210px;padding:10px 12px;background:color-mix(in srgb,var(--panel) 72%,transparent);border:1px solid color-mix(in srgb,var(--line) 80%,transparent);border-radius:var(--radius);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:0 4px 16px #0006}.hud-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}.hud-name{font-size:16px;font-weight:700}.hud-lv{color:var(--accent);font-weight:700;font-size:14px}.hud-exp{position:relative;height:14px;background:var(--panel-2);border-radius:7px;overflow:hidden;margin-bottom:6px}.hud-exp-fill{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,var(--p1),var(--accent));transition:width .4s ease}.hud-exp-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:11px;text-shadow:0 1px 2px rgba(0,0,0,.7)}.hud-stats{display:flex;flex-wrap:wrap;gap:10px;font-size:13px;color:var(--ink)}.hud-progress{margin-top:4px;font-size:12px;color:color-mix(in srgb,var(--ink) 78%,transparent)}.hud-milestone{color:var(--accent);font-weight:700;text-shadow:0 0 8px color-mix(in srgb,var(--accent) 45%,transparent)}.hud-account{margin-top:8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.hud-account-name{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:color-mix(in srgb,var(--ink) 85%,transparent);max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hud-avatar{width:18px;height:18px;border-radius:50%;object-fit:cover;image-rendering:auto}.hud-auth-btn{font-family:inherit;font-size:11px;padding:4px 9px;border-radius:6px;border:1px solid color-mix(in srgb,var(--ink) 30%,transparent);background:color-mix(in srgb,var(--panel) 70%,transparent);color:var(--ink);cursor:pointer;transition:filter .15s ease,border-color .15s ease}.hud-auth-btn:hover:not(:disabled){filter:brightness(1.18);border-color:var(--accent)}.hud-auth-btn:disabled{opacity:.55;cursor:default}.hud-auth-google{border-color:color-mix(in srgb,var(--accent) 55%,transparent);background:color-mix(in srgb,var(--accent) 16%,var(--panel));font-weight:600}.lobby-prop{position:absolute;padding:0;border:0;background:transparent;cursor:default;z-index:1;transition:transform .1s}.lobby-prop.is-entry{cursor:pointer;z-index:2}.lobby-prop-sprite{display:block;width:100%;height:100%;background-repeat:no-repeat;image-rendering:pixelated;filter:drop-shadow(0 2px 5px rgba(0,0,0,.65));transition:filter .15s}.lobby-prop.is-entry:hover .lobby-prop-sprite{filter:drop-shadow(0 0 10px color-mix(in srgb,var(--accent) 85%,transparent)) drop-shadow(0 0 4px color-mix(in srgb,var(--accent) 60%,transparent)) drop-shadow(0 2px 5px rgba(0,0,0,.65))}.lobby-prop.is-entry:hover{transform:scale(1.06)}.lobby-prop.is-entry:active{transform:scale(.98)}.lobby-prop:not(.is-entry){cursor:pointer}.lobby-prop:not(.is-entry):active{transform:translateY(1px) scale(.97)}.lobby-prop-tip{position:absolute;left:50%;bottom:calc(100% + 6px);transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:1px;padding:4px 10px;white-space:nowrap;background:color-mix(in srgb,var(--panel) 82%,transparent);border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));border-radius:8px;box-shadow:0 3px 12px #00000073;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);pointer-events:none;transition:border-color .15s,background .15s;z-index:5}.lobby-prop.is-entry:hover .lobby-prop-tip{background:color-mix(in srgb,var(--panel) 94%,transparent);border-color:color-mix(in srgb,var(--accent) 70%,var(--line))}.lpt-title{font-size:14px;font-weight:700;color:var(--ink);text-shadow:0 1px 3px rgba(0,0,0,.8)}.lpt-sub{font-size:11px;color:var(--muted);max-height:0;opacity:0;overflow:hidden;transition:max-height .18s ease,opacity .18s ease}.lobby-prop.is-entry:hover .lpt-sub{max-height:20px;opacity:1}.prop-crystal{left:50%;bottom:30%;transform:translate(-50%)}.prop-crystal.is-entry:hover{transform:translate(-50%) scale(1.06)}.prop-crystal.is-entry:active{transform:translate(-50%) scale(.98)}.prop-banner-l{left:17%;bottom:30%}.prop-banner-r{right:17%;bottom:30%}.prop-torch-l{left:33%;bottom:20%}.prop-torch-r{right:33%;bottom:20%}.prop-chess-l{left:41%;bottom:12%}.prop-chess-r{right:41%;bottom:12%}.app-lobby .lobby-prop.prop-crystal{width:clamp(120px,20vmin,300px)!important;height:clamp(120px,20vmin,300px)!important}.app-lobby .lobby-prop.prop-banner-l,.app-lobby .lobby-prop.prop-banner-r{width:clamp(96px,16vmin,240px)!important;height:clamp(106px,17vmin,264px)!important}.app-lobby .lobby-prop.prop-chess-l,.app-lobby .lobby-prop.prop-chess-r{width:clamp(88px,15vmin,220px)!important;height:clamp(96px,16vmin,244px)!important}.app-lobby .lobby-prop.prop-torch-l,.app-lobby .lobby-prop.prop-torch-r{width:clamp(52px,9vmin,140px)!important;height:clamp(96px,17vmin,260px)!important}.app-lobby .lpt-title{font-size:clamp(14px,1.6vmin,22px)}.app-lobby .lpt-sub{font-size:clamp(11px,1.2vmin,16px)}.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:.62}.chapter.locked .stage-node.locked{opacity:1}.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:.55;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)}.endless-panel{display:flex;flex-direction:column;align-items:center;gap:clamp(14px,3vmin,26px);text-align:center;padding:clamp(8px,2vmin,20px) 4px}.endless-best{font-size:clamp(15px,2.4vmin,19px);color:var(--ink)}.endless-best strong{color:var(--accent);font-size:1.25em;margin-left:6px}.endless-rules{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;max-width:440px;color:color-mix(in srgb,var(--ink) 78%,transparent);font-size:clamp(12px,1.9vmin,14px);line-height:1.5}.endless-rules li:before{content:"▸ ";color:var(--accent)}.endless-start{min-width:200px;font-size:clamp(14px,2.2vmin,17px)}.map-screen .scene-body-bare{display:flex;flex-direction:column;align-items:center;gap:clamp(16px,3vmin,36px);padding:8px clamp(16px,4vw,60px) 40px}.map-screen .chapter{width:min(900px,94%);margin-bottom:0;background:color-mix(in srgb,var(--bg) 42%,transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border:1px solid color-mix(in srgb,var(--line) 55%,transparent);border-radius:var(--radius);padding:14px 18px 18px}.map-screen .chapter-title{font-size:clamp(15px,2vmin,20px);text-shadow:0 2px 6px rgba(0,0,0,.8)}.map-screen .stage-node{background:color-mix(in srgb,var(--panel) 82%,transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.map-screen .stage-node.boss.open{box-shadow:0 0 16px color-mix(in srgb,var(--p2) 55%,transparent)}.story-screen{max-width:none;width:100%;height:100%;min-height:0}.story-stage{position:relative;width:100%;height:100%;background-size:cover;background-position:center center;image-rendering:pixelated;display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden}.story-stage:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,rgba(0,0,0,.35),transparent 40%,transparent 55%,rgba(0,0,0,.55));pointer-events:none}.story-screen .story-head{position:absolute;top:44px;left:0;right:0;z-index:3;margin:0;padding:0 24px}.story-screen .story-head h2{font-size:clamp(18px,2.4vmin,26px);text-shadow:0 2px 8px rgba(0,0,0,.9)}.story-screen .story-box{position:relative;z-index:2;flex:0 0 auto;width:min(960px,92%);margin:0 auto clamp(24px,6vh,70px);min-height:0;justify-content:flex-start;background:color-mix(in srgb,var(--bg) 78%,transparent);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));box-shadow:0 8px 32px #0009;padding:clamp(18px,3vmin,30px) clamp(20px,4vmin,36px)}.story-screen .story-text{font-size:clamp(16px,2.2vmin,22px)}.gacha-screen .gacha-card,.deck-screen .char-card,.deck-screen .deck-card{background:color-mix(in srgb,var(--panel) 86%,transparent)}@media(max-width:560px){.lobby-menu{grid-template-columns:1fr}.gacha-results,.stage-row{grid-template-columns:repeat(2,1fr)}.app.app-battle .hand{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(0,auto);overflow-x:hidden;gap:6px}.app.app-battle .hand .card{min-width:0;padding:6px;font-size:12px}.app.app-battle .hand .card .cname{font-size:12px}.app.app-battle .hand .card .cmeta{font-size:10px;line-height:1.25}.app.app-battle .actions,.app.app-battle .over-actions{flex-wrap:wrap}.app.app-battle .actions button{flex:1 1 calc(50% - 8px)}.app.app-battle .board-fit{width:100%}}.skilltree-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.shard-count{flex:0 0 auto;font-weight:700;color:var(--accent);background:color-mix(in srgb,var(--panel) 80%,transparent);border:1px solid color-mix(in srgb,var(--accent) 32%,transparent);border-radius:999px;padding:4px 12px}.sk-section{margin:16px 0 8px;font-weight:700;color:var(--ink)}.skill-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}.skill-node{background:color-mix(in srgb,var(--panel) 88%,transparent);border:1px solid var(--line);border-radius:var(--radius);padding:12px;display:flex;flex-direction:column;gap:6px}.skill-node.locked{opacity:.72;filter:grayscale(.3)}.skill-node.unlocked{border-color:color-mix(in srgb,var(--accent) 30%,var(--line))}.skill-node.equipped{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset,0 0 14px color-mix(in srgb,var(--accent) 28%,transparent)}.sk-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.sk-name{font-size:15px;font-weight:700;color:var(--ink)}.sk-tag{flex:0 0 auto;font-size:11px;color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent);border-radius:6px;padding:1px 7px}.sk-lv{font-size:12px;color:var(--muted)}.sk-val{color:var(--good)}.sk-desc{margin:0;font-size:12px;line-height:1.5;color:color-mix(in srgb,var(--ink) 78%,var(--muted))}.sk-actions{display:flex;align-items:center;gap:8px;margin-top:2px}.sk-btn{background:var(--panel-2);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:5px 12px;font-size:13px;cursor:pointer}.sk-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.sk-btn:disabled{opacity:.45;cursor:not-allowed}.sk-btn.equip{border-color:color-mix(in srgb,var(--accent) 40%,var(--line));color:var(--accent)}.sk-max{font-size:12px;color:var(--muted)}.sk-equipped{font-size:12px;font-weight:700;color:var(--accent)}.sk-flash{position:fixed;left:50%;bottom:28px;transform:translate(-50%);background:color-mix(in srgb,var(--panel-2) 94%,transparent);border:1px solid var(--accent);border-radius:999px;padding:8px 20px;font-size:14px;font-weight:700;color:var(--accent);box-shadow:0 4px 20px color-mix(in srgb,var(--accent) 30%,transparent);z-index:50;animation:sk-flash-in .2s ease}@keyframes sk-flash-in{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}
