/* Дизайн-система дашборда Glenfield SMS.
   Светлая тема — «Диспетчерское табло» (вариант В): IBM Plex, синий, табло.
   Тёмная тема — «Аппаратная» (вариант А): Golos + JetBrains Mono, янтарь, панель шлюза.
   Переключение системное: prefers-color-scheme. Решение АБ от 2026-08-22. */

@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&family=Golos+Text:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap');

:root{
  --bg:#EDF0F3; --panel:#FFFFFF; --panel2:#F3F5F8; --line:#D6DCE2;
  --ink:#10161C; --muted:#5B6773;
  --accent:#0B5FD9; --accent-soft:#E7EEFB; --accent-ink:#FFFFFF;
  --ok:#0F8A4B; --warn:#B36A00; --err:#D64545; --info:#0B5FD9;
  --sans:'IBM Plex Sans',system-ui,sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,monospace;
  --r-card:6px; --r-btn:4px;
  --shadow:none;
}
@media (prefers-color-scheme: dark){
  :root{
    --bg:#0F151C; --panel:#161F29; --panel2:#1B2733; --line:#26303C;
    --ink:#E9EFF4; --muted:#7E8FA0;
    --accent:#FFB224; --accent-soft:#33290F; --accent-ink:#1A1206;
    --ok:#3FBF6F; --warn:#FFB224; --err:#E5484D; --info:#4CA6FF;
    --sans:'Golos Text',system-ui,sans-serif;
    --mono:'JetBrains Mono',ui-monospace,monospace;
    --r-card:12px; --r-btn:9px;
  }
}

*{margin:0;padding:0;box-sizing:border-box}
html{color-scheme:light dark}
body{background:var(--bg);color:var(--ink);font:15px/1.5 var(--sans)}
.mono{font-family:var(--mono)}
a{color:inherit;text-decoration:none}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{
  outline:2px solid var(--accent);outline-offset:2px}
button{font:600 14px var(--sans);border-radius:var(--r-btn);padding:10px 18px;
  cursor:pointer;border:1px solid var(--line);background:var(--panel);color:var(--ink)}
button:hover{background:var(--panel2)}
button:disabled{opacity:.45;cursor:not-allowed}

/* ── Шапка ── */
header{display:flex;align-items:center;gap:22px;padding:0 26px;background:var(--panel);
  border-bottom:1px solid var(--line);flex-wrap:wrap;position:sticky;top:0;z-index:10}
.brand{font-weight:700;font-size:16px;padding:15px 0;white-space:nowrap}
.brand small{font:500 12px var(--mono);color:var(--muted);margin-left:10px}
nav{display:flex;align-self:stretch;overflow-x:auto}
nav a{display:flex;align-items:center;padding:0 15px;color:var(--muted);font-weight:500;
  font-size:14px;border-bottom:3px solid transparent;margin-bottom:-1px;white-space:nowrap}
nav a.active{color:var(--accent);border-bottom-color:var(--accent)}
nav a:hover{color:var(--ink)}
.clock{margin-left:auto;font:500 13px var(--mono);color:var(--muted);white-space:nowrap}
.wave-chip{font:600 12px var(--mono);color:var(--accent);
  background:var(--accent-soft);padding:6px 12px;border-radius:var(--r-btn);white-space:nowrap}
.wave-chip.quiet{color:var(--muted);background:var(--panel2)}

main{max-width:1560px;margin:0 auto;padding:26px 26px 64px}
.alertbar{background:var(--err);color:#fff;border-radius:var(--r-card);
  padding:14px 18px;margin-bottom:20px;font-size:14.5px;line-height:1.65}
.alertbar b{text-transform:uppercase;letter-spacing:.05em;margin-right:8px}
h2{font:700 12px var(--sans);letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted);margin:34px 0 14px;display:flex;align-items:center;gap:12px}
h2::after{content:"";flex:1;height:1px;background:var(--line)}
h2:first-child{margin-top:0}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-card);
  padding:22px}
.card h3{font-size:14px;font-weight:600;margin-bottom:10px}

/* ── SIM-линейка (сигнатура варианта А, живёт в обеих темах) ──
   auto-fit: на узком экране линейка сама переходит в 2 ряда вместо обрезания */
