:root{
  --bg:#0f1a24;
  --panel:#15232d;
  --panel2:#122738;
  --field:#193549;
  --line:#1f3447;
  --line2:#2b4a63;
  --fg:#dde5ec;
  --fg2:#b8c2cc;
  --dim:#7f8f9c;
  --accent:#ffc600;
  --accent-dim:#b58b00;
  --blue:#0088ff;
  --blue-dim:#0d3a58;
  --green:#3ad900;
  --green2:#3c9f4a;
  --red:#ff628c;
  --fill:#ffc600;          /* полосы заполнения — жёлтые */
  --on-accent:#1a1400;     /* текст на жёлтом */
  --on-red:#1a0410;
  --veil:rgba(5,12,18,.72);/* затемнение под модалкой */
  --mono:ui-monospace,"JetBrains Mono",SFMono-Regular,Menlo,monospace;
  --sans:Inter,-apple-system,system-ui,"Segoe UI",Roboto,sans-serif;
  color-scheme:dark;
}
/* Светлая тема — тёплая бумага, как Paper Light на finekot.com.
   Переключатель — одна кнопка в шапке, выбор в localStorage fk_theme,
   ставится на <html> бут-скриптом до первой отрисовки. */
html[data-theme="light"]{
  --bg:#f4f1ea;
  --panel:#fbf9f5;
  --panel2:#f6f2ea;
  --field:#ebe6da;
  --line:rgba(28,26,23,.12);
  --line2:rgba(28,26,23,.24);
  --fg:#1c1a17;
  --fg2:#4a463f;
  --dim:#6f6a62;
  --accent:#8a5a0e;
  --accent-dim:#6e4709;
  --blue:#2f6db5;
  --blue-dim:#dde7f3;
  --green:#2f8a2a;
  --green2:#3c7f4a;
  --red:#c23a62;
  --fill:#d9a514;
  --on-accent:#ffffff;
  --on-red:#ffffff;
  --veil:rgba(28,26,23,.38);
  color-scheme:only light;
}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:var(--bg);
  color:var(--fg);
  font-family:var(--sans);
  font-size:14px;
  line-height:1.45;
  -webkit-font-smoothing:antialiased;
  min-height:100vh;
}
button{font-family:inherit;}
svg{display:block;}
.hidden{display:none!important;}

/* ---------- top bar ---------- */
.conn-banner{
  background:var(--red);
  color:var(--on-red);
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:.04em;
  text-align:center;
  padding:6px 12px;
  position:sticky;top:0;z-index:40;
}
.topbar{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:14px 24px;
  background:var(--panel);
  border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:30;
  flex-wrap:wrap;
}
.brand-name{font-weight:700;font-size:16px;color:var(--fg);}
.brand-tagline{font-size:11px;color:var(--dim);margin-top:2px;}
.topbar-mid{display:flex;align-items:center;gap:18px;flex-wrap:wrap;}
.clock{font-family:var(--mono);font-size:14px;color:var(--accent);letter-spacing:.04em;}
.integ-dots{display:flex;gap:10px;align-items:center;}
.integ-ic{
  display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;
  color:var(--dim);opacity:.38;cursor:default;position:relative;
}
.integ-ic svg{display:block;}
.integ-ic[data-status="ok"]{color:var(--fg);opacity:1;filter:drop-shadow(0 0 3px rgba(255,255,255,.35));}
html[data-theme="light"] .integ-ic[data-status="ok"]{filter:none;}
.integ-ic[data-status="warn"]{color:var(--accent);opacity:1;filter:drop-shadow(0 0 3px rgba(255,198,0,.45));}
.integ-ic[data-status="down"]{color:var(--red);opacity:.9;}
.integ-ic::after{
  content:attr(data-tip);
  position:absolute;top:140%;left:50%;transform:translateX(-50%);
  background:var(--panel2);border:1px solid var(--line2);color:var(--fg2);
  font-size:10px;font-family:var(--mono);white-space:nowrap;
  padding:4px 7px;border-radius:5px;opacity:0;pointer-events:none;
  transition:opacity .15s;z-index:50;
}
.integ-ic:hover::after,.integ-ic:focus::after,.integ-ic.tip-open::after{opacity:1;}
.status-strip{display:flex;align-items:center;gap:18px;flex-wrap:wrap;}
.agent-online{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--fg2);}
.pulse-dot{
  width:8px;height:8px;border-radius:50%;background:var(--green);
  box-shadow:0 0 8px rgba(58,217,0,.6);
}
.site-ctrls{display:flex;align-items:center;gap:8px;}
.lang-switch,.mode-switch{display:flex;gap:4px;}
.lang-switch button,.mode-switch button{
  background:transparent;border:1px solid var(--line2);color:var(--dim);
  font-family:var(--mono);font-size:10px;letter-spacing:.04em;
  padding:4px 7px;border-radius:5px;cursor:pointer;
  transition:border-color .15s,color .15s;
}
.lang-switch button:hover,.mode-switch button:hover{border-color:var(--blue);color:var(--fg);}
.lang-switch button.active,.mode-switch button.active{color:var(--accent);border-color:var(--accent);background:var(--field);}
.mode-switch{padding-right:8px;border-right:1px solid var(--line2);margin-right:4px;}
.theme-btn{
  display:inline-flex;align-items:center;justify-content:center;
  width:26px;height:24px;padding:0;background:transparent;
  border:1px solid var(--line2);border-radius:5px;color:var(--dim);cursor:pointer;
  transition:border-color .15s,color .15s;
}
.theme-btn:hover{border-color:var(--blue);color:var(--fg);}
.theme-btn .i-sun{display:block;}
.theme-btn .i-moon{display:none;}
html[data-theme="light"] .theme-btn .i-sun{display:none;}
html[data-theme="light"] .theme-btn .i-moon{display:block;}
.help-btn{font-family:var(--mono);font-size:12px;font-weight:600;}
/* цвета врачей из конфига ниши — неон под тёмную тему; на бумаге приглушаем */
html[data-theme="light"] .sched-block,html[data-theme="light"] .sched-staff .dot{filter:saturate(.7) brightness(.92);}
.header-summary{font-family:var(--mono);font-size:11.5px;color:var(--fg2);white-space:nowrap;}
.header-summary:empty{display:none;}
.topbar-actions{display:flex;gap:8px;flex-wrap:wrap;}

