/* 主题与基础组件，由单页版主样式表拆分而来 */
:root{--ink:#252c3b;--muted:#697386;--paper:#fbfaf7;--line:#ded8cd;--violet:#60568f;--violet-2:#eeeafa;--gold:#aa762f;--green:#34745f;--red:#af4651;--shadow:0 12px 30px #29203812}*{box-sizing:border-box}body{margin:0;background:#f1eee8;color:var(--ink);font:14px/1.5 "Microsoft YaHei",system-ui,sans-serif}header{background:linear-gradient(115deg,#292139,#625686);color:#fff;padding:27px max(24px,calc((100vw - 1400px)/2));display:flex;justify-content:space-between;align-items:end;gap:20px}h1{font-size:25px;margin:0;font-weight:650}header p{margin:5px 0 0;color:#e5e0f3}.wrap{max-width:1440px;margin:24px auto;padding:0 20px 50px}.summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}.metric,.panel,.stage{background:var(--paper);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}.metric{padding:14px 16px}.metric b{display:block;font-size:20px;color:var(--violet)}.metric span{color:var(--muted);font-size:12px}.tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin-bottom:20px}.tab{border:0;background:none;padding:11px 15px;color:var(--muted);font:inherit;cursor:pointer;border-bottom:3px solid transparent}.tab.active{color:var(--violet);border-color:var(--violet);font-weight:bold}.tab-page{display:none}.tab-page.active{display:block}.panel{padding:18px}.panel h2,.panel h3{margin:0 0 12px;font-size:16px}.hint{margin:0 0 14px;color:var(--muted);font-size:13px}.btn{border:0;border-radius:7px;padding:8px 12px;cursor:pointer;background:var(--violet);color:#fff;font:inherit}.btn.secondary{background:#e8e2d9;color:var(--ink)}.btn.danger{background:#f8e6e7;color:var(--red)}button:disabled{opacity:.55;cursor:not-allowed}.hidden{display:none!important}.small{font-size:12px;color:var(--muted)}.notice{border-left:4px solid var(--gold);background:#fff8e9;padding:11px 13px;border-radius:5px;margin:10px 0;color:#65471d}.issues{display:grid;gap:8px}.issue{border-left:4px solid var(--red);background:#fff4f4;padding:9px 11px;border-radius:5px}.issue.ok{border-color:var(--green);background:#eff8f3;color:#235b49}.pill{border-radius:20px;padding:3px 9px;background:var(--violet-2);color:var(--violet);font-size:12px}.element-icon{width:18px;height:18px;object-fit:contain;vertical-align:middle}.reaction-icon{width:20px;height:20px;object-fit:contain;vertical-align:middle}.plan-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;align-items:start}.stage-list{display:grid;gap:12px}.stage{padding:14px;scroll-margin-top:15px}.stage-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.stage-top b{font-size:16px}.team-zone{min-height:142px;border:1px dashed #c8c0b5;border-radius:8px;padding:8px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;background:#fff}.team-zone.drag-over{border:2px solid var(--violet);background:#f8f6ff}.slot{min-height:130px;border:1px dashed #d8d1c7;border-radius:6px;display:flex;align-items:center;justify-content:center;text-align:center;padding:4px;color:#a09990;font-size:12px}.slot.filled{position:relative;border-style:solid;border-color:#cbc4df;background:#faf9ff;padding:4px}.slot.filled .char-card{width:100%}.char-card{position:relative;border:1px solid #d5cfdf;background:#fff;border-radius:7px;padding:4px;cursor:grab;user-select:none;min-width:0}.char-card:active{cursor:grabbing}.char-card.uses-2{border-color:#9c91c5;background:#fff}.char-card.uses-1{border-color:#d4a65d;background:#fff8e9;box-shadow:inset 0 0 0 1px #f0dfbb}.char-card.disabled,.char-card.uses-0{opacity:.42;cursor:not-allowed}.portrait{position:relative;aspect-ratio:1;border-radius:4px;overflow:hidden;background:#e8e2d9}.avatar{width:100%;height:100%;object-fit:cover;display:block}.char-card .name{font-weight:bold;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;text-align:center;padding:3px 1px 0;font-size:12px}.element-badge,.level-badge{position:absolute;bottom:4px;border-radius:4px;background:#ffffffd9;padding:1px 3px;line-height:18px;z-index:1}.element-badge{left:4px}.level-badge{right:4px;color:var(--ink);font-size:11px;font-weight:bold}.element-badge .element-icon{display:block}.char-card .uses{position:absolute;top:-6px;right:-6px;width:19px;height:19px;border-radius:50%;background:var(--violet);color:#fff;text-align:center;line-height:19px;font-size:11px;font-weight:bold}.remove-card{position:absolute;top:-8px;right:-8px;z-index:2;width:22px;height:22px;border:1px solid #e6c6ca;border-radius:50%;background:#fff;color:var(--red);cursor:pointer;font-size:16px;line-height:17px;padding:0}.pool-sticky{position:sticky;top:16px;max-height:calc(100vh - 32px);overflow:auto}.pool-head{display:flex;justify-content:space-between;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:10px}.segment{display:flex;background:#eeeae4;border-radius:7px;padding:2px}.segment button{border:0;background:transparent;padding:5px 7px;border-radius:5px;cursor:pointer;font:inherit;font-size:12px;color:var(--muted)}.segment button.active{background:#fff;color:var(--violet);box-shadow:0 1px 3px #0001}.pool-group{margin:11px 0}.pool-group h3{font-size:13px;margin:0 0 6px;color:var(--muted)}.card-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.sticky-note{position:sticky;top:0;background:var(--paper);padding-bottom:7px;z-index:1}.run-layout{display:grid;grid-template-columns:minmax(0,1fr) 350px;gap:20px}.run-stage{border:2px solid var(--violet);background:#faf9ff}.run-team{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.run-card{border:1px solid #d6cee8;border-radius:8px;padding:8px;background:#fff}.recommendation{border:1px solid #d9d2ec;background:#f8f6ff;padding:11px;border-radius:8px;margin:9px 0}.choice-list{display:grid;gap:7px;max-height:255px;overflow:auto}.choice{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:7px;padding:7px;background:#fff;cursor:pointer}.choice input{width:auto}.export-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.character-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:9px}.character-card{position:relative;border:1px solid var(--line);border-radius:8px;padding:4px;background:#fff;cursor:pointer}.character-card.owned{border-color:var(--violet);background:#faf9ff;box-shadow:inset 0 0 0 1px #ded7f0}.character-card .portrait{position:relative;aspect-ratio:1;border-radius:4px;overflow:hidden;background:#e8e2d9}.character-card .avatar{width:100%;height:100%;object-fit:cover;display:block}.character-card .name{font-weight:bold;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;text-align:center;padding:3px 1px 0;font-size:12px}.card-actions{display:flex;gap:5px;flex-wrap:wrap;margin-top:3px}.card-actions input{padding:5px;font-size:12px}.character-card .delete-box{position:absolute;top:4px;right:4px}.character-card.custom{background:#fffdf6}.character-card.not-owned{opacity:.58}.box-group{margin:0 0 18px}.box-group h3{margin:0 0 8px;color:var(--muted);font-size:14px}.season-zone{min-height:72px;grid-template-columns:repeat(3,minmax(0,1fr))}.season-entry{position:relative}.season-entry>label{display:block;margin:3px 0;font-size:11px}.reaction-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.reaction-option{display:flex;align-items:center;gap:5px;border:1px solid var(--line);border-radius:7px;padding:7px;cursor:pointer;background:#fff}.reaction-option.selected{border-color:var(--violet);background:#faf9ff}.config-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}textarea{width:100%;min-height:360px;resize:vertical;padding:10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font:12px/1.45 Consolas,"Microsoft YaHei",monospace}.footer-note{margin-top:15px;color:var(--muted);font-size:12px}@media(max-width:900px){.plan-layout,.run-layout,.config-grid{grid-template-columns:1fr}.pool-sticky{position:static;max-height:none;order:-1}.summary{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){header{align-items:start;flex-direction:column}.team-zone,.run-team,.card-grid,.reaction-options{grid-template-columns:repeat(2,1fr)}.character-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
