*{box-sizing:border-box}html,body,#game-root{width:100%;height:100%;margin:0}body{overflow:hidden;background:#120d0b;color:#f8fafc;font-family:Arial,PingFang SC,sans-serif}button{font:inherit}#game-root canvas,.fight-canvas{width:100%;height:100%;display:block}.fight-hud{position:fixed;inset:0;z-index:3;pointer-events:none;color:#f8fafc;text-shadow:0 2px 12px rgba(0,0,0,.5)}.fight-hud.is-hidden{opacity:0;pointer-events:none}.hidden{display:none!important}.flow-layer{position:fixed;inset:0;z-index:5;display:grid;grid-template-columns:minmax(320px,.8fr) minmax(360px,1fr);gap:34px;align-items:center;padding:clamp(24px,5vw,72px);color:#f8fafc;pointer-events:auto;background:linear-gradient(90deg,#090807f5,#120d0bd1 48%,#120d0b66),radial-gradient(circle at 70% 30%,rgba(214,179,90,.14),transparent 38%)}.flow-layer[data-flow=fight],.flow-layer[data-flow=nextFight]{z-index:4;display:block;padding:0;background:none;pointer-events:none}.flow-layer[data-flow=fight] .flow-screen,.flow-layer[data-flow=nextFight] .flow-screen{display:none}.flow-screen{display:grid;gap:18px;max-width:min(860px,92vw)}.flow-kicker{width:fit-content;padding:6px 10px;border:1px solid rgba(214,179,90,.42);color:#d6b35a;font-size:12px;font-weight:900;letter-spacing:0}.flow-screen h1{margin:0;color:#f8fafc;font-size:clamp(42px,5.4vw,82px);line-height:.92;letter-spacing:0;white-space:nowrap}.flow-screen p{max-width:520px;margin:0;color:#d1d5db;font-size:17px;line-height:1.6}.flow-progress{width:min(460px,100%);height:8px;overflow:hidden;border:1px solid rgba(214,179,90,.28);background:#f8fafc14}.flow-progress i{display:block;width:100%;height:100%;transform:scaleX(.02);transform-origin:left;transition:transform .22s ease;background:linear-gradient(90deg,#3f7f5f,#d6b35a)}.flow-steps{display:flex;flex-wrap:wrap;gap:8px}.flow-steps span{padding:7px 10px;border:1px solid rgba(248,250,252,.12);color:#94a3b8;font-size:12px;font-weight:900}.flow-steps span.done{border-color:#d6b35a80;color:#fef3c7}.topline{position:absolute;top:16px;left:18px;right:18px;display:grid;grid-template-columns:minmax(210px,1fr) 170px minmax(210px,1fr);gap:14px;align-items:start}.fighter-card,.round-card{border:1px solid rgba(214,179,90,.22);background:#120d0ba8;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.fighter-card{display:grid;gap:6px;padding:10px 12px}.right-card{text-align:right}.fighter-card strong{color:#d6b35a;font-size:22px;line-height:1;letter-spacing:0}.fighter-card span{color:#e5e7eb;font-size:14px;font-variant-numeric:tabular-nums}.hp-track{height:12px;overflow:hidden;border:1px solid rgba(248,250,252,.18);background:#0f172aeb}.hp-track i{display:block;width:100%;height:100%;transform-origin:left;background:linear-gradient(90deg,#3f7f5f,#b6d58a);transition:transform .12s ease}.hp-track.enemy i{background:linear-gradient(90deg,#7f1d1d,#d6b35a)}.round-card{display:grid;gap:4px;justify-items:center;padding:10px;text-align:center}.round-card b{color:#f8fafc;font-size:20px}.round-card span{color:#d6b35a;font-size:16px;font-weight:900;min-height:20px}.mode-switch{position:absolute;top:98px;left:50%;display:flex;gap:8px;transform:translate(-50%);pointer-events:auto}.mode-switch button{min-height:34px;padding:0 12px;border:1px solid rgba(214,179,90,.22);background:#120d0bb8;color:#e5e7eb;cursor:pointer;font-size:14px;font-weight:800}.mode-switch button.active{border-color:#d6b35ae6;background:#d6b35a;color:#17100c}.judge-panel{position:absolute;left:18px;bottom:18px;display:grid;gap:8px}.judge-light{width:230px;padding:10px 12px;border:1px solid rgba(214,179,90,.18);background:#120d0bb8;color:#94a3b8;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.judge-light b{display:block;font-size:18px;line-height:1}.judge-light span{display:block;margin-top:5px;font-size:12px;line-height:1.25}.judge-light.active{border-color:#d6b35ae6;background:#d6b35aeb;color:#17100c;text-shadow:none;box-shadow:0 0 28px #d6b35a47}.judge-light[data-guard-light].active{border-color:#3f7f5fe6;background:#3f7f5ff0;color:#f8fafc}.judge-light[data-enemy-guard-light].active{border-color:#60a5faf2;background:#2563ebeb;color:#f8fafc}.timing-panel{position:absolute;left:50%;bottom:118px;z-index:4;width:min(420px,calc(100vw - 48px));transform:translate(-50%);padding:10px 12px;border:1px solid rgba(214,179,90,.26);background:#120d0bb8;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.timing-panel b{display:block;margin-bottom:8px;color:#fef3c7;font-size:14px;font-weight:900;letter-spacing:0}.timing-track{position:relative;height:10px;overflow:hidden;border:1px solid rgba(248,250,252,.18);background:linear-gradient(90deg,#d6b35a38,#3f7f5f33 58%,#7f1d1d47)}.timing-track i{display:block;width:100%;height:100%;transform:scaleX(.03);transform-origin:left;background:#d6b35a;transition:transform 80ms linear,background .12s ease}.timing-track em,.timing-track strong{position:absolute;top:0;bottom:0;display:block;pointer-events:none}.timing-track em{left:58%;width:20%;background:#3f7f5f47}.timing-track strong{left:90%;width:2px;background:#f8fafcd1}.timing-panel.parry .timing-track i{background:#3f7f5f}.timing-panel.impact .timing-track i{background:#ef4444}.timing-panel.enemy-guarding{border-color:#60a5fa7a}.timing-panel.enemy-guarding .timing-track{background:#2563eb40}.timing-panel.enemy-guarding .timing-track i{background:#60a5fa}.weapon-panel{position:absolute;left:268px;bottom:18px;width:290px;padding:10px 12px;border:1px solid rgba(214,179,90,.16);background:#120d0bad;color:#94a3b8;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.weapon-panel.available{color:#f8fafc;border-color:#d6b35a61}.weapon-panel.prompt{box-shadow:0 0 32px #d6b35a47}.weapon-panel b{display:block;color:#d6b35a;font-size:20px;line-height:1}.weapon-panel span{display:block;margin-top:6px;font-size:12px;line-height:1.3}.weapon-row{display:flex;gap:6px;margin-top:9px;pointer-events:auto}.weapon-row button{min-height:30px;padding:0 9px;border:1px solid rgba(214,179,90,.26);background:#120d0bd1;color:#d1d5db;cursor:pointer;font-size:13px;font-weight:800}.weapon-row button:disabled{opacity:.42;cursor:default}.weapon-row button.active,.weapon-row button:not(:disabled):hover{background:#d6b35a;color:#17100c}.heat-panel{position:absolute;right:18px;bottom:18px;width:230px;display:grid;gap:8px;padding:10px 12px;border:1px solid rgba(214,179,90,.16);background:#120d0bad;color:#94a3b8;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.heat-panel>div:first-child{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.heat-panel b{color:#d6b35a;font-size:18px;line-height:1}.heat-panel span{color:#d1d5db;font-size:12px;font-weight:900}.heat-track{height:10px;overflow:hidden;border:1px solid rgba(248,250,252,.16);background:#0f172ad1}.heat-track i{display:block;width:100%;height:100%;transform:scaleX(0);transform-origin:left;background:linear-gradient(90deg,#3f7f5f,#d6b35a 52%,#ef4444);transition:transform .12s ease,filter .12s ease}.heat-panel.warm{border-color:#f973165c}.heat-panel.fire{border-color:#f97316b8;color:#fef3c7;box-shadow:0 0 32px #f9731638}.heat-panel.fire b,.heat-panel.fire span{color:#fed7aa}.heat-panel.fire .heat-track i{filter:drop-shadow(0 0 8px rgba(249,115,22,.72))}.round-start-overlay{position:absolute;left:50%;top:50%;z-index:6;display:grid;min-width:min(420px,calc(100vw - 48px));justify-items:center;gap:8px;transform:translate(-50%,-50%);pointer-events:none;text-align:center}.round-start-overlay span{padding:6px 10px;border:1px solid rgba(214,179,90,.42);background:#120d0b9e;color:#d6b35a;font-size:12px;font-weight:900}.round-start-overlay strong{color:#f8fafc;font-size:clamp(64px,12vw,154px);line-height:.86;text-shadow:0 6px 34px rgba(0,0,0,.72)}.round-start-overlay.pulse strong{animation:countdown-pulse .68s ease-out}.round-start-overlay em{max-width:340px;color:#d1d5db;font-size:15px;font-style:normal;font-weight:800}.round-start-overlay.start strong{color:#fed7aa;text-shadow:0 0 18px rgba(249,115,22,.55),0 7px 36px rgba(0,0,0,.8)}.combat-flash{position:absolute;left:50%;top:132px;transform:translate(-50%) scale(.96);color:#d6b35a;min-width:96px;max-width:min(280px,58vw);padding:8px 14px;border:1px solid rgba(214,179,90,.34);background:#120d0bb8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-size:clamp(18px,2vw,28px);font-weight:900;line-height:1;opacity:0;pointer-events:none;text-align:center;text-shadow:0 3px 14px rgba(0,0,0,.72)}.combat-flash.show{animation:flash-pop .7s ease-out}.player-vignette{position:fixed;inset:0;z-index:2;opacity:0;pointer-events:none;background:radial-gradient(circle at 50% 50%,transparent 42%,rgba(127,29,29,.42) 100%),#7f1d1d14;mix-blend-mode:screen;transition:opacity 80ms linear}@keyframes flash-pop{0%{opacity:0;transform:translate(-50%) translateY(6px) scale(.92)}16%{opacity:1;transform:translate(-50%) translateY(0) scale(1)}to{opacity:0;transform:translate(-50%) translateY(-14px) scale(1)}}@keyframes countdown-pulse{0%{opacity:0;transform:translateY(12px) scale(.86)}22%{opacity:1;transform:translateY(0) scale(1)}to{opacity:.86;transform:translateY(-4px) scale(.98)}}.camera-panel{position:absolute;right:18px;bottom:18px;z-index:4;display:grid;grid-template-columns:150px minmax(210px,260px);gap:10px;align-items:center;pointer-events:auto}.flow-layer[data-flow=loading] .camera-panel{display:none}.camera-panel.gate{position:relative;right:auto;bottom:auto;justify-self:end;grid-template-columns:minmax(220px,300px) minmax(270px,360px);gap:14px;padding:14px;border:1px solid rgba(214,179,90,.2);background:#0b0908b8}.flow-layer[data-flow=fight] .camera-panel.gate,.flow-layer[data-flow=nextFight] .camera-panel.gate{position:absolute;right:18px;bottom:18px;grid-template-columns:116px minmax(190px,230px);gap:8px;padding:8px;pointer-events:auto;background:#120d0b94}.flow-layer[data-flow=fight] .camera-panel.gate .camera-stage,.flow-layer[data-flow=nextFight] .camera-panel.gate .camera-stage{width:116px}.flow-layer[data-flow=fight] .camera-panel.gate .camera-copy,.flow-layer[data-flow=nextFight] .camera-panel.gate .camera-copy{padding:8px}.camera-stage{position:relative;width:150px;aspect-ratio:4 / 3}.camera-panel.gate .camera-stage{width:min(300px,100%)}.camera-preview{width:100%;height:100%;border:1px solid rgba(214,179,90,.2);background:#120d0bd1;object-fit:cover;transform:scaleX(-1)}.camera-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.camera-copy{display:grid;gap:7px;padding:10px;border:1px solid rgba(214,179,90,.18);background:#120d0bb8;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.camera-copy button{width:fit-content;min-height:34px;padding:0 12px;border:1px solid rgba(214,179,90,.65);background:#d6b35a;color:#17100c;cursor:pointer;font-size:14px;font-weight:900}.camera-copy button[data-camera-start]{min-height:44px;padding:0 18px;font-size:16px}.camera-copy button:disabled{cursor:wait;opacity:.58}.camera-copy span{color:#d1d5db;font-size:13px;line-height:1.35}.camera-copy span+span{color:#fef3c7;font-variant-numeric:tabular-nums}.motion-meter{width:100%;height:6px;overflow:hidden;background:#94a3b842}.motion-meter i{display:block;width:100%;height:100%;transform:scaleX(.04);transform-origin:left;background:linear-gradient(90deg,#60a5fa,#facc15,#ef4444);background:linear-gradient(90deg,#3f7f5f,#d6b35a,#7f1d1d)}.gesture-meter{display:grid;grid-template-columns:68px 1fr;gap:8px;align-items:center;color:#cbd5e1;font-size:11px;font-weight:900}.gesture-meter:after{content:"";grid-column:2;grid-row:1;height:6px;background:#94a3b838}.gesture-meter i{display:block;grid-column:2;grid-row:1;width:100%;height:6px;transform:scaleX(.04);transform-origin:left;background:#d6b35a;z-index:1}.gesture-meter.guard i{background:#3f7f5f}.notice{position:absolute;left:50%;bottom:118px;max-width:min(560px,calc(100vw - 32px));transform:translate(-50%);padding:10px 14px;border:1px solid rgba(214,179,90,.18);background:#120d0bb8;color:#f8fafc;font-size:15px;text-align:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.engine-debug{position:absolute;top:144px;right:18px;z-index:7;width:min(420px,calc(100vw - 36px));border:1px solid rgba(214,179,90,.36);background:#080a0ed1;color:#d1d5db;text-shadow:none;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);pointer-events:none}.engine-debug.hidden{display:none}.debug-head{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid rgba(214,179,90,.2);padding:9px 11px;color:#d6b35a;font-size:12px;font-weight:900}.engine-debug pre{margin:0;padding:10px 11px;color:#e5e7eb;font-family:SFMono-Regular,Consolas,monospace;font-size:11px;line-height:1.45;white-space:pre-wrap}.debug-help{display:flex;flex-wrap:wrap;gap:6px;border-top:1px solid rgba(214,179,90,.16);padding:8px 11px 10px}.debug-help span{border:1px solid rgba(148,163,184,.22);padding:3px 6px;color:#cbd5e1;font-size:11px}.card-layer{position:fixed;inset:0;z-index:8;display:grid;place-items:center;padding:24px;background:#030712c7;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.card-layer.hidden{display:none}.card-modal{width:min(820px,100%)}.intermission-modal{width:min(1120px,100%)}.intermission-head{display:grid;grid-template-columns:1fr auto;gap:6px 18px;align-items:end;margin-bottom:18px;border-bottom:1px solid rgba(214,179,90,.24);padding-bottom:14px}.intermission-head span{color:#d6b35a;font-size:12px;font-weight:900}.intermission-head strong{color:#f8fafc;font-size:28px;line-height:1.1}.intermission-head b{grid-row:1 / span 2;grid-column:2;color:#d6b35a;font-size:34px}.intermission-grid{display:grid;grid-template-columns:240px 1fr 270px;gap:16px;align-items:stretch}.status-board,.weapon-board,.upgrade-board{border:1px solid rgba(214,179,90,.2);background:#120d0bc7;padding:14px}.status-title{margin-bottom:12px;color:#d6b35a;font-size:18px;font-weight:900}.stat-row{display:flex;justify-content:space-between;gap:12px;border-top:1px solid rgba(248,250,252,.08);padding:10px 0;color:#d1d5db;font-size:14px}.stat-row b{color:#f8fafc;font-variant-numeric:tabular-nums}.weapon-state{position:relative;display:grid;gap:5px;width:100%;border:1px solid rgba(248,250,252,.08);margin-bottom:10px;padding:10px;background:#09090b73;color:inherit;cursor:pointer;text-align:left}.weapon-state.active{border-color:#d6b35ab8;background:#d6b35a1f}.weapon-state:hover{border-color:#d6b35a7a;background:#d6b35a14}.weapon-state i{position:absolute;top:9px;right:10px;display:grid;place-items:center;width:22px;height:22px;border:1px solid rgba(214,179,90,.32);color:#d6b35a;font-size:12px;font-style:normal;font-weight:900}.weapon-state strong{color:#f8fafc;font-size:17px;padding-right:28px}.weapon-state span{color:#d6b35a;font-size:12px;font-weight:900}.weapon-state em{color:#cbd5e1;font-size:12px;font-style:normal;line-height:1.35}.card-title{margin-bottom:18px;color:#f8fafc;font-size:30px;font-weight:900;text-align:center}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.upgrade-card{min-height:188px;padding:18px;border:1px solid rgba(250,204,21,.34);background:linear-gradient(180deg,#27272af5,#09090bf5);color:#f8fafc;cursor:pointer;text-align:left;box-shadow:0 22px 60px #00000059}.upgrade-card:hover{border-color:#facc15f2;transform:translateY(-2px)}.upgrade-card span{display:block;color:#facc15;font-size:18px;font-weight:900}.upgrade-card strong{display:block;margin-top:28px;color:#f8fafc;font-size:22px}.upgrade-card em{display:block;margin-top:12px;color:#d1d5db;font-style:normal;line-height:1.45}.game-over{max-width:560px;padding:28px;border:1px solid rgba(248,113,113,.45);background:#09090bf0;text-align:center}.game-over p{color:#d1d5db;font-size:18px}@media(max-width:820px){.flow-layer{grid-template-columns:1fr;align-content:center;gap:18px;padding:18px}.flow-screen h1{font-size:clamp(34px,10.5vw,46px)}.camera-panel.gate{justify-self:stretch;grid-template-columns:112px minmax(0,1fr);padding:10px}.camera-panel.gate .camera-stage{width:112px}.topline{grid-template-columns:1fr 92px 1fr;gap:8px;left:10px;right:10px}.fighter-card{padding:8px}.fighter-card strong{font-size:16px}.round-card b{font-size:15px}.round-card span{font-size:12px}.mode-switch{top:86px}.mode-switch button{min-height:30px;padding:0 8px;font-size:12px}.camera-panel{right:10px;bottom:10px;grid-template-columns:90px minmax(150px,1fr);max-width:calc(100vw - 20px)}.flow-layer[data-flow=fight] .camera-panel.gate,.flow-layer[data-flow=nextFight] .camera-panel.gate{right:10px;bottom:10px;grid-template-columns:82px minmax(150px,1fr);max-width:calc(100vw - 20px)}.camera-stage{width:90px}.flow-layer[data-flow=fight] .camera-panel.gate .camera-stage,.flow-layer[data-flow=nextFight] .camera-panel.gate .camera-stage{width:82px}.camera-copy{padding:8px}.camera-copy button{min-height:30px;font-size:12px}.camera-copy button[data-camera-start]{min-height:40px;padding:0 15px;font-size:14px}.camera-copy span{font-size:11px}.notice{bottom:116px;font-size:13px}.judge-panel{left:10px;bottom:178px;gap:6px}.judge-light{width:138px;padding:7px 8px}.judge-light b{font-size:14px}.judge-light span{font-size:10px}.timing-panel{bottom:76px;width:min(300px,calc(100vw - 20px));padding:8px}.weapon-panel{left:10px;bottom:100px;width:220px;padding:8px}.weapon-panel b{font-size:16px}.weapon-row button{min-height:28px;padding:0 7px;font-size:12px}.heat-panel{right:10px;bottom:100px;width:150px;padding:8px}.heat-panel b{font-size:14px}.round-start-overlay{min-width:min(300px,calc(100vw - 24px))}.cards,.intermission-head{grid-template-columns:1fr}.intermission-head b{grid-row:auto;grid-column:auto;font-size:22px}.intermission-grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;transition-duration:1ms!important}}