.btn{
  background:transparent;border:1px solid var(--line2);color:var(--fg2);
  padding:7px 13px;border-radius:7px;font-size:12px;cursor:pointer;
  transition:border-color .15s,color .15s;
}
.btn:hover{border-color:var(--blue);color:var(--fg);}
.btn-primary{background:var(--blue);border-color:var(--blue);color:#fff;}
.btn-primary:hover{border-color:var(--blue);background:var(--blue);filter:brightness(1.12);color:#fff;}
.btn-mini{
  background:transparent;border:1px solid var(--line);color:var(--dim);
  font-family:var(--mono);font-size:10px;padding:3px 8px;border-radius:5px;cursor:pointer;
}
.btn-mini:hover{border-color:var(--blue);color:var(--fg);}

/* ---------- grid / panels ---------- */
.grid{
  display:grid;grid-template-columns:repeat(12,1fr);gap:16px;
  padding:24px;max-width:1800px;margin:0 auto;
}
.span-3{grid-column:span 3;}
.span-4{grid-column:span 4;}
.span-5{grid-column:span 5;}
.span-6{grid-column:span 6;}
.span-12{grid-column:span 12;}

.panel{
  background:var(--panel);border:1px solid var(--line);border-radius:8px;
  padding:16px;display:flex;flex-direction:column;gap:12px;min-width:0;
}
/* высота панели предсказуема и не растёт от объёма данных (диалогов, лидов,
   записей) — содержимое скроллится внутри. Без этого один длинный список
   (например Telegram после «Показать вживую») раздувал всю строку сетки и
   растягивал соседние панели (расписание дня — полосы специалистов по 500px). */
#panelSchedule{height:460px;}
#panelSchedule .sched-body{flex:1;min-height:0;}
#panelTelegram{height:560px;}
#panelTelegram .tg-body{flex:1;min-height:0;}
#panelCrm{height:560px;}
#panelCrm .crm-body{flex:1;min-height:0;}
.panel-head{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  border-bottom:1px solid var(--line);padding-bottom:10px;
}
.label{
  font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--accent);white-space:nowrap;
}
.tabs{display:flex;gap:4px;}
.tab{
  background:transparent;border:1px solid transparent;color:var(--dim);
  font-size:11px;padding:4px 9px;border-radius:5px;cursor:pointer;
}
.tab:hover{color:var(--fg2);}
.tab.active{background:var(--field);color:var(--accent);border-color:var(--line2);}

.card{
  background:var(--panel2);border:1px solid var(--line);border-radius:6px;
  padding:10px 12px;
}
.row{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.mono{font-family:var(--mono);}
.dim{color:var(--dim);}
.fg2{color:var(--fg2);}

.status-dot{width:7px;height:7px;border-radius:50%;display:inline-block;flex:0 0 auto;}
.status-dot.ok,.status-dot.online,.status-dot.done,.status-dot.confirmed,.status-dot.paid{background:var(--green);box-shadow:0 0 6px rgba(58,217,0,.5);}
.status-dot.warn,.status-dot.pending,.status-dot.due,.status-dot.handoff{background:var(--accent);box-shadow:0 0 6px rgba(255,198,0,.5);}
.status-dot.down,.status-dot.bad,.status-dot.cancelled,.status-dot.no_show,.status-dot.overdue,.status-dot.rejected{background:var(--red);box-shadow:0 0 6px rgba(255,98,140,.5);}
.status-dot.idle,.status-dot.new{background:var(--dim);}
.status-dot.busy{background:var(--blue);box-shadow:0 0 6px rgba(0,136,255,.6);}

/* fill bars */
.fillbar{height:5px;border-radius:3px;background:var(--field);overflow:hidden;}
.fillbar > span{display:block;height:100%;background:var(--fill);border-radius:3px;}

/* ---------- cameras ---------- */
.cam-grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:8px;flex:1;min-height:220px;}
.cam{
  position:relative;border-radius:6px;overflow:hidden;background:#000;
  border:1px solid var(--line);cursor:pointer;min-height:90px;
}
.cam img{width:100%;height:100%;object-fit:cover;display:block;}
.cam-overlay{
  position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(0,0,0,.45) 0%,transparent 28%,transparent 70%,rgba(0,0,0,.55) 100%);
  display:flex;flex-direction:column;justify-content:space-between;padding:6px 8px;
  font-family:var(--mono);font-size:10px;color:#fff;pointer-events:none;
}
.cam-top{display:flex;justify-content:space-between;align-items:flex-start;gap:6px;}
.cam-name{font-weight:600;}
.cam-live{display:flex;align-items:center;gap:4px;color:var(--red);}
.cam-live-dot{width:5px;height:5px;border-radius:50%;background:var(--red);box-shadow:0 0 5px var(--red);}
.cam-bottom{display:flex;justify-content:flex-end;align-items:center;gap:8px;}
.cam-rec-badge{display:flex;align-items:center;gap:4px;color:var(--red);margin-left:auto;margin-right:8px;}
.cam-rec-badge.hidden{display:none;}
.cam-rec-dot{width:6px;height:6px;border-radius:50%;background:var(--red);box-shadow:0 0 6px var(--red);}
.cam-rec-btn{pointer-events:auto;}
.cam-rec-btn.active{border-color:var(--red);color:var(--red);}

/* ---------- KPI ---------- */
.kpi-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.kpi-tile{background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:10px 12px;display:flex;flex-direction:column;gap:3px;}
.kpi-tile .v{font-family:var(--mono);font-size:19px;font-weight:600;color:var(--accent);}
.kpi-tile .v.white{color:var(--fg);}
.kpi-tile .l{font-size:10.5px;color:var(--dim);letter-spacing:.03em;}
.kpi-tile .sub{font-size:10.5px;color:var(--fg2);}
.kpi-delta{font-size:10px;font-family:var(--mono);display:inline-flex;align-items:center;gap:2px;}
.kpi-delta.up{color:var(--green);}
.kpi-delta.down{color:var(--red);}
.kpi-delta.flat{color:var(--dim);}

/* заполнение пустоты в панели «Сегодня»: мини-график, источники, топ услуг (Den 09.10.2026) */
#panelKpi{display:flex;flex-direction:column;gap:12px;}
.kpi-fill{display:flex;flex-direction:column;gap:10px;flex:1;}
.kpi-fill-block{display:flex;flex-direction:column;gap:6px;}
.kpi-fill-title{font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);}
.kpi-hourbars{display:flex;align-items:flex-end;gap:2px;height:44px;}
.kpi-hourbars i{flex:1;background:var(--blue);opacity:.75;border-radius:2px 2px 0 0;min-height:2px;}
.kpi-hourbars i.now{background:var(--accent);opacity:1;}
.kpi-source-row{display:flex;align-items:center;gap:7px;font-size:10.5px;color:var(--fg2);}
.kpi-source-row .nm{flex:0 0 58px;}
.kpi-source-row .fillbar{flex:1;}
.kpi-source-row .pct{flex:0 0 32px;text-align:right;font-family:var(--mono);color:var(--dim);}
.kpi-top-service{display:flex;justify-content:space-between;font-size:10.5px;color:var(--fg2);padding:2px 0;}
.kpi-top-service .rank{color:var(--accent);font-family:var(--mono);margin-right:5px;}
.kpi-top-service .money{font-family:var(--mono);color:var(--fg);}

/* ---------- utilities ---------- */
.util-body{display:flex;flex-direction:column;gap:10px;}
.util-row{display:flex;justify-content:space-between;align-items:baseline;}
.util-row .v{font-family:var(--mono);color:var(--accent);font-weight:600;font-size:14px;}
.spark{display:flex;align-items:flex-end;gap:2px;height:36px;}
.spark i{flex:1;background:var(--blue);border-radius:2px 2px 0 0;opacity:.75;min-height:2px;}
.bills-list{display:flex;flex-direction:column;gap:2px;}
.bill-row{align-items:center;gap:8px;}
.bill-row-right{display:flex;align-items:center;gap:8px;}
.bills-bars{display:flex;gap:16px;align-items:flex-end;justify-content:center;height:120px;padding:0 4px;}
.bills-bar-col{display:flex;flex-direction:column;align-items:center;gap:4px;justify-content:flex-end;height:100%;font-size:10.5px;}
.bills-bar-col i{display:block;width:34px;background:var(--blue);border-radius:3px 3px 0 0;opacity:.85;}

/* ---------- счётчики (вкладка «Счётчики» в панели «Счета») ---------- */
/* высота панели фиксирована (как у Telegram/Schedule/CRM) — иначе длинная таблица показаний
   за месяц растягивает весь ряд сетки (камеры, KPI) по правилу grid align-items:stretch */
