:root{
  --bg:#0e1115; --panel:#161a20; --panel2:#1d222a; --border:#2a313c;
  --text:#e6e9ef; --muted:#8b93a1; --accent:#e0a83a;
  --radiant:#7fb135; --radiant-dim:rgba(127,177,53,.16);
  --dire:#d0463b; --dire-dim:rgba(208,70,59,.16);
  --danger:#e05a5a;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Helvetica Neue",Arial,sans-serif}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--accent)}
code{background:var(--panel2);padding:0 .35em;border-radius:4px;font-size:.92em}
.hidden{display:none!important}

/* ---- 顶栏 ---- */
.topbar{display:flex;align-items:center;gap:20px;padding:10px 20px;background:#0a0c10;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:20;flex-wrap:wrap}
.brand{font-weight:700;font-size:17px;letter-spacing:.5px;white-space:nowrap}
.logo{color:var(--accent)}
.tabs{display:flex;gap:4px;flex:1}
.tab{background:transparent;border:1px solid transparent;color:var(--muted);padding:7px 14px;border-radius:6px;cursor:pointer}
.tab:hover{color:var(--text);background:var(--panel)}
.tab.active{color:var(--text);background:var(--panel2);border-color:var(--border)}
.topbar-actions{display:flex;gap:6px}

main{max-width:1280px;margin:0 auto;padding:18px 20px 60px}
.panel{display:none}
.panel.active{display:block}

/* ---- 卡片/布局 ---- */
.card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:16px 18px;margin-bottom:16px}
.card h2{margin:0 0 12px;font-size:17px}
.card h3{margin:0 0 10px;font-size:15px}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.card-head h2,.card-head h3{margin:0}
.two-col{display:grid;grid-template-columns:380px 1fr;gap:16px;align-items:start}
#tab-stats .two-col{grid-template-columns:1fr 1fr}
.count{display:inline-block;background:var(--panel2);border:1px solid var(--border);border-radius:10px;padding:0 8px;font-size:12px;color:var(--muted);margin-left:4px}
.hint{color:var(--muted);font-size:12px;font-weight:400}
.req{color:var(--danger)}
.empty{color:var(--muted);text-align:center;padding:24px 0;margin:0}
details.card summary{cursor:pointer;font-weight:600}
details.card[open] summary{margin-bottom:8px}

/* ---- 表单 ---- */
label{display:block;margin-bottom:10px;color:var(--muted);font-size:13px}
label input,label select{margin-top:4px}
label.inline{display:inline-flex;align-items:center;gap:6px;margin:0}
label.inline input{margin:0}
input[type=text],input[type=search],input[type=number],input[type=date],select,textarea{
  width:100%;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:7px 10px;color:var(--text);outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--accent)}
textarea{resize:vertical;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px}
.row{display:flex;gap:10px}
.row.wrap{flex-wrap:wrap}
.row>label{flex:1;min-width:140px}
.row>label.grow{flex:2}
.row>label.narrow{flex:0 0 100px;min-width:90px}
.field{margin-bottom:10px}
.field-label{color:var(--muted);font-size:13px;margin-bottom:5px}
.pos-checks{display:flex;gap:6px;flex-wrap:wrap}
.pos-checks label{display:inline-flex;align-items:center;gap:4px;margin:0;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:5px 9px;cursor:pointer;color:var(--text);font-size:13px}
.pos-checks label:has(input:checked){border-color:var(--accent);background:rgba(224,168,58,.12)}
.pos-checks input{margin:0}
.tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px;min-height:6px}
.tag{display:inline-flex;align-items:center;gap:4px;background:var(--panel2);border:1px solid var(--border);border-radius:14px;padding:2px 9px;font-size:12px}
.tag button{background:none;border:0;color:var(--muted);cursor:pointer;padding:0 2px;line-height:1}
.tag button:hover{color:var(--danger)}
.form-actions{display:flex;gap:8px;margin-top:8px;align-items:center}
.inline-actions{display:flex;gap:8px;align-items:center}
.inline-actions.wrap{flex-wrap:wrap}
.inline-actions input[type=search],.inline-actions select{width:auto;min-width:160px}
.inline-actions input[type=date]{width:auto}

