:root{--sky:#eef5fc;--paper:#fcfdff;--ink:#243d63;--muted:#637895;--line:#cedced;--purple:#7366c8;--orange:#d48645;--teal:#278d90;--error:#a13d48;--font:"Microsoft YaHei UI","Microsoft YaHei","DengXian",sans-serif;--mono:"Cascadia Code",Consolas,monospace}
*{box-sizing:border-box}body{margin:0;background:var(--sky);color:var(--ink);font:14px/1.65 var(--font)}button,input,select{font:inherit}button,a,input,select,summary{outline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--teal)}button,summary{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}[hidden]{display:none!important}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4{line-height:1.4}h2{font-size:19px}h3{font-size:16px}a{color:var(--ink)}.skip-link{position:absolute;left:16px;top:-80px;background:var(--paper);padding:10px;z-index:5}.skip-link:focus{top:10px}.site-header,main{max-width:1240px;margin:auto}.site-header{padding:24px 32px 0;display:flex;justify-content:space-between;align-items:center}.brand{text-decoration:none}.brand h1{font-size:28px;font-weight:650}main{padding:0 32px}.mode-strip{margin:18px 0 24px;padding:9px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:12px;color:var(--muted)}.work-layout{display:grid;grid-template-columns:minmax(290px,.76fr) minmax(0,1.4fr);gap:30px;align-items:start}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.section-heading>span{font-size:12px;color:var(--muted)}summary{list-style:none}summary::-webkit-details-marker{display:none}.workbench{padding:21px;background:var(--paper);border:1px solid var(--line);border-radius:7px}.workbench>summary{display:flex;align-items:center;justify-content:space-between;gap:8px}.workbench>summary>span{font-size:11px;color:var(--muted)}.import-body{padding-top:17px}.field-label{display:block;font-size:12px;margin-bottom:6px}.field-label span{color:var(--muted);margin-left:5px}input[type=text]{width:100%;min-width:0;border:1px solid #c1d1e5;background:#fff;border-radius:4px;padding:9px 11px;color:var(--ink)}input::placeholder{color:#8594aa}.upload-area{border:1px dashed #a9bdd8;border-radius:5px;background:#f3f8fd;text-align:center;padding:15px 10px 17px;margin-top:15px}.upload-area.drag-over{background:#e7f6f3;border-color:var(--teal)}.upload-symbol{display:block;font-size:24px;line-height:1.3;color:var(--teal)}.upload-area>p{font-size:15px;font-weight:600}.upload-area>span:not(.upload-symbol){font-size:11px;color:var(--muted)}.upload-actions{display:flex;gap:7px;justify-content:center;margin-top:13px}.button{border:1px solid transparent;border-radius:4px;min-height:40px;padding:8px 13px;font-size:13px;font-weight:600;line-height:1.5;transition:background .15s}.button.primary{background:var(--ink);color:#fff}.button.primary:hover:enabled{background:#355984}.button.secondary{background:#fdfefe;border-color:#b6c9df;color:var(--ink)}.button.secondary:hover:enabled{background:#edf4fb}.button.quiet{background:#e8eff8;color:var(--ink)}.button.quiet:hover:enabled{background:#dce9f7}.button.compact{min-height:34px;font-size:12px;padding:6px 10px}.analyze-button{width:100%;margin-top:15px;padding:11px 14px}.import-note{font-size:11px;color:var(--muted);margin-top:10px;line-height:1.8}.text-button{border:0;background:transparent;padding:3px;color:var(--muted);font-size:12px;text-decoration:underline;text-underline-offset:3px}.text-button:hover{color:var(--ink)}.file-summary{display:flex;align-items:center;gap:8px;padding-top:14px;font-size:11px}.file-summary>span{margin-left:auto;color:var(--muted)}input[type=checkbox]{accent-color:var(--teal);width:15px;height:15px;vertical-align:middle;margin:0 5px 0 0}.file-list{list-style:none;padding:0;margin:8px 0 0;max-height:180px;overflow:auto;border:1px solid var(--line);border-radius:4px}.file-list li+li{border-top:1px solid #e7edf5}.file-list label{display:flex;align-items:flex-start;padding:7px 8px;cursor:pointer;font-size:11px}.file-list input{flex-shrink:0;margin-top:3px}.file-path{overflow-wrap:anywhere;line-height:1.7;min-width:0;flex:1}.file-size{color:var(--muted);white-space:nowrap;margin-left:7px}.muted{color:var(--muted);font-size:12px}.status{font-size:12px;color:var(--muted);margin-top:13px;min-height:24px;overflow-wrap:anywhere}.status.busy{color:var(--teal)}.status.busy:before{content:"";width:8px;height:8px;display:inline-block;background:var(--teal);margin-right:7px;animation:busy-pulse .8s alternate infinite}.error{background:#fff1f1;color:var(--error);font-size:12px;border-left:3px solid var(--error);padding:9px 11px;overflow-wrap:anywhere;margin-top:9px}.character-workspace{min-width:0}.character-overview{display:flex;align-items:center;gap:19px;padding:10px 0 16px;border-bottom:1px solid var(--line)}.character-stage{position:relative;width:128px;height:128px;flex-shrink:0;background:#deebf9;border-radius:10px}.character-stage:after{content:"";position:absolute;width:75px;height:10px;background:#b2cadf;bottom:12px;left:26px;z-index:0;border-radius:50%}.character-stage img{position:relative;width:120px;height:120px;margin:0 4px;image-rendering:pixelated;z-index:1}.character-info{min-width:0}.character-info h3{font-size:21px;overflow-wrap:anywhere;margin-top:5px}.character-info>p{font-size:12px;color:var(--muted);margin-top:5px}.role-badge{font-size:11px;color:var(--purple)}.language-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}.language-pill{font-size:11px;background:#e5edf8;padding:2px 6px;border-radius:3px}.language-pill b{font:10px var(--mono);margin-left:5px;color:var(--muted)}.combat-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 15px;margin:15px 0 0}.combat-stats>div{border-left:2px solid #b7cddd;padding-left:9px}.combat-stats dt{font-size:11px;color:var(--muted)}.combat-stats dd{font:19px/1.5 var(--mono);margin:2px 0 0}.domain-summary{color:var(--muted);font-size:11px;margin-top:12px;overflow-wrap:anywhere}.moves-title{margin-top:19px}.skills{margin-top:8px}.skill{padding:12px 0;border-top:1px solid var(--line)}.skill h4{font-size:14px}.skill-kind{font-size:10px;color:var(--teal);font-weight:400;margin-left:8px}.skill p{font-size:12px;margin-top:6px;line-height:1.8}.skill-meta{display:flex;flex-wrap:wrap;gap:10px;color:var(--muted);font-size:11px;margin-top:6px}.skill-source{margin-top:7px;font-size:11px;color:var(--muted)}.skill-source>summary{color:var(--purple)}.skill-source>summary:before{content:"＋ ";font-size:12px}.skill-source[open]>summary:before{content:"− "}.skill-links{display:flex;gap:9px;flex-wrap:wrap;margin-top:6px}.skill-links a{color:var(--purple);font-size:11px}.battle-section{margin-top:30px;padding-top:24px;border-top:2px solid #b9cee5}.opponent-picker{border:0;padding:0;margin:0}.opponent-picker legend{font-size:13px;margin-bottom:9px}.opponents{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.opponent-choice{position:relative;display:grid;grid-template-columns:54px minmax(0,1fr);align-items:center;gap:8px;border:1px solid var(--line);border-radius:5px;padding:10px;background:var(--paper);cursor:pointer;min-width:0}.opponent-choice.selected{border-color:var(--teal);box-shadow:inset 0 0 0 1px var(--teal);background:#e9f4f4}.opponent-choice input{position:absolute;opacity:0;width:1px;height:1px}.opponent-choice:focus-within{outline:3px solid var(--teal);outline-offset:3px}.opponent-choice img{width:54px;height:54px;image-rendering:pixelated}.opponent-choice strong{display:block;font-size:13px}.opponent-choice small{display:block;font-size:11px;color:var(--muted);line-height:1.7;margin-top:2px;overflow-wrap:anywhere}.compact-detail{margin-top:12px;font-size:12px}.compact-detail>summary{color:var(--muted)}.compact-detail>summary:before{content:"＋ "}.compact-detail[open]>summary:before{content:"− "}.compact-detail>div{padding-top:10px}.opponent-skills{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.opponent-skills .skill p{font-size:11px}.battle-toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin:18px 0 13px}.playback-controls{display:flex;align-items:center;gap:9px}.playback-controls label{font-size:11px;color:var(--muted)}.playback-controls select{height:34px;border:1px solid #b6c9df;border-radius:4px;background:var(--paper);color:var(--ink);font-size:12px;padding:0 6px}.arena{background:#dfebf7;border:1px solid #bfd0e5;border-radius:10px 10px 4px 4px;padding:17px 22px 15px;overflow:hidden}.arena-topline{display:flex;justify-content:space-between;gap:12px;font-size:11px;color:var(--muted);margin-bottom:14px}.arena-topline>span:last-child{text-align:right}.fighters{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:90px}.fighter{min-width:0}.fighter-heading{display:flex;align-items:center;gap:8px;margin-bottom:7px}.fighter-heading>span{font-size:10px;color:var(--muted);flex-shrink:0}.fighter-heading h3{font-size:15px;overflow-wrap:anywhere}.hp-reading,.resource-reading{display:flex;justify-content:space-between;gap:7px;font-size:11px}.hp-reading span:last-child{font-family:var(--mono)}.resource-reading{margin-top:8px;font-size:10px;color:var(--muted)}.resource-reading b{font-family:var(--mono);font-weight:500;color:var(--ink)}.meter{height:8px;background:#c5d4e4;border-radius:2px;overflow:hidden;margin-top:3px}.meter-fill{height:100%;width:0;background:#739b7e;transition:width .22s ease}.hp-meter.low .meter-fill{background:var(--orange)}.energy-meter{height:4px}.energy-meter .meter-fill{background:var(--teal)}.fighter-body{position:relative;height:216px;display:flex;align-items:center;justify-content:center}.fighter-body img{position:relative;image-rendering:pixelated;object-fit:contain;width:200px;max-width:100%;height:auto;z-index:1}.opponent .fighter-body img{transform:scaleX(-1)}.fighter-ground{position:absolute;width:124px;height:17px;background:#b6cadb;bottom:25px;border-radius:50%}.versus{position:absolute;top:165px;left:50%;transform:translateX(-50%);font-size:12px;color:#8ca5be}.fighter-statuses{min-height:22px;display:flex;flex-wrap:wrap;gap:5px;align-items:flex-start}.status-chip{border:1px solid #abb7d6;background:#f2f4fb;color:var(--purple);font-size:10px;padding:1px 5px;border-radius:3px}.cooldowns{font-size:10px;color:var(--muted);min-height:20px;overflow-wrap:anywhere;margin-top:4px}.action-message{border-top:1px solid #bfd0e5;margin-top:12px;padding:12px 0 0;min-height:40px;font-size:13px}.effect-pop{position:absolute;z-index:2;top:38px;right:18%;font:700 19px var(--mono);color:var(--orange);padding:3px 6px;background:#f6f9fcdd;border-radius:3px;opacity:0;pointer-events:none}.fighter.hit .effect-pop,.fighter.buff .effect-pop{animation:effect-pop .65s ease-out both}.fighter.acting .fighter-body img{animation:player-lunge .36s ease-out}.fighter.opponent.acting .fighter-body img{animation:opponent-lunge .36s ease-out}.fighter.hit .fighter-body{animation:hit-flash .35s ease-out}.fighter.buff .effect-pop{color:var(--teal)}.battle-result{margin-top:13px;padding:13px 16px;background:#f5f8fc;border-left:3px solid var(--teal);border-radius:3px}.battle-result h3{font-size:19px}.battle-result p{font-size:12px;color:var(--muted);margin-top:4px}.battle-log-detail{margin-top:13px;font-size:12px}.battle-log-detail>summary{display:flex;gap:10px;color:var(--muted)}.battle-log-detail>summary:before{content:"＋"}.battle-log-detail[open]>summary:before{content:"−"}.battle-log{max-height:280px;overflow:auto;padding:0 0 0 24px;margin:10px 0 0}.battle-log li{font-size:11px;padding:5px 0;border-bottom:1px solid #dbe5f1;overflow-wrap:anywhere}.evidence-book{margin-top:25px;border-top:1px solid var(--line)}.report-detail{border-bottom:1px solid var(--line);padding:13px 0}.report-detail>summary{font-size:12px;display:flex;gap:10px;align-items:center}.report-detail>summary:after{content:"＋";font-size:15px;color:var(--muted);margin-left:auto}.report-detail[open]>summary:after{content:"−"}.report-detail>summary>span{font-size:11px;color:var(--muted)}.report-detail>div{font-size:12px;color:var(--muted);padding:13px 0 2px;overflow-wrap:anywhere}.report-detail ul{padding-left:19px;margin:0}.report-detail li+li{margin-top:6px}.report-detail p+p{margin-top:8px}.feature{padding:11px 0;border-top:1px solid var(--line);scroll-margin-top:20px}.feature h4{font-size:13px;color:var(--ink)}.evidence-item{margin-top:9px;border-left:2px solid #bfd2e8;padding-left:10px;min-width:0}.source-location{font:11px/1.7 var(--mono);overflow-wrap:anywhere;color:#536a88}.source-method{font:10px var(--font);color:var(--muted);margin-left:8px}.evidence-item pre{margin:5px 0 0;padding:9px 10px;background:#e5edf7;border-radius:3px;white-space:pre-wrap;overflow-wrap:anywhere;font:11px/1.8 var(--mono);max-height:180px;overflow:auto}.empty-message{font-size:12px;color:var(--muted);padding:11px 0}.stats-note{font-size:11px;color:var(--muted)}.stats{margin-top:12px}.stat{border-top:1px solid var(--line)}.stat>summary{display:grid;grid-template-columns:46px minmax(0,1fr) 34px 12px;align-items:center;gap:13px;padding:9px 0;font-size:12px}.stat>summary:after{content:"＋";font-size:15px;color:var(--muted)}.stat[open]>summary:after{content:"−"}.stat-number{font-family:var(--mono);font-size:14px;text-align:right}.stat-track{height:6px;background:#d6e2ef;border-radius:1px;overflow:hidden}.stat-fill{height:100%;background:var(--purple)}.stat-breakdown{padding-bottom:12px}.stat-breakdown table{width:100%;border-collapse:collapse;font-size:11px;background:#f8fbff}.stat-breakdown th,.stat-breakdown td{padding:5px 8px;text-align:left;border-bottom:1px solid #e2ebf6}.stat-breakdown th{color:var(--muted);font-weight:500}.stat-breakdown th:last-child,.stat-breakdown td:last-child{text-align:right}.stat-sources{font-size:11px;color:var(--muted);padding-left:18px;margin:8px 0}.ingest-list{max-height:210px;overflow:auto}footer{font-size:11px;color:var(--muted);padding:23px 0 28px;max-width:700px}
@keyframes busy-pulse{from{opacity:.3}to{opacity:1}}@keyframes player-lunge{0%,100%{transform:translateX(0)}45%{transform:translateX(15px)}}@keyframes opponent-lunge{0%,100%{transform:scaleX(-1) translateX(0)}45%{transform:scaleX(-1) translateX(15px)}}@keyframes hit-flash{0%,100%{opacity:1}45%{opacity:.45}}@keyframes effect-pop{0%{opacity:0;transform:translateY(6px)}25%,75%{opacity:1}100%{opacity:0;transform:translateY(-15px)}}
@media(max-width:860px){.site-header{padding:20px 24px 0}main{padding:0 24px}.work-layout{grid-template-columns:minmax(260px,.8fr) minmax(0,1.2fr);gap:23px}.workbench{padding:17px}.upload-actions{gap:5px}.upload-actions .button{font-size:11px;padding:7px 9px}.character-overview{gap:13px}.character-stage{width:102px;height:108px}.character-stage img{width:102px;height:102px;margin:0}.character-stage:after{left:18px;width:65px}.character-info h3{font-size:18px}.combat-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.opponent-choice{grid-template-columns:40px minmax(0,1fr);padding:8px;gap:5px}.opponent-choice img{width:40px;height:40px}.opponent-choice strong{font-size:12px}.opponent-choice small{font-size:10px}.fighters{gap:65px}}
@media(max-width:650px){.work-layout{grid-template-columns:1fr;gap:25px}.workbench{padding:19px}.character-overview{gap:18px}.character-stage{width:120px;height:124px}.character-stage img{width:120px;height:120px}.character-stage:after{left:23px;width:74px}.combat-stats{grid-template-columns:repeat(4,minmax(0,1fr))}.opponents{grid-template-columns:1fr;gap:8px}.opponent-choice{grid-template-columns:46px minmax(0,1fr);padding:8px 10px;gap:9px}.opponent-choice img{width:46px;height:46px}.opponent-choice small{font-size:11px}.opponent-skills{grid-template-columns:1fr;gap:0}.battle-toolbar{gap:11px}.battle-toolbar>.button{width:100%}.playback-controls{width:100%;justify-content:space-between;gap:7px}.arena{padding:13px 15px 12px}.fighters{gap:28px}.fighter-heading{flex-direction:column;align-items:flex-start;gap:1px;min-height:44px}.fighter-heading h3{font-size:13px}.fighter-body{height:165px}.fighter-body img{width:145px}.fighter-ground{width:85px;height:12px;bottom:15px}.versus{top:147px;font-size:10px}.resource-reading{flex-direction:column;gap:1px;min-height:33px}.fighter-statuses{min-height:40px}.cooldowns{min-height:34px}.effect-pop{font-size:15px;right:5%;top:30px}.action-message{font-size:12px}.arena-topline{font-size:10px;gap:8px}.arena-topline>span:first-child{flex-shrink:0}}
@media(max-width:390px){.site-header{padding:17px 16px 0}main{padding:0 16px}.brand h1{font-size:25px}.mode-strip{font-size:11px;margin:16px 0 19px}.workbench{padding:16px}.workbench>summary>span{font-size:10px}.character-overview{gap:12px}.character-stage{width:96px;height:106px}.character-stage img{width:96px;height:96px}.character-stage:after{width:62px;left:17px}.character-info h3{font-size:17px}.character-info>p{font-size:11px}.combat-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.combat-stats dd{font-size:18px}.section-heading h2{font-size:18px}.playback-controls .button{padding:6px 8px;font-size:11px}.playback-controls label{font-size:10px}.playback-controls select{font-size:11px;padding:0 4px}.arena{padding:12px}.fighters{gap:18px}.fighter-body{height:139px}.fighter-body img{width:122px}.fighter-ground{width:67px;height:10px;bottom:12px}.hp-reading{font-size:10px;gap:3px}.resource-reading{font-size:9px}.fighter-heading h3{font-size:12px}.versus{top:140px;font-size:9px}.fighter-statuses .status-chip{font-size:9px;padding:1px 3px}.cooldowns{font-size:9px}.file-summary{gap:5px}.file-size{font-size:10px}.stat>summary{grid-template-columns:39px minmax(0,1fr) 28px 10px;gap:9px}.battle-result h3{font-size:17px}.battle-result p{font-size:11px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.fighter.hit .effect-pop,.fighter.buff .effect-pop{opacity:1}}
.battle-rules>div{font-size:11px;line-height:1.85;color:var(--muted)}.battle-rules ul{margin:0;padding-left:18px}.battle-rules li+li{margin-top:4px}.battle-rules .compact-detail p{padding-top:8px;overflow-wrap:anywhere}.evidence-book{margin-bottom:28px}
.work-layout:has(.workbench:not([open])){grid-template-columns:minmax(0,1fr)}.work-layout:has(.workbench:not([open])) .workbench,.work-layout:has(.workbench:not([open])) .character-workspace{grid-column:1/-1}.work-layout:has(.workbench:not([open])) .skills{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.skill{min-width:0}@media(max-width:650px){.work-layout:has(.workbench:not([open])) .skills{grid-template-columns:minmax(0,1fr);gap:0}}
.mode-picker{display:flex;flex-wrap:wrap;gap:12px 24px;margin:0 0 18px;padding:10px 14px;border:1px solid var(--line);border-radius:4px}.mode-picker legend{font-size:12px;color:var(--muted)}.mode-picker label{display:flex;align-items:center;gap:5px}.strategy-editor{margin:14px 0 18px;border:1px solid var(--line);border-radius:5px;background:var(--paper);padding:14px}.strategy-editor>summary{font-size:15px;font-weight:600}.strategy-editor>p{font-size:12px;color:var(--muted);margin:10px 0}.strategy-tools{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:12px}.strategy-rule{border-top:1px solid var(--line);padding:12px 0;min-width:0}.strategy-rule-heading{display:flex;align-items:center;flex-wrap:wrap;gap:9px}.rule-toggle{display:flex;align-items:center;gap:4px;font-size:12px}.strategy-rule select,.strategy-rule input[type=number]{min-width:0;border:1px solid var(--line);border-radius:3px;padding:6px;background:#fff;color:var(--ink);font-size:12px}.strategy-rule-heading>select{flex:1 1 140px}.strategy-rule .muted{font-size:11px;margin:7px 0}.condition-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0}.condition-row>select{flex:1 1 120px}.condition-number{display:flex;gap:7px;align-items:center;font-size:11px;flex:1 1 105px}.condition-number input{width:75px;max-width:100%}.condition-row .text-button{font-size:11px}.command-controls{padding:14px;border:1px solid var(--line);background:var(--paper);border-radius:5px;margin:14px 0}.command-controls>p{font-size:12px;color:var(--muted);margin:6px 0 12px}.command-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.command-skill{display:flex;flex-direction:column;text-align:left;gap:3px}.command-skill>span{font-size:11px;font-weight:400}.command-skill .blocked-reason{color:var(--error)}@media(max-width:650px){.strategy-editor,.command-controls{padding:11px}.strategy-rule-heading{gap:7px}.rule-toggle{flex-basis:100%}.strategy-rule-heading>select{flex-basis:120px}.condition-row>select{flex-basis:105px}.command-actions{grid-template-columns:minmax(0,1fr)}.mode-picker{padding:8px 10px;gap:8px 18px}}
