
/* Statistics display adapted from dozor_stats.html.
   Original algorithm author: Sergey <sergey@luberg.me> Luberg. */
  .stats-app{
    --bg:#f3f1ed;
    --surface:#ffffff;
    --surface-2:#f7f5f1;
    --text:#1b1a17;
    --text-dim:#5d5850;
    --text-faint:#8b857b;
    --border:#dcd6cc;
    --border-soft:#e9e4dc;
    --accent:#c4640c;
    --accent-soft:#f6e6d3;
    --accent-text:#8a450a;
    --warn:#a8700c;
    --warn-soft:#f6ecd5;
    --info:#3d6a9e;
    --info-soft:#e2ebf5;
    --shadow:0 1px 2px rgba(27,26,23,.05), 0 8px 24px -14px rgba(27,26,23,.18);

    /* табло всегда тёмное — как на сайте DozoR, цвета статусов рассчитаны на чёрный фон */
    --sb-bg:#0c0c0c;
    --sb-row:#121212;
    --sb-line:#2c2c2c;
    --sb-head:#f7a034;
    --sb-head-text:#1d1204;
    --sb-text:#e9e9e9;
    --sb-dim:#8d8d8d;
    --sb-team:#ffa53a;
    --st-h0:#f4f0c2;
    --st-h1:#5fd46c;
    --st-h2:#5aa7ff;
    --st-fail:#ff4b4b;
    --st-none:#e8e8e8;
    --st-stop:#ff55ff;
    --st-total:#ff5a3c;
  }
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]) .stats-app{
      --bg:#111214;
      --surface:#191a1d;
      --surface-2:#1f2024;
      --text:#e8e6e2;
      --text-dim:#a39f97;
      --text-faint:#75716a;
      --border:#2e2f33;
      --border-soft:#26272b;
      --accent:#ffa53a;
      --accent-soft:rgba(255,165,58,.13);
      --accent-text:#ffbd6e;
      --warn:#f0b429;
      --warn-soft:rgba(240,180,41,.13);
      --info:#7fb0ea;
      --info-soft:rgba(127,176,234,.13);
      --shadow:0 1px 2px rgba(0,0,0,.35), 0 12px 32px -16px rgba(0,0,0,.6);
    }
  }
  :root[data-theme="dark"] .stats-app{
    --bg:#111214;
    --surface:#191a1d;
    --surface-2:#1f2024;
    --text:#e8e6e2;
    --text-dim:#a39f97;
    --text-faint:#75716a;
    --border:#2e2f33;
    --border-soft:#26272b;
    --accent:#ffa53a;
    --accent-soft:rgba(255,165,58,.13);
    --accent-text:#ffbd6e;
    --warn:#f0b429;
    --warn-soft:rgba(240,180,41,.13);
    --info:#7fb0ea;
    --info-soft:rgba(127,176,234,.13);
    --shadow:0 1px 2px rgba(0,0,0,.35), 0 12px 32px -16px rgba(0,0,0,.6);
  }

  .stats-app *{box-sizing:border-box;}
  .stats-app{margin:0;}
  .stats-app{
    background:var(--bg); color:var(--text);
    font-family:var(--font-sans, system-ui); font-size:14px; line-height:1.5;
  }
  .stats-app .wrap{max-width:1400px; margin:0 auto; padding:28px 16px 80px;}
  .stats-app .mono{font-family:var(--font-mono, monospace); font-variant-numeric:tabular-nums;}
  .stats-app .label{
    font-family:var(--font-sans, system-ui); font-weight:600;
    text-transform:uppercase; letter-spacing:.09em; font-size:11.5px; color:var(--text-faint);
  }

  /* ---- шапка ---- */
  .stats-app .casebar{
    display:flex; align-items:flex-end; justify-content:space-between; gap:20px; flex-wrap:wrap;
    margin-bottom:20px; padding-bottom:18px; border-bottom:1px solid var(--border);
  }
  .stats-app .casebar h1{
    margin:0 0 4px; font-family:var(--font-sans, system-ui); font-weight:700;
    font-size:34px; letter-spacing:.01em; text-wrap:balance;
  }
  .stats-app .casebar p{margin:0; color:var(--text-dim); font-size:13.5px; max-width:60ch;}
  .stats-app .file-panel{display:flex; align-items:center; gap:10px; flex-wrap:wrap;}
  .stats-app .file-status{display:flex; flex-direction:column; gap:2px; text-align:right;}
  .stats-app .file-status .name{font-family:var(--font-mono, monospace); font-size:12.5px;}
  .stats-app .file-status .meta{font-size:11.5px; color:var(--text-faint);}
  .stats-app .btn{
    font-family:var(--font-sans, system-ui); font-weight:600; letter-spacing:.03em; font-size:14px;
    padding:9px 16px; border-radius:7px; border:1px solid var(--border); background:var(--surface);
    color:var(--text); cursor:pointer; text-transform:uppercase; transition:border-color .15s;
  }
  .stats-app .btn:hover{border-color:var(--accent);}
  .stats-app .btn:active{transform:translateY(1px);}
  .stats-app .btn.primary{background:var(--accent); border-color:var(--accent); color:#1d1204;}
  .stats-app .btn.small{font-size:12.5px; padding:6px 11px;}
  .stats-app .btn:focus-visible, .stats-app input:focus-visible, .stats-app select:focus-visible, .stats-app .linkish:focus-visible{outline:2px solid var(--accent); outline-offset:2px;}
  .stats-app #stats-file-input{display:none;}
  .stats-app .drop-hint{
    position:fixed; inset:0; z-index:50; display:none; align-items:center; justify-content:center;
    background:rgba(0,0,0,.55); color:#fff; font-family:var(--font-sans, system-ui);
    font-size:28px; font-weight:700; letter-spacing:.02em;
  }
  .stats-app.dragging .drop-hint{display:flex;}
  .stats-app .error{
    display:none; margin:0 0 16px; padding:12px 14px; border-radius:8px;
    background:var(--warn-soft); border:1px solid var(--warn); color:var(--text);
  }

  /* ---- табло (как на сайте DozoR) ---- */
  .stats-app .board-panel{
    background:var(--sb-bg); color:var(--sb-text); border-radius:10px; padding:14px 14px 12px;
    box-shadow:var(--shadow); border:1px solid #222;
  }
  .stats-app .board-top{display:flex; align-items:baseline; gap:16px; flex-wrap:wrap; margin-bottom:6px;}
  .stats-app .board-top h2{margin:0; font-family:var(--font-sans, system-ui); font-weight:700; font-size:20px; color:#f2f2f2;}
  .stats-app .linkish{
    background:none; border:none; padding:0; cursor:pointer; font:inherit; font-size:12.5px;
    color:var(--sb-team); text-decoration:underline; text-underline-offset:2px;
  }
  .stats-app .board-scroll{overflow-x:auto; margin-top:8px; border:1px solid var(--sb-line);}
  .stats-app table.board{border-collapse:collapse; font-size:12px; background:var(--sb-row);}
  .stats-app table.board th, .stats-app table.board td{border:1px solid var(--sb-line); text-align:center; padding:0;}
  .stats-app table.board thead th{
    background:var(--sb-head); color:var(--sb-head-text); font-family:var(--font-sans, system-ui);
    font-weight:600; font-size:11px; line-height:1.25; padding:6px 5px; vertical-align:middle;
    min-width:66px; max-width:92px; border-color:#c77a1d; cursor:pointer;
  }
  .stats-app table.board thead th.plain{cursor:default;}
  .stats-app table.board thead th .n{display:block; text-decoration:underline; text-underline-offset:2px;}
  .stats-app table.board thead th .sub{display:block; font-weight:400; opacity:.8;}
  .stats-app table.board thead th.team-h{min-width:170px; position:sticky; left:0; z-index:2;}
  .stats-app table.board thead th.sel{box-shadow:inset 0 -3px 0 #1d1204;}
  .stats-app table.board tbody th{
    position:sticky; left:0; z-index:1; background:var(--sb-row); text-align:left;
    padding:8px 10px; white-space:nowrap; font-weight:600; font-size:12.5px;
  }
  .stats-app table.board tbody th button{
    background:none; border:none; padding:0; cursor:pointer; font:inherit; color:var(--sb-team);
    text-decoration:underline; text-underline-offset:2px;
  }
  .stats-app table.board td{height:34px; font-family:var(--font-mono, monospace); font-variant-numeric:tabular-nums; white-space:nowrap;}
  .stats-app table.board td.cell{cursor:pointer; padding:0 6px;}
  .stats-app table.board td.cell:hover{outline:1px solid #777; outline-offset:-2px;}
  .stats-app table.board td.cell.selected{outline:2px solid var(--sb-team); outline-offset:-2px;}
  .stats-app table.board td.tot{padding:0 8px; color:var(--sb-text);}
  .stats-app .st-h0{color:var(--st-h0);}
  .stats-app .st-h1{color:var(--st-h1);}
  .stats-app .st-h2{color:var(--st-h2);}
  .stats-app .st-fail{color:var(--st-fail);}
  .stats-app .st-none{color:var(--st-none);}
  .stats-app .st-stop{color:var(--st-stop);}
  .stats-app .st-muted{color:var(--sb-dim);}
  .stats-app .st-bon{color:var(--sb-text);}
  .stats-app .cell.best.st-bon .v{background:#e6e6e6;}
  .stats-app .st-thr{color:var(--sb-text);}
  .stats-app .cell.best .v{padding:2px 5px; border-radius:2px; color:#111;}
  .stats-app .cell.best.st-h0 .v{background:var(--st-h0);}
  .stats-app .cell.best.st-h1 .v{background:var(--st-h1);}
  .stats-app .cell.best.st-h2 .v{background:var(--st-h2);}
  .stats-app .mark{font-size:9px; vertical-align:super; margin-left:1px; color:var(--sb-dim); font-family:var(--font-sans, system-ui);}
  .stats-app td.total{color:var(--st-total) !important; font-weight:600;}
  .stats-app td.place{color:var(--st-total) !important; font-weight:600;}
  .stats-app table.board.hide-levels .lvcol{display:none;}
  .stats-app table.board.hide-stubs .stubcol{display:none;}
  .stats-app .legend{margin-top:10px; font-size:12px; display:flex; flex-wrap:wrap; gap:4px 6px; align-items:center;}
  .stats-app .legend .sep{color:var(--sb-dim);}
  .stats-app .legend-extra{margin-top:4px; font-size:11.5px; color:var(--sb-dim);}
  .stats-app .legend-extra .mark{font-size:11px; vertical-align:baseline;}
  .stats-app .legend-extra .bestdemo{background:var(--st-h1); color:#111; padding:0 4px; border-radius:2px; font-family:var(--font-mono, monospace);}

  /* ---- секции ---- */
  .stats-app .section-head{display:flex; align-items:baseline; justify-content:space-between; margin:30px 0 12px; gap:12px; flex-wrap:wrap;}
  .stats-app .section-head h2{font-family:var(--font-sans, system-ui); font-weight:700; font-size:21px; margin:0;}
  .stats-app .section-head .hint{font-size:12.5px; color:var(--text-faint);}
  .stats-app .card{background:var(--surface); border:1px solid var(--border); border-radius:10px; box-shadow:var(--shadow);}

  /* ---- детали ---- */
  .stats-app .details{padding:16px 18px;}
  .stats-app .details.empty{color:var(--text-faint); font-size:13.5px;}
  .stats-app .details h3{margin:0 0 10px; font-family:var(--font-sans, system-ui); font-weight:700; font-size:19px;}
  .stats-app .details h3 .tag{font-family:var(--font-sans, system-ui); font-size:12px; font-weight:600; padding:2px 8px; border-radius:5px; margin-left:8px; vertical-align:middle; background:var(--surface-2); border:1px solid var(--border); color:var(--text-dim);}
  .stats-app .kv{display:grid; grid-template-columns:repeat(auto-fill, minmax(170px,1fr)); gap:12px 20px; margin:6px 0 12px;}
  .stats-app .kv .k{font-size:11px; color:var(--text-faint); text-transform:uppercase; letter-spacing:.06em;}
  .stats-app .kv .v{font-family:var(--font-mono, monospace); font-size:15px; font-weight:600;}
  .stats-app .expl{font-size:13px; color:var(--text-dim); background:var(--accent-soft); border-left:3px solid var(--accent); padding:9px 12px; border-radius:0 6px 6px 0;}
  .stats-app .expl b{color:var(--text);}
  .stats-app table.mini{border-collapse:collapse; width:100%; font-size:12.5px; margin-top:8px;}
  .stats-app table.mini th, .stats-app table.mini td{padding:5px 8px; border-bottom:1px solid var(--border-soft); text-align:left;}
  .stats-app table.mini th{font-family:var(--font-sans, system-ui); font-weight:600; font-size:12px; color:var(--text-faint); text-transform:uppercase; letter-spacing:.05em;}
  .stats-app table.mini td.mono{white-space:nowrap;}
  .stats-app .pill{display:inline-block; font-size:11.5px; padding:1px 7px; border-radius:4px; font-weight:600; white-space:nowrap;}
  .stats-app .pill.ok{background:#e1f0e4; color:#2c5c3a;}
  .stats-app .pill.bad{background:#f7e1dd; color:#8a2c22;}
  .stats-app .pill.mid{background:var(--surface-2); color:var(--text-dim); border:1px solid var(--border-soft);}
  .stats-app .pill.spoiler{background:var(--info-soft); color:var(--info);}
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]) .stats-app .pill.ok{background:rgba(95,191,122,.15); color:#8fdca5;}
    :root:not([data-theme="light"]) .stats-app .pill.bad{background:rgba(255,107,87,.15); color:#ff9a8c;}
  }
  :root[data-theme="dark"] .stats-app .pill.ok{background:rgba(95,191,122,.15); color:#8fdca5;}
  :root[data-theme="dark"] .stats-app .pill.bad{background:rgba(255,107,87,.15); color:#ff9a8c;}
  .stats-app .mini-scroll{overflow-x:auto;}

  /* ---- замечания ---- */
  .stats-app .notes{display:flex; flex-direction:column; gap:8px;}
  .stats-app .note{display:flex; gap:10px; align-items:flex-start; padding:10px 14px; font-size:13px; color:var(--text-dim);}
  .stats-app .note .dot{width:8px; height:8px; border-radius:50%; margin-top:6px; flex-shrink:0;}
  .stats-app .note.warn .dot{background:var(--warn);}
  .stats-app .note.info .dot{background:var(--info);}
  .stats-app .note b{color:var(--text);}

  /* ---- параметры ---- */
  .stats-app details.settings > summary{
    cursor:pointer; list-style:none; display:flex; align-items:baseline; gap:12px; flex-wrap:wrap;
    padding:14px 18px; font-family:var(--font-sans, system-ui); font-weight:700; font-size:19px;
  }
  .stats-app details.settings > summary::-webkit-details-marker{display:none;}
  .stats-app details.settings > summary .chev{display:inline-block; transition:transform .15s; color:var(--text-faint);}
  .stats-app details.settings[open] > summary .chev{transform:rotate(90deg);}
  .stats-app details.settings > summary .hint{font-family:var(--font-sans, system-ui); font-weight:400; font-size:12.5px; color:var(--text-faint);}
  .stats-app .settings-body{padding:0 18px 18px;}
  .stats-app .grid-game{display:grid; grid-template-columns:repeat(auto-fill, minmax(230px,1fr)); gap:12px 18px; margin-bottom:18px;}
  .stats-app .field{display:flex; flex-direction:column; gap:4px;}
  .stats-app .field span{font-size:12px; color:var(--text-dim);}
  .stats-app input[type=number], .stats-app input[type=text], .stats-app input[type=datetime-local], .stats-app select{
    font-family:var(--font-sans, system-ui); font-size:13px; padding:6px 8px; border-radius:6px;
    border:1px solid var(--border); background:var(--surface); color:var(--text); min-width:0;
  }
  .stats-app input[type=number]{width:74px; font-family:var(--font-mono, monospace);}
  .stats-app input::placeholder{color:var(--text-faint);}
  .stats-app table.cfg{border-collapse:collapse; width:100%; font-size:12.5px;}
  .stats-app table.cfg th, .stats-app table.cfg td{padding:5px 6px; border-bottom:1px solid var(--border-soft); text-align:left; vertical-align:middle;}
  .stats-app table.cfg th{font-family:var(--font-sans, system-ui); font-weight:600; font-size:12px; color:var(--text-faint); text-transform:uppercase; letter-spacing:.04em; white-space:nowrap;}
  .stats-app table.cfg td.lvname{font-weight:600; white-space:nowrap;}
  .stats-app .src{font-size:11.5px; color:var(--text-faint); max-width:320px;}
  .stats-app .src.est{color:var(--warn);}
  .stats-app .cfg-scroll{overflow-x:auto;}
  .stats-app .cfg-actions{display:flex; gap:10px; flex-wrap:wrap; margin-top:14px;}
  .stats-app .subhead{font-family:var(--font-sans, system-ui); font-weight:700; font-size:16px; margin:18px 0 6px;}
  .stats-app .subnote{font-size:12.5px; color:var(--text-faint); margin:0 0 8px;}

  .stats-app footer{margin-top:36px; padding-top:16px; border-top:1px solid var(--border); color:var(--text-faint); font-size:12px; line-height:1.7;}
  .stats-app footer b{color:var(--text-dim);}

  @media (max-width:760px){
    .stats-app .casebar h1{font-size:28px;}
    .stats-app .file-status{text-align:left;}
    .stats-app .file-panel{width:100%;}
  }

.stats-app button:disabled{ opacity: .5; cursor: default; }

/* The integrated view inherits the application's palette and typography.
   The DozoR scoreboard retains its status colors. */
#view-stats.stats-app {
  display: block;
  overflow: auto;
  --bg: var(--bg-void);
  --surface: var(--bg-panel);
  --surface-2: var(--bg-elevated);
  --text: inherit;
  --text-dim: var(--text-muted);
  --text-faint: inherit;
  --border: inherit;
  --border-soft: var(--border-input);
  --accent: var(--amber);
  --accent-soft: var(--amber-glow);
  --accent-text: var(--amber-text);
  --warn: inherit;
  --warn-soft: inherit;
  --shadow: none;
}
#view-stats .wrap { max-width: none; padding: 28px 24px 64px; }
#view-stats .casebar h1 { font-size: 26px; }
#view-stats .btn.primary { color: var(--text-on-accent); }
body:not([data-mode="stats"]) #view-stats,
body:not([data-mode="stats"]) .stats-only,
body[data-mode="stats"] .chat-only,
body[data-mode="stats"] .view-chat,
body[data-mode="stats"] .tool-chip-tooltip { display: none; }
.stats-nav { padding: 8px 22px; color: var(--text-muted); font-size: 13px; }
@media (max-width:720px) {
  #view-stats .wrap { padding: 20px 12px 40px; }
  #view-stats .casebar h1 { font-size: 24px; }
}

/* Exported files start with a readable snapshot, even when scripts are blocked. */
.stats-offline:not(.stats-interactive) > .wrap { display:none; }
.stats-offline.stats-interactive > #stats-static { display:none; }
.stats-snapshot { margin:0 auto; padding:20px; max-width:1800px; }
.stats-snapshot .card { margin:12px 0; }
.stats-snapshot article { border-top:1px solid var(--border); padding:12px 0; }
.stats-snapshot table.board td a { color:inherit; text-decoration:none; display:block; }
.stats-snapshot table.board th a { color:inherit; }
.stats-snapshot pre { white-space:pre-wrap; overflow-wrap:anywhere; }
.stats-snapshot .snapshot-warning { color:var(--warn); }
.stats-snapshot summary { cursor:pointer; }
@media print {
  body.stats-offline > .wrap { display:none !important; }
  body.stats-offline > #stats-static { display:block !important; }
}