button{cursor:pointer;background:var(--panel2);border:1px solid var(--border);border-radius:6px;padding:7px 14px;color:var(--text)}
button:hover{border-color:#3d4653;background:#232932}
button.primary{background:var(--accent);border-color:var(--accent);color:#1a1200;font-weight:600}
button.primary:hover{filter:brightness(1.08)}
button.primary.big{padding:10px 26px;font-size:15px}
button.ghost{background:transparent}
button.danger{color:var(--danger)}
button.mini{padding:2px 8px;font-size:12px;border-radius:12px;background:var(--bg)}
button.mini:hover{border-color:var(--accent)}
button.link{background:none;border:0;padding:0;color:var(--accent);text-decoration:underline dotted}
button:disabled{opacity:.5;cursor:not-allowed}

/* ---- 表格 ---- */
.table-wrap{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th,.tbl td{padding:8px 10px;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;white-space:nowrap}
.tbl th{color:var(--muted);font-weight:600;font-size:12px;background:var(--panel)}
.tbl td.wrap,.tbl th.wrap{white-space:normal}
.tbl .num{text-align:right}
.tbl tbody tr:hover{background:var(--panel2)}
.tbl.sortable th[data-key]{cursor:pointer;user-select:none}
.tbl.sortable th[data-key]:hover{color:var(--text)}
.tbl.sortable th.sorted::after{content:" ▾";color:var(--accent)}
.tbl.sortable th.sorted.asc::after{content:" ▴"}
.tbl td .actions{display:flex;gap:6px;justify-content:flex-end}
.tbl td .actions button{padding:3px 9px;font-size:12px}
.name-btn{background:none;border:0;padding:0;color:var(--text);font-weight:600;cursor:pointer}
.name-btn:hover{color:var(--accent)}

/* ---- 段位徽章 ---- */
.rank{display:inline-block;padding:1px 7px;border-radius:4px;font-size:11px;font-weight:600;border:1px solid transparent;white-space:nowrap}
.rank.r1{background:#3a3128;color:#c7ad8f}
.rank.r2{background:#2c3a2c;color:#a6cba6}
.rank.r3{background:#2b3440;color:#a9bfd6}
.rank.r4{background:#243447;color:#8fc0f0}
.rank.r5{background:#2f2a4a;color:#b7a8f5}
.rank.r6{background:#3e2a4f;color:#d9a3ff}
.rank.r7{background:#1f3a4a;color:#7fe0ff}
.rank.r8{background:#4a3a14;color:#ffd86b;border-color:#8a6a1e}
.pos-chip{display:inline-block;font-size:11px;background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:0 5px;margin-right:3px;color:var(--muted)}
.hero-chip{display:inline-block;font-size:12px;background:var(--panel2);border-radius:10px;padding:0 7px;margin:1px 3px 1px 0}
.side{display:inline-block;padding:1px 8px;border-radius:4px;font-size:12px;font-weight:600}
.side.radiant{background:var(--radiant-dim);color:var(--radiant)}
.side.dire{background:var(--dire-dim);color:var(--dire)}
.lineup{font-size:12px;white-space:normal;max-width:320px}
.lineup .lp{display:inline-block;margin:1px 6px 1px 0}
.lineup .lp .hero{color:var(--muted)}
.lineup.won .lp{font-weight:600}
.win{color:var(--radiant);font-weight:600}
.loss{color:var(--dire);font-weight:600}
.streak-w{color:var(--radiant)}
.streak-l{color:var(--dire)}
.bar{display:inline-block;height:6px;border-radius:3px;background:var(--accent);vertical-align:middle;margin-left:6px;opacity:.85}

/* ---- 记录比赛 ---- */
.match-meta{margin-bottom:10px}
.teams{display:grid;grid-template-columns:1fr 40px 1fr;gap:12px;align-items:stretch;margin:6px 0 16px}
.vs{display:flex;align-items:center;justify-content:center;color:var(--muted);font-weight:800;font-size:18px}
.team{border:2px solid var(--border);border-radius:10px;overflow:hidden;background:var(--bg);transition:border-color .15s}
.team.radiant.active{border-color:var(--radiant);box-shadow:0 0 0 3px var(--radiant-dim)}
.team.dire.active{border-color:var(--dire);box-shadow:0 0 0 3px var(--dire-dim)}
.team-head{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;cursor:pointer;font-weight:700}
.team.radiant .team-head{background:var(--radiant-dim);color:var(--radiant)}
.team.dire .team-head{background:var(--dire-dim);color:var(--dire)}
.team-hint{font-size:11px;font-weight:400;color:var(--muted)}
.team.active .team-hint{color:inherit}
.slots{padding:8px}
.slot{border:1px dashed var(--border);border-radius:8px;padding:7px 10px;margin-bottom:6px;min-height:44px;color:var(--muted);font-size:13px;display:flex;align-items:center}
.slot.filled{border-style:solid;background:var(--panel);color:var(--text);display:block}
.slot-main{display:flex;align-items:center;gap:8px}
.slot-name{font-weight:600;flex:1}
.slot-remove{background:none;border:0;color:var(--muted);font-size:16px;padding:0 4px;line-height:1}
.slot-remove:hover{color:var(--danger)}
.slot-sub{display:flex;gap:6px;margin-top:6px}
.slot-sub select{width:auto;flex:0 0 auto;padding:4px 6px;font-size:12px}
.slot-sub input{flex:1;padding:4px 8px;font-size:12px}
.slot-heroes{display:flex;gap:4px;flex-wrap:wrap;margin-top:5px}
.pool-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px}
.pool-head h3{margin:0}
.pool-head input{width:220px}
.pool{display:flex;gap:6px;flex-wrap:wrap;min-height:40px;margin-bottom:16px}
.chip{display:inline-flex;align-items:center;gap:6px;background:var(--bg);border:1px solid var(--border);border-radius:20px;padding:5px 12px 5px 12px;cursor:pointer;font-size:13px;user-select:none}
.chip:hover{border-color:var(--accent)}
.chip .rank{font-size:10px}
.chip .pc{font-size:11px;color:var(--muted)}
.chip.in-radiant{border-color:var(--radiant);background:var(--radiant-dim)}
.chip.in-dire{border-color:var(--dire);background:var(--dire-dim)}
.winner-row{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.winner-row .field-label{margin:0}
.win-btn{padding:9px 22px;font-weight:700;border-width:2px;background:transparent}
.win-btn.radiant{color:var(--radiant);border-color:var(--radiant-dim)}
.win-btn.dire{color:var(--dire);border-color:var(--dire-dim)}
.win-btn.radiant.on{background:var(--radiant);color:#0b1200;border-color:var(--radiant)}
.win-btn.dire.on{background:var(--dire);color:#fff;border-color:var(--dire)}

/* ---- 统计 ---- */
.overview{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.stat-tile{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:12px 14px}
.stat-tile .k{color:var(--muted);font-size:12px}
.stat-tile .v{font-size:22px;font-weight:700;margin-top:2px}
.stat-tile .s{color:var(--muted);font-size:12px}

/* ---- 弹窗 / 提示 ---- */
.modal{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;z-index:50;overflow:auto}
.modal-box{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:20px 22px;max-width:980px;width:100%;position:relative}
.modal-close{position:absolute;top:8px;right:10px;background:none;border:0;font-size:22px;color:var(--muted);padding:2px 8px}
.modal-close:hover{color:var(--text)}
.modal h2{margin:0 0 6px}
.modal h4{margin:16px 0 6px;color:var(--muted);font-size:13px;text-transform:uppercase;letter-spacing:.5px}
.modal .grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
#toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(20px);background:#222a34;border:1px solid var(--border);color:var(--text);padding:9px 16px;border-radius:8px;opacity:0;transition:.2s;pointer-events:none;z-index:99;max-width:90vw}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
#toast.err{border-color:var(--danger);color:#ffb3b3}
#toast.ok{border-color:var(--radiant)}

@media (max-width:900px){
  .two-col,#tab-stats .two-col{grid-template-columns:1fr}
  .teams{grid-template-columns:1fr}
  .vs{display:none}
  .topbar{gap:10px}
  .tabs{order:3;width:100%}
}
@media print{
  .topbar,.card-head .inline-actions,#tab-players,#tab-record,#tab-matches{display:none!important}
  body{background:#fff;color:#000}
  .card{border-color:#ccc;background:#fff}
  .tbl th{background:#f3f3f3;color:#333}
  .tbl th,.tbl td{border-color:#ddd}
  .panel{display:none}
  #tab-stats{display:block!important}
}

/* ---- OpenDota 导入 / KDA ---- */
.kda-mini{font-size:11px;color:var(--muted);margin-left:4px;font-variant-numeric:tabular-nums}
.slot-main .kda-mini{background:var(--bg);border-radius:4px;padding:0 5px}
.row-btn{display:flex;align-items:flex-end;margin-bottom:10px}
.od-table select{width:auto;min-width:110px;padding:4px 6px;font-size:12px}
.od-table td.wrap{max-width:220px}

.row-btn{gap:6px}
#btn-proxy-cfg{padding:7px 10px}

/* ---- 正式比赛（赛事） ---- */
.tn-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.tn-card{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:12px 14px;cursor:pointer}
.tn-card:hover{border-color:var(--accent)}
.tn-card-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px;font-size:15px}
.tn-champ{margin-top:6px;color:var(--accent);font-weight:600}
.chip-s{display:inline-block;font-size:11px;padding:1px 8px;border-radius:10px;border:1px solid var(--border);color:var(--muted);font-weight:500;vertical-align:middle}
.chip-s.running{color:var(--radiant);border-color:var(--radiant)}
.chip-s.done{color:var(--accent);border-color:var(--accent)}
.tn-subnav{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--border);margin-bottom:14px;padding-bottom:8px}
.tn-subnav button{background:transparent;border-color:transparent;color:var(--muted);padding:5px 12px}
.tn-subnav button.on{background:var(--panel2);border-color:var(--border);color:var(--text)}
.tn-subnav button.done:not(.on)::after{content:" ✓";color:var(--radiant)}
.tn-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px;min-height:20px}
.tn-teams{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.tn-team{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:10px 12px}
.tn-team-head{display:flex;align-items:center;gap:6px;margin-bottom:8px;flex-wrap:wrap}
.tn-team-head input{flex:1 1 110px;min-width:110px;padding:4px 8px;font-weight:600}
.tn-team-ops{margin-left:auto}
.tn-team-head .hint{white-space:nowrap}
.tn-team-head strong{flex:1}
.tn-seed{color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}
.tn-team-ops{display:flex;gap:3px}
.tn-team select{width:100%;margin-bottom:5px;padding:4px 8px;font-size:13px}
.tn-member{display:flex;justify-content:space-between;align-items:center;padding:5px 8px;border-bottom:1px solid var(--border);font-size:13px}
.tn-member:last-child{border-bottom:0}
.tn-format input[type=text],.tn-format select{width:auto;padding:4px 8px;font-size:13px}
.tn-banner{background:rgba(224,168,58,.1);border:1px solid var(--accent);border-radius:8px;padding:10px 14px;margin-bottom:12px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.tn-banner.done{background:var(--radiant-dim);border-color:var(--radiant)}
.tn-stage-grid{display:grid;grid-template-columns:1fr 360px;gap:16px;align-items:start}
.tn-round{margin-bottom:14px}
.tn-round-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.tn-round-head input[type=date]{width:auto;padding:3px 6px;font-size:12px}
.tn-series-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px}
.series{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:6px 8px;font-size:13px;position:relative}
.series.clickable{cursor:pointer}
.series.clickable:hover{border-color:var(--accent)}
.series.live{border-color:var(--accent)}
.series.done{border-color:#3a4552}
.series.wait{opacity:.6}
.series .t{display:flex;justify-content:space-between;align-items:center;padding:3px 4px;border-radius:4px}
.series .t.win{background:var(--radiant-dim);color:var(--radiant);font-weight:700}
.series .t.tbd .tn-name{color:var(--muted);font-style:italic}
.series .sc{font-variant-numeric:tabular-nums;font-weight:700;min-width:1.2em;text-align:right}
.series-label{font-size:11px;color:var(--accent);margin-bottom:2px}
.series-foot{font-size:11px;color:var(--muted);margin-top:3px;text-align:right}
.bracket{display:flex;gap:18px;overflow-x:auto;padding-bottom:8px}
.b-round{display:flex;flex-direction:column;justify-content:space-around;gap:10px;min-width:220px;flex:0 0 220px}
.b-round .tn-round-head{flex-direction:column;align-items:flex-start;gap:4px}
.b-round .series{margin:0}
tr.adv td{background:var(--radiant-dim)}
.tn-vs{display:grid;grid-template-columns:1fr 40px 1fr;gap:10px;align-items:center;margin:10px 0}
.tn-vs-team{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:12px;text-align:center}
.tn-vs-team.won{border-color:var(--radiant)}
.tn-vs-name{font-weight:700;font-size:16px}
.tn-vs-score{font-size:34px;font-weight:800;color:var(--accent);line-height:1.2}
.tn-roster{display:flex;gap:4px;flex-wrap:wrap;justify-content:center;margin-top:6px}
@media (max-width:900px){.tn-stage-grid{grid-template-columns:1fr}.tn-vs{grid-template-columns:1fr}.tn-vs .vs{display:none}}

/* ---- 联赛导入 ---- */
.lg-wrap{max-height:52vh;overflow:auto}
.lg-wrap thead th{position:sticky;top:0;z-index:1}
tr.lg-done td{opacity:.55}
.tn-group{margin-top:14px;padding-top:10px;border-top:1px dashed var(--border)}
.tn-group h3{margin-bottom:8px}
.series.tb{border-style:dashed}
.tn-format .inline-actions{gap:4px}
.tn-grp{display:inline-block;white-space:nowrap;font-size:11px;font-weight:700;padding:1px 7px;border-radius:4px;background:rgba(224,168,58,.15);color:var(--accent);border:1px solid rgba(224,168,58,.4)}
.tn-groups-preview{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:6px 16px;margin:8px 0 4px;font-size:13px}
.tn-subs{background:var(--bg);border:1px dashed var(--border);border-radius:8px;padding:8px 12px;margin:8px 0}
.tn-sub-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:6px;font-size:13px}
.tn-sub-row select{width:auto;min-width:120px;padding:4px 8px;font-size:13px}
.tn-sub-row .tag button{background:none;border:0;color:var(--muted);cursor:pointer;padding:0 2px;line-height:1}
.tn-sub-row .tag button:hover{color:var(--danger)}

/* ---- 选手详情：展开比赛 ---- */
tr.expanded td{background:var(--panel2)}
.match-detail-row td{background:var(--bg)!important;white-space:normal;padding:10px 12px}
.md-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.md-side{border:1px solid var(--border);border-radius:8px;padding:8px 10px}
.md-side.won{border-color:var(--radiant)}
.md-side.dire.won{border-color:var(--dire)}
.md-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.md-p{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:13px}
.md-p.me{font-weight:700;color:var(--accent)}
.md-name{min-width:90px}
.md-hero{color:var(--muted);flex:1}
@media (max-width:700px){.md-grid{grid-template-columns:1fr}}

/* ---- 录像解析 ---- */
#match-table button.has-replay{border-color:var(--radiant);color:var(--radiant)}
.rp-chart{width:100%;height:auto;display:block;background:var(--bg);border:1px solid var(--border);border-radius:8px;margin:4px 0 8px;touch-action:none}
.rp-chart .grid{stroke:var(--border);stroke-width:1}
.rp-chart .zero{stroke:var(--muted);stroke-width:1;stroke-dasharray:3 3}
.rp-chart .tick{fill:var(--muted);font-size:11px}
.rp-chart .ln{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.rp-chart .cross{stroke:var(--text);stroke-width:1;opacity:.6}
.rp-tip{position:absolute;background:#222a34;border:1px solid var(--border);border-radius:8px;padding:6px 10px;font-size:12px;pointer-events:none;z-index:5;min-width:140px;line-height:1.6}
.rp-tip div{display:flex;justify-content:space-between;gap:10px;color:var(--muted)}
.rp-tip b{color:var(--text);font-variant-numeric:tabular-nums}
.rp-table summary{cursor:pointer;margin:0 0 6px}
.rp-bp{display:flex;flex-wrap:wrap;gap:5px}
.rp-bp-item{font-size:12px;padding:2px 8px;border-radius:12px;border:1px solid var(--border);background:var(--bg)}
.rp-bp-item.radiant{border-color:var(--radiant);color:var(--radiant)}
.rp-bp-item.dire{border-color:var(--dire);color:var(--dire)}
.rp-bp-item.ban{opacity:.55;text-decoration:line-through}
.modal-box{position:relative}


/* ============ 拍卖选马 ============ */
.au-team{gap:2px}
.au-money{font-size:12px;color:var(--muted,#9aa4b2);padding:2px 0}
.au-money b{color:var(--fg,#e6e9ef)}
.au-quotas{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0}
.au-q{font-size:11px;padding:1px 7px;border-radius:999px;background:#232a38;border:1px solid #39414f;color:#9aa4b2;white-space:nowrap}
.au-q.full{border-color:#8a6d1f;color:#e0b341}
.au-q.bad{border-color:#8a2f2f;color:#ff6b6b;font-weight:600}
.au-risk{font-size:11px;padding:1px 6px;border-radius:999px;margin-left:4px}
.au-risk.warn{background:#4a3a10;color:#e0b341}
.au-risk.bad{background:#4a1818;color:#ff8080}
.au-cap{font-size:12px;color:#9aa4b2;padding:2px 0;display:flex;align-items:center;gap:6px}
.au-row{display:flex;align-items:center;gap:6px;padding:3px 4px;border-radius:6px;background:rgba(255,255,255,.03)}
.au-row .au-nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.au-row .au-g{flex:0 0 auto;font-size:11px}
.au-row .au-p{flex:0 0 auto;min-width:3.6em;text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.au-row .au-p i{font-style:normal;font-weight:400;font-size:10px;color:#9aa4b2;margin-left:1px}
.au-add{align-self:flex-start;margin-top:4px}
.au-t{display:inline-block;min-width:2.6em;text-align:center;font-size:11px;font-weight:700;padding:1px 5px;border-radius:4px;background:#2a3040;color:#9aa4b2}
.au-t.tSSS{background:#5b2a6e;color:#f0c2ff}
.au-t.tS{background:#7a2f2f;color:#ffc2c2}
.au-t.tAp{background:#7a4a1f;color:#ffd9a8}
.au-t.tA{background:#6b5f1f;color:#f2e9a8}
.au-t.tAm{background:#3f5f2a;color:#d4f0b8}
.au-t.tB{background:#25505c;color:#b8e6f0}
.au-t.tC{background:#2f3f6b;color:#c2d0ff}
.au-t.tD{background:#3a3f4a;color:#c7ccd6}
tr.au-done{opacity:.55}

/* ---- 拍卖流程（L2）---- */
.au-order{margin:8px 0;font-size:12px;color:#9aa4b2;display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.au-order b{color:#e6e9ef;margin-right:4px}
.au-rd{font-size:11px;padding:1px 6px;border-radius:4px;background:#232a38;color:#b8c2d0;white-space:nowrap}
.au-stage{margin-top:14px;border-color:#8a6d1f;box-shadow:0 0 0 1px rgba(224,179,65,.15)}
.au-lot{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;background:rgba(255,255,255,.04);margin-bottom:10px}
.au-lot-nm{font-size:17px}
.au-mode{margin-left:auto;font-size:12px;color:#e0b341}
.au-cur{font-size:14px;margin-bottom:8px;display:flex;align-items:center;gap:10px}
.au-cur b{font-size:18px;color:#e0b341}
.au-clock{margin-left:auto;font-variant-numeric:tabular-nums;font-size:22px;font-weight:700;padding:2px 10px;border-radius:8px;background:#232a38;color:#b8c2d0}
.au-clock.warn{background:#4a3a10;color:#ffd166}
.au-clock.out{background:#4a1818;color:#ff8080}
.au-chain{margin:8px 0;font-size:12px;color:#9aa4b2;display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.au-elig{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.au-elig .tag.off,.au-order .tag.off{opacity:.45}
.au-sealed-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:8px 0}
.au-sealed-cell{display:flex;flex-direction:column;gap:3px;font-size:12px}
.au-sealed-cell span{display:flex;justify-content:space-between;align-items:baseline;gap:6px}
.au-sealed-cell i{font-style:normal;font-size:10px;color:#9aa4b2}
.au-sealed-cell.off{opacity:.45}
.au-sealed-cell input{padding:5px 7px}
tr.au-invalid{opacity:.6}
tr.au-invalid td{background:rgba(255,80,80,.05)}
.au-dist{white-space:nowrap}
.au-dist .au-t{min-width:2.2em;padding:0 4px;margin-left:3px}
.au-dist i{font-style:normal;font-size:11px;color:#9aa4b2;margin:0 2px 0 2px}
/* button.mini 定义在 button.primary 之后会盖掉橙底只留深字，主操作用这个类 */
button.mini.au-go{background:var(--accent);border-color:var(--accent);color:#1a1200;font-weight:600}
button.mini.au-go:hover{filter:brightness(1.08)}
/* 全局 input[type=number]{width:100%} 是 (0,1,1)，纯类选择器压不住，得带上元素名 */
input.au-nnum{width:3.4em;padding:4px 2px;text-align:center;-moz-appearance:textfield}
input.au-nnum.wide{width:4.4em}
.au-nnum::-webkit-outer-spin-button,.au-nnum::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}

/* ---- 选手评分 ---- */
.score-cfg{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 0 10px;border-bottom:1px solid var(--border);margin-bottom:8px}
.score-cfg .field-label{margin:0;white-space:nowrap}
.score-cfg label.inline{gap:4px;white-space:nowrap}
.score-cfg input[type=number]{width:3.6em;padding:4px 6px;text-align:center}
.score-cfg select{width:auto;padding:4px 6px;font-size:12px}
.sc-v{font-variant-numeric:tabular-nums}
.sc-bar{background:var(--accent)}
.sc-thin{margin-left:2px}

/* ---- 性价比阵容推荐 ---- */
.au-team-acts{display:flex;gap:4px;margin-top:4px}
.au-plans{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:12px;margin-top:10px}
.au-plan{border:1px solid var(--border);border-radius:10px;padding:10px;background:rgba(255,255,255,.02)}
.au-plan-h{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:6px}
.au-plan-h b{font-size:14px;color:var(--accent)}
.au-plan .tbl{font-size:12px}
.au-plan .tbl{table-layout:auto;width:100%}
.au-plan .tbl td,.au-plan .tbl th{padding:3px 4px;white-space:nowrap}
.au-plan .tbl td:nth-child(2){max-width:11em;overflow:hidden;text-overflow:ellipsis}
.au-pos{display:inline-block;min-width:1.4em;text-align:center;font-size:11px;border-radius:3px;background:#2f3f6b;color:#c2d0ff}
.au-plan .hint i{font-style:normal;color:#e0b341}

/* ---- 只读分享快照 ---- */
.share-bar{margin:0 0 14px;padding:9px 14px;border-radius:10px;background:#1d2735;border:1px solid #2f4055;color:#b8c2d0;font-size:13px}
.share-bar.err{background:#3a1c1c;border-color:#6b2b2b;color:#ffb3b3}
body.readonly .tabs{pointer-events:none}

/* ===== 天梯资料弹窗（OpenDota 选手接口） ===== */
.ld-meta a{color:var(--accent)}
.ld-err{color:#e0b341}
.ld-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0 16px}
.ld-grid .tbl{font-size:12px}
.ld-grid .tbl th,.ld-grid .tbl td{padding:4px 8px}
#ld-heroes tr.ld-more{display:none}
#ld-heroes tr.ld-mine td:first-child{font-weight:600}
.ld-star{color:var(--accent)}
.ld-strip{display:flex;gap:2px;margin-top:6px;flex-wrap:wrap}
.ld-strip i{display:inline-block;width:9px;height:9px;border-radius:2px;background:var(--dire-dim)}
.ld-strip i.w{background:var(--radiant)}
.ld-strip i.l{background:var(--dire)}
.stat-tile .v .rank{font-size:14px;vertical-align:middle}
@media (max-width:900px){.ld-grid{grid-template-columns:1fr 1fr}}
@media (max-width:600px){.ld-grid{grid-template-columns:1fr}}
.ld-head{display:flex;gap:14px;align-items:flex-start}
.ld-head>div{min-width:0;flex:1}
.ld-avatar{width:56px;height:56px;border-radius:8px;border:1px solid var(--border);flex:none;margin-top:2px}
.ld-profile{margin-top:6px;font-size:13px;display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center}
.ld-profile .rank{vertical-align:middle}
.ld-plus{font-size:10px;font-weight:700;color:#1a1200;background:var(--accent);border-radius:3px;padding:0 4px;vertical-align:middle}
tr.ld-same td{color:var(--muted)}

/* ===== BP 助手 ===== */
.bp-layout{display:grid;grid-template-columns:420px 1fr;gap:16px;align-items:start}
.bp-modes{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.bp-mode{padding:4px 12px;border-radius:14px;background:var(--bg);border:1px solid var(--border);cursor:pointer;font-size:13px}
.bp-mode.on{border-color:var(--accent);color:var(--accent);font-weight:600}
.bp-mode.ally.on{border-color:var(--radiant);color:var(--radiant)}
.bp-mode.enemy.on{border-color:var(--dire);color:var(--dire)}
.bp-side{border:1px solid var(--border);border-radius:8px;padding:8px;margin-bottom:10px;background:var(--bg)}
.bp-side-head{font-weight:700;margin-bottom:6px;display:flex;justify-content:space-between;align-items:center}
.bp-side.ally .bp-side-head{color:var(--radiant)}
.bp-side.enemy .bp-side-head{color:var(--dire)}
.bp-slot{display:flex;align-items:center;gap:6px;flex-wrap:wrap;border:1px dashed var(--border);border-radius:6px;padding:5px 8px;margin-bottom:4px;font-size:13px}
.bp-slot.filled{border-style:solid;background:var(--panel)}
.bp-slot-hero{flex:1;font-weight:600;min-width:6em}
.bp-slot select{width:auto;padding:2px 4px;font-size:12px;max-width:9em}
.bp-slot-pool{width:100%;display:flex;gap:4px;flex-wrap:wrap}
.bp-slot-pool .mini.used{opacity:.4;text-decoration:line-through}
.bp-bans{display:flex;gap:4px;flex-wrap:wrap;align-items:center}
.bp-eval{font-size:13px}
.bp-pos-block{margin-bottom:10px}
.bp-pos-block h4,.bp-grid3 h4{margin:8px 0 4px;font-size:13px;color:var(--muted)}
.bp-list{display:flex;gap:5px;flex-wrap:wrap}
.bp-cand{display:inline-flex;align-items:center;gap:6px;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:3px 8px;font-size:12px;cursor:pointer}
.bp-cand:hover{border-color:var(--accent)}
.bp-cand.mine{border-color:rgba(224,168,58,.5)}
.bp-cand.ban:hover{border-color:var(--dire)}
.bp-cand b{font-variant-numeric:tabular-nums}
.bp-cand i{font-style:normal;font-size:11px;font-variant-numeric:tabular-nums}
.bp-cand i.up{color:var(--radiant)}
.bp-cand i.down{color:var(--dire)}
.bp-avoid{margin-top:4px}
.bp-grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.bp-heroes{display:flex;gap:4px;flex-wrap:wrap}
.bp-hero{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:3px 8px;font-size:12px;cursor:pointer}
.bp-hero:hover{border-color:var(--accent)}
.bp-hero.ally{background:var(--radiant-dim);border-color:var(--radiant);color:var(--radiant)}
.bp-hero.enemy{background:var(--dire-dim);border-color:var(--dire);color:var(--dire)}
.bp-hero.ban{opacity:.45;text-decoration:line-through}
.bp-hero.focus{border-color:var(--accent);box-shadow:0 0 0 2px rgba(224,168,58,.3)}
.bp-hero.nodata{opacity:.35;cursor:not-allowed}
@media (max-width:900px){.bp-layout{grid-template-columns:1fr}.bp-grid3{grid-template-columns:1fr}}
.bp-src{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.bp-cand i.hint{font-size:10px}
.bp-slot.empty{cursor:pointer}
.bp-slot.empty:hover{border-color:var(--accent)}
.bp-slot.target{border:1px solid var(--accent);box-shadow:0 0 0 2px rgba(224,168,58,.25);background:rgba(224,168,58,.06)}
.bp-slot.target .hint{color:var(--accent)}
.bp-move{display:inline-flex;align-items:center;gap:3px;font-size:12px}
.bp-move select{padding:2px 4px;font-size:12px}
