/* Страница «Турниры»: список, новый турнир и открытый турнир.

   Сетка на вылет — «ступенькой»: половины сходятся к финалу в центре, под
   финалом — матч за 3-е место. Швейцарка — кругами, как на HLTV. Группы —
   маленькой сеткой и таблицей. Нажатие на матч открывает окно справа (на
   телефоне — снизу).

   Цвета — только именами из app.css. */

/* Сетке к центру нужна ширина: на 16 командах это семь столбцов. */
:root{--page:1320px;--cl:#3a4858}

.muted{color:var(--txt-dim);font-size:13px;line-height:1.6}
.good{color:var(--win-t)}
.warn{color:var(--accent-hi)}
.block{margin:0 0 34px}
.stnote{color:var(--txt-dim);font-size:13px;line-height:1.6;margin:0 0 12px}

/* Плашка состояния. Словами, а не цветом: «заявки» от «идёт» на
   серо-зелёном не отличишь вовсе. */
.chip{font-family:var(--man);font-weight:800;font-size:10px;letter-spacing:.12em;text-transform:uppercase;
  padding:4px 8px;border:1px solid var(--line);border-radius:3px;color:var(--txt-dim);white-space:nowrap;
  display:inline-block;line-height:1.3}
.chip.st-play{color:var(--win-t);border-color:var(--win)}
.chip.st-entry,.chip.st-wait{color:var(--accent-hi);border-color:var(--accent)}
.chip.st-done{color:var(--txt-dim)}
.chip.st-out{color:var(--loss-t);border-color:rgba(214,58,42,.6)}
.chip.mine{color:#fff;border-color:var(--txt)}

/* ───────── шапка турнира ───────── */
.ch2{margin:0 0 6px}
.ch2 .back{color:var(--txt-dim);text-decoration:none;font-size:13px;display:inline-block;padding:4px 0}
.ch2 .back:hover{color:var(--accent-hi)}
.ch2 .top{display:flex;align-items:center;gap:12px;margin:8px 0 6px;flex-wrap:wrap}
.ch2 h1{font-family:var(--ost);font-weight:700;font-size:30px;letter-spacing:.06em;text-transform:uppercase;
  margin:0;color:#fff;line-height:1.1;overflow-wrap:anywhere}
.ch2 .fmt{color:var(--txt-dim);font-size:13.5px;display:flex;gap:6px 14px;flex-wrap:wrap;align-items:center}
.ch2 .fmt b{color:var(--txt);font-weight:700}
.ch2 .admin{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
/* Сразу за шапкой — этап (нет ни полосы этапов, ни идущих матчей). */
.ch2 + .block{margin-top:26px}
.champ{display:inline-flex;align-items:baseline;gap:6px}
.champ i{font-style:normal;font-size:10.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
  color:var(--txt-dim)}
.champ b,.champ a.plink{color:var(--accent-hi);font-family:var(--ost);font-size:15px;letter-spacing:.06em}

/* этапы полосой: где турнир сейчас */
.stg{display:flex;margin:16px 0 26px;flex-wrap:wrap}
.stg a{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--panel);border:1px solid var(--line);
  text-decoration:none;color:var(--txt-dim);font-size:12.5px;min-width:0}
.stg a:first-child{border-radius:4px 0 0 4px}
.stg a:last-child{border-radius:0 4px 4px 0}
.stg a + a{border-left:0}
.stg a:hover{background:var(--panel-3)}
.stg .n{font-family:var(--ost);font-size:13px;width:22px;height:22px;border-radius:50%;border:1px solid var(--line);
  display:grid;place-items:center;color:var(--txt-dim);flex:none}
.stg b{font-family:var(--ost);font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--txt);font-size:14px;
  white-space:nowrap}
.stg i{font-style:normal;white-space:nowrap}
.stg a.done .n{background:var(--win);border-color:var(--win);color:#0f141a}
.stg a.now{background:var(--accent-bg);border-color:var(--accent)}
.stg a.now .n{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.stg a.now i{color:var(--accent-hi)}

/* заголовок раздела с подписью и переключателем справа */
.sh{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding-bottom:8px;margin:0 0 18px;
  flex-wrap:wrap}
.sh h2{font-family:var(--ost);font-weight:600;font-size:15px;letter-spacing:.14em;text-transform:uppercase;color:var(--txt);
  margin:0;display:flex;align-items:center;gap:9px}
.sh h2::before{content:"";display:inline-block;width:3px;height:14px;background:var(--accent);border-radius:2px}
.sh .sub{color:var(--txt-dim);font-size:12.5px}
.sh .seg,.sh .act{margin-left:auto}
.sh .seg{display:flex}
.sh .seg button{font-size:10px;padding:6px 10px;border-radius:0}
.sh .seg button:first-child{border-radius:3px 0 0 3px}
.sh .seg button:last-child{border-radius:0 3px 3px 0;border-left:0}
.sh .seg button.on{background:var(--panel-3);color:#fff;border-color:var(--line)}

/* ───────── лицо команды ───────── */
.av{width:20px;height:20px;flex:0 0 20px;border:1px solid var(--line);border-radius:3px;display:grid;place-items:center;
  font-family:var(--ost);font-size:8px;letter-spacing:.04em;object-fit:cover;background:var(--panel-2);overflow:hidden;
  color:var(--txt-dim);white-space:nowrap}
.av.ph{font-family:var(--man);font-weight:800;font-size:7.5px;letter-spacing:0}
.av.none{visibility:hidden}
.av.big{width:44px;height:44px;flex-basis:44px;font-size:13px}
.av.big.ph{font-size:11px}

/* ───────── клетка матча ─────────
   Клетка — кнопка (её нажимают, чтобы открыть окно игры), поэтому
   сначала снимаем с неё всё, что сайт вешает на кнопки. */
.mx{position:relative;display:block;background:var(--panel);border:1px solid var(--line);border-radius:3px;width:100%;
  padding:0;margin:0;font:inherit;letter-spacing:normal;text-transform:none;text-align:left;color:var(--txt);
  line-height:1.45;cursor:default}
button.mx{cursor:pointer}
button.mx:hover:not(:disabled){background:var(--panel);border-color:var(--txt-dim)}
.mx .r{display:flex;align-items:center;gap:8px;height:28px;padding:0 9px 0 0;border-left:3px solid transparent;
  font-size:13px;color:var(--txt);min-width:0}
.mx .r + .r{border-top:1px solid var(--line)}
.mx .r .av{margin-left:6px}
.mx .r .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mx .r .sd{font-size:10px;font-weight:800;color:var(--txt-dim);letter-spacing:.04em;flex:none}
.mx .r .sc{font-family:var(--ost);font-size:15px;min-width:18px;text-align:right;color:var(--txt-dim);flex:none}
.mx .r.w{border-left-color:var(--win)}
.mx .r.w .nm{color:#fff;font-weight:800}
.mx .r.w .sc{color:#fff}
.mx .r.l{border-left-color:var(--loss)}
.mx .r.l .nm,.mx .r.l .sc{color:var(--txt-dim)}
.mx .r.l .av{opacity:.5}
.mx .r.e{padding-left:9px}
.mx .r.e .nm{color:var(--txt-dim);font-style:italic;font-size:12px}
.mx .r.e .sc{display:none}
.mx .mm{position:absolute;left:0;bottom:calc(100% + 4px);font-size:9.5px;font-weight:800;letter-spacing:.1em;
  text-transform:uppercase;color:var(--txt-dim);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.mx .mm.t{color:var(--accent-hi)}
.mx.live{border-color:var(--live);box-shadow:0 0 0 1px var(--live)}
.mx .mm.live{color:var(--loss-t)}
.mx.live .r .sc{color:#fff}
.mx.bye{opacity:.8}
.mx.dead{opacity:.45;border-style:dashed}
.mx.sel{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.mx.rev .r{flex-direction:row-reverse;padding:0 0 0 9px;border-left:0;border-right:3px solid transparent}
.mx.rev .r .av{margin:0 6px 0 0}
.mx.rev .r .nm{text-align:right}
.mx.rev .r .sc{text-align:left}
.mx.rev .r.w{border-right-color:var(--win)}
.mx.rev .r.l{border-right-color:var(--loss)}
.mx.rev .r.e{padding-left:0;padding-right:9px}
.mx.rev .mm{left:auto;right:0}
.mx.big .r{height:38px;font-size:15px;gap:10px}
.mx.big .r .sc{font-size:21px;min-width:22px}
.mx.big .r .av{width:26px;height:26px;flex-basis:26px;font-size:9px}
.mx.big .mm{font-size:10.5px}

/* ───────── сетка: половины сходятся к финалу ─────────
   Высота столбцов одна (--bh), клетки разведены по ней поровну — тогда
   пара всегда стоит ровно напротив своей клетки следующего круга. Линии —
   псевдоэлементами. Шире окна — прокручивается сама сетка, а не страница;
   width:max-content + margin:auto держит её по центру, пока влезает. */
.bkwrap{overflow-x:auto;padding:22px 2px 6px}
.bk{--cw:196px;--g:44px;display:flex;align-items:flex-start;width:max-content;margin:0 auto}
.bk-side{display:flex;gap:var(--g)}
.bk-side.right{flex-direction:row-reverse}
.bk-col{width:var(--cw);flex:none}
.bk-h{font-family:var(--ost);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--txt-dim);
  text-align:center;padding-bottom:8px;margin-bottom:6px;border-bottom:1px solid var(--line);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.bk-h i{font-style:normal;opacity:.75;margin-left:6px;font-size:11px}
.bk-body{display:flex;flex-direction:column;height:var(--bh)}
.bk .pair,.bk .single{flex:1;display:flex;flex-direction:column;position:relative}
.bk .slot{flex:1;display:flex;align-items:center;position:relative}
.bk-mid{width:calc(var(--cw) + 44px);flex:none;margin:0 var(--g)}
.bk-mid .bk-h{color:var(--accent-hi)}
/* линии слева */
.bk-side.left .slot::after{content:"";position:absolute;right:calc(var(--g) / -2);width:calc(var(--g) / 2);top:50%;
  border-top:1px solid var(--cl)}
.bk-side.left .pair::after{content:"";position:absolute;right:calc(var(--g) / -2);top:25%;bottom:25%;
  border-right:1px solid var(--cl)}
.bk-side.left .bk-col + .bk-col .slot::before{content:"";position:absolute;left:calc(var(--g) / -2);
  width:calc(var(--g) / 2);top:50%;border-top:1px solid var(--cl)}
.bk-side.left .bk-col.tofinal .slot::after{right:calc(var(--g) * -1);width:var(--g)}
.bk-side.left .bk-col.last .slot::after{display:none}
.bk-side.left .bk-col.straight .slot::after{right:calc(var(--g) * -1);width:var(--g)}
/* линии справа — зеркально */
.bk-side.right .slot::after{content:"";position:absolute;left:calc(var(--g) / -2);width:calc(var(--g) / 2);top:50%;
  border-top:1px solid var(--cl)}
.bk-side.right .pair::after{content:"";position:absolute;left:calc(var(--g) / -2);top:25%;bottom:25%;
  border-left:1px solid var(--cl)}
.bk-side.right .bk-col + .bk-col .slot::before{content:"";position:absolute;right:calc(var(--g) / -2);
  width:calc(var(--g) / 2);top:50%;border-top:1px solid var(--cl)}
.bk-side.right .bk-col.tofinal .slot::after{left:calc(var(--g) * -1);width:var(--g)}
.bk-third{margin-top:22px}
.bk-third .bk-h{color:var(--txt-dim)}
.bk-third .mx{margin-top:22px}
.champ2{display:flex;align-items:center;justify-content:center;gap:10px;font-size:11px;font-weight:800;
  letter-spacing:.12em;text-transform:uppercase;color:var(--txt-dim);margin:14px 0 0}
.champ2 svg{width:22px;height:22px;color:var(--accent);flex:none}
.champ2 b{color:var(--accent-hi);font-family:var(--ost);font-size:15px;letter-spacing:.06em}

/* круги столбиком — телефон */
.rlist{display:none}
.rlist .rd{margin:0 0 22px}
.rlist .rdh{display:flex;justify-content:space-between;gap:10px;font-family:var(--ost);font-size:13px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--txt);border-bottom:1px solid var(--line);padding-bottom:7px;margin:0 0 6px}
.rlist .rdh i{font-style:normal;color:var(--txt-dim);font-size:11px}
.rlist .rdh.now{color:var(--accent-hi)}
.rlist .mx{margin-top:22px}
.rlist .rd.done .mx{margin-top:8px}
.rlist .two{display:grid;grid-template-columns:1fr 1fr;gap:0 8px}

/* двойное исключение и круговой из ручной сборки: круги столбцами */
.plain{display:flex;gap:18px;overflow-x:auto;padding:4px 2px 8px;align-items:flex-start}
.pcol{flex:0 0 200px;display:flex;flex-direction:column}
.pcol .mx{margin-top:22px}
.pcol .ptit{font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--txt-dim);
  margin:14px 0 -16px}
.pcol .ptit.br-l{color:var(--t)}
.pcol .ptit.br-m{color:var(--accent-hi)}

/* ───────── швейцарка ───────── */
.sw{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(150px,1fr);gap:16px;align-items:start;
  overflow-x:auto;padding:0 2px 6px}
.swcol .bk-h{margin-bottom:10px}
.rec{background:var(--bg-top);border:1px solid var(--line);border-radius:4px;padding:8px 8px 9px;margin:0 0 12px}
.rech{display:flex;justify-content:space-between;align-items:baseline;font-family:var(--ost);font-size:14px;
  letter-spacing:.1em;color:var(--txt);margin:0 0 7px}
.rech i{font-style:normal;color:var(--txt-dim);font-size:10.5px;font-family:var(--man);font-weight:800;letter-spacing:.1em}
.rec .mx{margin:0 0 6px}
.rec .mx:last-child{margin:0}
.rec .mx .r{height:25px;font-size:12.5px}
.rec.up{border-color:var(--win);background:rgba(31,157,90,.10)}
.rec.up .rech{color:var(--win-t)}
.rec.out{border-color:rgba(214,58,42,.8);background:rgba(214,58,42,.08)}
.rec.out .rech{color:var(--loss-t)}
.rec.later{border-style:dashed;color:var(--txt-dim);font-size:12px;text-align:center;padding:12px 8px;background:transparent}
.tchip{display:flex;align-items:center;gap:7px;font-size:12.5px;padding:3px 0;color:var(--txt);min-width:0}
.tchip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rec.out .tchip{color:var(--txt-dim)}
.swmore{display:none;margin:12px 0 0}
/* таблица швейцарки и кругового. Проходная черта — линией, а не только
   цветом: кто выше неё, тот идёт дальше. */
.swtab{width:100%;border-collapse:collapse;font-size:13px}
.swtab th{font-family:var(--man);font-weight:800;font-size:10px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--txt-dim);text-align:left;padding:7px 6px;border-bottom:1px solid var(--line);white-space:nowrap}
.swtab td{padding:7px 6px;border-bottom:1px solid var(--line)}
.swtab td.p{color:var(--txt-dim);width:26px;font-family:var(--ost)}
.swtab td.t{display:flex;align-items:center;gap:8px;min-width:0}
.swtab td.s{font-family:var(--ost);font-size:15px;text-align:right}
.swtab .bux{font-family:var(--ost);color:var(--txt-dim);cursor:help;text-align:right;width:70px}
.swtab tr.up td.s{color:var(--win-t)}
.swtab tr.out td{color:var(--txt-dim)}
.swtab tr.cut td{border-bottom:2px solid var(--accent)}
.swtab .q{font-size:9.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--win-t);text-align:right}
.swtab tr.out .q{color:var(--txt-dim)}
.swtab.phone{display:none}

/* ───────── группы ───────── */
.grps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.grps.one{grid-template-columns:minmax(0,1fr)}
.grp{background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:14px 16px 16px;min-width:0}
.grp + .grp{margin-top:0}
.grp.wide{margin:0 0 20px}
.grph{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:0 0 12px}
.grph b{font-family:var(--ost);font-size:18px;letter-spacing:.1em;text-transform:uppercase;color:#fff}
.grph span{font-size:12px;color:var(--txt-dim)}
.grp .bk{margin:0;--cw:176px;--g:34px}
.grp .bk + .bk,.grp .dropline + .bk{margin-top:14px}
.grp .bk-h{text-align:left;font-size:11px;margin-bottom:4px}
.grp .grow{overflow:visible}
.grp .gscroll{overflow-x:auto}
.bk-col.qcol{width:auto;min-width:120px}
.qcol .bk-h{visibility:hidden}
.qcol .slot{flex-direction:column;align-items:flex-start;justify-content:center;gap:6px}
.bk-side.left .bk-col.qcol .slot::after{display:none}
.qtag{display:inline-block;font-size:9.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;padding:4px 7px;
  border-radius:3px;border:1px solid var(--win);color:var(--win-t);background:rgba(31,157,90,.10);white-space:nowrap}
.qtag.q2{border-color:var(--accent);color:var(--accent-hi);background:var(--accent-bg)}
/* Откуда в нижний ряд падают проигравшие. Ширину первой колонки ставит
   страница — по ширине клеток этой группы. */
.grp .dropline{font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--loss-t);opacity:.8;
  margin:10px 0 2px;display:grid;grid-template-columns:210px 1fr;gap:0 8px}
.glab{font-family:var(--ost);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--txt-dim);
  margin:0 0 6px}
.gleft .glab + .bk{margin-top:0}
.gleft .dropline + .glab{margin-top:8px}
.grp.wide .gbody.two{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:28px;align-items:start}
.grp.wide .gleft{min-width:0;overflow-x:auto}
.grp.wide .gright{border-left:1px solid var(--line);padding-left:22px}
.gtab{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:14px}
.grp.wide .gtab{margin-top:6px}
.gtab td{padding:6px 6px;border-top:1px solid var(--line)}
.gtab td.p{color:var(--txt-dim);width:34px;white-space:nowrap;font-family:var(--ost)}
.gtab td.t{display:flex;align-items:center;gap:8px;min-width:0}
.gtab td.s{font-family:var(--ost);font-size:14px;text-align:right;width:44px}
.gtab td.q{text-align:right;width:120px;color:var(--txt-dim);font-size:11.5px}
.gtab tr.out td{color:var(--txt-dim)}
.gtab tr.out .av{opacity:.5}
/* матчи группы списком — телефон */
.glist{display:none}
.glist .gt{font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--txt-dim);
  margin:16px 0 -14px}
.glist .mx{margin-top:22px}
.gmore{display:none;margin:12px 0 0}

/* ───────── идущие матчи полосой ───────── */
.livebars{margin:16px 0 0}
.livebar{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);
  border-left:3px solid var(--live);border-radius:4px;padding:10px 14px;margin:0 0 8px;font-size:13.5px}
.livebar .lv{color:var(--loss-t);font-size:10.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap}
.livebar .vs{display:flex;align-items:center;gap:8px;font-weight:800;min-width:0}
.livebar .vs span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.livebar .vs b{font-family:var(--ost);font-size:17px;color:#fff;margin:0 4px}
.livebar .dim2{color:var(--txt-dim);font-size:12.5px}
/* Сервер матча: турнирных серверов бывает несколько. */
.livebar .srv{color:var(--txt-dim);font-size:11px;font-weight:800;letter-spacing:.08em;
  text-transform:uppercase;border:1px solid var(--line);border-radius:3px;padding:2px 7px;white-space:nowrap}
.livebar a.btn{margin-left:auto}
@media (max-width:640px){
  .livebar{flex-wrap:wrap;gap:8px}
  .livebar .vs{flex:1 1 100%;order:-1}
  /* Кнопка — своей строкой во всю ширину: с именем сервера строка
     «идёт · полуфинал · сервер» в телефон уже не влезает вместе с ней,
     и у одних полос кнопка была справа, у других — под ними слева. */
  .livebar a.btn{flex:1 1 100%;margin-left:0;text-align:center}
}

/* ───────── окно игры ───────── */
.cdim{position:fixed;inset:0;background:rgba(5,8,12,.6);z-index:90}
.drawer{position:fixed;top:0;right:0;bottom:0;width:440px;max-width:100%;background:var(--panel);
  border-left:1px solid var(--line);z-index:91;padding:18px 22px 24px;overflow:auto;box-shadow:-24px 0 48px rgba(0,0,0,.45)}
.dwh{display:flex;align-items:center;gap:10px;margin:0 0 16px}
.dwh b{font-family:var(--ost);font-size:15px;letter-spacing:.12em;text-transform:uppercase;color:var(--txt);min-width:0}
.dwh .x{margin-left:auto;width:34px;height:34px;padding:0;display:grid;place-items:center;font-size:14px;letter-spacing:0;
  flex:none}
.dwvs{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:10px;padding:14px 0 12px;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.dwvs .tm{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;font-weight:800;font-size:14px;
  min-width:0;overflow-wrap:anywhere}
.dwvs .tm a{color:var(--txt);text-decoration:none}
.dwvs .tm a:hover{color:var(--accent-hi)}
.dwvs .tm.w a{color:#fff}
.dwvs .tm .wait{color:var(--txt-dim);font-weight:600;font-style:italic;font-size:12.5px}
.dwvs .sc{font-family:var(--ost);font-size:34px;color:#fff;letter-spacing:.04em}
.dwvs .sc i{color:var(--txt-dim);font-style:normal;margin:0 6px}
.dwvs .sc.vs{font-size:18px;color:var(--txt-dim);letter-spacing:.12em}
.dwline{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;font-size:12.5px;color:var(--txt-dim);margin:10px 0 0}
.dwline .live{color:var(--loss-t);font-weight:800;letter-spacing:.08em;text-transform:uppercase;font-size:11.5px}
.dwline .t{color:var(--accent-hi)}
.dwrow{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:14px 0 0}
.dwk{font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--txt-dim);margin:20px 0 8px}
.dwpath{font-size:12.5px;color:var(--txt-dim);line-height:1.7;margin:14px 0 0;padding:10px 12px;border:1px dashed var(--line);
  border-radius:4px}
.dwform{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.dwform input{width:56px;text-align:center;padding:7px 6px;background:var(--bg);border:1px solid var(--line);border-radius:3px;
  color:var(--txt);font-family:var(--ost);font-size:15px}
.dwform input.dt{width:210px;max-width:100%;font-family:var(--man);font-size:13px;text-align:left}
.dwform input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}
.dwadmin{border-top:1px solid var(--line);margin-top:18px}
.dwadmin .dwrow:first-of-type{margin-top:0}
.dwadmin .muted{margin-top:8px;font-size:12.5px}

/* ───────── судейская ─────────
   Живёт в окне игры, под кнопками администратора. */
.ref{border-top:1px solid var(--line);margin-top:18px}
.refbody{display:flex;flex-direction:column;gap:10px}
.refnone{border:1px solid var(--t);border-left-width:3px;padding:8px 10px;color:var(--txt);font-size:13px;
  background:var(--panel-2);border-radius:3px}
.refrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.reflab{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--txt-dim)}
.refbody input[type=text],.refbody input[type=number],.refbody select{background:var(--bg);color:var(--txt);
  border:1px solid var(--line);border-radius:3px;padding:6px 8px;font-family:var(--man);font-size:13px;min-width:0}
.refwhy{flex:1;min-width:0}
.refmin{width:70px}
.refauto{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--txt);cursor:pointer}
.refacts{display:flex;flex-direction:column;gap:6px}
.refact{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.refact input{flex:1 1 140px}
.refhint{font-size:12px;color:var(--txt-dim);flex-basis:100%}
.refwait{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--line);padding-top:10px}
.reftick{font-family:var(--ost);font-size:15px;letter-spacing:.06em}
.reftick .tsec{color:var(--accent-hi)}
.reftick.out .tsec{color:var(--loss-t)}
.refcalls{display:flex;flex-direction:column;gap:4px;max-height:320px;overflow-y:auto}
.refcall{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-size:13px;padding:5px 8px;background:var(--panel-2);
  border-left:3px solid var(--line)}
.refcall.bad{border-left-color:var(--loss-t)}
.refcall .rt,.refcall .rw,.refcall .rd{font-size:12px;color:var(--txt-dim)}
.refcall .rt{white-space:nowrap}
.refcall .ra{font-family:ui-monospace,monospace;font-size:12px}
.refcall .rerr{font-size:12px;color:var(--loss-t)}

/* ───────── новый турнир ───────── */
.newt{background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:20px 22px 22px;margin-top:14px}
.lab{font-family:var(--ost);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--txt-dim);margin:20px 0 8px;
  display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.newt > .lab:first-child{margin-top:0}
.lab i{font-style:normal;font-family:var(--man);letter-spacing:0;text-transform:none;font-size:12px;opacity:.85}
.inp{background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:10px 12px;color:var(--txt);font-size:14px;
  font-family:var(--man);width:100%;max-width:520px}
.inp:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}
.fcards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
/* Карточка формата — кнопка: снимаем с неё кнопочный вид сайта. */
.fcard{display:block;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:12px 13px 13px;
  position:relative;cursor:pointer;text-align:left;font:inherit;letter-spacing:normal;text-transform:none;color:var(--txt);
  line-height:1.45;width:100%}
.fcards button.fcard:hover:not(:disabled){background:var(--bg);border-color:var(--txt-dim);color:var(--txt)}
/* Выбранная — оранжевой рамкой и лёгким отсветом, а не заливкой: общее
   правило сайта для button.on красит кнопку целиком, и текст карточки
   пропадал. Отсюда и лишний .fcards в селекторе — он перебивает то правило. */
.fcards button.fcard.on,.fcards button.fcard.on:hover:not(:disabled){border-color:var(--accent);
  box-shadow:0 0 0 1px var(--accent);color:var(--txt);
  background:linear-gradient(var(--accent-bg),transparent 70%),var(--bg)}
.fcard .pic{display:block;margin:0 0 10px}
.fcard .pic svg{display:block;width:100%;height:78px}
.fcard b{font-family:var(--ost);font-weight:600;font-size:16px;letter-spacing:.06em;text-transform:uppercase;color:#fff;
  display:block;line-height:1.2}
.nobr{white-space:nowrap}
.fcard .about{display:block;margin:5px 0 9px;color:var(--txt-dim);font-size:12.5px;line-height:1.45}
.fcard .cnt{display:block;font-size:10.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--txt-dim)}
.fcard .like{position:absolute;top:10px;right:10px;font-size:9.5px;font-weight:800;letter-spacing:.1em;
  text-transform:uppercase;color:var(--txt-dim);border:1px solid var(--line);border-radius:3px;padding:2px 6px;
  background:var(--bg)}
.fcard.on .like{color:var(--on-accent);background:var(--accent);border-color:var(--accent)}
.frow{display:flex;gap:28px;flex-wrap:wrap;margin:20px 0 0;align-items:flex-start}
.frow .lab{margin-top:0}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chips button{font-family:var(--ost);font-weight:400;font-size:15px;letter-spacing:0;text-transform:none;min-width:48px;
  text-align:center;padding:7px 10px;background:var(--bg);color:var(--txt)}
.chips button.on{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.chips button:disabled{opacity:.35;text-decoration:line-through}
.sers{display:flex;gap:8px;flex-wrap:wrap}
.selx{display:inline-flex;align-items:center;gap:8px;background:var(--bg);border:1px solid var(--line);border-radius:4px;
  padding:4px 4px 4px 10px;font-size:13.5px;color:var(--txt)}
.selx em{font-style:normal;color:var(--txt-dim);font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}
.selx select{background:var(--bg);color:var(--txt);border:0;font-family:var(--man);font-size:13.5px;font-weight:700;
  padding:4px 4px;cursor:pointer}
.selx select:focus{outline:2px solid var(--accent)}
.tog{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--txt);padding-top:3px;cursor:pointer;
  position:relative}
.tog input{position:absolute;opacity:0;width:36px;height:20px;margin:0;cursor:pointer}
.tog .sw2{width:36px;height:20px;border-radius:10px;background:var(--panel-3);position:relative;flex:none;
  transition:background .14s}
.tog .sw2::after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;
  background:var(--txt-dim);transition:left .14s,background .14s}
.tog input:checked + .sw2{background:var(--accent)}
.tog input:checked + .sw2::after{left:19px;background:#fff}
.tog input:focus-visible + .sw2{outline:3px solid var(--accent);outline-offset:2px}
.tog small{display:block;color:var(--txt-dim);font-size:12px}
.sum{display:flex;margin:20px 0 14px;border:1px solid var(--line);border-radius:4px;background:var(--bg-top)}
.sum > div{padding:10px 16px;border-right:1px solid var(--line)}
.sum > div:last-child{border-right:0}
.sum b{font-family:var(--ost);font-size:22px;color:#fff;display:block;line-height:1.1;font-weight:600}
.sum span{font-size:10.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--txt-dim)}
.sum .txt{flex:1;display:flex;align-items:center;font-size:12.5px;color:var(--txt-dim);line-height:1.5}
.pv{border:1px dashed var(--line);border-radius:6px;padding:16px 16px 18px;background:rgba(10,14,19,.55);position:relative}
.pvwrap{margin:22px 0 0}
.pvh{font-size:10.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-hi);margin:0 0 14px;
  display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.pvh i{font-style:normal;color:var(--txt-dim);letter-spacing:.06em;text-transform:none;font-weight:600;font-size:12px}
.pv .block{margin-bottom:22px}
.pv .block:last-child{margin-bottom:0}
.pv .sh{margin-bottom:12px}
.pv .sh h2{font-size:13px}
.pv .mx .r .nm{color:var(--txt-dim)}
.pv .grp .bk{--cw:160px;--g:26px}
.pv .grps{gap:16px}
.acts{display:flex;align-items:center;gap:12px 14px;margin:18px 0 0;flex-wrap:wrap}
.acts .muted{font-size:12.5px;flex:1 1 260px}
.more{margin:14px 0 0;font-size:12.5px;color:var(--txt-dim)}
.more a{color:var(--txt-dim);text-decoration:underline dotted}
.more a:hover{color:var(--accent-hi)}

/* ───────── турнир до старта ───────── */
.flow3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:16px 0 26px;border:1px solid var(--line);
  border-radius:4px;overflow:hidden}
.flow3 > div{padding:12px 16px;background:var(--panel);border-right:1px solid var(--line)}
.flow3 > div:last-child{border-right:0}
.flow3 b{display:flex;align-items:center;gap:9px;font-family:var(--ost);font-weight:600;letter-spacing:.08em;
  text-transform:uppercase;font-size:14px;color:var(--txt)}
.flow3 .n{font-family:var(--ost);width:22px;height:22px;border-radius:50%;border:1px solid var(--line);display:grid;
  place-items:center;color:var(--txt-dim);font-size:13px;flex:none}
.flow3 > div > span{display:block;color:var(--txt-dim);font-size:12.5px;margin-top:5px;line-height:1.5}
.flow3 .done .n{background:var(--win);border-color:var(--win);color:#0f141a}
.flow3 .now{background:var(--accent-bg)}
.flow3 .now .n{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.mycup{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--panel);border:1px solid var(--line);
  border-left:3px solid var(--accent);border-radius:4px;padding:12px 16px;margin:0 0 26px;font-size:13.5px}
.mycup .t{flex:1 1 260px;color:var(--txt-dim);line-height:1.5}
.mycup .t.good{color:var(--win-t)}
.entries2{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.ent{display:flex;align-items:center;gap:9px;background:var(--panel);border:1px solid var(--line);border-radius:4px;
  padding:9px 11px;font-size:13.5px;min-width:0;color:var(--txt);text-decoration:none}
.ent .av{width:24px;height:24px;flex-basis:24px;font-size:9px}
.ent .en{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ent a.plink{border-bottom:0}
.ent a.plink:hover{color:var(--accent-hi)}
.ent button{flex:none}
.ent .ex{padding:5px 8px;letter-spacing:0}
.ent.emp{border-style:dashed;color:var(--txt-dim);font-size:12.5px;background:transparent;min-height:44px}
.ent.st-out{opacity:.55}
.warnbox{border:1px solid var(--line);border-left:3px solid var(--accent);background:var(--panel);border-radius:4px;
  padding:12px 16px;font-size:13px;color:var(--txt);line-height:1.6;margin:14px 0 0}
.warnbox .wrow{margin-top:10px;display:flex;gap:8px;flex-wrap:wrap}
.dzone{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:40px 0 0;padding-top:16px;
  border-top:1px solid var(--line)}
.dzone .muted{font-size:12.5px}

/* команды по посеву */
.seeds{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:6px}
.seeds .ent{padding:7px 9px;font-size:12.5px}
.seeds .ent:hover{border-color:var(--txt-dim)}
.seeds .ent i{font-style:normal;color:var(--txt-dim);font-size:11px;font-weight:800;flex:none}

/* ───────── этапы вручную ───────── */
.stageform{margin:26px 0 0}
.stageform .sfh{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin:0 0 12px}
.stageform .sfh h2{margin:0}
.stageform .sfh a{font-size:12.5px;color:var(--txt-dim);text-decoration:underline dotted}
.stageform .sfh a:hover{color:var(--accent-hi)}
.stageform > .muted{margin:0 0 12px}
.stagelist{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}
.srow{display:flex;align-items:center;gap:12px;padding:7px 10px;background:var(--panel-2);border-radius:var(--r);
  font-size:13px;flex-wrap:wrap}
.srow b{font-family:var(--ost);letter-spacing:.06em}
.srow span{color:var(--txt-dim)}
.srow button{margin-left:auto}
.newrow{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.fld{display:flex;flex-direction:column;gap:5px;font-size:12px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--txt-dim);font-family:var(--ost)}
.fld input,.fld select{background:var(--bg);color:var(--txt);border:1px solid var(--line);border-radius:var(--r);
  padding:8px 10px;font-family:var(--man);font-size:14px;letter-spacing:normal;text-transform:none;min-width:0}
.fld input[type=number]{width:96px}
.fld.chk{justify-content:flex-start}
.fld.chk input{width:20px;height:20px;margin:8px 0 0;accent-color:var(--accent)}
.fld input:focus,.fld select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}
.stageform > button.primary{margin-top:4px}
.stageform > .muted:last-child{margin-top:10px}
/* пример этапа */
.stageplan{margin:14px 0 12px;padding:12px 14px;background:var(--bg-top);border:1px solid var(--line);border-radius:var(--r)}
.stageplan:empty{display:none}
.plantop{font-family:var(--ost);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-hi);
  margin-bottom:6px}
.plannote{font-size:13px;color:var(--txt);margin-bottom:10px;line-height:1.5}
.planwhy{font-size:13px;color:var(--loss-t);line-height:1.5}
.plangrid{display:flex;gap:12px;overflow-x:auto;padding-bottom:4px;align-items:stretch}
.plancol{display:flex;flex-direction:column;flex:0 0 148px}
.plancells{display:flex;flex-direction:column;justify-content:space-around;flex:1 1 auto;gap:6px;margin-top:6px}
.plangrid.flat .plancells{justify-content:flex-start}
.plantitle{font-family:var(--ost);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--txt-dim);
  padding-bottom:5px;border-bottom:1px solid var(--line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.plancell{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--line);border-radius:var(--r);
  padding:6px 8px}
.plancell.br-l{border-left-color:var(--t)}
.plancell.br-m{border-left-color:var(--accent)}
.plancell.br-t{border-left-color:var(--txt-dim)}
.planhead{display:flex;align-items:center;gap:6px;margin-bottom:3px}
.plann{font-family:var(--ost);font-size:10px;letter-spacing:.1em;color:var(--accent-hi)}
.planser{font-family:var(--ost);font-size:10px;letter-spacing:.14em;color:var(--txt-dim);margin-left:auto}
.plantit{font-family:var(--ost);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--txt-dim);
  margin-bottom:3px}
.plancell.br-l .plantit{color:var(--t)}
.planside{font-size:12px;color:var(--txt);padding:2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.plansoon{border:1px dashed var(--line);border-radius:var(--r);padding:10px 8px;font-size:12px;color:var(--txt-dim);
  text-align:center}
.planleg{font-size:12px;color:var(--txt-dim);margin-top:9px;line-height:1.5}

/* ───────── список турниров ───────── */
.cuplist{display:flex;flex-direction:column;gap:6px}
.cuprow{display:block;padding:12px 14px;background:var(--panel);border:1px solid var(--line);
  border-left:3px solid transparent;border-radius:var(--r);text-decoration:none;color:var(--txt)}
.cuprow:hover{background:var(--panel-3);border-left-color:var(--accent)}
.cuprow.st-play{border-left-color:var(--win)}
.crhead{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.crhead b{font-family:var(--ost);font-size:19px;letter-spacing:.06em;text-transform:uppercase;color:#fff;
  overflow-wrap:anywhere}
.crline{display:flex;gap:6px 14px;flex-wrap:wrap;margin-top:6px;font-size:13px;color:var(--txt-dim)}
.crline .fm{color:var(--txt);font-weight:700}

/* ───────── телефон ───────── */
@media (max-width:760px){
  .ch2 h1{font-size:24px}
  .ch2 .admin{margin-left:0;flex-basis:100%}
  .ch2 .fmt{gap:4px 12px}
  .stg{flex-wrap:nowrap}
  .stg a{flex:1;padding:8px 10px;gap:7px}
  .stg b{font-size:12.5px;white-space:normal}
  .stg i{display:none}
  .sh .sub{flex-basis:100%;order:3}
  .sh .seg{display:none}
  .bkwrap{padding-top:0}
  .bkwrap .bk{display:none}
  .rlist{display:block}
  .sw{display:none}
  .sw.open,.sw.notab{display:block;overflow:visible}
  .sw .swcol{margin:0 0 14px}
  .swtab.phone{display:table}
  .swmore{display:inline-block}
  .grps{grid-template-columns:minmax(0,1fr)}
  .grp{padding:12px 12px 14px}
  .grp .bk,.grp .dropline,.grp .glab{display:none}
  .grp .glist{display:block}
  .grp.wide .gbody.two{display:block}
  .grp.wide .gright{border-left:0;padding-left:0}
  .grp.wide .glist.fold{display:none}
  .grp.wide .glist.fold.open{display:block}
  .gmore{display:inline-block}
  .livebar{flex-wrap:wrap}
  .livebar a.btn{margin-left:0}
  .drawer{top:auto;left:0;width:auto;max-height:86vh;border-left:0;border-top:1px solid var(--line);
    border-radius:14px 14px 0 0;box-shadow:0 -24px 48px rgba(0,0,0,.45);padding:16px 16px 22px}
  .newt{padding:16px 14px 18px}
  .fcards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .fcard .pic svg{height:56px}
  .fcard .about{display:none}
  .frow{gap:16px}
  .sum{flex-wrap:wrap}
  .sum > div{flex:1 1 33%;border-bottom:1px solid var(--line)}
  .sum .txt{flex-basis:100%;border-bottom:0}
  .pvh i{display:none}
  .pv{padding:12px 10px 14px}
  .flow3{grid-template-columns:minmax(0,1fr)}
  .flow3 > div{border-right:0;border-bottom:1px solid var(--line)}
  .flow3 > div:last-child{border-bottom:0}
  .entries2{grid-template-columns:minmax(0,1fr)}
  .seeds{grid-template-columns:repeat(2,minmax(0,1fr))}
  .acts button,.warnbox button{white-space:normal}
  .plancol{flex:0 0 132px}
}
@media (min-width:761px) and (max-width:1100px){
  .fcards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .entries2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .seeds{grid-template-columns:repeat(4,minmax(0,1fr))}
  .grps{grid-template-columns:minmax(0,1fr)}
  .grp.wide .gbody.two{grid-template-columns:minmax(0,1fr)}
  .grp.wide .gright{border-left:0;padding-left:0}
}

/* Серверы турнира: какие кастомы и Rush под сеткой, какие уходят. */
.rstrip{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--accent);
  border-radius:var(--r);padding:12px 14px;margin:0 0 16px;display:flex;flex-direction:column;gap:10px}
.rstrip .rhead{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.rstrip .rhead b{font-family:var(--ost);font-weight:600;font-size:15px;letter-spacing:.08em;
  text-transform:uppercase;color:#fff}
.rstrip .rsay{font-size:13px;color:var(--txt-dim)}
.rstrip .rrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px}
.rstrip .rsrv{background:var(--panel-2,var(--panel));border:1px solid var(--line);border-radius:var(--r);
  padding:8px 10px;display:flex;flex-direction:column;gap:4px;min-width:0}
.rstrip .rsrv.ph-borrowed{border-color:rgba(46,204,113,.35)}
.rstrip .rsrv.ph-leaving,.rstrip .rsrv.ph-going,.rstrip .rsrv.ph-returning{border-color:var(--accent)}
/* Имя и метка в одну строку, а не влезли — метка уходит на вторую: имя
   сервера не обрезаем («Кастом 2» и «Кастом» иначе не различить). */
.rstrip .rt{display:flex;align-items:center;gap:2px 8px;flex-wrap:wrap;min-width:0}
.rstrip .rn{font-family:var(--ost);font-size:14px;letter-spacing:.06em;text-transform:uppercase;color:#fff;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.rstrip .rchip{margin-left:auto;font-size:11px;font-weight:700;letter-spacing:.04em;white-space:nowrap;
  color:var(--txt-dim)}
.rstrip .rchip.ok{color:var(--win-t,#6fdc9a)}
.rstrip .rchip.wait{color:var(--accent-hi)}
.rstrip .rw{font-size:12px;line-height:1.45;color:var(--txt-dim)}
.rstrip .rf{font-size:12px;line-height:1.45;color:var(--loss-t)}
.rstrip .rmode{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rstrip .rml{font-size:12px;color:var(--txt-dim)}
.rstrip .rml.warn{color:var(--accent-hi)}

/* ─────────────── расписание ───────────────
   Время в сетке — «не раньше» (schedule.py). Опаздывающая игра — плановое
   время зачёркнуто, рядом ожидаемое; сбор — оранжевой рамкой и отсчётом;
   сбор вышел, а собрались не обе — красным пунктиром, решает судья. */
.mx .mm.late{color:var(--accent-hi)}
.mx .mm.late s{color:var(--txt-dim);text-decoration-thickness:1px}
.mx .mm.gat{color:var(--accent-hi)}
.mx .mm.go{color:var(--t)}
.mx .mm.judge{color:var(--loss-t)}
.mx.gat{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.mx.judge{border-color:var(--loss);border-style:dashed}
.mx .tick{font-variant-numeric:tabular-nums}

.livebar.gat{border-left-color:var(--accent)}
.livebar.gat .lv{color:var(--accent-hi)}
.livebar.judge{border-left-color:var(--loss)}
.livebar .vs b.dash{color:var(--txt-dim);font-family:var(--man);font-size:14px}
.livebar .rdy{color:var(--txt-dim);font-size:12.5px;white-space:nowrap}
.livebar .rdy b{color:var(--txt);font-weight:800}

.sched{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--t);
  border-radius:var(--r);padding:12px 14px;margin:16px 0 26px;display:flex;flex-direction:column;gap:10px}
.sched.ok{border-left-color:var(--win)}
.sched .shh{display:flex;align-items:baseline;gap:6px 12px;flex-wrap:wrap}
.sched .shh > b{font-family:var(--ost);font-weight:600;font-size:15px;letter-spacing:.08em;
  text-transform:uppercase;color:#fff}
.sched .shh > b em{font-style:normal;color:var(--t)}
.sched .shf{font-size:13px;color:var(--txt)}
.sched .shf s{color:var(--txt-dim);text-decoration-thickness:1px}
.sched .shf i{font-style:normal;color:var(--accent-hi);font-weight:800}
.sched .shw{font-size:13px;line-height:1.55;color:var(--txt-dim);max-width:980px}
.shctl{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.shctl .shl{font-size:12px;color:var(--txt-dim)}
.shctl .shset{margin-left:auto}
.shconf{border:1px solid var(--accent);border-radius:var(--r);background:var(--accent-bg);
  padding:10px 12px;display:flex;flex-direction:column;gap:7px;max-width:680px}
.shconf .shk{font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--txt-dim)}
.shrow{display:grid;grid-template-columns:minmax(0,1fr) auto 14px auto;gap:10px;align-items:baseline;font-size:13px}
.shrow .shn{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.shrow .shn i{font-style:normal;color:var(--txt-dim)}
.shrow s{color:var(--txt-dim);font-family:var(--ost);letter-spacing:.04em;text-decoration-thickness:1px;white-space:nowrap}
.shrow em{font-style:normal;color:var(--txt-dim)}
.shrow b{color:var(--accent-hi);font-family:var(--ost);font-weight:600;letter-spacing:.04em;white-space:nowrap}
.shconf .shlater{font-size:12.5px;line-height:1.5;color:var(--txt-dim);border-top:1px solid var(--line);padding-top:7px}
.shact{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:3px}
.shact .muted{font-size:12px}
.shcfg{border-top:1px solid var(--line);padding-top:10px;display:grid;
  grid-template-columns:max-content max-content minmax(0,1fr);gap:9px 14px;align-items:center}
.shcfg .shck{font-size:13px;color:var(--txt);white-space:nowrap}
.shcfg .shseg{display:flex;gap:4px;flex-wrap:wrap}
.shcfg .shseg button{min-width:40px}
.shcfg .shcw{font-size:12px;line-height:1.45;color:var(--txt-dim)}

.chip.st-gat{color:var(--accent-hi);border-color:var(--accent)}
.dwline .gat{color:var(--accent-hi);font-weight:800;letter-spacing:.08em;text-transform:uppercase;font-size:11.5px}
.dwline .plan{color:var(--txt-dim)}
.dwline .plan s{text-decoration-thickness:1px}
.dwline .eta{color:var(--accent-hi);font-weight:800}
.dwline .okk{color:var(--win-t);font-weight:800}
.dwline .tick{font-variant-numeric:tabular-nums}
.dwwhy{margin:12px 0 0;padding:10px 12px;border:1px solid var(--line);border-left:3px solid var(--t);
  background:var(--panel-2);border-radius:var(--r);font-size:12.5px;line-height:1.6;color:var(--txt)}
.dwwhy .dwk{margin:0 0 4px}
.dwwhy p{margin:0}
.dwwhy p + p,.dwwhy .gtm + p{margin-top:4px}
.dwwhy p.dim{color:var(--txt-dim)}
.gtm{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:5px 0}
.gtm + .gtm{border-top:1px solid var(--line)}
.gtm b{font-weight:800;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gtm .gst{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}
.gtm .gst.ok{color:var(--win-t)}
.gtm .gst.no{color:var(--accent-hi)}
.gbar{display:inline-flex;gap:3px;align-items:center}
.gbar i{width:13px;height:7px;border-radius:2px;background:var(--line)}
.gbar i.on{background:var(--win-t)}
.gbar em{font-style:normal;font-size:12px;color:var(--txt-dim);margin-left:6px;white-space:nowrap}

@media (max-width:640px){
  .shctl .shset{margin-left:0}
  .shcfg{grid-template-columns:minmax(0,1fr)}
  .shcfg .shcw{margin-top:-4px}
  .shrow{gap:8px}
  .livebar .rdy{flex:1 1 auto}
}