#panelUtil{height:460px;}
#panelUtil .util-body{flex:1;min-height:0;overflow-y:auto;}
.period-switch{display:flex;gap:4px;flex-wrap:wrap;}
.period-btn.active{border-color:var(--accent);color:var(--accent);background:var(--field);}
.meter-range-row{display:flex;gap:8px;}
.meter-range-row input{flex:1;}
.meter-tiles{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.meter-tile{background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:8px 10px;display:flex;flex-direction:column;gap:2px;}
.meter-tile .v{font-family:var(--mono);font-size:15px;font-weight:600;color:var(--accent);}
.meter-tile .l{font-size:10px;color:var(--dim);}
.meter-tile .sub{font-size:10.5px;color:var(--fg2);}
.meter-bars{display:flex;align-items:flex-end;gap:2px;height:36px;}
.meter-bars i{flex:1;background:var(--blue);border-radius:2px 2px 0 0;opacity:.75;min-height:2px;}
.meter-table{display:flex;flex-direction:column;gap:2px;}
.meter-row{align-items:center;gap:8px;font-size:11px;}
.meter-row-right{display:flex;align-items:center;gap:6px;flex:0 0 auto;}
.meter-thumb{width:28px;height:28px;object-fit:cover;border-radius:4px;cursor:pointer;border:1px solid var(--line2);}
.meter-instructions{font-size:10.5px;line-height:1.5;margin-top:2px;}

/* ---------- telegram: настольный клиент, три колонки (Den 09.10.2026) ---------- */
.tg-view-tabs{display:none;gap:4px;}
/* Den 10.10.2026: строка из трёх окон — Telegram (чаты + переписка) · мышление агента · системная консоль */
.tg-body{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr) minmax(0,1fr);gap:12px;}
.tg-win{display:flex;flex-direction:column;gap:8px;min-height:0;min-width:0;}
.tg-win-tg{display:grid;grid-template-columns:190px minmax(0,1fr);gap:12px;}
.tg-win-think,.tg-win-console{border-left:1px solid var(--line);padding-left:12px;}
.win-head{display:flex;align-items:center;gap:8px;flex:0 0 auto;min-height:22px;}
.win-head .label{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;}
.win-live{display:flex;align-items:center;gap:5px;font-family:var(--mono);font-size:9.5px;color:var(--dim);}
.win-live .pulse-dot{width:6px;height:6px;}
.seg{display:flex;gap:2px;margin-left:auto;flex:0 0 auto;}
.seg button{
  background:transparent;border:1px solid var(--line2);color:var(--dim);font-family:var(--mono);font-size:9.5px;
  padding:2px 7px;border-radius:4px;cursor:pointer;
}
.seg button:hover{color:var(--fg2);border-color:var(--blue);}
.seg button.active{color:var(--accent);background:var(--field);}
.tg-open-bot{
  margin-left:10px;font-size:11px;color:var(--blue);text-decoration:none;border:1px solid var(--line2);
  border-radius:5px;padding:3px 8px;white-space:nowrap;display:inline-flex;align-items:center;gap:6px;
}
.tg-open-bot:hover{border-color:var(--blue);}
.tg-open-bot .dim{color:var(--dim);}

/* окно 2 — мышление агента: лента шагов, как терминал */
.think-stream,.console-stream{
  flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:1px;
  background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:6px 8px;font-size:10.5px;line-height:1.45;
}
.think-row{display:grid;grid-template-columns:auto auto 1fr;gap:0 7px;padding:2px 0;align-items:baseline;}
.think-row .tr-ts{color:var(--dim);font-size:9.5px;}
.think-row .tr-phase{font-size:9px;letter-spacing:.06em;text-transform:uppercase;min-width:52px;color:var(--dim);}
.think-row .tr-text{color:var(--fg2);word-break:break-word;}
.think-row .tr-sub{grid-column:3;color:var(--dim);font-size:9.5px;}
.think-row.ph-in .tr-phase{color:var(--blue);}
.think-row.ph-in .tr-text{color:var(--fg);}
.think-row.ph-intent .tr-phase,.think-row.ph-decide .tr-phase{color:var(--accent);}
.think-row.ph-decide .tr-text{color:var(--fg);}
.think-row.ph-out .tr-phase{color:var(--green);}
.think-row.ph-human .tr-phase{color:var(--red);}
.think-row.ph-human .tr-text{color:var(--fg);}
.think-row.ph-llm .tr-phase{color:var(--blue);}
.think-row.ph-step{border-top:1px dashed var(--line);margin-top:2px;padding-top:4px;cursor:pointer;}
.think-row.ph-step .tr-phase{color:var(--accent);}
.think-row.new{background:color-mix(in srgb, var(--accent) 7%, transparent);}
.think-chat{color:var(--blue);cursor:pointer;}
.think-chat:hover{text-decoration:underline;}
.tag-sim{font-size:8.5px;color:var(--dim);border:1px solid var(--line2);border-radius:3px;padding:0 3px;margin-left:4px;letter-spacing:.04em;}
.think-empty,.console-empty{color:var(--dim);font-family:var(--sans);font-size:11px;text-align:center;padding:24px 6px;line-height:1.5;}