.simrack{display:grid;grid-template-columns:repeat(auto-fit,minmax(178px,1fr));gap:10px}
.sim{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-card);
  padding:11px 12px 9px}
.sim.warn{border-color:var(--warn)}
.sim.idle{opacity:.6}
.simhead{display:flex;justify-content:space-between;align-items:baseline}
.sim .portnum{font:700 15px var(--mono)}
.sim .num{font:500 12px var(--mono);color:var(--muted)}
.bars{display:flex;gap:3px;align-items:flex-end;height:24px;margin:9px 0 7px}
.bars i{width:5px;background:var(--line);border-radius:1px}
.bars i.on{background:var(--ok)}
.sim.warn .bars i.on{background:var(--warn)}
.bars i:nth-child(1){height:6px}.bars i:nth-child(2){height:10px}
.bars i:nth-child(3){height:15px}.bars i:nth-child(4){height:19px}
.bars i:nth-child(5){height:24px}
.sim .sig{font:500 11px var(--mono);color:var(--muted)}
.sim .stat{margin-top:8px;font:500 12px var(--mono);color:var(--muted)}
.sim .stat b{color:var(--ink);font-weight:700}
.sim .note{font:500 10px/1.5 var(--sans);margin-top:6px;color:var(--muted)}
.sim.warn .note{color:var(--warn)}
.sim .opnote{color:var(--accent)}
.simbar{display:flex;align-items:center;gap:14px;margin-top:12px;flex-wrap:wrap}
.simbar span{font:400 12px var(--mono);color:var(--muted)}
.simbar span b{color:var(--ink)}
.btn-sm{padding:7px 14px;font-size:13px}
.sim .delta-warn{color:var(--warn)}
.balprog{flex:1;min-width:140px;max-width:320px;height:8px;background:var(--panel2);
  border-radius:4px;position:relative;overflow:hidden}
.balprog .fill{position:absolute;top:0;bottom:0;left:0;background:var(--accent);
  border-radius:4px;transition:width .4s}

/* ── Табло волны (сигнатура варианта В, живёт в обеих темах) ── */
.board-head{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:8px}
.board-head .name{font-weight:600;font-size:17px}
.board-head .eta{font:500 13px var(--mono);color:var(--muted)}
.timeline{margin-top:26px}
.tl-track{height:30px;background:var(--panel2);border-radius:var(--r-btn);position:relative}
.tl-done{position:absolute;top:0;bottom:0;left:0;background:var(--accent);
  border-radius:var(--r-btn) 0 0 var(--r-btn)}
.tl-now{position:absolute;top:-6px;bottom:-6px;width:2px;background:var(--ink)}
.tl-now::after{content:attr(data-time);position:absolute;top:-21px;left:50%;transform:translateX(-50%);
  font:600 11px var(--mono);background:var(--ink);color:var(--bg);padding:2px 6px;
  border-radius:3px;white-space:nowrap}
.tl-ticks{display:flex;justify-content:space-between;font:400 11px var(--mono);
  color:var(--muted);margin-top:8px}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:var(--r-btn);overflow:hidden;margin-top:20px}
.stats div{background:var(--panel);padding:13px 15px}
.stats .v{font:600 28px/1.15 var(--mono);font-variant-numeric:tabular-nums}
.stats .k{font-size:12px;color:var(--muted);margin-top:2px}
.stats .ok .v{color:var(--ok)}
.stats .warn .v{color:var(--warn)}
.stats .err .v{color:var(--err)}
.wave-btns{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap}
.btn-stop{color:var(--err);border-color:var(--err)}
.btn-stop:hover{background:color-mix(in srgb, var(--err) 10%, var(--panel))}

/* ── Лента ── */
.feed{font:400 13px/2 var(--mono);overflow-x:auto;color:var(--muted)}
.feed .t{opacity:.65;margin-right:12px}
.feed .ok{color:var(--ok)}
.feed .stop{color:var(--err);font-weight:600}
.feed .warn{color:var(--warn)}
.feed .in{color:var(--info)}
.cols{display:grid;grid-template-columns:5fr 4fr;gap:18px}

