/* ==========================================================================
   CarFar Control Center v2 — styles.css
   Премиум мягкий светлый CRM + тёмный AI-штаб.
   Перенос и адаптация дизайна из МАКЕТ-идеал.html (data-driven).
   ========================================================================== */

/* ===== Design tokens ===== */
:root{
  --bg:#eceff3; --surface:#ffffff; --surface-2:#f6f8fb;
  --ink:#1d2430; --ink-soft:#46505f; --muted:#8a94a6; --line:#e6eaf0;
  --brand:#10b981; --brand-d:#059669;
  --fary:#3b82f6; --detail:#8b5cf6; --moyka:#14b8a6;
  --gold:#e0a72b; --danger:#ef4444; --warn:#f59e0b; --ok:#22c55e;
  --r:16px; --r-s:11px;
  --sh:0 6px 24px rgba(29,36,48,.07); --sh-s:0 2px 8px rgba(29,36,48,.06);
  --font:-apple-system,BlinkMacSystemFont,"SF Pro Display","Segoe UI",Roboto,sans-serif;
}

*{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--font);background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;line-height:1.45}
.app{display:grid;grid-template-columns:248px 1fr;min-height:100vh}

/* ==========================================================================
   Sidebar
   ========================================================================== */
.side{background:linear-gradient(180deg,#0f1722,#13202f);color:#cdd6e3;padding:22px 14px;display:flex;flex-direction:column;gap:6px;position:sticky;top:0;height:100vh}
.brand{display:flex;align-items:center;gap:11px;padding:6px 8px 18px}
.brand .logo{height:30px;width:auto;max-width:104px;object-fit:contain;display:block}
.brand b{font-size:16px;color:#fff;letter-spacing:.2px}
.brand span{font-size:11px;color:#7e8aa0;display:block;margin-top:1px}
.nav-group{font-size:10px;text-transform:uppercase;letter-spacing:1.3px;color:#5e6b80;margin:14px 10px 4px}
.nav{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:11px;cursor:pointer;color:#aeb9c9;font-size:14px;font-weight:500;transition:.15s;border:1px solid transparent}
.nav:hover{background:rgba(255,255,255,.05);color:#e8eef6}
.nav.active{background:linear-gradient(135deg,rgba(16,185,129,.18),rgba(14,165,233,.12));color:#fff;border-color:rgba(16,185,129,.3)}
.nav .ic{width:18px;text-align:center;font-size:15px}
.nav .dot{margin-left:auto;background:var(--danger);color:#fff;font-size:10px;font-weight:700;padding:1px 7px;border-radius:20px}
/* скрытый пункт меню (например Финансы для роли master) */
.nav[hidden],.nav.hidden{display:none}
.navwrap{display:flex;flex-direction:column;gap:6px}
/* Ответственный мастер в карточке заказа */
.ord-master{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--surface-2);
  border:1px solid var(--line);border-radius:11px;padding:10px 13px;margin-bottom:12px}
.ord-master .om-lbl{font-weight:700;font-size:13px;color:var(--ink)}
.ord-master .om-sel{padding:7px 11px;border:1px solid var(--line);border-radius:9px;font-size:13px;
  font-family:var(--font);background:var(--surface);color:var(--ink);min-width:180px}
/* автокомплит клиента: выпадающий список существующих клиентов под полем */
.ac-drop{position:absolute;left:0;right:0;top:100%;z-index:50;margin-top:2px;max-height:280px;overflow-y:auto;
  background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.18)}
.ac-item{padding:8px 12px;cursor:pointer;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:2px}
.ac-item:last-child{border-bottom:none}
.ac-item:hover{background:rgba(96,165,250,.10)}
.ac-item b{font-size:13px;color:var(--ink)}
.ac-item small{font-size:11.5px;color:var(--muted)}

/* ===== КАССА · Приход/Расход/Остаток ===== */
.cb-people{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:4px}
@media(max-width:1080px){.cb-people{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.cb-people{grid-template-columns:1fr}}
.cb-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:15px 16px;box-shadow:var(--sh-s)}
.cb-card.neg{border-color:var(--danger)}
/* ЗП мастера за конкретную работу — в строке работ карточки заказа */
.line-zp{display:block;font-size:11px;color:var(--muted);margin-top:2px}
/* сводные карточки долговой книги (отдельная вкладка «Деньги», закон Ашота 07.07) */
.cb-card.cb-debt-in{border-color:rgba(16,185,129,.5)}
.cb-card.cb-debt-out{border-color:rgba(255,32,32,.5)}
.cb-card.cb-debt-acc{border-color:rgba(59,130,246,.5)}
/* долговая книга: пункты должника, сроки, просрочка */
.debt-person{display:flex;justify-content:space-between;padding:6px 2px 2px;font-size:14px}
.debt-row.clickable{cursor:pointer}
.debt-row.clickable:active{opacity:.7}
.debt-row.overdue{border-left:3px solid #ff2020;padding-left:6px}
.debt-row .due{color:var(--muted);font-size:12px}
.debt-row .due-red{color:#ff2020;font-size:12px;font-weight:700}
/* отметка ВЫДАЧИ в календаре — ЯРКО-КРАСНАЯ, компактная, отличима от записи */
.fcdeliv{border-left:4px solid #a80000 !important;font-weight:700}
.fcdeliv .fcev-num{color:#fff}
.fcdeliv .fcev-name{color:#fff}
/* клик по человеку → его операции; выбранный подсвечен */
.cb-card.clickable{cursor:pointer;transition:transform .08s,border-color .12s}
.cb-card.clickable:active{transform:scale(.97)}
.cb-card.sel{border-color:var(--accent,#0ea5e9);box-shadow:0 0 0 2px rgba(14,165,233,.25)}
.cb-filterbar{display:flex;align-items:center;gap:6px;padding:8px 12px;margin-bottom:8px;background:rgba(14,165,233,.08);border:1px solid rgba(14,165,233,.3);border-radius:10px;font-size:14px}
.cb-filterbar .muted{color:var(--muted)}
.cb-card.cb-total{background:linear-gradient(135deg,rgba(16,185,129,.10),rgba(14,165,233,.08));border-color:rgba(16,185,129,.3)}
.cb-card .cb-name{font-size:13px;color:var(--muted);font-weight:700}
.cb-card .cb-bal{font-size:24px;font-weight:800;margin:4px 0 8px;font-variant-numeric:tabular-nums}
.cb-card.neg .cb-bal{color:var(--danger)}
.cb-split{display:flex;gap:12px;font-size:12.5px;color:var(--ink-soft);font-weight:600}
.cb-io{display:flex;gap:12px;font-size:11.5px;margin-top:6px}
.cb-io .cb-in{color:#0f9d6b}.cb-io .cb-out{color:#c0392b}
.cb-settle-info{display:flex;flex-wrap:wrap;gap:18px;font-size:14px;align-items:center}
.cb-owes{font-weight:800;color:#1f3a63;background:rgba(14,165,233,.12);padding:4px 12px;border-radius:8px}
.cb-owes.ok{color:#0f9d6b;background:rgba(16,185,129,.12)}
.cb-row{display:grid;grid-template-columns:98px 76px 1fr 110px 2fr auto;gap:10px;align-items:center;
  padding:9px 6px;border-bottom:1px solid var(--line);font-size:13px}
.cb-row.rev{opacity:.5;text-decoration:line-through}
.cb-row.clickable{cursor:pointer;transition:background .12s}
.cb-row.clickable:hover{background:rgba(96,165,250,.08)}
.cb-row.clickable:active{opacity:.7}
.cb-row .cb-date{color:var(--muted);font-size:12px;line-height:1.2}
.cb-row .cb-date small{display:block;color:var(--ink);font-weight:700;font-size:12.5px;font-variant-numeric:tabular-nums}
.cb-row .cb-by{color:var(--ink);font-weight:700}
.cb-row .cb-person{font-weight:700}
.cb-row .cb-cat{color:var(--ink-soft)}
.cb-row .cb-amt{text-align:right;font-weight:800;font-variant-numeric:tabular-nums}
.cb-row .cb-amt.pin{color:#0f9d6b}.cb-row .cb-amt.pout{color:#c0392b}
.cb-row .cb-note{color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:860px){.cb-row{grid-template-columns:1fr auto;gap:4px}.cb-row .cb-date,.cb-row .cb-note{grid-column:1/-1}}
.cb-cats{display:flex;flex-wrap:wrap;gap:8px}
.cb-chip{display:inline-flex;align-items:center;gap:6px;background:var(--surface-2);border:1px solid var(--line);
  border-radius:20px;padding:5px 12px;font-size:13px;font-weight:600}
.cb-chip-x{border:0;background:transparent;color:#c0392b;cursor:pointer;font-size:13px;line-height:1;padding:0}
.cb-catinp{padding:7px 11px;border:1px solid var(--line);border-radius:9px;font-size:13px;font-family:var(--font);margin-right:6px}
.cb-addcat{margin-top:12px}
.cb-modal-back{position:fixed;inset:0;background:rgba(15,23,42,.45);display:flex;align-items:center;justify-content:center;z-index:300;padding:18px}
.cb-modal{background:var(--surface);border-radius:16px;width:100%;max-width:440px;box-shadow:0 30px 80px rgba(0,0,0,.35);overflow:hidden}
.cb-modal-h{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line);font-size:15px}
.cb-modal-x{border:0;background:transparent;font-size:16px;cursor:pointer;color:var(--muted)}
.cb-form{display:flex;flex-direction:column;gap:11px;padding:18px}
.cb-f{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--muted);font-weight:600}
.cb-f select,.cb-f input{padding:9px 11px;border:1px solid var(--line);border-radius:10px;font-size:14px;
  font-family:var(--font);background:var(--surface);color:var(--ink)}
.cb-scope-row{display:flex;gap:8px}
.cb-scope{flex:1;padding:10px;border:1.5px solid var(--line);border-radius:10px;background:var(--surface);
  cursor:pointer;font-weight:700;font-size:13px;font-family:var(--font);color:var(--ink-soft)}
.cb-scope.on{border-color:var(--brand);background:rgba(16,185,129,.10);color:var(--brand-d)}
.debt-head{display:flex;justify-content:space-between;align-items:center;margin:12px 0 4px;font-size:14px;border-bottom:1px solid var(--line);padding-bottom:4px}
.debt-tot{font-weight:800;font-variant-numeric:tabular-nums}.debt-tot.neg{color:var(--danger)}
.debt-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:5px 2px;font-size:13px}
.debt-row .debt-amt{font-weight:700;font-variant-numeric:tabular-nums}
.debt-add{display:flex;gap:6px;margin:6px 0 4px;flex-wrap:wrap}

/* ===== ЗАРПЛАТА / МАСТЕРА ===== */
.pr-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:15px 17px;margin-bottom:14px;box-shadow:var(--sh-s)}
.pr-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.pr-head .pr-name{font-size:17px;font-weight:800}
.pr-stats{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}
@media(max-width:860px){.pr-stats{grid-template-columns:repeat(3,1fr)}}
@media(max-width:480px){.pr-stats{grid-template-columns:repeat(2,1fr)}}
.pr-stat{background:var(--surface-2);border-radius:10px;padding:9px 11px;display:flex;flex-direction:column;gap:2px}
.pr-stat small{color:var(--muted);font-size:11px;font-weight:600}
.pr-stat b{font-size:16px;font-variant-numeric:tabular-nums}
.pr-stat.due b{color:#c0392b}
.pr-svc{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}
.pr-svc-h,.pr-svc-r{display:grid;grid-template-columns:2fr 60px 110px 70px 90px;gap:8px;font-size:12.5px;padding:5px 2px;align-items:center}
.pr-svc-h{color:var(--muted);font-weight:700;text-transform:uppercase;font-size:10.5px;letter-spacing:.4px}
.pr-svc-r{border-top:1px solid var(--line)}
.pr-svc-r span:nth-child(n+2){text-align:right;font-variant-numeric:tabular-nums}
.pr-svc-r .lowrate{color:#c0392b;font-weight:700}
@media(max-width:560px){.pr-svc-h{display:none}.pr-svc-r{grid-template-columns:1fr auto;gap:3px}.pr-svc-r span:nth-child(n+3){display:none}}
/* Плитки заказов мастера (закон Ашота 07.07): тап по плитке → карточка заказа,
   вкладка «Работы», там вписывается ЗП. Красное «ЗП —» = зарплата не вписана. */
.pr-ord-cap{margin-top:14px;font-size:10.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:var(--muted)}
.pr-orders{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;margin-top:8px}
.pr-ord{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:8px 10px;cursor:pointer;
  transition:border-color .15s,box-shadow .15s,transform .15s}
.pr-ord:hover{border-color:var(--brand);box-shadow:var(--sh-s);transform:translateY(-1px)}
.pr-ord:active{opacity:.75;transform:scale(.97)}
.pr-ord.nozp{border-color:rgba(239,68,68,.45)}
.pr-ord.nozp:hover{border-color:var(--danger)}
.pr-ord-num{font-weight:800;font-size:14.5px;font-variant-numeric:tabular-nums}
.pr-ord-date{font-size:11px;color:var(--muted);margin-top:2px}
.pr-ord-zp{font-size:12.5px;font-weight:700;margin-top:4px;font-variant-numeric:tabular-nums}
.pr-ord-zp.red{color:var(--danger)}
.pr-rate-row{display:flex;align-items:center;gap:12px;padding:8px 4px;border-bottom:1px solid var(--line);font-size:13px;flex-wrap:wrap}
.pr-rate-name{flex:1;min-width:160px;font-weight:600}
.pr-rate-price{color:var(--muted);font-size:12px}
.pr-rate-mr{font-weight:700}
.pr-rate-row input{width:150px;padding:7px 10px;border:1px solid var(--line);border-radius:9px;font-size:13px;font-family:var(--font)}
.side-foot{margin-top:auto;padding:12px 10px;border-top:1px solid rgba(255,255,255,.07);font-size:12px;color:#8893a6}
.side-foot b{color:#cdd6e3}

/* ==========================================================================
   Topbar
   ========================================================================== */
.main{display:flex;flex-direction:column;min-width:0}
.top{display:flex;align-items:center;gap:16px;padding:16px 28px;background:rgba(255,255,255,.7);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30}
.search{flex:1;max-width:480px;display:flex;align-items:center;gap:9px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 14px;box-shadow:var(--sh-s)}
.search input{border:0;outline:0;flex:1;font-size:14px;font-family:var(--font);background:transparent;color:var(--ink)}
.search .hint{font-size:11px;color:var(--muted);background:var(--surface-2);padding:2px 8px;border-radius:6px}
.top .who{display:flex;align-items:center;gap:10px;margin-left:auto}
.top .av{width:38px;height:38px;border-radius:11px;background:linear-gradient(135deg,#f59e0b,#ef4444);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700}
.top .who small{color:var(--muted);font-size:11px;display:block}
.top .who b{font-size:13px}
/* Живые часы под ролью: время крупно, но приглушённо (ненавязчиво) */
.top .who .clock{display:flex;flex-direction:column;align-items:flex-end;line-height:1.02;margin-top:3px}
.top .who .clock .t{font-size:21px;font-weight:700;color:#0b1220;font-variant-numeric:tabular-nums;letter-spacing:.5px}
.top .who .clock .d{font-size:11.5px;color:#1d2430;opacity:1;margin-top:1px;font-weight:600}
@media (max-width:860px){ .top .who .clock .t{font-size:18px} }
.top .logout{margin-left:8px;border:1px solid var(--line);background:var(--surface-2);color:var(--ink-soft);border-radius:9px;padding:8px 12px;font-size:13px;font-weight:600;cursor:pointer;font-family:var(--font);transition:.15s}
.top .logout:hover{background:var(--surface);box-shadow:var(--sh-s);color:var(--ink)}

/* ==========================================================================
   Pages / layout
   ========================================================================== */
.wrap{padding:24px 32px 60px;max-width:1760px;width:100%;margin:0 auto}
/* очень широкие мониторы — больше воздуха по краям, контент центрирован */
@media (min-width:2200px){ .wrap{max-width:2000px} }
.page{display:none}
.page.active{display:block;animation:fade .25s ease}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ── Деньги: тумблер уровня (только учредитель) ── */
.money-switch{display:inline-flex;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:4px;gap:3px;margin-bottom:18px}
.money-tab{border:0;background:transparent;padding:9px 20px;border-radius:9px;font-weight:700;font-size:14px;cursor:pointer;color:var(--ink-soft);font-family:var(--font)}
.money-tab.on{background:var(--surface);box-shadow:var(--sh-s);color:var(--ink)}
.money-panel{display:none}
h1.title{font-size:22px;font-weight:750;letter-spacing:-.3px}
.sub{color:var(--muted);font-size:13px;margin-top:3px}
.row{display:flex;gap:18px;flex-wrap:wrap}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);padding:18px}
.card h3{font-size:13px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin-bottom:14px;font-weight:700;display:flex;align-items:center;gap:8px}

/* ==========================================================================
   KPI
   ========================================================================== */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:20px 0}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;box-shadow:var(--sh);position:relative;overflow:hidden}
.kpi .v{font-size:26px;font-weight:780;letter-spacing:-.5px;margin-top:6px}
.kpi .l{font-size:12px;color:var(--muted);font-weight:600}
.kpi .kpi-sub{font-size:11.5px;color:var(--muted);margin-top:3px;font-weight:600}
.b-purple{background:var(--detail,#8b5cf6)}
.ins-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 0;
  border-bottom:1px solid var(--line);cursor:pointer;font-size:14px}
.ins-row:last-child{border-bottom:none}
.ins-row:hover{color:var(--brand-d,#059669)}
.ins-cnt{font-size:12px;font-weight:700;color:#8b5cf6;white-space:nowrap}
.ins-meta{font-size:12px;color:var(--muted);white-space:nowrap}
/* сотрудники */
.staff-row{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);
  border-radius:12px;padding:11px 14px;margin-bottom:9px}
.staff-row.off{opacity:.55}
.st-ava{width:38px;height:38px;border-radius:11px;color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center;font-size:14px;flex:none}
.st-main{flex:1;display:flex;flex-direction:column}
.st-main small{color:var(--muted);font-size:12.5px;margin-top:1px}
.st-act{display:flex;gap:6px}
/* отчёт за период */
.rep-tot{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.rep-card{border:1px solid var(--line);border-radius:11px;padding:12px 14px;display:flex;flex-direction:column;gap:3px}
.rep-card span{font-size:12px;color:var(--muted)}
.rep-card b{font-size:18px}
.rep-h{font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);margin-bottom:6px}
.rep-row{display:flex;justify-content:space-between;align-items:center;padding:7px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.rep-row:last-child{border-bottom:none}
@media(max-width:860px){.rep-tot{grid-template-columns:repeat(2,1fr)}}
.kpi .tag{font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px;position:absolute;top:14px;right:14px}
.kpi .bar{position:absolute;left:0;bottom:0;height:3px;width:100%}
.t-green{background:rgba(16,185,129,.12);color:var(--brand-d)} .b-green{background:var(--brand)}
.t-blue{background:rgba(59,130,246,.12);color:#2563eb} .b-blue{background:var(--fary)}
.t-gold{background:rgba(224,167,43,.15);color:#a87a10} .b-gold{background:var(--gold)}
.t-red{background:rgba(239,68,68,.12);color:#dc2626} .b-red{background:var(--danger)}

/* ==========================================================================
   Today list
   ========================================================================== */
.grid2{display:grid;grid-template-columns:1.4fr 1fr;gap:18px}
.due{display:flex;align-items:center;gap:13px;padding:13px;border-radius:var(--r-s);border:1px solid var(--line);margin-bottom:10px;background:var(--surface-2);transition:.15s;cursor:pointer}
.due:hover{box-shadow:var(--sh-s);transform:translateX(2px)}
.due.fire{border-color:rgba(239,68,68,.4);background:linear-gradient(90deg,rgba(239,68,68,.07),var(--surface-2))}
.due .time{font-weight:800;font-size:15px;width:48px}
.due .post{width:4px;align-self:stretch;border-radius:4px}
.due .info b{font-size:14px} .due .info small{color:var(--muted);font-size:12px;display:block}
.due .st{margin-left:auto;text-align:right}
.badge{display:inline-block;font-size:11px;font-weight:700;padding:3px 9px;border-radius:7px}
.fire-ic{animation:pulse 1.1s infinite;font-size:18px}
@keyframes pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.25);opacity:.7}}
.money-line{display:flex;justify-content:space-between;padding:11px 0;border-bottom:1px dashed var(--line);font-size:14px}
.money-line:last-child{border:0}
.money-line b{font-variant-numeric:tabular-nums}
.pill{font-size:11px;font-weight:700;padding:3px 10px;border-radius:20px}

/* цветные маркеры постов (используется как класс на .post) */
.post-fary{background:var(--fary)} .post-detail{background:var(--detail)} .post-moyka{background:var(--moyka)}

/* ==========================================================================
   Calendar
   ========================================================================== */
.cal{display:grid;grid-template-columns:56px repeat(3,1fr);gap:0;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--surface)}
.cal .hd{padding:11px;text-align:center;font-weight:700;font-size:13px;border-bottom:1px solid var(--line);background:var(--surface-2)}
.cal .hd small{display:block;color:var(--muted);font-weight:600;font-size:11px}
.cal .hr{padding:8px 6px;text-align:right;color:var(--muted);font-size:11px;border-bottom:1px solid var(--line);border-right:1px solid var(--line)}
.cal .cell{border-bottom:1px solid var(--line);border-right:1px solid var(--line);min-height:62px;padding:5px;position:relative}
.ev{border-radius:9px;padding:7px 9px;color:#fff;font-size:12px;margin-bottom:4px;box-shadow:var(--sh-s);cursor:pointer;position:relative}
.ev b{display:block;font-size:12px;font-weight:700}
.ev small{opacity:.92;font-size:11px}
.ev .num{position:absolute;top:6px;right:8px;font-size:10px;opacity:.85;font-weight:700}
.ev.fary{background:linear-gradient(135deg,#3b82f6,#2563eb)}
.ev.detail{background:linear-gradient(135deg,#8b5cf6,#7c3aed)}
.ev.moyka{background:linear-gradient(135deg,#14b8a6,#0d9488)}
.ev.fire{outline:2px solid #fff;box-shadow:0 0 0 3px rgba(239,68,68,.5),0 0 18px rgba(239,68,68,.4)}
.ev.vip{border:2px solid var(--gold)}
.ev .bdg{display:inline-block;background:rgba(255,255,255,.25);font-size:10px;padding:1px 6px;border-radius:5px;margin-top:4px;font-weight:700}
.leg{display:flex;gap:16px;margin:14px 0;font-size:12px;color:var(--ink-soft);flex-wrap:wrap;align-items:center}
.leg i{width:11px;height:11px;border-radius:4px;display:inline-block;margin-right:6px;vertical-align:-1px}
.leg-hint{color:var(--muted);font-size:11px}
.seg{display:inline-flex;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:3px;gap:2px}
.seg button{border:0;background:transparent;padding:7px 16px;border-radius:8px;font-weight:600;font-size:13px;cursor:pointer;color:var(--ink-soft);font-family:var(--font)}
.seg button.on{background:var(--surface);box-shadow:var(--sh-s);color:var(--ink)}

/* ── календарь: шапка / навигация ── */
.cal-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.cal-nav{display:flex;align-items:center;gap:8px}
.cal-arrow{width:32px;height:32px;border-radius:9px;border:1px solid var(--line);background:var(--surface);color:var(--ink-soft);font-size:18px;line-height:1;cursor:pointer;font-family:var(--font);display:flex;align-items:center;justify-content:center;transition:.15s}
.cal-arrow:hover{box-shadow:var(--sh-s);color:var(--ink)}
.cal-today{border:1px solid var(--line);background:var(--surface);color:var(--ink-soft);border-radius:9px;padding:7px 14px;font-size:13px;font-weight:600;cursor:pointer;font-family:var(--font);transition:.15s}
.cal-today:hover{box-shadow:var(--sh-s);color:var(--ink)}
.cal-range{font-size:13px;font-weight:650;color:var(--ink-soft);margin-left:4px}

/* ===== FullCalendar — интеграция с темой CarFar ===== */
#fcHost{font-family:var(--font);font-size:13px}
/* свайп-листание: лёгкий сдвиг тела за пальцем (transform ставит JS) — обрезаем,
   чтобы перетягивание не создавало горизонтальный скролл страницы */
#calBody{overflow-x:hidden}
.fc{--fc-border-color:#c4ccd8;--fc-now-indicator-color:var(--danger);
  --fc-today-bg-color:rgba(16,185,129,.05);--fc-page-bg-color:var(--surface)}
.fc .fc-col-header-cell-cushion{padding:8px 4px;font-weight:700;font-size:13px;color:var(--ink);text-decoration:none}
/* время слева от сетки (8 9 10:00) — тёмное и заметное */
.fc .fc-timegrid-slot-label-cushion{color:#0b1220;font-size:12.5px;font-weight:700}
.fc .fc-timegrid-axis-cushion{color:#0b1220;font-weight:700}
.fc .fc-list-day-text,.fc .fc-list-day-side-text{color:var(--ink);font-size:12px}
.fc .fc-day-today .fc-col-header-cell-cushion{color:var(--brand-d)}
.fc-theme-standard td,.fc-theme-standard th{border-color:#c4ccd8}
/* СЕТКА чётче: линия ЧАСА темнее, получаса — светлее */
.fc .fc-timegrid-slot{border-top-color:#c4ccd8}
.fc .fc-timegrid-slot:not(.fc-timegrid-slot-minor){border-top-color:#94a0b0}
.fc .fc-timegrid-slot-minor{border-top-color:#dde3ea}
/* ВОСКРЕСЕНЬЕ — выходной: красным (записать можно, но помечаем) */
.fc .fc-day-sun .fc-col-header-cell-cushion{color:var(--danger)!important}
.fc .fc-timegrid-col.fc-day-sun{background:rgba(239,68,68,.05)}
.fc .fc-daygrid-day.fc-day-sun .fc-daygrid-day-number{color:var(--danger);font-weight:700}
.fc .fc-list-day.fc-day-sun .fc-list-day-text{color:var(--danger)}
.fc .fc-event{border-radius:8px;border:none;box-shadow:var(--sh-s);cursor:grab;padding:0}
.fc .fc-event:active{cursor:grabbing}
.fc .fc-event-main{padding:3px 6px;color:#fff}
.fc .fcev{line-height:1.25;overflow:hidden}
.fc .fcev-num{font-size:11px;font-weight:700;opacity:.92;letter-spacing:.2px}
.fc .fcev-name{font-size:14.5px;font-weight:800;line-height:1.15;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fc .fcev-car{font-size:12.5px;font-weight:600;opacity:.96;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fc .fcev-svc{font-size:11.5px;opacity:.92;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fc .fcev-m{font-size:11px;opacity:.9;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fc .fcev-deliv{font-size:11px;font-weight:800;background:rgba(0,0,0,.22);border-radius:5px;padding:0 4px;margin-top:2px;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
/* левая полоса = пост (видно пост даже когда фон = цвет статуса) */
.fc .fc-timegrid-event.fcpost-fary{border-left:4px solid #2563eb}
.fc .fc-timegrid-event.fcpost-detail{border-left:4px solid #7c3aed}
.fc .fc-timegrid-event.fcpost-moyka{border-left:4px solid #0d9488}
/* отменённые — приглушены и зачёркнуты */
.fc .fc-event.fcst-cancelled{opacity:.55}
.fc .fc-event.fcst-cancelled .fcev-name{text-decoration:line-through}
.fc .fc-timegrid-now-indicator-line{border-color:var(--danger);border-width:2px}
/* РЕСАЙЗ: крупная зона захвата + видимая ручка (иначе не поймать тонкий край) */
.fc .fc-timegrid-event .fc-event-resizer{height:12px;z-index:5}
.fc .fc-timegrid-event .fc-event-resizer-start{top:-2px}
.fc .fc-timegrid-event .fc-event-resizer-end{bottom:-2px}
.fc .fc-timegrid-event{overflow:visible}
.fc .fc-timegrid-event .fc-event-resizer::after{content:"";position:absolute;left:50%;transform:translateX(-50%);
  width:26px;height:3px;border-radius:3px;background:rgba(255,255,255,.7);opacity:0;transition:.12s}
.fc .fc-timegrid-event .fc-event-resizer-start::after{top:2px}
.fc .fc-timegrid-event .fc-event-resizer-end::after{bottom:2px}
.fc .fc-timegrid-event:hover .fc-event-resizer::after{opacity:.9}
.fc .fc-timegrid-event:hover{box-shadow:0 6px 18px rgba(0,0,0,.3)}
.fc .fcev{pointer-events:none}   /* контент не перехватывает край-ресайзер */
/* широкий день: заголовок кликабелен, активный — подсвечен */
.fc .fc-col-header-cell{cursor:pointer}
.fc .fc-col-header-cell.cc-wide{background:rgba(14,165,233,.10)}
.fc .fc-col-header-cell.cc-wide .fc-col-header-cell-cushion{color:var(--brand-d)}
.fc .fc-list-event:hover td{background:var(--surface-2)}
.fc .fc-list-event-title,.fc .fc-list-event-time{color:var(--ink)}
/* мастеру/смм — без курсора-перетаскивания */
.fc.fc-not-editable .fc-event{cursor:pointer}

/* ==========================================================================
   МОБИЛЬНЫЙ КАЛЕНДАРЬ (телефон ≤860px): крупные читаемые карточки.
   Десктоп НЕ затронут — всё под @media. День (timeGridDay) = одна колонка
   во всю ширину, таймлайн как в Бампикс; Список (listWeek) = карточки.
   ========================================================================== */
@media (max-width:860px){
  /* —— режим ДЕНЬ (и timeGrid вообще на телефоне): крупный текст в карточке —— */
  /* Высота часа задаётся через height контейнера в calHeight() (JS),
     здесь — типографика и перенос текста. */
  .fc .fc-event-main{padding:5px 8px}
  .fc .fcev{line-height:1.3}
  .fc .fc-timegrid-event .fcev-num{font-size:12px}
  /* имя клиента — крупно и жирно, перенос на 2 строки (не обрезаем многоточием) */
  .fc .fc-timegrid-event .fcev-name{font-size:16.5px;font-weight:800;line-height:1.2;margin-top:2px;
    white-space:normal;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;text-overflow:clip}
  /* машина — перенос на 2 строки */
  .fc .fc-timegrid-event .fcev-car{font-size:14px;font-weight:600;line-height:1.2;
    white-space:normal;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;text-overflow:clip}
  /* услуга — перенос на 2 строки */
  .fc .fc-timegrid-event .fcev-svc{font-size:13px;line-height:1.2;
    white-space:normal;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;text-overflow:clip}
  /* время · мастер · статус — крупнее */
  .fc .fc-timegrid-event .fcev-m{font-size:12.5px;font-weight:600;white-space:normal;line-height:1.2}
  .fc .fc-timegrid-event .fcev-deliv{font-size:12px;margin-top:3px}
  /* левая цветная полоса поста — толще, заметнее на телефоне */
  .fc .fc-timegrid-event.fcpost-fary{border-left-width:5px}
  .fc .fc-timegrid-event.fcpost-detail{border-left-width:5px}
  .fc .fc-timegrid-event.fcpost-moyka{border-left-width:5px}
  /* шкала времени слева — крупнее, легче попасть глазами */
  .fc .fc-timegrid-slot-label-cushion{font-size:13.5px}

  /* —— меню действий по заказу (долгое нажатие): нижний лист во всю ширину —— */
  .ctxmenu.ctx-sheet{left:0;right:0;bottom:0;top:auto;width:100%;min-width:0;
    border-radius:18px 18px 0 0;padding:8px 10px calc(10px + env(safe-area-inset-bottom));
    box-shadow:0 -10px 40px rgba(0,0,0,.28);animation:sheetUp .16s ease-out}
  .ctxmenu.ctx-sheet .cmi{padding:15px 14px;font-size:16px;border-radius:12px}
  .ctxmenu.ctx-sheet .cmi .ci{width:24px;font-size:19px}
  .ctxmenu.ctx-sheet .cmi-hd{font-size:13px;padding:8px 14px 6px}
  .ctxmenu.ctx-sheet .cmi-sep{margin:7px 6px}
  @keyframes sheetUp{from{transform:translateY(100%)}to{transform:translateY(0)}}

  /* —— крупные тач-цели (≥44px) на телефоне —— */
  .status-pick{gap:8px}
  .status-pick button{padding:11px 15px;font-size:14px}
  .ord-statusbar{padding:12px 16px;gap:10px;flex-wrap:wrap}
  .cal-arrow{width:44px;height:44px;font-size:22px}

  /* —— РЕСАЙЗ заказа пальцем: крупные зоны захвата за верх/низ карточки —— */
  .fc .fc-timegrid-event .fc-event-resizer{height:20px;left:0;right:0;width:auto}
  .fc .fc-timegrid-event .fc-event-resizer-start{top:-8px}
  .fc .fc-timegrid-event .fc-event-resizer-end{bottom:-8px}
  /* лёгкая подсказка-полоска по краю, чтобы было видно за что тянуть */
  .fc .fc-timegrid-event .fc-event-resizer::after{content:"";position:absolute;left:50%;
    transform:translateX(-50%);width:34px;height:4px;border-radius:2px;background:rgba(255,255,255,.65)}
  .fc .fc-timegrid-event .fc-event-resizer-start::after{top:8px}
  .fc .fc-timegrid-event .fc-event-resizer-end::after{bottom:8px}

  /* —— режим СПИСОК (listWeek) на телефоне: большие карточки с цветной полосой —— */
  .fc .fc-list{border:none;background:transparent}
  .fc .fc-list-table{border:none}
  /* шапка дня — крупная и липкая */
  .fc .fc-list-day-cushion{padding:12px 14px;font-size:15px}
  .fc .fc-list-day-text,.fc .fc-list-day-side-text{font-size:14px;font-weight:800}
  /* каждая запись — карточка с воздухом и цветной левой полосой */
  .fc .fc-list-event{display:block;margin:0 0 10px;border-radius:14px;overflow:hidden;
    background:var(--surface);box-shadow:var(--sh-s);border:1px solid var(--line);
    border-left:6px solid #64748b}
  .fc .fc-list-event>td{display:block;border:none;padding:0}
  /* убираем точку-маркер времени FullCalendar — у нас своя левая полоса */
  .fc .fc-list-event-graphic{display:none}
  .fc .fc-list-event-time{display:block;padding:12px 14px 0;font-size:14px;font-weight:800;color:var(--ink);
    font-variant-numeric:tabular-nums}
  .fc .fc-list-event-title{display:block;padding:2px 14px 12px;font-size:16px;font-weight:700;color:var(--ink);
    white-space:normal;line-height:1.3}
  .fc .fc-list-event:hover td{background:var(--surface-2)}
  /* цвет левой полосы карточки = пост (как в timeGrid) */
  .fc .fc-list-event.fcpost-fary{border-left-color:#2563eb}
  .fc .fc-list-event.fcpost-detail{border-left-color:#7c3aed}
  .fc .fc-list-event.fcpost-moyka{border-left-color:#0d9488}
  .fc .fc-list-event.fcst-cancelled{opacity:.6}
  .fc .fc-list-event.fcst-cancelled .fc-list-event-title{text-decoration:line-through}
}

/* ── модалка создания заказа ── */
.modal-narrow{max-width:560px}
.fld{margin-bottom:16px}
.fld>label{display:block;font-size:12px;font-weight:700;color:var(--ink-soft);margin-bottom:7px}
.fld-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.fld input[type=text],.fld input[type=number],.fld input[type=datetime-local],.svc-row select,.svc-row input,.new-client-form input{width:100%;border:1px solid var(--line);background:var(--surface-2);border-radius:10px;padding:11px 12px;font-size:14px;font-family:var(--font);color:var(--ink);outline:0;transition:.15s}
.fld input:focus,.svc-row select:focus,.svc-row input:focus,.new-client-form input:focus{border-color:var(--brand);background:var(--surface);box-shadow:0 0 0 3px rgba(16,185,129,.13)}
.client-pick{position:relative}
.client-results{position:absolute;left:0;right:0;top:calc(100% + 4px);background:var(--surface);border:1px solid var(--line);border-radius:11px;box-shadow:var(--sh);z-index:5;max-height:240px;overflow:auto}
.client-results .cr{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;border-bottom:1px solid var(--line)}
.client-results .cr:last-child{border-bottom:0}
.client-results .cr:hover{background:var(--surface-2)}
.client-results .cr b{font-size:13px}.client-results .cr small{display:block;color:var(--muted);font-size:11px}
.client-results .cr-empty{padding:12px;color:var(--muted);font-size:13px;text-align:center}
.picked{display:flex;align-items:center;gap:10px;background:rgba(16,185,129,.08);border:1px solid rgba(16,185,129,.3);border-radius:10px;padding:10px 12px;font-size:14px;font-weight:600;color:var(--brand-d);margin-top:4px}
.picked-x{margin-left:auto;border:0;background:transparent;color:var(--ink-soft);font-size:12px;font-weight:600;cursor:pointer;text-decoration:underline;font-family:var(--font)}
.link-btn{margin-top:8px;border:0;background:transparent;color:var(--fary);font-size:13px;font-weight:600;cursor:pointer;padding:2px 0;font-family:var(--font)}
.link-btn:hover{text-decoration:underline}
.new-client-form{margin-top:10px;display:grid;gap:8px;background:var(--surface-2);border:1px dashed var(--line);border-radius:11px;padding:12px}
.mini-btn{border:0;background:var(--fary);color:#fff;border-radius:9px;padding:9px 14px;font-size:13px;font-weight:700;cursor:pointer;font-family:var(--font);justify-self:start}
.post-pick{display:flex;gap:8px}
.post-opt{flex:1;border:2px solid var(--line);background:var(--surface-2);border-radius:11px;padding:11px;font-size:12px;font-weight:700;cursor:pointer;font-family:var(--font);color:var(--ink-soft);letter-spacing:.4px;transition:.15s}
.post-opt.fary.on{border-color:var(--fary);color:#fff;background:linear-gradient(135deg,#3b82f6,#2563eb)}
.post-opt.detail.on{border-color:var(--detail);color:#fff;background:linear-gradient(135deg,#8b5cf6,#7c3aed)}
.post-opt.moyka.on{border-color:var(--moyka);color:#fff;background:linear-gradient(135deg,#14b8a6,#0d9488)}
.svc-rows{display:flex;flex-direction:column;gap:8px}
.svc-row{display:grid;grid-template-columns:1fr 120px 110px 30px;gap:8px;align-items:center}
.svc-row .svc-price{text-align:right;font-variant-numeric:tabular-nums}
.svc-row .svc-del{border:0;background:transparent;color:var(--danger);font-size:18px;cursor:pointer;line-height:1;font-family:var(--font)}
.svc-row .svc-master,.svc-row select{font-size:13px;padding:9px 8px}
.readout{border:1px solid var(--line);background:var(--surface-2);border-radius:10px;padding:11px 12px;font-size:16px;font-weight:780;color:var(--brand-d);font-variant-numeric:tabular-nums}
.new-err{color:var(--danger);font-size:13px;font-weight:600;min-height:18px;margin:4px 0}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:10px}
.btn-ghost{border:1px solid var(--line);background:var(--surface-2);color:var(--ink-soft);border-radius:11px;padding:12px 20px;font-size:14px;font-weight:600;cursor:pointer;font-family:var(--font)}
.btn-ghost:hover{box-shadow:var(--sh-s);color:var(--ink)}
.btn-primary{border:0;background:linear-gradient(135deg,#10b981,#059669);color:#fff;border-radius:11px;padding:12px 24px;font-size:14px;font-weight:700;cursor:pointer;font-family:var(--font);box-shadow:0 6px 16px rgba(16,185,129,.32)}
.btn-primary:hover{filter:brightness(1.05)}
.btn-primary:disabled{opacity:.6;cursor:default;filter:none}

/* ── статусбар / выбор статуса в модалке заказа ── */
.ord-statusbar{display:flex;align-items:center;gap:12px;padding:12px 24px;border-bottom:1px solid var(--line);background:var(--surface-2)}
.ord-statusbar-lbl{font-size:12px;font-weight:700;color:var(--muted)}
.status-pick{display:flex;gap:6px;flex-wrap:wrap}
.status-pick button{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:6px 11px;font-size:12px;font-weight:600;cursor:pointer;font-family:var(--font);color:var(--ink-soft);transition:.12s}
.status-pick button:hover{box-shadow:var(--sh-s);color:var(--ink)}
.status-pick button.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.status-pick button:disabled{opacity:.5;cursor:default}

/* добавить строку работ внутри модалки */
.addline{display:grid;grid-template-columns:1fr 120px 100px auto;gap:8px;align-items:center;margin-top:12px;padding-top:14px;border-top:1px dashed var(--line)}
.addline input,.addline select{border:1px solid var(--line);background:var(--surface-2);border-radius:9px;padding:9px 10px;font-size:13px;font-family:var(--font);color:var(--ink);outline:0}
.addline input:focus,.addline select:focus{border-color:var(--brand);background:var(--surface)}
.addline .mini-btn{padding:9px 14px}

/* ── контекст-меню (правый клик) ── */
.ctxmenu{position:fixed;z-index:200;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 40px rgba(0,0,0,.22);padding:6px;min-width:190px;animation:fade .12s}
.ctxmenu .cmi{display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:8px;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer}
.ctxmenu .cmi:hover{background:var(--surface-2)}
.ctxmenu .cmi .ci{width:18px;text-align:center}
.ctxmenu .cmi-sep{height:1px;background:var(--line);margin:5px 4px}
.ctxmenu .cmi-hd{padding:6px 11px 3px;font-size:11px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.4px}

/* inline-баннер ошибки/пусто внутри секции (errbox использует app.js) */
.errbox{display:flex;align-items:center;gap:10px;background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.3);color:#b91c1c;border-radius:var(--r-s);padding:14px 16px;font-size:13px;font-weight:600}
.empty{padding:26px 14px;text-align:center;color:var(--muted);font-size:13px}
.cal-empty{padding:14px;text-align:center;color:var(--muted);font-size:12px}

/* ==========================================================================
   Order modal
   ========================================================================== */
.ov{position:fixed;inset:0;background:rgba(15,23,34,.5);backdrop-filter:blur(3px);display:none;align-items:center;justify-content:center;z-index:80;padding:24px}
.ov.open{display:flex;animation:fade .2s}
.modal{background:var(--surface);border-radius:20px;max-width:860px;width:100%;max-height:88vh;overflow:auto;box-shadow:0 30px 80px rgba(0,0,0,.35)}
.modal .mh{display:flex;align-items:center;gap:14px;padding:20px 24px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--surface);z-index:2}
.modal .mh .cf{font-size:13px;color:var(--muted);font-weight:700}
.modal .mh h2{font-size:19px;font-weight:750}
.ord-client-btn{margin-left:auto;border:1px solid var(--line);background:var(--surface-2);color:var(--ink-soft);
  border-radius:9px;padding:8px 13px;font-size:13px;font-weight:650;cursor:pointer;font-family:var(--font);
  white-space:nowrap;transition:.15s}
.ord-client-btn:hover{background:var(--surface);box-shadow:var(--sh-s);color:var(--ink)}
.modal .x{width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:var(--surface-2);cursor:pointer;font-size:16px;color:var(--ink-soft)}
.tabs{display:flex;gap:4px;padding:0 24px;border-bottom:1px solid var(--line);overflow:auto}
.tabs button{border:0;background:transparent;padding:13px 14px;font-weight:600;font-size:13px;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;font-family:var(--font);white-space:nowrap}
.tabs button.on{color:var(--brand-d);border-bottom-color:var(--brand)}
.mb{padding:22px 24px}
.line{display:grid;grid-template-columns:1fr 90px 110px 90px;gap:10px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:11px;margin-bottom:9px;font-size:13px}
.line b{font-size:14px} .line small{color:var(--muted);display:block;font-size:12px}
.sum{display:flex;justify-content:flex-end;gap:30px;padding:16px 4px 0;font-size:14px}
.sum b{font-size:18px}

.tag-vip{background:linear-gradient(135deg,#f6d365,#e0a72b);color:#5a4208}
.ph{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.ph div{aspect-ratio:4/3;border-radius:10px;background:linear-gradient(135deg,#dfe6ee,#c9d4e0);display:flex;align-items:center;justify-content:center;color:#8696aa;font-size:12px;font-weight:600}

/* ==========================================================================
   T4 — Документы (Счёт / Акт / Заказ-наряд)
   ========================================================================== */
.doc-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
@media(max-width:680px){.doc-actions{grid-template-columns:1fr}}
.doc-btn{display:flex;align-items:center;gap:13px;text-align:left;border:1px solid var(--line);background:var(--surface-2);border-radius:14px;padding:15px 16px;cursor:pointer;font-family:var(--font);transition:.16s;position:relative;overflow:hidden}
.doc-btn::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,#3b82f6,#2563eb);opacity:.85}
.doc-btn:hover{background:var(--surface);box-shadow:var(--sh);transform:translateY(-2px);border-color:rgba(59,130,246,.4)}
.doc-btn-ic{width:42px;height:42px;flex-shrink:0;border-radius:11px;background:rgba(59,130,246,.12);display:flex;align-items:center;justify-content:center;font-size:21px}
.doc-btn-tx{display:flex;flex-direction:column;gap:2px;min-width:0}
.doc-btn-tx b{font-size:14px;color:var(--ink);font-weight:750}
.doc-btn-tx small{font-size:11.5px;color:var(--muted);line-height:1.3}
.doc-btn-go{margin-left:auto;font-size:16px;color:var(--muted);font-weight:700;transition:.16s}
.doc-btn:hover .doc-btn-go{color:var(--fary);transform:translate(2px,-2px)}
.doc-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:11px;margin-bottom:8px;background:var(--surface-2);cursor:pointer;transition:.15s}
.doc-row:hover{background:var(--surface);box-shadow:var(--sh-s);transform:translateX(2px)}
.doc-row-ic{width:34px;height:34px;flex-shrink:0;border-radius:9px;background:rgba(59,130,246,.1);display:flex;align-items:center;justify-content:center;font-size:16px}
.doc-row-main{display:flex;flex-direction:column;min-width:0}
.doc-row-main b{font-size:13.5px;font-weight:700;color:var(--ink)}
.doc-row-main small{font-size:11.5px;color:var(--muted)}
.doc-row-go{margin-left:auto;color:var(--muted);font-weight:700;font-size:15px}
.doc-row:hover .doc-row-go{color:var(--fary)}

/* ==========================================================================
   T5 — Фото до/после (доказательная база)
   ========================================================================== */
.ph-upload{border:1px solid var(--line);background:var(--surface-2);border-radius:14px;padding:16px;margin-bottom:18px}
.ph-up-row{display:flex;gap:14px;align-items:stretch;flex-wrap:wrap}
.ph-kind-pick{display:inline-flex;flex-direction:column;gap:8px;flex-shrink:0}
.ph-kind{border:2px solid var(--line);background:var(--surface);border-radius:11px;padding:11px 18px;font-size:13px;font-weight:700;cursor:pointer;font-family:var(--font);color:var(--ink-soft);letter-spacing:.4px;transition:.15s;min-width:120px}
.ph-kind:hover{box-shadow:var(--sh-s)}
.ph-kind[data-kind=before].on{border-color:var(--fary);color:#fff;background:linear-gradient(135deg,#3b82f6,#2563eb)}
.ph-kind[data-kind=after].on{border-color:var(--brand);color:#fff;background:linear-gradient(135deg,#10b981,#059669)}
.ph-drop{flex:1;min-width:200px;display:flex;align-items:center;gap:13px;border:2px dashed var(--line);border-radius:12px;padding:14px 18px;cursor:pointer;background:var(--surface);transition:.16s}
.ph-drop:hover,.ph-drop.over{border-color:var(--brand);background:rgba(16,185,129,.05)}
.ph-drop-ic{width:40px;height:40px;flex-shrink:0;border-radius:11px;background:rgba(16,185,129,.12);display:flex;align-items:center;justify-content:center;font-size:19px}
.ph-drop b{display:block;font-size:14px;color:var(--ink);font-weight:700}
.ph-drop small{font-size:11.5px;color:var(--muted)}
.ph-up-foot{display:flex;align-items:center;gap:14px;margin-top:14px}
.ph-filename{flex:1;font-size:12.5px;color:var(--ink-soft);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ph-upload-btn{flex-shrink:0;padding:11px 22px}
.ph-cam-btn{width:100%;margin-top:10px;padding:13px;border:1px solid var(--line);border-radius:12px;
  background:var(--surface);color:var(--ink);font-weight:700;font-size:15px;cursor:pointer;font-family:var(--font)}
.ph-cam-btn:active{background:var(--surface-2)}
.ph-smart-wrap{margin:0 0 14px}
.ph-smart{width:100%;min-height:48px;font-size:15px}
.ph-smart:disabled{opacity:.7}
.ph-up-err{color:#b91c1c;font-size:12.5px;font-weight:600;margin-top:8px;min-height:0}
.ph-up-err:not(:empty){margin-top:10px;background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.3);border-radius:9px;padding:9px 12px}

.ph-group{margin-bottom:18px}
.ph-group:last-of-type{margin-bottom:0}
.ph-group-hd{display:flex;align-items:center;gap:9px;font-size:11.5px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;color:var(--ink-soft);margin-bottom:10px}
.ph-group-hd::before{content:"";width:9px;height:9px;border-radius:3px;background:var(--muted)}
.ph-group-hd.ph-before::before{background:var(--fary)}
.ph-group-hd.ph-after::before{background:var(--brand)}
.ph-group-cnt{background:var(--surface-2);border:1px solid var(--line);color:var(--muted);font-size:10.5px;font-weight:700;padding:1px 8px;border-radius:20px;letter-spacing:0}
.ph-cell{position:relative;display:block;aspect-ratio:4/3;border-radius:11px;overflow:hidden;background:linear-gradient(135deg,#dfe6ee,#c9d4e0);box-shadow:var(--sh-s);cursor:zoom-in;transition:.16s;border:1px solid var(--line)}
.ph-cell:hover{transform:translateY(-2px);box-shadow:var(--sh)}
.ph-cell img{width:100%;height:100%;object-fit:cover;display:block}
.ph-cell.broken{display:flex;align-items:center;justify-content:center}
.ph-cell.broken::after{content:"⚠ нет файла";color:#8696aa;font-size:11px;font-weight:600}
.ph-broken-tx{margin:auto;color:#8696aa;font-size:11px;font-weight:600}

/* вкладки внутри модалки */
.otab{display:none}
.otab.on{display:block}

/* ==========================================================================
   Clients
   ========================================================================== */
.cl-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}
.cl-add-btn{padding:11px 18px;font-size:13px;white-space:nowrap}
.cl-tabs{margin:16px 0 0}
.cl-tabs button{display:inline-flex;align-items:center;gap:7px}
.cl-cnt{font-size:11px;font-weight:700;background:var(--surface-2);color:var(--muted);padding:1px 8px;border-radius:20px;min-width:18px;text-align:center}
.cl-tabs button.on .cl-cnt{background:rgba(16,185,129,.14);color:var(--brand-d)}
.cl-search{max-width:480px;margin:16px 0}
.cl-list-card{padding:6px 18px}

.cl{display:flex;align-items:center;gap:13px;padding:13px;border-bottom:1px solid var(--line);cursor:pointer;border-radius:11px;transition:.13s;border-left:3px solid transparent}
.cl:last-child{border-bottom:0}
.cl:hover{background:var(--surface-2);box-shadow:var(--sh-s)}
.cl .ava{width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;flex-shrink:0}
.cl .cl-main{min-width:0;flex:1}
.cl b{font-size:14px} .cl small{color:var(--muted);font-size:12px;display:block}
.cl .cl-chevron{color:var(--muted);font-size:18px;margin-left:6px;flex-shrink:0}
/* левая цветовая метка постоянного клиента */
.cl.has-color{border-left-color:var(--cl-color)}

/* ── карточка клиента (модалка) ── */
.cl-card-id{display:flex;align-items:center;gap:14px}
.cl-card-ava{width:48px;height:48px;border-radius:13px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:18px;flex-shrink:0;background:#94a3b8}
.cl-card-sec{margin-bottom:22px}
.cl-card-sec:last-child{margin-bottom:0}
.cl-card-sec>h4{font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-weight:700;margin-bottom:11px;display:flex;align-items:center;justify-content:space-between;gap:8px}
.cl-info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.cl-info-cell{background:var(--surface-2);border:1px solid var(--line);border-radius:11px;padding:11px 13px}
.cl-info-cell .k{font-size:11px;color:var(--muted);font-weight:600;margin-bottom:3px}
.cl-info-cell .vv{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums}
.veh{display:flex;align-items:center;gap:11px;padding:11px 13px;border:1px solid var(--line);border-radius:11px;margin-bottom:8px;background:var(--surface-2)}
.veh:last-child{margin-bottom:0}
.veh .veh-ic{width:32px;height:32px;border-radius:9px;background:rgba(59,130,246,.12);display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}
.veh b{font-size:14px} .veh small{color:var(--muted);font-size:12px;display:block}
.cl-hist{display:flex;align-items:center;gap:11px;padding:11px 12px;border:1px solid var(--line);border-radius:11px;margin-bottom:8px;cursor:pointer;transition:.12s}
.cl-hist:last-child{margin-bottom:0}
.cl-hist:hover{background:var(--surface-2);box-shadow:var(--sh-s)}
.cl-hist .hpost{width:4px;align-self:stretch;border-radius:4px;flex-shrink:0}
.cl-hist .hmain{flex:1;min-width:0}
.cl-hist b{font-size:13px} .cl-hist small{color:var(--muted);font-size:12px;display:block}
.cl-hist .hsum{font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.cl-card-actions{display:flex;gap:10px;margin-top:6px}
.cl-card-actions .btn-ghost,.cl-card-actions .btn-primary{flex:1;text-align:center}

/* ── тумблеры (постоянный / контрагент) ── */
.toggles{display:flex;flex-direction:column;gap:12px}
.toggle{display:flex;align-items:center;gap:11px;cursor:pointer;user-select:none}
.toggle input{position:absolute;opacity:0;width:0;height:0}
.tg-track{width:42px;height:24px;border-radius:20px;background:var(--line);position:relative;flex-shrink:0;transition:.18s}
.tg-thumb{position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:.18s}
.toggle input:checked + .tg-track{background:var(--brand)}
.toggle input:checked + .tg-track .tg-thumb{transform:translateX(18px)}
.toggle input:focus-visible + .tg-track{box-shadow:0 0 0 3px rgba(16,185,129,.25)}
.tg-lbl{font-size:14px;font-weight:600;color:var(--ink)}

/* ── палитра цветов клиента ── */
.palette-fld{transition:.18s}
.palette-hint{color:var(--muted);font-weight:600}
.palette{display:flex;gap:10px;flex-wrap:wrap}
.sw{width:34px;height:34px;border-radius:10px;cursor:pointer;border:2px solid transparent;position:relative;transition:.13s;box-shadow:var(--sh-s)}
.sw:hover{transform:translateY(-1px)}
.sw.on{border-color:var(--ink)}
.sw.on::after{content:"✓";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:15px;text-shadow:0 1px 3px rgba(0,0,0,.4)}
.sw.sw-none{background:repeating-linear-gradient(45deg,#e6eaf0,#e6eaf0 5px,#fff 5px,#fff 10px)}
.sw.sw-none.on::after{color:var(--ink-soft);text-shadow:none}

/* ── услуги (прайс) ── */
.svc-line{display:grid;grid-template-columns:1fr 120px auto auto;gap:10px;align-items:center;padding:13px;border-bottom:1px solid var(--line)}
.svc-line:last-child{border-bottom:0}
.svc-line .svc-nm{font-size:14px;font-weight:600}
.svc-line .svc-pr{font-weight:780;font-variant-numeric:tabular-nums;text-align:right;font-size:15px;color:var(--brand-d)}
.svc-line .svc-edit{border:1px solid var(--line);background:var(--surface-2);color:var(--ink-soft);border-radius:9px;padding:7px 13px;font-size:12px;font-weight:600;cursor:pointer;font-family:var(--font);transition:.13s}
.svc-line .svc-edit:hover{box-shadow:var(--sh-s);color:var(--ink)}
.svc-line .svc-del{border:1px solid var(--line);background:var(--surface-2);color:var(--muted);border-radius:9px;width:32px;height:32px;font-size:14px;font-weight:700;cursor:pointer;font-family:var(--font);transition:.13s;line-height:1}
.svc-line .svc-del:hover{border-color:var(--danger);color:var(--danger);background:rgba(239,68,68,.08)}
.svc-card-foot{padding:14px 6px 4px;display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.link-btn-soft{color:var(--ink-soft)}

/* ==========================================================================
   Finance — кассы, ДДС, кассовая книга, зарплата
   ========================================================================== */
/* кассы как карточки */
.fin-boxes{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:20px 0}
.fin-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);padding:16px 18px;position:relative;overflow:hidden}
.fin-box::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--muted)}
.fin-box.owner::before{background:var(--gold)} .fin-box.manager::before{background:var(--fary)}
.fin-box.admin::before{background:var(--detail)} .fin-box.bank::before{background:var(--brand)}
.fin-box .fin-box-hd{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;color:var(--ink-soft)}
.fin-box .fin-box-ic{font-size:15px}
.fin-box .fin-box-bal{font-size:23px;font-weight:780;letter-spacing:-.5px;margin-top:8px;font-variant-numeric:tabular-nums}
.fin-box .fin-box-bal.neg{color:var(--danger)}
.fin-box .fin-box-role{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin-top:2px;font-weight:600}

/* ДДС (движение) vs Прибыль — визуально разделены */
.fin-split{display:grid;grid-template-columns:1.3fr 1fr;gap:16px;margin-top:4px}
.fin-flow-block,.fin-profit-block{border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;background:var(--surface);box-shadow:var(--sh)}
.fin-profit-block{background:linear-gradient(135deg,rgba(16,185,129,.07),var(--surface));border-color:rgba(16,185,129,.3)}
.fin-block-cap{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-weight:700;margin-bottom:14px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.fin-cap-hint{text-transform:none;letter-spacing:0;color:var(--muted);font-weight:600;font-size:11px}
.fin-flow-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.fin-stat .l{font-size:12px;color:var(--muted);font-weight:600}
.fin-stat .v{font-size:25px;font-weight:780;letter-spacing:-.5px;margin-top:5px;font-variant-numeric:tabular-nums}
.fin-stat.in .v{color:var(--brand-d)} .fin-stat.out .v{color:var(--danger)}
.fin-stat.profit .v{font-size:30px;color:var(--brand-d)}
.fin-stat.profit .v.neg{color:var(--danger)}
.fin-profit-sub{font-size:12px;color:var(--muted);margin-top:6px;font-weight:600}

/* кассовая книга — строки операций */
.tx-row{display:grid;grid-template-columns:22px 1fr auto auto;gap:12px;align-items:center;padding:12px 4px;border-bottom:1px dashed var(--line)}
.tx-row:last-child{border-bottom:0}
.tx-dot{width:9px;height:9px;border-radius:50%;justify-self:center}
.tx-dot.in{background:var(--brand);box-shadow:0 0 0 3px rgba(16,185,129,.15)}
.tx-dot.out{background:var(--danger);box-shadow:0 0 0 3px rgba(239,68,68,.13)}
.tx-main{min-width:0}
.tx-main b{font-size:14px;font-weight:650;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tx-main small{color:var(--muted);font-size:12px}
.tx-amt{font-weight:780;font-variant-numeric:tabular-nums;font-size:15px;white-space:nowrap}
.tx-amt.in{color:var(--brand-d)} .tx-amt.out{color:var(--danger)}
.tx-row.reversed{opacity:.5}
.tx-row.reversed .tx-amt{text-decoration:line-through}
.tx-revbtn{border:1px solid var(--line);background:var(--surface-2);color:var(--ink-soft);border-radius:8px;padding:6px 12px;font-size:12px;font-weight:600;cursor:pointer;font-family:var(--font);transition:.13s;white-space:nowrap}
.tx-revbtn:hover{border-color:rgba(239,68,68,.4);color:var(--danger);background:rgba(239,68,68,.06)}
.tx-revbtn:disabled{opacity:.5;cursor:default}
.tx-revtag{font-size:11px;font-weight:700;color:var(--muted);padding:4px 8px;border-radius:7px;background:var(--surface-2);white-space:nowrap}

/* зарплата — таблица */
.pay-table{width:100%}
.pay-row{display:grid;grid-template-columns:1fr auto auto auto;gap:12px;align-items:center;padding:12px 4px;border-bottom:1px dashed var(--line)}
.pay-row:last-child{border-bottom:0}
.pay-row .pay-mn{display:flex;align-items:center;gap:9px;font-size:14px;font-weight:600;min-width:0}
.pay-row .pay-ava{width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,#64748b,#475569);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;flex-shrink:0}
.pay-amt{font-weight:780;font-variant-numeric:tabular-nums;white-space:nowrap}
.pay-week{font-size:12px;color:var(--muted)}
.pay-paybtn{border:0;background:linear-gradient(135deg,#10b981,#059669);color:#fff;border-radius:9px;padding:8px 14px;font-size:12px;font-weight:700;cursor:pointer;font-family:var(--font);box-shadow:0 4px 12px rgba(16,185,129,.28);white-space:nowrap}
.pay-paybtn:hover{filter:brightness(1.05)}
.pay-paybtn:disabled{opacity:.6;cursor:default;filter:none}
.pay-paid-tag{font-size:11px;font-weight:700;color:var(--brand-d);background:rgba(16,185,129,.12);padding:5px 11px;border-radius:7px;white-space:nowrap}
.pay-foot{display:flex;justify-content:flex-end;align-items:center;gap:12px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.pay-foot .pay-total-lbl{font-size:13px;color:var(--ink-soft);font-weight:600}
.pay-foot .pay-total-v{font-size:18px;font-weight:780;color:var(--gold);font-variant-numeric:tabular-nums}

/* модалка операции: выбор типа */
.tx-kind-pick{display:flex;gap:8px}
.tx-kind{flex:1;border:2px solid var(--line);background:var(--surface-2);border-radius:11px;padding:12px;font-size:13px;font-weight:700;cursor:pointer;font-family:var(--font);color:var(--ink-soft);transition:.15s}
.tx-kind.in.on{border-color:var(--brand);color:var(--brand-d);background:rgba(16,185,129,.1)}
.tx-kind.out.on{border-color:var(--danger);color:var(--danger);background:rgba(239,68,68,.08)}
.fin-select{width:100%;border:1px solid var(--line);background:var(--surface-2);border-radius:10px;padding:11px 12px;font-size:14px;font-family:var(--font);color:var(--ink);outline:0;transition:.15s}
/* ===== Поисковый список (combobox) — заменяет нативные select ===== */
.cmbo{position:relative;width:100%}
.cmbo-inp{width:100%;border:1px solid var(--line);background:var(--surface-2);border-radius:10px;padding:11px 12px;font-size:14px;font-family:var(--font);color:var(--ink);outline:0;transition:.15s;cursor:text}
.cmbo-inp::placeholder{color:var(--ink-soft);opacity:1}
.cmbo.open .cmbo-inp,.cmbo-inp:focus{border-color:var(--brand);background:var(--surface);box-shadow:0 0 0 3px rgba(16,185,129,.13)}
.svc-row .cmbo-inp{font-size:13px;padding:9px 10px}
.cmbo-panel{position:absolute;left:0;right:0;top:calc(100% + 3px);z-index:320;background:var(--surface);border:1px solid var(--line);border-radius:11px;box-shadow:var(--sh);max-height:280px;overflow:auto;padding:5px}
.cmbo-it{padding:9px 11px;border-radius:8px;cursor:pointer;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink)}
.cmbo-it:hover,.cmbo-it.hi{background:var(--surface-2)}
.cmbo-it.sel{font-weight:700;color:var(--brand-d)}
.cmbo-empty{padding:9px 11px;color:var(--muted);font-size:13px}
.fin-select:focus{border-color:var(--brand);background:var(--surface);box-shadow:0 0 0 3px rgba(16,185,129,.13)}

/* кнопка «Провести оплату остатка» в карточке заказа */
.pay-rest-btn{width:100%;border:0;background:linear-gradient(135deg,#10b981,#059669);color:#fff;border-radius:11px;padding:13px;font-size:14px;font-weight:700;cursor:pointer;font-family:var(--font);box-shadow:0 6px 16px rgba(16,185,129,.3);margin-top:8px}
.pay-rest-btn:hover{filter:brightness(1.05)}
.pay-rest-btn:disabled{opacity:.55;cursor:default;filter:none}
.pay-rest-box{display:flex;align-items:center;justify-content:space-between;background:rgba(239,68,68,.06);border:1px solid rgba(239,68,68,.25);border-radius:12px;padding:16px 18px}
.pay-rest-box span{font-size:13px;font-weight:600;color:var(--ink-soft)}
.pay-rest-box b{font-size:24px;font-weight:780;color:var(--danger);font-variant-numeric:tabular-nums}

@media (max-width:1080px){
  .fin-boxes{grid-template-columns:repeat(2,1fr)}
  .fin-split{grid-template-columns:1fr}
}

/* ==========================================================================
   AI HQ dark
   ========================================================================== */
.hq{background:#0e1622;border-radius:var(--r);padding:20px;color:#cdd6e3}
.hq h3{color:#7e8aa0}
.agc{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.ag{background:#15212f;border:1px solid #1e2c3d;border-radius:12px;padding:14px}
.ag .nm{font-size:13px;font-weight:700;color:#e8eef6;display:flex;align-items:center;gap:7px}
.ag .live{width:8px;height:8px;border-radius:50%;background:#22c55e;box-shadow:0 0 8px #22c55e}
.ag .idle{width:8px;height:8px;border-radius:50%;background:#475569}
.ag small{color:#7e8aa0;font-size:11px}
.hq-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:14px}
.hq-stats .ag .v{font-size:20px;font-weight:700;color:#e8eef6}
.hq-stats .ag .v.ok{color:#22c55e}

/* ==========================================================================
   Login
   ========================================================================== */
.login{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0f1722,#13202f)}
.lbox{background:var(--surface);border-radius:22px;padding:38px 36px;width:400px;box-shadow:0 30px 90px rgba(0,0,0,.5);text-align:center}
.lbox .logo{height:54px;width:auto;max-width:200px;object-fit:contain;margin:0 auto 18px;display:block}
.lbox h2{font-size:21px;font-weight:760}
.lbox p{color:var(--muted);font-size:13px;margin:6px 0 22px}

/* login form: поля login + pin (4 цифры) */
.lform{display:flex;flex-direction:column;gap:12px;text-align:left}
.lform label{font-size:12px;font-weight:600;color:var(--ink-soft);margin-bottom:-6px}
.lform input{width:100%;border:1px solid var(--line);background:var(--surface-2);border-radius:12px;padding:13px 14px;font-size:15px;font-family:var(--font);color:var(--ink);outline:0;transition:.15s}
.lform input:focus{border-color:var(--brand);background:var(--surface);box-shadow:0 0 0 3px rgba(16,185,129,.15)}
.lform input.pin{letter-spacing:8px;text-align:center;font-weight:700;font-size:20px}
.lform button{margin-top:6px;border:0;background:linear-gradient(135deg,#10b981,#059669);color:#fff;padding:14px;border-radius:12px;font-weight:700;font-size:15px;cursor:pointer;font-family:var(--font);box-shadow:0 8px 20px rgba(16,185,129,.35);transition:.15s}
.lform button:hover{filter:brightness(1.05)}
.lform button:disabled{opacity:.6;cursor:default;filter:none}
.lerr{color:var(--danger);font-size:13px;font-weight:600;min-height:18px;text-align:center}

.lbox .tg{display:flex;align-items:center;gap:10px;justify-content:center;background:#229ed9;color:#fff;padding:13px;border-radius:12px;font-weight:650;font-size:15px;cursor:pointer;box-shadow:0 8px 20px rgba(34,158,217,.4)}
.lbox .roles{margin-top:20px;display:flex;flex-wrap:wrap;gap:7px;justify-content:center}
.lbox .roles span{font-size:11px;background:var(--surface-2);border:1px solid var(--line);padding:4px 10px;border-radius:20px;color:var(--ink-soft)}
.note{background:linear-gradient(90deg,rgba(16,185,129,.08),transparent);border-left:3px solid var(--brand);padding:12px 14px;border-radius:9px;font-size:13px;color:var(--ink-soft);margin:18px 0}
.wip{font-size:11px;background:rgba(245,158,11,.14);color:#b45309;padding:2px 9px;border-radius:20px;font-weight:700}

/* ==========================================================================
   Data-driven states: загрузка / пусто / ошибка
   ========================================================================== */
.state{padding:34px 20px;text-align:center;color:var(--muted);font-size:14px}
.state .ic{font-size:30px;display:block;margin-bottom:10px;opacity:.7}
.state.error{color:var(--danger)}
.state .retry{margin-top:14px;border:1px solid var(--line);background:var(--surface-2);color:var(--ink-soft);border-radius:9px;padding:8px 16px;font-size:13px;font-weight:600;cursor:pointer;font-family:var(--font)}
.state .retry:hover{background:var(--surface);box-shadow:var(--sh-s);color:var(--ink)}

/* skeleton shimmer для загрузки */
.skeleton{position:relative;overflow:hidden;background:var(--surface-2);border-radius:var(--r-s)}
.skeleton::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.6),transparent);animation:shimmer 1.3s infinite}
@keyframes shimmer{100%{transform:translateX(100%)}}
.sk-line{height:54px;margin-bottom:10px}

/* inline-баннер ошибки внутри секции (не молча) */
.err-banner{display:flex;align-items:center;gap:10px;background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.3);color:#b91c1c;border-radius:var(--r-s);padding:12px 14px;font-size:13px;font-weight:600;margin-bottom:14px}
.err-banner .retry{margin-left:auto;border:1px solid rgba(239,68,68,.3);background:#fff;color:#b91c1c;border-radius:8px;padding:6px 12px;font-size:12px;font-weight:700;cursor:pointer;font-family:var(--font)}

/* маскированный телефон (роль master видит последние 4 цифры) */
.phone-masked{letter-spacing:.5px;color:var(--ink-soft)}

/* ==========================================================================
   Toast (всплывающие уведомления об ошибках/успехе)
   ========================================================================== */
.toasts{position:fixed;right:20px;bottom:20px;display:flex;flex-direction:column;gap:10px;z-index:120}
.toast{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--muted);border-radius:11px;box-shadow:var(--sh);padding:12px 16px;font-size:13px;font-weight:600;color:var(--ink);min-width:240px;max-width:360px;animation:toastin .2s ease}
.toast.error{border-left-color:var(--danger);color:#b91c1c}
.toast.ok{border-left-color:var(--brand);color:var(--brand-d)}
@keyframes toastin{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* Одиночный #toast (как его эмитит app.js: класс "toast show err|ok").
   Аддитивно: даёт фиксированное позиционирование, скрытие по умолчанию и
   подсветку ошибки под фактический класс .err. M1-M5 не затронуты. */
#toast{position:fixed;right:20px;bottom:20px;z-index:120;
  opacity:0;visibility:hidden;pointer-events:none;transform:translateY(8px);
  transition:opacity .2s ease,transform .2s ease}
#toast.show{opacity:1;visibility:visible;pointer-events:auto;transform:none}
#toast.err{border-left-color:var(--danger);color:#b91c1c}

/* утилита: спрятать элемент */
[hidden]{display:none !important}

/* ==========================================================================
   Адаптив
   ========================================================================== */
@media (max-width:1080px){
  .kpis{grid-template-columns:repeat(2,1fr)}
  .grid2{grid-template-columns:1fr}
  .agc{grid-template-columns:1fr}
  .hq-stats{grid-template-columns:repeat(2,1fr)}
}
/* ===== МОБИЛЬНЫЙ РЕЖИМ (телефон): меню → верхняя полоса, одна колонка ===== */
@media (max-width:860px){
  .app{grid-template-columns:1fr}
  /* Телефон: ЛОГОТИП сверху (с отступом под статус-бар), КНОПКИ строкой ниже —
     чтобы время/Wi-Fi/батарея не перекрывали кнопки и по ним можно было попасть. */
  /* min-width:0 КРИТИЧЕН: иначе ряд кнопок навигации (nowrap) раздувает .side,
     а с ним и всю страницу до ~2000px → горизонтальный скролл, календарь уезжает
     за экран и перетаскивание «прыгает». С min-width:0 ряд кнопок скроллится сам,
     а страница вписывается в узкое окно. */
  .side{position:sticky;top:0;z-index:20;height:auto;flex-direction:column;align-items:stretch;
    min-width:0;gap:8px;padding:calc(10px + env(safe-area-inset-top)) 12px 8px}
  .side .brand{flex:0 0 auto;margin:0;padding:0 4px;justify-content:flex-start}
  .side .brand>div{display:block}           /* на отдельной строке текст бренда помещается */
  .side .nav-group, .side .side-foot{display:none}  /* секции и подвал скрыты на телефоне */
  .side .navwrap{flex-direction:row;flex-wrap:nowrap;overflow-x:auto;gap:6px;min-width:0;max-width:100%;
    -webkit-overflow-scrolling:touch;padding-bottom:2px}
  .side .nav{flex:0 0 auto;white-space:nowrap;padding:9px 14px;margin:0;border-radius:10px}
  .side .nav .ic{margin-right:4px}
  .side .nav .dot{margin-left:6px}
  .main{min-height:calc(100vh - 56px)}
  .wrap{padding:14px 14px 48px}
  .top{flex-wrap:wrap;gap:8px}
  .search{max-width:none;flex:1 1 100%;order:2}
  .kpis{grid-template-columns:repeat(2,1fr);gap:10px}
  .grid2{grid-template-columns:1fr}
  .fin-boxes{grid-template-columns:repeat(2,1fr)}
  .fin-split{grid-template-columns:1fr}
  .agc{grid-template-columns:1fr}
  .hq-stats{grid-template-columns:repeat(2,1fr)}
  .cal{grid-template-columns:42px repeat(3,1fr);font-size:12px}
  .line{grid-template-columns:1fr auto;gap:6px}
  .sum{flex-direction:column;gap:8px;align-items:flex-start}
  .rec-grid{grid-template-columns:1fr}
  .cl-info-grid{grid-template-columns:1fr}
  .modal{max-width:100%;border-radius:14px}
  .setl-row,.inv-row{grid-template-columns:1fr;gap:6px}
}
@media (max-width:480px){
  .kpis{grid-template-columns:1fr}
  .fin-boxes{grid-template-columns:1fr}
  .cl-head{flex-direction:column;align-items:flex-start;gap:10px}
}

/* ---- Удаление записи (только владелец) ---- */
.cmi-danger{color:#dc2626 !important}
.ord-del-btn{margin-top:16px;width:100%;min-height:44px;border:1.5px solid rgba(220,38,38,.5);
  border-radius:12px;background:rgba(220,38,38,.06);color:#dc2626;font-weight:700;
  font-size:14px;cursor:pointer;font-family:var(--font)}
.ord-del-btn:active{background:rgba(220,38,38,.14)}

/* ---- «Сохранить всё» — плашка незаписанных правок карточки ---- */
.ord-saveall{display:flex;align-items:center;justify-content:flex-end;gap:14px;
  margin:10px 0;padding:10px 14px;border:1.5px dashed var(--brand);border-radius:12px;
  background:rgba(16,185,129,.07)}
.ord-saveall[hidden]{display:none}
.osa-hint{font-size:13px;font-weight:600;color:var(--ink-soft)}
.ord-saveall .btn-primary{min-height:44px}

/* ---- Редактируемые строки сводки + мини-редактор поля ---- */
.sv-row.sv-tap{cursor:pointer;border-radius:8px;transition:background .12s;min-height:40px}
.sv-row.sv-tap:hover{background:var(--surface-2)}
.sv-row.sv-tap:active{background:var(--surface-2)}
.sv-edit{color:var(--muted);font-size:12px;opacity:.75}
.fe-ov{position:fixed;inset:0;background:rgba(15,23,34,.45);backdrop-filter:blur(2px);
  z-index:220;display:flex;align-items:center;justify-content:center;padding:20px}
.fe-sheet{background:var(--surface);border:1px solid var(--line);border-radius:14px;
  padding:16px;min-width:300px;max-width:420px;width:100%;box-shadow:0 16px 48px rgba(0,0,0,.25)}
.fe-sheet.fe-phone{position:fixed;left:0;right:0;bottom:0;top:auto;max-width:none;border-radius:18px 18px 0 0;
  padding:16px 16px calc(16px + env(safe-area-inset-bottom));animation:sheetUp .16s ease-out}
.fe-ov:has(.fe-phone){align-items:flex-end;padding:0}
.fe-title{font-weight:800;font-size:15px;margin-bottom:10px;color:var(--ink)}
.fe-input{width:100%;border:1px solid var(--line);background:var(--surface-2);border-radius:10px;
  padding:12px 13px;font-size:16px;font-family:var(--font);color:var(--ink);outline:0}
.fe-input:focus{border-color:var(--brand);background:var(--surface)}
.fe-err{color:#b91c1c;font-size:12.5px;font-weight:600;margin-top:6px;min-height:0}
.fe-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:14px}
.fe-actions button{min-height:44px;padding:10px 18px}

/* ---- Полнота карточки заказа (красный/жёлтый/зелёный) ---- */
.ord-complete{padding:10px 24px;border-bottom:1px solid var(--line);font-size:13px;display:flex;flex-direction:column;gap:6px}
.ord-complete.red{background:rgba(220,38,38,.10);border-left:4px solid #dc2626}
.ord-complete.yellow{background:rgba(245,158,11,.10);border-left:4px solid #f59e0b}
.ord-complete.green{background:rgba(22,163,74,.10);border-left:4px solid #16a34a;font-weight:600}
.ord-complete b{font-size:13px}
.ord-complete-list{display:flex;flex-wrap:wrap;gap:6px}
.ord-complete-item{border:1px solid var(--line);background:var(--surface);border-radius:8px;
  padding:4px 9px;font-size:12.5px;font-weight:600;color:var(--ink);
  cursor:pointer;font-family:var(--font)}
.ord-complete-item:active{transform:scale(.96)}
.ord-complete-item:hover{border-color:var(--accent,#0ea5e9)}
@media(max-width:860px){.ord-complete{padding:10px 14px}}

/* ---- Проверка системы ---- */
.sc-cat{margin:14px 0}
.sc-cat h4{margin:0 0 8px;font-size:13px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.4px}
.sc-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);
  border-radius:10px;margin-bottom:6px;background:var(--surface)}
.sc-row.bad{border-color:rgba(220,38,38,.4);background:rgba(220,38,38,.06)}
.sc-ic{flex-shrink:0}
.sc-title{font-weight:600;font-size:13.5px;color:var(--ink)}
.sc-msg{margin-left:auto;font-size:12px;color:var(--muted);text-align:right;white-space:nowrap}
.sc-manual{border:1px solid var(--line);border-radius:10px;padding:11px 13px;margin-bottom:8px;background:var(--surface-2)}
.sc-manual b{font-size:13.5px;color:var(--ink)}
.sc-manual-steps{font-size:12.5px;color:var(--ink-soft);margin-top:4px;line-height:1.45}
@media(max-width:860px){
  .sc-row{flex-wrap:wrap;gap:6px}
  .sc-msg{margin-left:28px;width:100%;text-align:left;white-space:normal}
}

/* ==========================================================================
   ВВОД / ЧЕРНОВИКИ (intake) — премиум-блок «человек в центре»
   ========================================================================== */

/* Плашка про будущего @operator_benderbot */
.bender-banner{display:flex;align-items:center;gap:14px;
  background:linear-gradient(120deg,rgba(14,165,233,.10),rgba(139,92,246,.08));
  border:1px solid rgba(14,165,233,.28);border-radius:var(--r);
  padding:14px 18px;margin-bottom:18px;box-shadow:var(--sh-s)}
.bender-banner.small{margin:0 0 14px;padding:12px 14px;border-radius:var(--r-s)}
.bender-banner .bender-ic{font-size:26px;line-height:1;flex:0 0 auto;
  filter:drop-shadow(0 2px 6px rgba(14,165,233,.35))}
.bender-banner.small .bender-ic{font-size:22px}
.bender-tx{display:flex;flex-direction:column;gap:3px}
.bender-tx b{font-size:14px;color:var(--ink);font-weight:750}
.bender-tx small{font-size:12.5px;color:var(--ink-soft);line-height:1.4}

/* Карточка ввода */
.intake-card .intake-textarea{width:100%;min-height:130px;resize:vertical;
  border:1px solid var(--line);background:var(--surface-2);border-radius:12px;
  padding:14px 15px;font-size:14.5px;line-height:1.5;font-family:var(--font);
  color:var(--ink);outline:0;transition:.15s}
.intake-card .intake-textarea:focus,.intake-textarea:focus{border-color:var(--brand);
  background:var(--surface);box-shadow:0 0 0 3px rgba(16,185,129,.13)}
.intake-textarea{width:100%;min-height:120px;resize:vertical;border:1px solid var(--line);
  background:var(--surface-2);border-radius:12px;padding:13px 14px;font-size:14px;
  line-height:1.5;font-family:var(--font);color:var(--ink);outline:0;transition:.15s}
.intake-foot{display:flex;align-items:center;gap:14px;margin-top:12px;flex-wrap:wrap}
.intake-hint{font-size:12.5px;color:var(--muted);font-weight:500}
.intake-actions{display:flex;gap:10px;margin-left:auto}
.intake-note{margin:16px 0 0;border-left-color:var(--warn);
  background:linear-gradient(90deg,rgba(245,158,11,.10),transparent)}

/* Превью / карточка распознанных полей */
.intake-preview{margin-top:18px;border-top:1px dashed var(--line);padding-top:16px}
.rec-head{font-size:12px;text-transform:uppercase;letter-spacing:.6px;
  color:var(--muted);font-weight:700;margin-bottom:12px}
.rec-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.rec-cell{background:var(--surface-2);border:1px solid var(--line);
  border-radius:var(--r-s);padding:10px 13px}
.rec-cell.rec-empty{opacity:.6}
.rec-k{font-size:11px;font-weight:700;color:var(--ink-soft);
  text-transform:uppercase;letter-spacing:.4px;margin-bottom:4px}
.rec-v{font-size:15px;font-weight:650;color:var(--ink);word-break:break-word}
.rec-cell.rec-empty .rec-v{color:var(--muted);font-weight:500}

/* Список черновиков */
.draft{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);
  padding:16px;margin-bottom:14px;box-shadow:var(--sh-s);position:relative;
  border-left:4px solid var(--fary);transition:.15s}
.draft:last-child{margin-bottom:0}
.draft:hover{box-shadow:var(--sh)}
.draft.draft-work{border-left-color:var(--gold)}
.draft-hd{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.draft-src{font-size:11px;font-weight:700;color:var(--ink-soft);
  background:var(--surface-2);border:1px solid var(--line);
  padding:3px 10px;border-radius:20px}
.draft-when{margin-left:auto;color:var(--muted);font-size:11.5px;font-weight:600}
.draft-raw{font-size:13px;color:var(--ink-soft);font-style:italic;line-height:1.45;
  background:var(--surface-2);border-radius:9px;padding:9px 12px;margin-bottom:12px}
.draft .rec-grid{margin-bottom:4px}
.draft-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:14px;
  padding-top:12px;border-top:1px solid var(--line)}
.draft-actions .btn-primary{padding:9px 18px}
.draft-actions .btn-ghost{padding:9px 16px}
.draft-actions .btn-primary:disabled,.draft-actions .btn-ghost:disabled{opacity:.6;cursor:default}

/* ссылка «допработа от мастера» внутри карточки заказа */
.addwork-link{margin-top:8px;color:var(--detail);font-weight:650}
.addwork-link:hover{filter:brightness(1.08)}

/* ==========================================================================
   ЛИДЫ (Avito / Telegram / Instagram) — светлые списки
   ========================================================================== */
.lead-row{display:grid;grid-template-columns:38px 1fr auto;align-items:center;gap:13px;
  padding:13px;border-bottom:1px solid var(--line)}
.lead-row:last-child{border-bottom:0}
.lead-ava{width:38px;height:38px;border-radius:11px;display:flex;align-items:center;
  justify-content:center;color:#fff;font-weight:700;font-size:13px;background:var(--fary)}
.lead-row.ch-telegram .lead-ava{background:#229ed9}
.lead-row.ch-instagram .lead-ava{background:linear-gradient(135deg,#f58529,#dd2a7b,#8134af)}
.lead-main b{font-size:14px;display:block}
.lead-main small{color:var(--muted);font-size:12px;display:block;margin-top:1px}
.lead-meta{text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.lead-meta .lead-when{color:var(--muted);font-size:11.5px;font-weight:600}
.lead-status{font-size:11px;font-weight:700;padding:2px 9px;border-radius:20px;
  background:var(--surface-2);color:var(--ink-soft);border:1px solid var(--line)}
.lead-status.st-chat{background:rgba(59,130,246,.12);color:#2563eb}
.lead-status.st-record{background:rgba(16,185,129,.12);color:var(--brand-d)}
.lead-status.st-otkaz{background:rgba(239,68,68,.1);color:#dc2626}

/* пульс-индикатор «штаб активен» в навигации */
.hq-pulse{margin-left:auto;width:8px;height:8px;border-radius:50%;background:#22c55e;
  box-shadow:0 0 7px #22c55e;animation:hqPulse 2s infinite}
@keyframes hqPulse{0%,100%{opacity:1}50%{opacity:.35}}

/* ==========================================================================
   AI-ШТАБ — единственный тёмный раздел
   ========================================================================== */
.hq-page .hq-pagehead .title{color:var(--ink)}
.hq-block{background:#0e1622;border-radius:var(--r);padding:22px;color:#cdd6e3;margin-top:18px;
  box-shadow:0 10px 36px rgba(8,14,24,.18)}
.hq-block + .hq-block{margin-top:14px}
.hq-block h3{font-size:12px;text-transform:uppercase;letter-spacing:.7px;color:#7e8aa0;
  margin-bottom:14px;font-weight:700;display:flex;align-items:center;gap:8px}
.hq-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.hq-grid.cols4{grid-template-columns:repeat(4,1fr)}
.hq-card{background:#15212f;border:1px solid #1e2c3d;border-radius:12px;padding:14px}
.hq-card .nm{font-size:13px;font-weight:700;color:#e8eef6;display:flex;align-items:center;gap:8px}
.hq-card small{color:#7e8aa0;font-size:11px;display:block;margin-top:4px}
.hq-dot{width:8px;height:8px;border-radius:50%;flex:none}
.hq-dot.live{background:#22c55e;box-shadow:0 0 8px #22c55e}
.hq-dot.idle{background:#475569}
.hq-metric small{color:#7e8aa0;font-size:11px;display:block}
.hq-metric .val{font-size:21px;font-weight:760;color:#e8eef6;margin-top:3px}
.hq-metric .val.good{color:#22c55e}
.hq-metric .val.warn{color:#f59e0b}
.hq-err{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid #1e2c3d;
  font-size:12.5px;line-height:1.4}
.hq-err:last-child{border-bottom:0}
.hq-err .src{flex:none;font-weight:700;color:#f59e0b;font-size:11px;background:rgba(245,158,11,.12);
  border-radius:6px;padding:2px 8px;white-space:nowrap}
.hq-err .msg{color:#aeb9c9;word-break:break-word}
.hq-links{display:flex;flex-wrap:wrap;gap:10px}
.hq-link{display:inline-flex;align-items:center;gap:7px;background:#15212f;border:1px solid #1e2c3d;
  border-radius:10px;padding:9px 14px;color:#cdd6e3;font-size:13px;font-weight:600;
  text-decoration:none;transition:.15s}
.hq-link:hover{background:#1b2a3b;border-color:#2a3c52;color:#e8eef6}
.hq-res{display:inline-flex;align-items:center;gap:7px;font-size:12px;color:#aeb9c9;
  background:#15212f;border:1px solid #1e2c3d;border-radius:20px;padding:5px 12px}
.hq-res .hq-dot{width:7px;height:7px}
.hq-offline{background:#0e1622;border-radius:var(--r);padding:40px 24px;color:#aeb9c9;
  text-align:center;margin-top:18px}
.hq-offline .big{font-size:32px;margin-bottom:10px}
.hq-offline b{color:#e8eef6;font-size:15px;display:block;margin-bottom:6px}
.hq-offline small{color:#7e8aa0;font-size:12.5px}

/* AI-штаб = дверь в настоящий тех-пульт (Dashboard 8092) */
.hq-door{background:linear-gradient(160deg,#0e1622,#0a1220);border:1px solid #1c2735;
  border-radius:var(--r);padding:40px 32px;margin-top:18px;color:#cdd6e3;text-align:center;
  max-width:680px}
.hq-door-status{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:700;
  padding:5px 14px;border-radius:999px;letter-spacing:.3px}
.hq-door-status.ok{background:rgba(34,197,94,.12);color:#4ade80}
.hq-door-status.down{background:rgba(148,163,184,.12);color:#94a3b8}
.hq-door-title{color:#e8eef6;font-size:22px;font-weight:800;margin:16px 0 8px}
.hq-door-sub{color:#8593a8;font-size:13.5px;line-height:1.55;margin:0 auto 18px;max-width:520px}
.hq-door-sum{display:flex;gap:22px;justify-content:center;flex-wrap:wrap;margin-bottom:22px;
  font-size:13.5px;color:#aeb9c9}
.hq-door-sum b{color:#e8eef6}
.hq-door-sum .warn b{color:#f59e0b}
.hq-enter-btn{display:inline-block;background:linear-gradient(135deg,#3b82f6,#6366f1);color:#fff;
  font-weight:800;font-size:15px;padding:14px 34px;border-radius:12px;text-decoration:none;
  box-shadow:0 8px 24px rgba(59,130,246,.35);transition:.18s}
.hq-enter-btn:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(59,130,246,.45)}
.hq-enter-btn.disabled{background:#1c2735;color:#64748b;box-shadow:none;pointer-events:none}
.hq-door-note{color:#64748b;font-size:12px;margin-top:16px}

/* ===== СКЛАД ===== */
.inv-cat{margin-top:16px}
.inv-cat h3{font-size:13px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:10px}
.inv-tbl{display:flex;flex-direction:column;gap:6px}
.inv-row{display:grid;grid-template-columns:1fr auto auto auto;align-items:center;gap:14px;
  background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:10px 14px}
.inv-row.inv-low{border-color:#fca5a5;background:#fef2f2}
.inv-name{font-weight:600;display:flex;align-items:center;gap:8px}
.inv-badge{background:#dc2626;color:#fff;font-size:10.5px;font-weight:700;border-radius:6px;padding:2px 7px;text-transform:uppercase;letter-spacing:.3px}
.inv-qty{font-size:15px;color:var(--ink);white-space:nowrap}
.inv-qty b{font-size:16px}
.inv-min{font-size:12px;color:var(--muted);white-space:nowrap}
.inv-ctrl{display:flex;gap:6px}
.inv-step,.inv-edit{width:30px;height:30px;border:1px solid var(--line);background:var(--surface);
  border-radius:8px;font-size:16px;font-weight:700;cursor:pointer;color:var(--ink-soft);transition:.15s;
  display:flex;align-items:center;justify-content:center;font-family:var(--font)}
.inv-step:hover,.inv-edit:hover{background:var(--surface-2);box-shadow:var(--sh-s);color:var(--ink)}
.inv-edit{font-size:13px}

/* строки заказа — кнопки правки/удаления */
.line-ctrl{display:flex;gap:5px;align-items:center;margin-left:8px}
.line-btn{width:26px;height:26px;border:1px solid var(--line);background:var(--surface);border-radius:7px;
  cursor:pointer;font-size:13px;color:var(--ink-soft);display:flex;align-items:center;justify-content:center;
  font-family:var(--font);transition:.15s}
.line-btn:hover{background:var(--surface-2);box-shadow:var(--sh-s);color:var(--ink)}
.line-btn.del:hover{color:#dc2626;border-color:#fca5a5}
/* история заказа */
.ord-hist-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:8px 0;
  border-bottom:1px solid var(--line)}
.ord-hist-row:last-child{border-bottom:none}
.oh-detail{font-size:13.5px;color:var(--ink)}
.oh-meta{font-size:11.5px;color:var(--muted);white-space:nowrap}
/* Сводка / Связь — строки «метка: значение» */
.sv-row{display:flex;justify-content:space-between;gap:14px;padding:9px 0;border-bottom:1px solid var(--line)}
.sv-row:last-child{border-bottom:none}
.sv-l{color:var(--muted);font-size:13px}
.sv-v{font-weight:650;font-size:13.5px;text-align:right}
/* Материалы */
.mat-row{display:flex;justify-content:space-between;gap:14px;padding:9px 12px;background:var(--surface-2);
  border:1px solid var(--line);border-radius:9px;margin-bottom:6px}
.mat-name{font-weight:650;font-size:13.5px}
.mat-work{color:var(--muted);font-size:12px;text-align:right}
/* Связь — кнопки действий */
.lnk-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.lnk-btn{display:inline-block;border:1px solid var(--line);background:var(--surface-2);color:var(--ink);
  border-radius:9px;padding:9px 14px;font-size:13px;font-weight:650;text-decoration:none;cursor:pointer;
  font-family:var(--font);transition:.15s}
.lnk-btn:hover{background:var(--surface);box-shadow:var(--sh-s)}

/* касса — кнопка переименования */
.fin-box{position:relative}
.fin-box-edit{position:absolute;top:8px;right:8px;width:24px;height:24px;border:1px solid var(--line);
  background:var(--surface);border-radius:7px;cursor:pointer;font-size:12px;color:var(--ink-soft);
  opacity:0;transition:.15s;font-family:var(--font)}
.fin-box:hover .fin-box-edit{opacity:1}
.fin-box-edit:hover{background:var(--surface-2);color:var(--ink)}
/* взаиморасчёты */
.setl-tot{display:flex;gap:12px;margin-bottom:12px}
.setl-tot-card{flex:1;border:1px solid var(--line);border-radius:11px;padding:12px 16px;display:flex;
  flex-direction:column;gap:3px}
.setl-tot-card span{font-size:12px;color:var(--muted)}
.setl-tot-card b{font-size:19px}
.setl-tot-card.in{background:rgba(16,185,129,.06);border-color:rgba(16,185,129,.3)}
.setl-tot-card.in b{color:var(--brand-d,#059669)}
.setl-tot-card.out{background:rgba(239,68,68,.06);border-color:rgba(239,68,68,.3)}
.setl-tot-card.out b{color:#dc2626}
.setl-row{display:grid;grid-template-columns:auto 1fr 1.4fr auto auto;align-items:center;gap:12px;
  padding:9px 12px;border-bottom:1px solid var(--line)}
.setl-row.done{opacity:.55}
.setl-dir{font-size:11px;font-weight:700;border-radius:6px;padding:2px 8px;white-space:nowrap}
.setl-dir.in{background:rgba(16,185,129,.14);color:#059669}
.setl-dir.out{background:rgba(239,68,68,.12);color:#dc2626}
.setl-cp{font-weight:650;font-size:13.5px}
.setl-note{color:var(--muted);font-size:12.5px}
.setl-amt{font-size:14px;white-space:nowrap}
.setl-act{display:flex;gap:5px}

/* карточка клиента — быстрые действия + заметки */
.cl-quick{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.cl-note{width:100%;min-height:74px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;
  font-family:var(--font);font-size:13.5px;resize:vertical;background:var(--surface-2);color:var(--ink)}
.cl-note:focus{outline:none;border-color:var(--brand,#10b981);background:var(--surface)}
.cl-note-ro{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:13.5px;white-space:pre-wrap}
/* метка исторической записи Bumpix */
.bumpix-note{background:rgba(245,158,11,.1);border:1px solid rgba(245,158,11,.35);color:#92600a;
  border-radius:9px;padding:9px 13px;font-size:12.5px;font-weight:600;margin-bottom:12px}

/* ВОРОНКА */
.funnel{max-width:640px;margin-top:8px}
.fn-stage{margin:0}
.fn-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:5px}
.fn-label{font-size:13.5px;color:var(--ink-soft);font-weight:600}
.fn-count{font-size:17px}
.fn-bar-bg{background:var(--surface-2);border:1px solid var(--line);border-radius:9px;height:34px;overflow:hidden}
.fn-bar{height:100%;border-radius:9px 0 0 9px;transition:width .4s}
.fn-bar.fn-leads{background:linear-gradient(90deg,#3b82f6,#60a5fa)}
.fn-bar.fn-records{background:linear-gradient(90deg,#8b5cf6,#a78bfa)}
.fn-bar.fn-visits{background:linear-gradient(90deg,#0ea5e9,#38bdf8)}
.fn-bar.fn-payments{background:linear-gradient(90deg,#10b981,#34d399)}
.fn-conv{text-align:center;color:var(--muted);font-size:12.5px;font-weight:700;padding:5px 0}
.fn-total{margin-top:18px;padding:14px 18px;background:var(--surface-2);border:1px solid var(--line);
  border-radius:12px;font-size:14px;max-width:640px}
.fn-total b{font-size:18px;color:var(--brand-d,#059669)}

/* ===== КАЛЕНДАРЬ · кнопки-посты (фильтр) + панель поста ===== */
.cal-posts{display:flex;gap:10px;margin:16px 0 4px;flex-wrap:wrap;align-items:center}
.cal-posts-load{font-size:12px;color:var(--muted)}
.cal-posts .post-btn{
  display:inline-flex;align-items:center;gap:9px;cursor:pointer;font-family:var(--font);
  border:2px solid var(--line);background:var(--surface);color:var(--ink-soft);
  border-radius:13px;padding:9px 15px;font-weight:700;font-size:13px;letter-spacing:.3px;
  box-shadow:var(--sh-s);transition:.16s;position:relative}
.cal-posts .post-btn:hover{transform:translateY(-1px);box-shadow:var(--sh)}
.cal-posts .post-btn .pb-dot{width:11px;height:11px;border-radius:4px;flex:none}
.cal-posts .post-btn .pb-cnt{
  background:var(--surface-2);color:var(--ink-soft);font-size:11px;font-weight:800;
  min-width:20px;text-align:center;padding:1px 7px;border-radius:20px;line-height:1.5}
/* активные состояния — в цвет поста, премиум-градиент */
.cal-posts .post-btn.on{color:#fff;border-color:transparent;box-shadow:var(--sh)}
.cal-posts .post-btn.on .pb-cnt{background:rgba(255,255,255,.26);color:#fff}
.cal-posts .post-btn.on .pb-dot{background:rgba(255,255,255,.92)!important}
.cal-posts .post-btn.all.on{background:linear-gradient(135deg,#475569,#1e293b)}
.cal-posts .post-btn.fary.on{background:linear-gradient(135deg,#3b82f6,#2563eb)}
.cal-posts .post-btn.detail.on{background:linear-gradient(135deg,#8b5cf6,#7c3aed)}
.cal-posts .post-btn.moyka.on{background:linear-gradient(135deg,#14b8a6,#0d9488)}
/* тонкая цветная подсветка границы у неактивных постов */
.cal-posts .post-btn.fary:not(.on){border-color:rgba(59,130,246,.35)}
.cal-posts .post-btn.detail:not(.on){border-color:rgba(139,92,246,.35)}
.cal-posts .post-btn.moyka:not(.on){border-color:rgba(20,184,166,.4)}

/* панель выбранного поста: мастера + записаны сегодня */
.cal-postpanel{
  margin:10px 0 4px;border:1px solid var(--line);border-radius:var(--r);
  background:var(--surface);box-shadow:var(--sh-s);padding:16px 18px;
  border-left:5px solid var(--muted);animation:cpp-in .2s ease}
.cal-postpanel.fary{border-left-color:var(--fary)}
.cal-postpanel.detail{border-left-color:var(--detail)}
.cal-postpanel.moyka{border-left-color:var(--moyka)}
@keyframes cpp-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.cpp-row{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.cpp-row:last-child{margin-bottom:0}
.cpp-lbl{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);
  font-weight:800;min-width:128px;padding-top:5px}
.cpp-vals{display:flex;gap:8px;flex-wrap:wrap;flex:1;align-items:center}
.cpp-master{
  display:inline-flex;align-items:center;gap:7px;background:var(--surface-2);
  border:1px solid var(--line);border-radius:20px;padding:5px 6px 5px 11px;
  font-size:13px;font-weight:600;color:var(--ink)}
.cpp-master .mava{width:22px;height:22px;border-radius:50%;background:var(--fary);color:#fff;
  font-size:10px;font-weight:800;display:flex;align-items:center;justify-content:center}
.cpp-master .mrm{border:0;background:transparent;color:var(--muted);cursor:pointer;
  font-size:15px;line-height:1;padding:0 4px;border-radius:6px;font-family:var(--font);transition:.15s}
.cpp-master .mrm:hover{color:var(--danger);background:rgba(239,68,68,.1)}
.cpp-empty{font-size:13px;color:var(--muted)}
.cpp-add{display:inline-flex;align-items:center;gap:6px;border:1px dashed var(--line);
  background:transparent;color:var(--ink-soft);border-radius:20px;padding:5px 13px;
  font-size:12.5px;font-weight:700;cursor:pointer;font-family:var(--font);transition:.15s}
.cpp-add:hover{border-color:var(--brand);color:var(--brand-d);background:rgba(16,185,129,.06)}
.cpp-rec{display:inline-flex;align-items:center;gap:8px;background:var(--surface-2);
  border:1px solid var(--line);border-radius:9px;padding:5px 11px;font-size:13px;cursor:pointer;
  transition:.15s}
.cpp-rec:hover{box-shadow:var(--sh-s);background:var(--surface)}
.cpp-rec .rt{font-weight:700;color:var(--ink-soft);font-size:12px}
.cpp-rec .rc{font-weight:700}
.cpp-rec .rcl{color:var(--muted);font-size:12px}
.cpp-rec .rmaster{color:var(--ink-soft);font-size:11.5px;font-weight:600;
  background:var(--surface);border:1px solid var(--line);border-radius:7px;padding:1px 7px}
.cpp-err{margin-top:4px;font-size:12.5px;color:#b91c1c;font-weight:600;width:100%}

/* мини-меню выбора мастера для добавления */
.cpp-pickmenu{position:fixed;z-index:90;background:var(--surface);border:1px solid var(--line);
  border-radius:11px;box-shadow:var(--sh);padding:6px;min-width:180px;max-height:280px;overflow:auto}
.cpp-pickmenu button{display:flex;align-items:center;gap:9px;width:100%;border:0;background:transparent;
  text-align:left;padding:8px 10px;border-radius:8px;cursor:pointer;font-family:var(--font);
  font-size:13px;font-weight:600;color:var(--ink)}
.cpp-pickmenu button:hover{background:var(--surface-2)}
.cpp-pickmenu .pm-empty{padding:10px;font-size:12.5px;color:var(--muted)}

/* раскрывающийся список неполных карточек на «Сегодня» — кликабельный */
.inc-toggle{border:0;background:transparent;cursor:pointer;font-size:inherit;font-family:var(--font);padding:0}
.inc-panel{margin:10px 0;border:1px solid rgba(220,38,38,.4);border-radius:12px;background:var(--surface);overflow:hidden}
.inc-row{display:flex;gap:10px;align-items:baseline;padding:10px 14px;border-bottom:1px solid var(--line);cursor:pointer;flex-wrap:wrap}
.inc-row:last-child{border-bottom:0}
.inc-row:active{opacity:.7}
.inc-row .inc-who{color:var(--muted);font-size:13px}
.inc-row .inc-miss{color:#dc2626;font-size:12.5px;flex-basis:100%}
/* Корзина: список удалённых записей */
.trash-list{display:flex;flex-direction:column;gap:8px;max-height:60vh;overflow-y:auto}
.trash-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;
  border:1px solid var(--line);border-radius:10px;background:var(--surface-2)}
.trash-row b{font-size:13.5px;color:var(--ink)}
.trash-row small{display:block;color:var(--muted);font-size:11.5px;margin-top:2px}
/* Крестик «пропустить полноту» */
.ord-complete-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.oc-skip{border:1px solid var(--line);background:var(--surface);color:var(--muted);border-radius:8px;
  padding:4px 10px;font-size:12px;cursor:pointer;white-space:nowrap}
.oc-skip:hover{color:var(--ink);border-color:var(--muted)}
.inc-row{position:relative}
.inc-skip{border:none;background:transparent;color:#dc2626;font-size:15px;cursor:pointer;padding:2px 6px;border-radius:6px;flex:0 0 auto}
.inc-skip:hover{background:rgba(220,38,38,.12)}