/* окно 3 — системная консоль: вызовы API и записи в данные */
.con-row{display:grid;grid-template-columns:auto 34px minmax(0,1fr) auto;gap:0 7px;padding:2px 0;align-items:baseline;}
.con-row .cr-ts{color:var(--dim);font-size:9.5px;}
.con-row .cr-kind{font-size:9px;text-transform:uppercase;color:var(--blue);}
.con-row.k-data .cr-kind{color:var(--accent);}
.con-row .cr-op{color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.con-row .cr-op .cr-target{color:var(--fg2);}
.con-row .cr-ms{color:var(--dim);font-size:9.5px;text-align:right;white-space:nowrap;}
.con-row .cr-meta{grid-column:3 / 5;color:var(--dim);font-size:9.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.con-row .cr-ok{color:var(--green);}
.con-row .cr-err{color:var(--red);}
.con-row.new{background:color-mix(in srgb, var(--accent) 7%, transparent);}
.console-foot{flex:0 0 auto;font-size:10px;font-family:var(--mono);display:flex;gap:10px;flex-wrap:wrap;}
.tg-reply-wrap{display:flex;flex-direction:column;gap:6px;flex:0 0 auto;}
.tg-reply-opts{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:10.5px;color:var(--dim);}
.tg-reply-opts .btn{font-size:10.5px;padding:3px 8px;}
.tg-reply-note{font-size:10px;color:var(--dim);}
.tg-reply-note.ok{color:var(--green);}
.tg-reply-note.bad{color:var(--red);}
.tg-col{display:flex;flex-direction:column;gap:8px;min-height:0;min-width:0;}
.tg-col-list{gap:8px;}
.tg-bot-where{
  font-size:10.5px;color:var(--fg2);background:var(--panel2);border:1px solid var(--line);
  border-radius:6px;padding:6px 8px;display:none;align-items:center;gap:6px;flex:0 0 auto;
}
.tg-bot-where.show{display:flex;}
.tg-bot-where .pulse-dot{width:6px;height:6px;flex:0 0 auto;}
.tg-search{
  flex:0 0 auto;background:var(--field);border:1px solid var(--line2);border-radius:6px;color:var(--fg);
  padding:6px 9px;font-size:11.5px;font-family:inherit;
}
.tg-search:focus{outline:none;border-color:var(--blue);}
.tg-list{display:flex;flex-direction:column;gap:4px;overflow-y:auto;min-height:0;flex:1;}
.tg-item{
  background:var(--panel2);border:1px solid var(--line);border-radius:7px;padding:8px;cursor:pointer;
  display:grid;grid-template-columns:28px 1fr auto;grid-template-rows:auto auto;gap:2px 8px;position:relative;
  align-items:center;
}
.tg-item:hover{border-color:var(--line2);}
.tg-item.active{border-color:var(--blue);background:var(--field);}
.tg-item .tg-avatar{
  grid-row:1 / 3;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:10px;font-weight:600;flex:0 0 auto;
}
.tg-item .name{font-size:11.5px;color:var(--fg);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tg-item .chan{font-size:9px;color:var(--dim);font-family:var(--mono);text-transform:uppercase;flex:0 0 auto;}
.tg-item .preview{grid-column:2;font-size:10px;color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tg-item .tg-time{grid-column:3;grid-row:1;font-size:9px;color:var(--dim);font-family:var(--mono);white-space:nowrap;}
.tg-item .tg-typing-tag{grid-column:3;grid-row:2;font-size:9px;color:var(--accent);font-family:var(--mono);white-space:nowrap;}
.tg-unread{
  grid-row:1;grid-column:3;justify-self:end;background:var(--accent);color:var(--on-accent);
  font-family:var(--mono);font-size:9px;font-weight:700;border-radius:8px;min-width:14px;height:14px;
  display:flex;align-items:center;justify-content:center;padding:0 3px;
}
.tg-active{display:flex;flex-direction:column;gap:8px;min-height:0;}
.tg-active-head{display:flex;justify-content:space-between;align-items:center;flex:0 0 auto;}
.tg-active-head .tg-head-chan{display:flex;align-items:center;gap:5px;color:var(--dim);}
.tg-msgs{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:7px;padding-right:2px;scroll-behavior:smooth;}
.bubble{max-width:82%;padding:7px 10px;border-radius:9px;font-size:12px;line-height:1.4;}
.bubble.client{background:var(--field);align-self:flex-start;border-top-left-radius:2px;}
.bubble.bot{background:var(--panel2);border:1px solid var(--line2);align-self:flex-end;border-top-right-radius:2px;}
.bubble.owner{background:var(--blue-dim);border:1px solid var(--blue);align-self:flex-end;border-top-right-radius:2px;}
.bubble .meta{display:block;margin-top:3px;font-size:9px;color:var(--dim);font-family:var(--mono);}
.typing{font-size:11px;color:var(--dim);font-style:italic;flex:0 0 auto;}
.tg-reply{display:flex;gap:6px;flex:0 0 auto;}
.tg-reply input{
  flex:1;background:var(--field);border:1px solid var(--line2);border-radius:6px;color:var(--fg);
  padding:7px 9px;font-size:12px;font-family:inherit;
}
.tg-reply input:focus{outline:none;border-color:var(--blue);}

/* колонка 3 — трасса агентной работы по активному чату */
.tg-trace{display:flex;flex-direction:column;gap:7px;overflow-y:auto;flex:1;min-height:0;}
.tg-trace-step{
  display:flex;flex-direction:column;gap:2px;padding:7px 8px;border-radius:6px;border:1px solid transparent;
  font-size:10.5px;background:var(--panel2);
}
.tg-trace-step.active{border-color:var(--accent);box-shadow:0 0 0 1px rgba(255,198,0,.15) inset;}
.tg-trace-step .tt-top{display:flex;justify-content:space-between;gap:6px;color:var(--dim);font-family:var(--mono);font-size:9.5px;}
.tg-trace-step .tt-agent{color:var(--blue);font-weight:500;}
.tg-trace-step .tt-intent{color:var(--fg);font-size:11px;}
.tg-trace-step .tt-detail{color:var(--fg2);font-size:10px;}
.tg-trace-step .tt-cost{color:var(--dim);font-family:var(--mono);font-size:9.5px;}
.tg-trace-empty{font-size:11px;color:var(--dim);text-align:center;padding:20px 4px;}

/* ---------- schedule: сетка по 30 минут, цвет по статусу (Den 09.10.2026) ---------- */
.sched-head-ctrls{display:flex;align-items:center;gap:14px;}
.sched-staff-filter{display:flex;gap:5px;flex-wrap:wrap;}
.sched-staff-filter .chip{
  background:transparent;border:1px solid var(--line2);color:var(--dim);font-size:10px;
  padding:4px 9px;border-radius:12px;cursor:pointer;display:flex;align-items:center;gap:5px;
}
.sched-staff-filter .chip .dot{width:6px;height:6px;border-radius:50%;}
.sched-staff-filter .chip.active{border-color:var(--accent);color:var(--fg);background:var(--field);}
.day-switch{display:flex;gap:4px;}

.sched-body{flex:1;min-height:0;display:flex;flex-direction:column;gap:10px;overflow-y:auto;}
.sched-grid{position:relative;display:flex;flex-direction:column;flex:0 0 auto;}
.sched-hours{
  position:relative;height:16px;font-family:var(--mono);font-size:9px;color:var(--dim);
  margin-bottom:4px;margin-left:124px;flex:0 0 auto;
}
.sched-hours span{position:absolute;top:0;transform:translateX(-50%);}
.sched-hours span:first-child{transform:none;}
/* высота полосы специалиста фиксирована — не растягивается от числа записей */
.sched-row{display:flex;align-items:stretch;gap:8px;margin-bottom:6px;position:relative;flex:0 0 52px;height:52px;min-height:52px;}
.sched-staff{
  width:116px;flex:0 0 116px;display:flex;align-items:center;gap:7px;overflow:hidden;
}
.sched-staff-avatar{
  width:26px;height:26px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:10px;font-weight:600;color:#07131c;
}
.sched-staff-info{display:flex;flex-direction:column;gap:1px;min-width:0;}
.sched-staff-info .nm{font-size:10.5px;color:var(--fg2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sched-staff-info .ld{font-size:9px;color:var(--dim);font-family:var(--mono);}
.sched-track{
  position:relative;flex:1;background:var(--field);border-radius:4px;height:100%;overflow:hidden;
  background-image:repeating-linear-gradient(to right, var(--line) 0, var(--line) 1px, transparent 1px, transparent calc(100%/var(--half-hours,20)));
}
.sched-block{
  position:absolute;top:3px;bottom:3px;border-radius:4px;padding:3px 7px;min-width:8px;
  font-size:10px;color:#07131c;overflow:hidden;white-space:nowrap;cursor:pointer;
  display:flex;align-items:center;gap:4px;border:1px solid rgba(0,0,0,.08);
}
.sched-block.status-confirmed,.sched-block.status-pending{background:var(--blue);color:#fff;}
.sched-block.status-live{background:var(--accent);color:var(--on-accent);box-shadow:0 0 0 1px var(--accent),0 0 8px rgba(255,198,0,.4);}
.sched-block.status-done{background:var(--dim);color:#0b1014;opacity:.75;}
.sched-block.status-cancelled{background:var(--line2);color:var(--dim);opacity:.55;}
.sched-block.status-no_show{background:var(--red);color:#fff;opacity:.5;}
.sched-block-label{overflow:hidden;text-overflow:ellipsis;}
.sched-block-tip{
  position:absolute;bottom:100%;left:0;margin-bottom:6px;
  background:var(--panel2);border:1px solid var(--line2);color:var(--fg);
  font-family:var(--sans);font-size:10.5px;white-space:nowrap;
  padding:6px 9px;border-radius:5px;opacity:0;pointer-events:none;
  transition:opacity .15s;z-index:20;display:flex;flex-direction:column;gap:2px;
}
.sched-block-tip b{color:var(--fg);}
.sched-block-tip span{color:var(--fg2);font-size:10px;}
.sched-block:hover .sched-block-tip{opacity:1;}
.sched-free{
  position:absolute;top:3px;bottom:3px;border-radius:4px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;font-size:9.5px;color:var(--dim);
  border:1px dashed var(--line2);opacity:0;transition:opacity .12s,color .12s,border-color .12s;
}
.sched-track:hover .sched-free{opacity:.5;}
.sched-free:hover{opacity:1!important;color:var(--accent);border-color:var(--accent);background:var(--panel2);}
.sched-now{position:absolute;top:-4px;bottom:0;width:2px;background:var(--red);z-index:5;}
.sched-now::before{content:"";position:absolute;top:0;left:-3px;width:8px;height:8px;border-radius:50%;background:var(--red);}
.sched-now-label{
  position:absolute;top:-16px;left:4px;font-family:var(--mono);font-size:9px;color:var(--red);white-space:nowrap;
}

/* компактный список записей дня — под дорожками на десктопе, единственный вид на мобильном */
.sched-list-head{display:flex;justify-content:space-between;align-items:baseline;flex:0 0 auto;}
.sched-list{display:flex;flex-direction:column;gap:6px;flex:0 0 auto;max-height:180px;overflow-y:auto;border-top:1px solid var(--line);padding-top:10px;}
.sched-list-item{
  background:var(--panel2);border:1px solid var(--line);border-left:3px solid var(--blue);
  border-radius:6px;padding:8px 10px;display:flex;justify-content:space-between;align-items:center;gap:8px;cursor:pointer;
}

/* ---------- crm ---------- */
/* панель на всю ширину строки (span-12, см. index.html); колонки гибкие,
   при нехватке места — горизонтальный скролл со scroll-snap. Референсы:
   Linear (цветная полоса стадии, счётчик+сумма в заголовке), Attio
   (аватар-инициалы с приглушённым цветом по хэшу имени), Pipedrive
   (компактная карточка сделки с суммой моноширинным справа), HubSpot/Salesforce
   (сводка над доской, таблица как альтернативный вид). */
.crm-view-switch{display:flex;gap:4px;}
.crm-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;flex:0 0 auto;}
.crm-search{
  flex:0 1 220px;background:var(--field);border:1px solid var(--line2);border-radius:6px;color:var(--fg);
  padding:6px 9px;font-size:11.5px;font-family:inherit;
}
.crm-search:focus{outline:none;border-color:var(--blue);}
.crm-filters{display:flex;gap:6px;flex-wrap:wrap;}
.crm-filters select{
  background:transparent;border:1px solid var(--line2);color:var(--fg2);font-size:10.5px;
  padding:5px 7px;border-radius:6px;font-family:inherit;
}
.crm-summary{
  display:grid;grid-template-columns:repeat(5,1fr);gap:8px;flex:0 0 auto;
}
.crm-summary-tile{background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:8px 10px;display:flex;flex-direction:column;gap:2px;}
.crm-summary-tile .v{font-family:var(--mono);font-size:15px;font-weight:600;color:var(--accent);}
.crm-summary-tile .l{font-size:9.5px;color:var(--dim);letter-spacing:.03em;}
.crm-body{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x proximity;padding-bottom:2px;}
.crm-col{
  display:flex;flex-direction:column;gap:8px;min-width:200px;flex:1 1 0;
  scroll-snap-align:start;background:var(--panel2);border-radius:0 8px 8px 8px;
  border-top:3px solid var(--stage-color,var(--line2));padding:10px 10px 4px;
}
.crm-col-head{display:flex;flex-direction:column;gap:2px;flex:0 0 auto;}
.crm-col-title{display:flex;justify-content:space-between;align-items:baseline;gap:6px;}
.crm-col-name{font-family:var(--mono);font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--fg2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.crm-col-count{font-family:var(--mono);font-size:10px;color:var(--dim);flex:0 0 auto;}
.crm-col-sum{font-family:var(--mono);font-size:11px;color:var(--accent);}
.crm-cards{display:flex;flex-direction:column;gap:7px;overflow-y:auto;flex:1;min-height:60px;}
.crm-empty{font-size:11px;text-align:center;padding:22px 4px;}
.crm-card{
  background:var(--panel);border:1px solid var(--line);border-radius:7px;padding:9px 10px;cursor:pointer;
  display:flex;flex-direction:column;gap:7px;flex:0 0 auto;
}
.crm-card:hover{border-color:var(--line2);}
.crm-card-top{display:flex;align-items:center;gap:8px;}
.crm-avatar{
  width:26px;height:26px;border-radius:50%;flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:10px;font-weight:600;
}
.crm-card-id{flex:1;min-width:0;display:flex;flex-direction:column;}
.crm-name{font-size:11.5px;color:var(--fg);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.crm-service{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.crm-value{font-family:var(--mono);font-size:11px;color:var(--fg2);flex:0 0 auto;}
.crm-card-meta{display:flex;align-items:center;gap:8px;font-size:9.5px;color:var(--dim);}
.crm-source{font-family:var(--mono);letter-spacing:.04em;flex:0 0 auto;}
.crm-last{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.crm-next-btn{
  opacity:0;transition:opacity .15s,border-color .15s,color .15s;
  background:transparent;border:1px solid var(--line2);color:var(--blue);
  width:20px;height:20px;border-radius:5px;cursor:pointer;font-size:12px;line-height:1;flex:0 0 auto;
}
.crm-card:hover .crm-next-btn,.crm-card:focus-within .crm-next-btn{opacity:1;}
.crm-next-btn:hover{border-color:var(--blue);}
@media (hover:none){.crm-next-btn{opacity:1;}}
.crm-card.dragging{opacity:.4;}
.crm-col.drag-over .crm-cards{outline:1px dashed var(--blue);border-radius:6px;}
/* Lite: завершено/потеряно сворачиваются в одну узкую колонку-сводку,
   чтобы три рабочие стадии были широкими */
.crm-summary-col{flex:0 0 150px;min-width:150px;}
.crm-summary-row{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--fg2);padding:7px 2px;border-bottom:1px solid var(--line);cursor:pointer;}
.crm-summary-row:last-child{border-bottom:none;}
.crm-summary-row:hover{color:var(--fg);}

/* карточка — теги, ответственный, следующий шаг, быстрые действия по hover */
.crm-card-tags{display:flex;gap:4px;flex-wrap:wrap;}
.crm-tag{font-size:9px;font-family:var(--mono);color:var(--fg2);background:var(--panel2);border:1px solid var(--line);border-radius:4px;padding:1px 6px;}
.crm-next-action{display:flex;align-items:center;gap:5px;font-size:10px;color:var(--fg2);}
.crm-next-action.overdue{color:var(--red);}
.crm-owner-chip{font-size:9.5px;color:var(--dim);}
.crm-quick-actions{display:flex;gap:5px;opacity:0;transition:opacity .15s;}
.crm-card:hover .crm-quick-actions,.crm-card:focus-within .crm-quick-actions{opacity:1;}
@media (hover:none){.crm-quick-actions{opacity:1;}}
.crm-quick-actions .btn-mini{padding:3px 6px;}

/* зоны «Выиграно / Потеряно» — появляются при перетаскивании карточки */
.crm-dropzones{display:none;gap:10px;flex:0 0 auto;}
.crm-dropzones.show{display:flex;}
.crm-dropzone{
  flex:1;border:1px dashed var(--line2);border-radius:8px;padding:10px;text-align:center;
  font-size:11px;color:var(--dim);transition:border-color .15s,color .15s,background .15s;
}
.crm-dropzone.won{border-color:var(--green2);}
.crm-dropzone.lost{border-color:var(--red);}
.crm-dropzone.drag-over{background:var(--field);color:var(--fg);}

/* вид «таблица» */
.crm-table{width:100%;border-collapse:collapse;font-size:11.5px;}
.crm-table th{
  text-align:left;font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--dim);padding:6px 8px;border-bottom:1px solid var(--line2);cursor:pointer;white-space:nowrap;
}
.crm-table th:hover{color:var(--fg2);}
.crm-table th.sorted{color:var(--accent);}
.crm-table td{padding:7px 8px;border-bottom:1px solid var(--line);color:var(--fg2);}
.crm-table tr{cursor:pointer;}
.crm-table tr:hover td{background:var(--field);}
.crm-table .crm-name{font-size:11.5px;}

/* боковая панель сделки (drawer, не модалка) */
.modal-overlay.drawer-overlay{justify-content:flex-end;padding:0;background:var(--veil);}
.modal.drawer{
  width:min(420px,100%);height:100%;max-height:100%;border-radius:0;border-left:1px solid var(--line2);
  transform:translateX(16px);
}
.modal-overlay.show .modal.drawer{transform:translateX(0);}
.drawer-section-title{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin:14px 0 8px;}
.drawer-section-title:first-child{margin-top:0;}
.timeline-item{display:flex;gap:8px;font-size:11px;padding:5px 0;border-bottom:1px solid var(--line);}
.timeline-item .ts{font-family:var(--mono);color:var(--dim);flex:0 0 auto;font-size:10px;}
.timeline-item .tx{color:var(--fg2);}
.task-row{display:flex;align-items:center;gap:8px;font-size:11.5px;padding:5px 0;border-bottom:1px solid var(--line);}
.task-row.done{opacity:.5;text-decoration:line-through;}
.task-row .due{margin-left:auto;font-family:var(--mono);font-size:10px;color:var(--dim);}
.task-row .due.overdue{color:var(--red);}

/* ---------- social ---------- */
.social-body{display:grid;grid-template-columns:1fr;gap:8px;overflow-y:auto;max-height:460px;}
.post-card{background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:9px;display:flex;gap:10px;cursor:pointer;}
.post-card:hover{border-color:var(--line2);}
.post-thumb-wrap{position:relative;flex:0 0 auto;}
.post-thumb{width:56px;height:56px;border-radius:5px;object-fit:cover;flex:0 0 auto;background:var(--field);display:block;}
.post-network-badge{
  position:absolute;bottom:-4px;right:-4px;width:17px;height:17px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;background:var(--panel2);border:1px solid var(--line2);
  color:var(--dim);
}
.post-network-badge.lit{color:var(--accent);border-color:var(--accent);box-shadow:0 0 5px rgba(255,198,0,.4);}
.post-network-badge svg{width:10px;height:10px;}
.post-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;}
.post-text{font-size:11.5px;color:var(--fg2);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}
.post-meta{display:flex;justify-content:space-between;align-items:center;font-size:9.5px;color:var(--dim);font-family:var(--mono);}
.post-stats{display:flex;gap:10px;font-size:9.5px;color:var(--fg2);font-family:var(--mono);}
.post-actions{display:flex;gap:5px;flex-wrap:wrap;margin-top:2px;}
.post-actions .btn-mini{padding:3px 7px;}

/* ---------- agents / logs (Den 09.10.2026: «Логи», простой/полный) ---------- */
.log-mode-switch{display:flex;gap:4px;}
.log-role-filter{display:flex;gap:5px;flex-wrap:wrap;flex:0 0 auto;}
.log-role-filter .chip{
  background:transparent;border:1px solid var(--line2);color:var(--dim);font-size:9.5px;
  padding:3px 8px;border-radius:10px;cursor:pointer;
}
.log-role-filter .chip.active{border-color:var(--accent);color:var(--fg);background:var(--field);}
.log-row.simple{grid-template-columns:52px 1fr;}
.log-row-full-extra{font-size:9.5px;color:var(--dim);margin-top:2px;grid-column:1 / -1;padding-left:60px;}
.agents-body{display:flex;flex-direction:column;gap:12px;flex:1;min-height:0;}
.pipeline{display:flex;align-items:center;gap:4px;overflow-x:auto;padding-bottom:6px;position:relative;}
.pipe-node{
  display:flex;flex-direction:column;align-items:center;gap:5px;min-width:64px;position:relative;
}
.pipe-node .circle{
  width:34px;height:34px;border-radius:50%;background:var(--panel2);border:1.5px solid var(--line2);
  display:flex;align-items:center;justify-content:center;position:relative;
}
.pipe-node .circle .status-dot{position:absolute;top:-2px;right:-2px;border:2px solid var(--panel);}
.pipe-node .lbl{font-size:9px;color:var(--fg2);text-align:center;}
.pipe-arrow{flex:0 0 22px;height:2px;background:var(--line2);position:relative;}
.agents-cols{display:grid;grid-template-columns:1fr 150px;gap:12px;flex:1;min-height:0;}
.agent-log{display:flex;flex-direction:column;gap:5px;overflow-y:auto;max-height:280px;}
.log-row{
  display:grid;grid-template-columns:52px 110px 1fr;gap:8px;font-size:10.5px;padding:5px 6px;
  border-radius:5px;cursor:pointer;align-items:baseline;
}
.log-row:hover{background:var(--field);}
.log-row .t{font-family:var(--mono);color:var(--dim);}
.log-row .a{color:var(--blue);font-weight:500;}
.log-row .s{color:var(--fg2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.agent-cost{display:flex;flex-direction:column;gap:8px;}
.cost-figure{display:flex;flex-direction:column;gap:1px;}
.cost-figure .v{font-family:var(--mono);font-size:18px;color:var(--accent);font-weight:600;}
.cost-figure .l{font-family:var(--mono);font-size:9.5px;color:var(--dim);text-transform:uppercase;letter-spacing:.06em;}
.cost-bars{display:flex;flex-direction:column;gap:5px;margin-top:4px;}
.cost-bar-row{font-size:9.5px;color:var(--fg2);}
.cost-bar-row .fillbar{margin-top:2px;}

/* ---------- reports / notifications ---------- */
.reports-body{display:flex;flex-direction:column;gap:12px;flex:1;min-height:0;}
.last-report{cursor:pointer;}
.last-report .title{font-size:12px;color:var(--fg);font-weight:500;}
.last-report .excerpt{font-size:11px;color:var(--dim);margin-top:4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.notif-list{display:flex;flex-direction:column;gap:6px;overflow-y:auto;max-height:260px;}
.notif-item{display:flex;gap:7px;font-size:11px;align-items:flex-start;padding:6px 7px;border-radius:5px;}
.notif-item .status-dot{margin-top:4px;}
.notif-item .tx{color:var(--fg2);flex:1;}
.notif-item .ts{font-family:var(--mono);font-size:9.5px;color:var(--dim);flex:0 0 auto;}

/* ---------- niche widget ---------- */
.niche-body{display:flex;flex-direction:column;gap:14px;}
.niche-card{background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:11px 12px;display:flex;flex-direction:column;gap:6px;}
.niche-card .title{font-size:12px;color:var(--fg);font-weight:500;display:flex;align-items:center;gap:6px;}
.niche-card .line{font-size:11px;color:var(--fg2);display:flex;justify-content:space-between;gap:8px;}
.niche-card .dot{width:7px;height:7px;border-radius:50%;display:inline-block;flex:0 0 auto;}

.niche-rooms-grid,.niche-chairs-grid,.niche-zones-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;}

/* кабинет/кресло занято: мини-камера, таймер приёма, экстренная связь (Den 09.10.2026) */
.niche-card-cam{
  display:flex;gap:8px;align-items:center;background:var(--panel);border:1px solid var(--line);
  border-radius:6px;padding:6px;cursor:pointer;
}
.niche-card-cam img{width:44px;height:32px;object-fit:cover;border-radius:4px;flex:0 0 auto;background:var(--field);}
.niche-card-cam .no-cam{
  width:44px;height:32px;border-radius:4px;flex:0 0 auto;background:var(--field);display:flex;
  align-items:center;justify-content:center;color:var(--dim);font-size:7px;text-align:center;line-height:1.1;padding:2px;
}
.niche-timer-row{display:flex;flex-direction:column;gap:3px;}
.niche-timer-label{font-size:10px;color:var(--fg2);}
.niche-contact-row{display:flex;gap:5px;flex-wrap:wrap;margin-top:2px;}
.niche-contact-row a.btn-mini,.niche-contact-row button.btn-mini{text-decoration:none;}
.niche-contact-row button.btn-mini[disabled]{opacity:.45;cursor:default;}
.niche-contact-row button.btn-mini[disabled]:hover{border-color:var(--line);color:var(--dim);}
.niche-objects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;}

.niche-steril .steril-row{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--fg2);padding:4px 0;}
.niche-steril .steril-row .fillbar{flex:1;}
.steril-fill > span{background:var(--accent);}

.niche-supplies .supply-row{padding:6px 0;border-bottom:1px solid var(--line);}
.niche-supplies .supply-row:last-child{border-bottom:none;}
.supply-head{display:flex;justify-content:space-between;align-items:center;font-size:11.5px;color:var(--fg2);margin-bottom:4px;}
.supply-reorder{display:flex;align-items:center;gap:4px;color:var(--red);font-size:10px;}
.supply-row .line{margin-top:3px;font-size:10px;}

.niche-showings-top{display:flex;flex-direction:column;gap:6px;}
.niche-showings-count{font-size:11.5px;color:var(--fg2);}
.niche-showings-list{display:flex;flex-direction:column;gap:4px;}
.niche-showing-chip{font-size:11px;color:var(--fg2);background:var(--panel2);border:1px solid var(--line);border-radius:5px;padding:5px 8px;}

.niche-object-card{background:var(--panel2);border:1px solid var(--line);border-radius:6px;overflow:hidden;cursor:pointer;display:flex;flex-direction:column;}
.niche-object-card:hover{border-color:var(--line2);}
.obj-photo{width:100%;height:110px;object-fit:cover;background:var(--field);display:block;}
.obj-body{padding:9px 10px;display:flex;flex-direction:column;gap:4px;}
.obj-title{font-size:12px;color:var(--fg);font-weight:500;}
.obj-meta{font-size:10.5px;}
.obj-price{font-size:13px;color:var(--accent);font-weight:600;}
.obj-status{font-size:10.5px;color:var(--fg2);display:flex;align-items:center;gap:5px;}

/* kind: orders — shop (Den 10.10.2026): список заказов + остатки по размерам */
.niche-orders .order-row{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--fg2);padding:4px 0;border-bottom:1px solid var(--line);flex-wrap:wrap;}
.niche-orders .order-row:last-child{border-bottom:none;}
.order-client{color:var(--fg);font-weight:500;}
.order-status{margin-left:auto;font-size:10px;color:var(--fg2);}
.stock-sizes{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px;}
.stock-size-chip{font-size:10px;padding:2px 6px;border-radius:4px;background:var(--field);color:var(--fg2);}
.stock-size-chip.low{color:var(--red);border:1px solid var(--red);}

/* ---------- режимы Lite / Pro ---------- */
/* атрибут на <html> ставится бут-скриптом до первой отрисовки (как тема) —
   переключение происходит без перезагрузки и без мигания раскладки. */
html[data-mode="lite"] #panelUtil,
html[data-mode="lite"] #panelSocial,
html[data-mode="lite"] #panelAgents,
html[data-mode="lite"] #panelNiche{display:none;}
html[data-mode="lite"] #panelCameras{grid-column:span 6;}
html[data-mode="lite"] #panelKpi{grid-column:span 6;}
html[data-mode="lite"] #panelReports{grid-column:span 12;}

/* ---------- обучение (onboarding tour) ---------- */
.tour-overlay{position:fixed;inset:0;z-index:600;}
.tour-catcher{position:fixed;inset:0;z-index:490;background:transparent;}
.tour-target{
  position:relative!important;z-index:500!important;
  box-shadow:0 0 0 9999px var(--veil);border-radius:8px;
  transition:box-shadow .14s ease;
}
.tour-card{
  position:fixed;z-index:600;width:320px;max-width:calc(100vw - 24px);
  background:var(--panel);border:1px solid var(--line2);border-radius:10px;
  padding:14px 16px 14px;display:flex;flex-direction:column;gap:8px;
  opacity:0;transition:opacity .14s ease;
}
.tour-card.show{opacity:1;}
.tour-arrow{
  position:absolute;width:12px;height:12px;background:var(--panel);
  border:1px solid var(--line2);transform:rotate(45deg);
}
.tour-card.arrow-top .tour-arrow{top:-7px;border-bottom:none;border-right:none;}
.tour-card.arrow-bottom .tour-arrow{bottom:-7px;border-top:none;border-left:none;}
.tour-card.arrow-none .tour-arrow{display:none;}
.tour-step{font-size:10px;color:var(--accent);letter-spacing:.06em;}
.tour-title{font-size:13.5px;font-weight:600;color:var(--fg);}
.tour-body{font-size:12px;color:var(--fg2);line-height:1.5;}
.tour-actions{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:4px;}
.tour-actions-right{display:flex;gap:8px;}
.tour-link{background:transparent;border:none;color:var(--dim);font-size:11px;cursor:pointer;padding:4px 0;text-decoration:underline;text-decoration-color:var(--line2);}
.tour-link:hover{color:var(--fg2);}
@media (max-width:760px){
  .tour-card{left:12px!important;right:12px;bottom:12px!important;top:auto!important;width:auto;transform:none!important;}
  .tour-card .tour-arrow{display:none;}
  html[data-mode="lite"] #panelCameras,
  html[data-mode="lite"] #panelKpi,
  html[data-mode="lite"] #panelReports{grid-column:1 / -1;}
}

/* ---------- modal ---------- */
.modal-overlay{
  position:fixed;inset:0;background:var(--veil);
  display:none;align-items:center;justify-content:center;z-index:100;padding:20px;
  opacity:0;transition:opacity .14s ease;
}
.modal-overlay:not([hidden]){display:flex;}
.modal-overlay.show{opacity:1;}
.modal{
  background:var(--panel);border:1px solid var(--line2);border-radius:10px;
  width:min(560px,100%);max-height:86vh;display:flex;flex-direction:column;overflow:hidden;
  transform:scale(.98);transition:transform .14s ease;
}
.modal-overlay.show .modal{transform:scale(1);}
.modal.wide{width:min(980px,100%);}
.modal-head{
  display:flex;justify-content:space-between;align-items:center;padding:14px 18px;
  border-bottom:1px solid var(--line);
}
.modal-title{font-size:14px;font-weight:600;color:var(--fg);}
.modal-close{background:transparent;border:none;color:var(--dim);cursor:pointer;padding:4px;border-radius:5px;}
.modal-close:hover{color:var(--fg);background:var(--field);}
.modal-content{padding:16px 18px;overflow-y:auto;flex:1;}
.modal-content h1,.modal-content h2,.modal-content h3{color:var(--accent);font-size:13px;margin:12px 0 6px;font-family:var(--mono);letter-spacing:.04em;}
.modal-content h1:first-child,.modal-content h2:first-child{margin-top:0;}
.modal-content ul{margin:4px 0 10px;padding-left:18px;}
.modal-content li{margin-bottom:3px;font-size:12.5px;color:var(--fg2);}
.modal-content p{font-size:12.5px;color:var(--fg2);margin:4px 0 10px;}
.modal-content b,.modal-content strong{color:var(--fg);}
.modal-grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.modal-row{display:flex;justify-content:space-between;font-size:12.5px;padding:5px 0;border-bottom:1px solid var(--line);}
.modal-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;}
.modal-textarea,.modal-input{
  width:100%;background:var(--field);border:1px solid var(--line2);border-radius:6px;color:var(--fg);
  padding:8px 10px;font-size:12.5px;font-family:inherit;resize:vertical;
}
.modal-textarea:focus,.modal-input:focus{outline:none;border-color:var(--blue);}
.ask-answer{
  margin-top:10px;background:var(--panel2);border:1px solid var(--line);border-radius:6px;
  padding:10px;font-size:12.5px;color:var(--fg2);white-space:pre-wrap;
}

/* «Спросить агентов» — окно мессенджера (Den 09.10.2026) */
.ask-wrap{display:grid;grid-template-columns:1fr 160px;gap:14px;height:60vh;}
.ask-main{display:flex;flex-direction:column;min-height:0;}
.ask-side{border-left:1px solid var(--line);padding-left:12px;display:flex;flex-direction:column;gap:8px;overflow-y:auto;}
.ask-side-figure{display:flex;flex-direction:column;gap:1px;}
.ask-side-figure .v{font-family:var(--mono);font-size:15px;color:var(--accent);font-weight:600;}
.ask-side-figure .l{font-size:9.5px;color:var(--dim);}
.ask-msgs{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding-right:2px;}
.ask-bubble{max-width:88%;padding:8px 10px;border-radius:9px;font-size:12px;line-height:1.45;white-space:pre-wrap;}
.ask-bubble.owner{background:var(--blue-dim);border:1px solid var(--blue);align-self:flex-end;}
.ask-bubble.agent{background:var(--panel2);border:1px solid var(--line2);align-self:flex-start;}
.ask-bubble .ent-link{color:var(--blue);cursor:pointer;text-decoration:underline;text-decoration-color:var(--blue-dim);}
.ask-chips{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0;}
.ask-input-row{display:flex;gap:6px;flex:0 0 auto;}
.ask-input-row input{
  flex:1;background:var(--field);border:1px solid var(--line2);border-radius:6px;color:var(--fg);
  padding:8px 10px;font-size:12.5px;font-family:inherit;
}
.ask-input-row input:focus{outline:none;border-color:var(--blue);}
.ask-empty{font-size:11.5px;color:var(--dim);text-align:center;padding:30px 10px;}
@media (max-width:600px){.ask-wrap{grid-template-columns:1fr;height:auto;}.ask-side{border-left:none;padding-left:0;border-top:1px solid var(--line);padding-top:10px;flex-direction:row;overflow-x:auto;}}
.cam-split{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:8px;height:70vh;}
.cam-split .cam{min-height:0;}
.bars24{display:flex;align-items:flex-end;gap:3px;height:90px;}
.bars24 i{flex:1;background:var(--blue);opacity:.8;border-radius:2px 2px 0 0;min-height:2px;}
.notice{font-size:11px;color:var(--dim);margin-top:8px;}
.notice-banner{font-size:11.5px;border-radius:6px;padding:8px 10px;margin-bottom:12px;border:1px solid var(--line2);}
.notice-banner.ok{color:var(--green);border-color:var(--green2);background:rgba(58,217,0,.07);}
.notice-banner.error{color:var(--red);border-color:var(--red);background:rgba(255,98,140,.08);}
.rec-row{transition:background 1.6s ease-out;border-radius:5px;}
.rec-row.highlight{background:var(--field);}
.form-error{font-size:11.5px;color:var(--red);margin-top:6px;}

/* ---------- запись камеры / куда прислать отчёт ---------- */
.rec-list-wrap{margin-top:14px;}
.rec-list{display:flex;flex-direction:column;gap:2px;}
.rec-row{align-items:center;gap:8px;}
.rec-row-right{display:flex;align-items:center;gap:6px;flex:0 0 auto;}
.rec-row-right a.btn-mini{text-decoration:none;}
.rec-dest-row{display:flex;gap:10px;margin-bottom:10px;}
.rec-dest-btn,.report-dest-grid .rec-dest-btn{
  flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 8px;
}
.rec-dest-glyph{width:22px;height:22px;color:var(--fg2);}
.rec-remember{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--fg2);cursor:pointer;}
.report-dest-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:10px;}
@media (max-width:480px){.report-dest-grid{grid-template-columns:repeat(2,1fr);}}

/* печать отчёта (window.print) — только содержимое модалки, без остального интерфейса */
@media print{
  body *{visibility:hidden;}
  .modal-content.print-report,.modal-content.print-report *{visibility:visible;}
  .modal-content.print-report{position:absolute;left:0;top:0;width:100%;}
}

/* ---------- scrollbars ---------- */
*::-webkit-scrollbar{width:7px;height:7px;}
*::-webkit-scrollbar-thumb{background:var(--line2);border-radius:4px;}
*::-webkit-scrollbar-track{background:transparent;}

/* ---------- responsive ---------- */
@media (max-width:1100px){
  .span-3,.span-4,.span-5,.span-6{grid-column:span 6;}
}

/* средняя ширина: Telegram сверху на всю строку, мышление и консоль — парой под ним */
@media (max-width:1200px) and (min-width:761px){
  #panelTelegram{height:auto;}
  .tg-body{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:440px 360px;}
  .tg-win-tg{grid-column:1 / -1;}
  .tg-win-think{border-left:none;padding-left:0;}
}

@media (max-width:760px){
  .grid{grid-template-columns:1fr;padding:14px;gap:12px;}
  .span-3,.span-4,.span-5,.span-6,.span-12{grid-column:1 / -1;}
  #panelTelegram,#panelSchedule,#panelCrm{height:460px;}
  .topbar{padding:12px 14px;}
  .topbar-actions{width:100%;}
  .topbar-actions .btn{flex:1 1 auto;min-width:0;padding:7px 6px;font-size:11px;}
  .kpi-grid{grid-template-columns:1fr 1fr;}

  /* Telegram и два окна агента — вкладками (Den 09–10.10.2026) */
  #panelTelegram{height:520px;}
  #panelTelegram .panel-head{flex-wrap:wrap;row-gap:6px;}
  .tg-view-tabs{display:flex;width:100%;}
  .tg-view-tabs .tab{flex:1 1 0;padding:5px 4px;}
  .tg-body,.tg-body[data-view]{grid-template-columns:1fr;grid-template-rows:1fr;}
  .tg-win{display:none;}
  .tg-win-tg{grid-template-columns:1fr;}
  .tg-body .tg-col{display:none;}
  .tg-body[data-view="chats"] .tg-win-tg,.tg-body[data-view="thread"] .tg-win-tg{display:grid;}
  .tg-body[data-view="chats"] .tg-col-list{display:flex;}
  .tg-body[data-view="thread"] .tg-col-thread{display:flex;}
  .tg-body[data-view="think"] .tg-win-think,.tg-body[data-view="console"] .tg-win-console{display:flex;border-left:none;padding-left:0;}
  .tg-open-bot{margin-left:auto;}

  .sched-head-ctrls{flex-wrap:wrap;}
  .crm-summary{grid-template-columns:repeat(2,1fr);}
  .crm-toolbar{align-items:stretch;}
  .crm-search{flex:1 1 100%;}
  .sched-grid{display:none;}
  .sched-list{display:flex;flex:1;min-height:0;max-height:none;overflow-y:auto;border-top:none;padding-top:0;}
  .crm-col{min-width:78vw;}
  .crm-summary-col{min-width:46vw;flex:0 0 46vw;}
  .crm-toolbar{flex-wrap:wrap;}
  .crm-table{overflow-x:auto;}
  .agents-cols{grid-template-columns:1fr;}
  .modal{width:100%;max-height:92vh;}
  .modal.drawer{width:100%;}
  .header-summary{display:none;}
  .topbar-mid{gap:10px;}
  .lang-switch button,.mode-switch button{padding:3px 6px;font-size:9.5px;}
  .mode-switch{padding-right:6px;margin-right:2px;}
}

@media (max-width:400px){
  .kpi-grid{grid-template-columns:1fr 1fr;}
}