/* ── Мастер новой рассылки ── */
.step{margin-top:18px}
.step .step-head{display:flex;align-items:center;gap:12px;font-weight:600;font-size:15px}
.step .n{font:700 12px var(--mono);color:var(--accent);background:var(--accent-soft);
  width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:none}
.step .body{margin-top:14px}
.pick{display:flex;flex-direction:column;gap:10px}
.pick label{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--line);
  border-radius:var(--r-btn);padding:12px 14px;cursor:pointer}
.pick label:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
.pick input{margin-top:3px;accent-color:var(--accent)}
.pick .t1{font-weight:600}
.pick .t2{font:400 12.5px var(--mono);color:var(--muted);margin-top:3px}
.math{font:400 13px/1.9 var(--mono);color:var(--muted);margin-top:12px;
  border-top:1px dashed var(--line);padding-top:10px}
.math b{color:var(--ink)}
textarea{width:100%;background:var(--panel2);border:1px solid var(--line);
  border-radius:var(--r-btn);padding:13px;font:400 15px/1.6 var(--sans);
  color:var(--ink);min-height:96px;resize:vertical}
.count-bar{height:6px;background:var(--panel2);border-radius:3px;position:relative;margin-top:12px}
.count-bar .fill{position:absolute;top:0;bottom:0;left:0;background:var(--ok);border-radius:3px;max-width:100%}
.count-bar.over .fill{background:var(--err)}
.count-bar .limit{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--err)}
.count-lbl{display:flex;justify-content:space-between;font:400 12.5px var(--mono);
  color:var(--muted);margin-top:8px;gap:12px;flex-wrap:wrap}
.count-lbl b{color:var(--ok)}
.count-lbl.over b{color:var(--err)}
.toggle{display:flex;align-items:center;gap:10px;margin-top:14px;font-size:13.5px;
  color:var(--muted);cursor:pointer;user-select:none}
.toggle input{position:absolute;opacity:0}
.sw{width:34px;height:20px;border-radius:10px;background:var(--line);position:relative;
  flex:none;transition:background .15s}
.sw i{position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;
  background:var(--panel);transition:left .15s}
.toggle input:checked + .sw{background:var(--accent)}
.toggle input:checked + .sw i{left:17px}
.when{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.when.four{grid-template-columns:repeat(4,1fr)}
.stats.two{grid-template-columns:repeat(2,1fr)}
.tempo{margin-top:16px;border:1px dashed var(--line);border-radius:var(--r-btn);padding:14px}
.tempo-head{font-size:13.5px;font-weight:600;margin-bottom:12px;display:flex;
  justify-content:space-between;gap:12px;flex-wrap:wrap}
.tempo-head span{font:400 12px var(--mono);color:var(--muted)}
.polmeta{font:400 12px var(--mono);color:var(--muted);margin-top:10px}
.reason-lbl{font-size:12.5px;color:var(--muted);display:block}
.reason-lbl input{width:100%;margin-top:5px;background:var(--panel2);
  border:1px solid var(--line);border-radius:var(--r-btn);padding:9px 10px;
  font:400 14px var(--sans);color:var(--ink)}
.when label{font-size:12.5px;color:var(--muted);display:block}
.when input,.when select{width:100%;margin-top:5px;background:var(--panel2);
  border:1px solid var(--line);border-radius:var(--r-btn);padding:9px 10px;
  font:500 14px var(--mono);color:var(--ink)}
.calc{font:400 13.5px/2 var(--mono)}
.calc dl{display:grid;grid-template-columns:1fr auto}
.calc dt{color:var(--muted)}
.calc dd{text-align:right;font-weight:600;font-variant-numeric:tabular-nums}
.calc .hr{grid-column:1/-1;border-top:1px dashed var(--line);margin:8px 0}
.calc .total dd{color:var(--accent);font-size:16px}
.btn-accent{width:100%;margin-top:18px;background:var(--accent);border-color:var(--accent);
  color:var(--accent-ink);font-size:15px;padding:13px}
.btn-accent:hover{background:color-mix(in srgb, var(--accent) 85%, black)}
.namebar{display:flex;align-items:center;gap:12px;margin-top:14px;flex-wrap:wrap}
.namebar span{font-size:12.5px;color:var(--muted)}
.btn-launch{width:100%;margin-top:8px;background:var(--err);border-color:var(--err);
  color:#fff;font-size:15px;padding:13px}
.btn-launch:hover{background:color-mix(in srgb, var(--err) 85%, black)}
.btn-try{width:100%;margin-top:10px}
.launch-note{font-size:12.5px;color:var(--muted);margin-top:12px;line-height:1.6}
.composer{display:grid;grid-template-columns:3fr 2fr;gap:18px;align-items:start}
.segment-builder{margin-top:16px;padding:16px;border:1px dashed var(--line);
  border-radius:var(--r-btn);background:var(--panel2)}
.segment-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.segment-head span{display:flex;flex-direction:column;gap:2px}
.segment-head small{font:400 12px/1.5 var(--mono);color:var(--muted)}
.segment-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:14px}
.segment-grid label,.manual-label{font-size:12.5px;color:var(--muted);display:block}
.segment-grid select{width:100%;margin-top:5px;background:var(--panel);border:1px solid var(--line);
  border-radius:var(--r-btn);padding:9px 10px;font:500 14px var(--sans);color:var(--ink)}
.manual-label{margin-top:12px}
.manual-label textarea{min-height:78px;margin-top:5px;background:var(--panel)}
.segment-result{margin-top:10px;font:400 12.5px/1.7 var(--mono);color:var(--muted)}
.segment-result b{color:var(--ink)}
.segment-result .bad{color:var(--err)}
.campaign-meta{display:grid;grid-template-columns:1fr 2fr;gap:16px;align-items:start}
.campaign-meta textarea{min-height:42px;height:42px;resize:vertical}
.edit-banner{display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:12px 16px;margin-bottom:14px;border:1px solid var(--accent);border-radius:var(--r-card);
  background:var(--accent-soft);font-size:13px}
.control-toggle{padding:14px 0 2px;border-top:1px dashed var(--line)}
.control-toggle span:last-child{display:flex;flex-direction:column;color:var(--ink)}
.control-toggle small{font:400 12px/1.5 var(--mono);color:var(--muted);margin-top:2px}
.control-note{font:400 12px var(--mono);color:var(--accent);margin:8px 0 0 44px}

/* ── Ответы ── */
.reply{display:flex;gap:14px;padding:13px 0;border-bottom:1px solid var(--line);align-items:baseline}
.reply:last-child{border-bottom:none}
.reply .t{font:400 12px var(--mono);color:var(--muted);flex:none}
.reply .ph{font:500 13px var(--mono);flex:none}
.reply .tx{flex:1}
.reply.stop .tx{color:var(--err);font-weight:600}
.reply .badge{font:600 11px var(--sans);color:var(--err)}
.dlg{padding:0;overflow:hidden;transition:border-color .16s,background .16s}
.dlg + .dlg{margin-top:10px}
.dlg.open{border-color:var(--accent)}
.dlg-head{display:flex;align-items:center;gap:10px;padding:15px 18px;cursor:pointer;
  flex-wrap:wrap;transition:background .16s}
.dlg-head:hover{background:var(--panel2)}
.dlg-head .ph{font:600 14px var(--mono)}
.dlg-head .t2{font:400 12px var(--mono);color:var(--muted)}
.dlg-head .t{font:400 12px var(--mono);color:var(--muted);margin-left:auto}
.badge{font:600 11px var(--sans);color:var(--err);background:color-mix(in srgb,var(--err) 10%,transparent);
  border-radius:999px;padding:3px 8px}
.badge.warn{color:var(--warn);background:color-mix(in srgb,var(--warn) 12%,transparent)}
.badge.ok{color:var(--ok);background:color-mix(in srgb,var(--ok) 12%,transparent)}
.telegram-readiness,.telegram-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.telegram-readiness{margin:12px 0}
.telegram-actions{margin-top:12px}
.dlg-body{border-top:1px solid var(--line);padding:18px;background:var(--panel2)}
.msg{max-width:min(78%,720px);margin:0 0 10px;padding:11px 13px;border-radius:var(--r-btn);
  background:var(--panel);border:1px solid var(--line)}
.msg.out{margin-left:auto;border-color:color-mix(in srgb,var(--accent) 42%,var(--line));
  background:var(--accent-soft)}
.msg .tx{white-space:pre-wrap;overflow-wrap:anywhere}
.msg .meta{margin-top:5px;font:400 10.5px var(--mono);color:var(--muted)}
.dlg-reply{margin-top:16px;padding-top:16px;border-top:1px dashed var(--line)}
.dlg-reply textarea{background:var(--panel)}

/* ── Рассылки и история ── */
.campaign-count{font-size:12px;color:var(--muted);letter-spacing:0}
.campaign-list{display:flex;flex-direction:column;gap:10px}
.campaign-row{display:grid;grid-template-columns:minmax(280px,1fr) auto auto;gap:22px;
  align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-card);
  padding:17px 18px}
.campaign-row.prepared{border-left:4px solid var(--accent)}
.campaign-row.active-campaign{border-left:4px solid var(--ok)}
.campaign-main{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0}
.campaign-main b{font-size:16px;overflow-wrap:anywhere}
.campaign-status{display:inline-flex;padding:2px 7px;border-radius:999px;background:var(--accent-soft);
  color:var(--accent);font:600 10.5px var(--sans);text-transform:uppercase;letter-spacing:.04em}
.campaign-status.active{color:var(--ok);background:color-mix(in srgb,var(--ok) 11%,transparent)}
.campaign-meta-line{font:400 11.5px var(--mono);color:var(--muted)}
.campaign-note{font-size:12px;color:var(--muted)}
.campaign-numbers{display:flex;flex-direction:column;align-items:flex-end;white-space:nowrap}
.campaign-numbers b{font:600 20px var(--mono)}
.campaign-numbers span{font-size:11px;color:var(--muted)}
.campaign-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}
.btn-start{color:var(--accent);border-color:var(--accent)}
.campaign-progress{width:min(320px,28vw);display:grid;grid-template-columns:1fr auto;gap:5px 12px;
  align-items:center}
.campaign-progress>span{height:8px;background:var(--panel2);border-radius:4px;overflow:hidden}
.campaign-progress i{display:block;height:100%;background:var(--ok);border-radius:4px}
.campaign-progress b{font:600 12px var(--mono);white-space:nowrap}
.campaign-progress small{grid-column:1/-1;color:var(--muted);font:400 11px var(--mono)}
.campaign-history td:last-child,.campaign-history th:last-child{text-align:right}
.campaign-history .campaign-note{display:inline-block;max-width:420px}
.recurring-add{margin-top:12px}
.recurring-row{border-left:4px solid var(--warn)}
.recurring-editor{margin-top:14px;border-top:3px solid var(--warn)}
.recurring-editor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;
  margin-bottom:18px}
.recurring-editor-head div{display:flex;flex-direction:column;gap:3px}
.recurring-editor-head b{font-size:17px}
.recurring-editor-head span{font-size:12px;color:var(--muted)}
.recurring-editor>.base-field{margin-bottom:14px}
.recurring-editor textarea{min-height:110px}
.recurring-when{grid-template-columns:repeat(4,1fr)}
.recurring-sources{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}
.recurring-sources>div>b{display:block;margin-bottom:7px}
.recurring-enabled{margin:18px 0 12px;color:var(--ink)}
.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:14px;min-width:560px}
th{font:600 11px var(--sans);letter-spacing:.07em;text-transform:uppercase;
  color:var(--muted);text-align:left;padding:10px 14px;border-bottom:2px solid var(--ink)}
td{padding:11px 14px;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}
td.mono{font:400 13px var(--mono);color:var(--muted)}
.sortable{cursor:pointer;user-select:none;transition:color .15s,background .15s}
.sortable:hover{color:var(--accent);background:var(--accent-soft)}
.forward-settings .toggle{margin-top:0;color:var(--ink)}
.forward-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:14px 0}

/* ── Базы ── */
.base-count{font-size:12px;color:var(--muted);letter-spacing:0}
.base-upload{display:grid;grid-template-columns:minmax(220px,1.2fr) minmax(300px,2fr) auto auto;
  gap:12px;align-items:end;padding:18px 0;border-block:1px solid var(--line)}
.base-field,.base-file{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted)}
.base-field input,.base-field textarea,.base-file input{width:100%;background:var(--panel);border:1px solid var(--line);
  border-radius:var(--r-btn);padding:9px 10px;font:400 14px var(--sans);color:var(--ink)}
.base-file input{padding:7px;font-size:12px;max-width:230px}
.base-registry{padding:0;overflow:hidden}
.base-registry table{min-width:900px}
.base-registry tr.selected td{background:var(--accent-soft)}
.base-registry td:last-child,.base-registry th:last-child{text-align:right}
.base-note{max-width:440px;color:var(--muted)}
.base-fixed{font:500 10.5px var(--mono);color:var(--accent)}
.source-tag{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:3px 8px;
  font:500 11px var(--mono);color:var(--muted);white-space:nowrap}
.source-tag.report{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 40%,var(--line))}
.source-tag.uploaded{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 40%,var(--line))}
.base-inspector{border-top:2px solid var(--ink);border-bottom:1px solid var(--line);padding:20px 0 24px}
.base-inspector-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
.base-inspector-head div{display:flex;flex-direction:column;gap:3px}
.base-inspector-head b{font-size:18px}
.base-inspector-head span{font:400 12px var(--mono);color:var(--muted)}
.base-edit-grid{display:grid;grid-template-columns:1fr 2fr;gap:16px;margin-top:18px}
.base-edit-grid textarea{min-height:74px;resize:vertical}
.base-actions{display:flex;align-items:center;gap:10px;margin-top:12px;flex-wrap:wrap}
.base-actions span{font-size:12px;color:var(--muted)}
.base-phones{margin-top:20px}
.base-phones textarea{min-height:220px;max-height:44vh;resize:vertical;font:400 12px/1.55 var(--mono);
  background:var(--panel2);white-space:pre}

@media (max-width:900px){
  .base-upload{grid-template-columns:1fr}
  .base-file input{max-width:none}
  .base-edit-grid{grid-template-columns:1fr}
  .campaign-meta{grid-template-columns:1fr}
  .campaign-row{grid-template-columns:1fr auto}
  .campaign-actions{grid-column:1/-1;justify-content:flex-start}
  .campaign-progress{width:min(100%,320px)}
  .recurring-sources{grid-template-columns:1fr}
  .recurring-when{grid-template-columns:1fr 1fr}
}

/* ── Тост ── */
#toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);
  background:var(--ink);color:var(--bg);padding:12px 20px;border-radius:var(--r-btn);
  font-size:14px;max-width:min(90vw,560px);opacity:0;pointer-events:none;transition:opacity .2s}
#toast.show{opacity:1}

/* ── Вход ── */
.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}
.login form{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-card);
  padding:34px;width:100%;max-width:360px}
.login h1{font-size:19px;margin-bottom:6px}
.login p{font-size:13px;color:var(--muted);margin-bottom:20px}
.login input{width:100%;background:var(--panel2);border:1px solid var(--line);
  border-radius:var(--r-btn);padding:11px 12px;font:500 15px var(--mono);color:var(--ink)}
.login button{width:100%;margin-top:14px;background:var(--accent);
  border-color:var(--accent);color:var(--accent-ink)}
.empty{color:var(--muted);font-size:14px;padding:26px 0;text-align:center}

@media (prefers-reduced-motion: reduce){
  *{transition:none !important;animation:none !important}
}
@media (max-width:900px){
  .cols,.composer{grid-template-columns:1fr}
  .when,.when.four{grid-template-columns:1fr 1fr}
  .segment-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:560px){
  main{padding:16px 12px 50px}
  header{padding:0 12px;gap:12px}
  .simrack{grid-template-columns:repeat(2,1fr)}
  .stats{grid-template-columns:repeat(2,1fr)}
  .when{grid-template-columns:1fr}
  .segment-grid,.forward-options{grid-template-columns:1fr}
  .msg{max-width:94%}
  .campaign-row{grid-template-columns:1fr}
  .campaign-numbers{align-items:flex-start}
  .campaign-actions{grid-column:auto}
  .edit-banner{align-items:flex-start;flex-direction:column}
  .recurring-when{grid-template-columns:1fr}
}
