/* Клевер CRM — тема.
   Основа — эталон интерфейса владельца (ERP Лукин Мебель + рабочие столы ERP клининга),
   акцент — зелёный из текущей системы Клевера (erp.kovervrn.ru, #2e7d32).
   Поручение владельца 25.09.2026: «не маленькие кнопочки, в которые нужно тыкать, а большие
   удобные кнопки… ни чек-боксов, ни выпадающих списков». Поэтому: плотные строки данных,
   но элементы управления — крупные (кнопки и чипы 40–48 px). */

:root {
  --acc: #2e7d32; --acc-d: #1b5e20; --acc-s: #e3f1e4; --acc-m: #b9dcbc;
  --bg: #f2f5f3; --s: #fff; --s2: #f4f7f5; --l: #dde7e0;
  --ink: #1f2d27; --ink2: #4c5f55; --mut: #85958c;
  --good: #1f9d55; --good-s: #e7f6ec; --warn: #b45309; --warn-s: #fdf3e1;
  --bad: #c62828; --bad-s: #fdecec; --info: #0e6e8c; --info-s: #e6f3f7;
  --tel: #0e7490;
  --r-sm: 7px; --r: 10px; --r-lg: 14px;
}
* { box-sizing: border-box; }
html, body { margin: 0; }
body { font-family: -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: 14px;
       line-height: 1.45; color: var(--ink); background: var(--bg); }
a { color: var(--acc); text-decoration: none; }
a:hover { text-decoration: underline; }
.ico { flex: none; vertical-align: middle; }
.num { font-variant-numeric: tabular-nums; }
.mut { color: var(--mut); }
.ink2 { color: var(--ink2); }
.nowrap { white-space: nowrap; }
.hidden { display: none !important; }

/* ── раскладка ─────────────────────────────────────────────── */
.layout { display: flex; min-height: 100vh; }
.sidebar { width: 196px; background: var(--acc-d); color: #e7f3e8; display: flex; flex-direction: column;
           position: sticky; top: 0; height: 100vh; flex: none; }
.brand { display: flex; align-items: center; gap: 9px; padding: 11px 12px; font-weight: 800; font-size: 16px;
         border-bottom: 1px solid rgba(255,255,255,.14); }
.brand-mark { width: 30px; height: 30px; border-radius: 9px; background: #fff; color: var(--acc-d);
              display: grid; place-items: center; font-size: 17px; font-weight: 900; flex: none; }
.brand small { display: block; font-size: 11px; font-weight: 600; opacity: .7; letter-spacing: .08em; }
.sidebar nav { display: flex; flex-direction: column; gap: 2px; padding: 8px; overflow: auto; flex: 1; }
.sidebar nav a { display: flex; align-items: center; gap: 9px; color: #dcefdc; padding: 7px 10px;
                 border-radius: 8px; font-size: 13.5px; font-weight: 600; text-decoration: none; }
.sidebar nav a { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sidebar nav a:hover { background: rgba(255,255,255,.1); }
.sidebar nav a.on { background: #fff; color: var(--acc-d); }
.nav-badge { margin-left: auto; background: #f59e0b; color: #1f2d27; border-radius: 10px; padding: 0 7px;
             font-size: 11.5px; font-weight: 800; }
.brand-out { display: none; margin-left: auto; color: #ffe0b2; font-size: 13px; font-weight: 600; align-items: center; gap: 5px; }
.imp { padding: 6px 8px; border-top: 1px solid rgba(255,255,255,.14); }
.imp-btn { width: 100%; display: flex; align-items: center; gap: 8px; background: rgba(255,255,255,.08); border: 0; color: #e7f3e8;
           border-radius: 9px; padding: 8px 10px; font: inherit; font-size: 13px; font-weight: 700; cursor: pointer; }
.imp-btn:hover { background: rgba(255,255,255,.16); }
.imp-menu { display: none; flex-direction: column; gap: 3px; margin-top: 5px; }
.imp.open .imp-menu { display: flex; }
.imp-menu button { text-align: left; background: transparent; border: 0; color: #dcefdc; font: inherit; font-size: 13px;
                   padding: 6px 10px; border-radius: 7px; cursor: pointer; }
.imp-menu button:hover { background: rgba(255,255,255,.12); }
.imp-menu button.on { background: #f59e0b; color: #1f2d27; font-weight: 800; }
.imp-menu button.back { color: #ffe0b2; border-top: 1px solid rgba(255,255,255,.12); border-radius: 0; margin-top: 3px; }
.userbox { padding: 12px 16px; border-top: 1px solid rgba(255,255,255,.14); font-size: 13.5px; }
.userbox b { display: block; }
.userbox .urole { opacity: .75; font-size: 12.5px; }
.userbox a { color: #ffe0b2; font-size: 13px; display: inline-flex; align-items: center; gap: 5px; margin-top: 6px; }
.content { flex: 1; min-width: 0; padding: 12px 16px 30px; }

.page-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.page-head h1 { margin: 0; font-size: 19px; font-weight: 800; }
.page-head .sub { color: var(--mut); font-size: 13px; }
.page-head .grow { flex: 1; }

/* ── кнопки ───────────────────────────────────────────────── */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 32px;
       padding: 0 12px; border-radius: 8px; border: 1.5px solid var(--l); background: #fff;
       color: var(--ink); font: inherit; font-size: 13.5px; font-weight: 700; cursor: pointer;
       text-decoration: none; white-space: nowrap; user-select: none; }
.btn:hover { border-color: var(--acc); color: var(--acc); text-decoration: none; }
.btn:active { transform: translateY(1px); }
.btn:disabled, .btn.disabled { opacity: .45; pointer-events: none; }
.btn-primary { background: var(--acc); border-color: var(--acc); color: #fff; }
.btn-primary:hover { background: var(--acc-d); border-color: var(--acc-d); color: #fff; }
.btn-danger { color: var(--bad); border-color: #efc4c4; }
.btn-danger:hover { background: var(--bad-s); border-color: var(--bad); color: var(--bad); }
.btn-lg { min-height: 38px; padding: 0 16px; font-size: 14.5px; border-radius: 9px; }
.btn-sm { min-height: 28px; padding: 0 9px; font-size: 12.5px; }
.btn-block { width: 100%; }
.btn-tel { color: var(--tel); border-color: #b9dde6; }
.btn-tel:hover { background: var(--info-s); color: var(--tel); border-color: var(--tel); }
.btn-row { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }

/* ── чипы вместо чекбоксов/радио/выпадающих списков ─────────── */
.chips { display: flex; flex-wrap: wrap; gap: 5px; }
.chip { display: inline-flex; align-items: center; gap: 6px; min-height: 30px; padding: 4px 10px;
        border: 1.5px solid var(--l); border-radius: 8px; background: #fff; color: var(--ink);
        font: inherit; font-size: 13.5px; font-weight: 600; cursor: pointer; user-select: none;
        text-align: left; line-height: 1.25; }
.chip:hover { border-color: var(--acc-m); background: var(--s2); }
.chip.on { border-color: var(--acc); background: var(--acc-s); color: var(--acc-d); font-weight: 700; }
.chip.on::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--acc); flex: none; }
.chip .chip-sub { display: inline; font-size: 11.5px; font-weight: 600; color: var(--mut); }
.chip.on .chip-sub { color: var(--acc); }
.chip.warn.on { border-color: var(--warn); background: var(--warn-s); color: var(--warn); }
.chip.warn.on::before { background: var(--warn); }
.chip.bad.on { border-color: var(--bad); background: var(--bad-s); color: var(--bad); }
.chip.bad.on::before { background: var(--bad); }
.chip:disabled, .chip.disabled { opacity: .4; cursor: not-allowed; }
.chip-lg { min-height: 34px; font-size: 14px; padding: 5px 12px; }
.chips-tight .chip { min-height: 28px; padding: 3px 9px; font-size: 12.5px; }

/* ── поля ─────────────────────────────────────────────────── */
.inp { min-height: 34px; padding: 5px 10px; border: 1.5px solid var(--l); border-radius: 8px;
       font: inherit; font-size: 14px; color: var(--ink); background: #fff; width: 100%; }
.inp:focus { outline: none; border-color: var(--acc); box-shadow: 0 0 0 3px rgba(46,125,50,.12); }
textarea.inp { min-height: 64px; resize: vertical; line-height: 1.4; }
.inp-phone { max-width: 220px; font-weight: 700; letter-spacing: .02em; }
.inp-lg { min-height: 38px; font-size: 15px; }
.inp-num { max-width: 110px; text-align: center; font-weight: 700; }
.fld { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.fld > label, .lbl { font-size: 12.5px; font-weight: 700; color: var(--ink2); }
.fld .hint { font-size: 12px; color: var(--mut); }
.grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 12px; }
.grid3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px 12px; }
.span2 { grid-column: 1 / -1; }

/* степпер размеров: крупные − / + и поле по центру */
.stepper { display: inline-flex; align-self: flex-start; align-items: stretch; border: 1.5px solid var(--l); border-radius: var(--r);
           overflow: hidden; background: #fff; }
.stepper button { width: 32px; min-height: 32px; border: 0; background: var(--s2); font-size: 17px;
                  font-weight: 700; color: var(--ink2); cursor: pointer; }
.stepper button:hover { background: var(--acc-s); color: var(--acc-d); }
.stepper input { width: 56px; border: 0; text-align: center; font: inherit; font-size: 15px; font-weight: 800; }
.stepper input:focus { outline: none; background: #fbfffb; }

/* ── карточки и панели ─────────────────────────────────────── */
.panel { background: var(--s); border: 1px solid var(--l); border-radius: 12px; padding: 9px 11px; }
.panel + .panel { margin-top: 12px; }
.panel-h { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.panel-h h2, .panel-h h3 { margin: 0; font-size: 15px; font-weight: 800; }
.panel-h .sub { margin-left: auto; font-size: 12px; color: var(--mut); }

/* ── таблица-список полной страницы ────────────────────────── */
.tbl { width: 100%; border-collapse: separate; border-spacing: 0 2px; }
.tbl thead th { font-size: 10.5px; font-weight: 800; color: var(--mut); text-transform: uppercase;
                letter-spacing: .03em; text-align: left; padding: 0 8px 3px; white-space: nowrap; }
.tbl th.r, .tbl td.r { text-align: right; }
.tbl tbody td { font-size: 13.5px; padding: 4px 7px; background: var(--s2); white-space: nowrap;
                vertical-align: middle; }
.tbl tbody td:first-child { border-radius: var(--r-sm) 0 0 var(--r-sm); }
.tbl tbody td:last-child { border-radius: 0 var(--r-sm) var(--r-sm) 0; }
.tbl td.wrap { white-space: normal; }
/* имя и адрес: обычные — в одну строку; редкие очень длинные переносятся, а не раздувают колонку всем */
.tbl td.cl { max-width: 210px; white-space: normal; }
.tbl td.ad { max-width: 330px; white-space: normal; }
/* список, где колонок мало: панель по ширине содержимого, а не «на всю Ивановскую» (эталон, 01.10) */
.panel.panel-fit { width: fit-content; min-width: min(100%, 620px); max-width: 100%; }
.tbl td .stack > * { display: block; }
.tbl tr.lnk { cursor: pointer; }
.tbl tr.lnk:hover td { background: var(--acc-s); }
.tbl tr.t-good td { background: var(--good-s); }
.tbl tr.t-warn td { background: var(--warn-s); }
.tbl tr.t-bad td { background: var(--bad-s); }
.tbl tr.t-info td { background: var(--info-s); }
.tbl tr.t-mute td { opacity: .55; }
.tbl .b { font-weight: 700; }
.tel { color: var(--tel); font-weight: 700; white-space: nowrap; }

/* статус — мягкая плашка */
.st { display: inline-block; padding: 2px 9px; border-radius: 20px; font-size: 12px; font-weight: 700;
      background: var(--s2); color: var(--ink2); white-space: nowrap; border: 1px solid var(--l); }
.st.good { background: var(--good-s); color: var(--good); border-color: #bfe6cc; }
.st.warn { background: var(--warn-s); color: var(--warn); border-color: #f2d7a8; }
.st.bad { background: var(--bad-s); color: var(--bad); border-color: #f1c1c1; }
.st.info { background: var(--info-s); color: var(--info); border-color: #b8dce8; }
.st.mute { opacity: .6; }

/* метки клиента — заметные плашки при звонке */
.tags { display: flex; gap: 6px; flex-wrap: wrap; }
.tag { display: inline-flex; align-items: center; gap: 5px; padding: 3px 10px; border-radius: 8px;
       font-size: 12.5px; font-weight: 800; }
.tag.warn { background: #fff1d6; color: #92400e; }
.tag.bad { background: #fde2e2; color: #b91c1c; }
.tag.good { background: var(--good-s); color: var(--good); }
.tag.info { background: var(--info-s); color: var(--info); }

/* фильтры-вкладки со счётчиком */
.tabs { display: flex; gap: 6px; flex-wrap: wrap; }
.tab { display: inline-flex; align-items: center; gap: 5px; min-height: 30px; padding: 0 10px; border-radius: var(--r);
       border: 1.5px solid var(--l); background: #fff; color: var(--ink2); font: inherit; font-size: 13.5px;
       font-weight: 700; cursor: pointer; text-decoration: none; font-size: 13px; }
.tab:hover { border-color: var(--acc); color: var(--acc); text-decoration: none; }
.tab.on { background: var(--acc); border-color: var(--acc); color: #fff; }
.tab .cnt { font-size: 12px; opacity: .75; }

.searchbox { position: relative; }
.searchbox .ico { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--mut); }
.searchbox .inp { padding-left: 38px; }

/* ── модалка (эталон: слева управление, справа справка 290 px) ── */
.modal-overlay { display: none; position: fixed; inset: 0; background: rgba(20,35,27,.45); z-index: 1000;
                 align-items: flex-start; justify-content: center; padding: 4vh 12px; overflow-y: auto; }
.modal-overlay.open { display: flex; }
.modal { background: #fff; border-radius: var(--r-lg); width: min(96vw, 560px);
         box-shadow: 0 24px 70px rgba(0,0,0,.28); }
.modal.modal-wide { width: min(96vw, 940px); }
.modal.modal-xl { width: min(97vw, 1120px); }
.modal-head { display: flex; align-items: center; gap: 8px; padding: 8px 12px; border-bottom: 1px solid var(--l); }
.modal-head h2 { margin: 0; font-size: 17px; font-weight: 800; }
.modal-head .sub { color: var(--mut); font-size: 13px; }
.modal-head .grow { flex: 1; }
.modal-close { width: 32px; height: 32px; border: 0; background: var(--s2); border-radius: var(--r); cursor: pointer;
               display: grid; place-items: center; color: var(--ink2); flex: none; }
.modal-close:hover { background: var(--bad-s); color: var(--bad); }
.modal-body { padding: 10px 12px; }
.modal-foot { display: flex; gap: 8px; justify-content: flex-end; padding: 8px 12px; border-top: 1px solid var(--l); }
.modal-head { position: sticky; top: 0; background: #fff; z-index: 5; border-radius: var(--r-lg) var(--r-lg) 0 0; }
.modal-foot { position: sticky; bottom: 0; background: #fff; z-index: 5; border-radius: 0 0 var(--r-lg) var(--r-lg); }
/* путь заказа: пройденные — зелёные, текущий — сплошной */
.path { display: flex; flex-wrap: wrap; gap: 3px; }
.path-s { font-size: 11.5px; font-weight: 700; padding: 3px 8px; border-radius: 6px; background: var(--s2); color: var(--mut);
          border: 1px solid var(--l); white-space: nowrap; }
.path-s.done { background: var(--acc-s); color: var(--acc-d); border-color: var(--acc-m); }
.path-s.on { background: var(--acc); color: #fff; border-color: var(--acc); }
.modal-2col { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 290px); gap: 12px; align-items: start; }
.modal-side { border-left: 1px solid var(--l); padding-left: 12px; min-width: 0; }
.sec { margin-bottom: 10px; }
.sec:last-child { margin-bottom: 0; }
.sec-h { font-size: 12px; font-weight: 800; color: var(--mut); text-transform: uppercase; letter-spacing: .04em;
         margin: 0 0 6px; display: flex; align-items: center; gap: 6px; }
.sec-h .grow { flex: 1; }

/* «метка: значение» — табличка по ширине содержимого */
.kv { display: inline-grid; grid-template-columns: auto auto; gap: 3px 14px; font-size: 13.5px; }
.kv > div { display: contents; }
.kv span { color: var(--mut); }
.kv b { font-weight: 700; }

/* раскладка расчёта «почему такая сумма» */
.calc { font-size: 13.5px; }
.calc-item { padding: 6px 0; border-bottom: 1px dashed var(--l); }
.calc-item:last-child { border-bottom: 0; }
.calc-t { display: flex; justify-content: space-between; gap: 10px; font-weight: 800; }
.calc-l { display: flex; justify-content: space-between; gap: 10px; color: var(--ink2); padding-left: 10px; }
.calc-l .why { color: var(--mut); font-size: 12.5px; }
.calc-l.add { color: var(--warn); }
.calc-total { display: flex; justify-content: space-between; align-items: baseline; margin-top: 8px; padding-top: 8px;
              border-top: 2px solid var(--ink); font-size: 18px; font-weight: 900; }
.calc-min { background: var(--warn-s); color: var(--warn); border-radius: 8px; padding: 5px 9px; margin-top: 6px;
            display: flex; justify-content: space-between; font-weight: 700; }

/* лента истории / комментариев */
.feed { display: flex; flex-direction: column; gap: 6px; }
.feed-i { background: var(--s2); border-radius: 9px; padding: 6px 9px; font-size: 13px; }
.feed-i .meta { font-size: 11.5px; color: var(--mut); }
.feed-i.c-client { background: var(--info-s); }
.feed-i.c-order { background: var(--acc-s); }
.feed-i.c-address { background: var(--warn-s); }

/* фото */
.thumbs { display: flex; flex-wrap: wrap; gap: 6px; }
.thumbs a { display: block; width: 72px; height: 72px; border-radius: 9px; overflow: hidden; border: 1px solid var(--l); }
.thumbs img { width: 100%; height: 100%; object-fit: cover; }
.dropzone { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 36px; padding: 6px 12px;
            border: 2px dashed var(--acc-m); border-radius: 12px; background: var(--s2); color: var(--acc-d);
            font-weight: 700; cursor: pointer; text-align: center; }
.dropzone:hover, .dropzone.drag { background: var(--acc-s); border-color: var(--acc); }
.dropzone input { display: none; }

/* уведомление о сохранении */
.toast { position: fixed; left: 50%; top: 14px; transform: translate(-50%, -12px); max-width: min(92vw, 640px);
         background: var(--ink); color: #fff; padding: 12px 18px; border-radius: 12px; font-weight: 700; font-size: 15px;
         box-shadow: 0 12px 34px rgba(0,0,0,.3); z-index: 3000; opacity: 0; transition: all .2s; pointer-events: none;
         display: flex; gap: 12px; align-items: center; }
.toast.show { opacity: 1; transform: translate(-50%, 0); pointer-events: auto; }
.toast.err { background: var(--bad); }
.toast .toast-x { margin-left: auto; background: rgba(255,255,255,.2); border: 0; color: #fff; border-radius: 8px;
                  width: 28px; height: 28px; cursor: pointer; font-size: 15px; flex: none; }
.saved-mark { color: var(--good); font-size: 12.5px; font-weight: 700; }

.alert { padding: 9px 12px; border-radius: var(--r); font-size: 13.5px; font-weight: 600; }
.alert.bad { background: var(--bad-s); color: var(--bad); }
.alert.warn { background: var(--warn-s); color: var(--warn); }
.alert.good { background: var(--good-s); color: var(--good); }
.alert.info { background: var(--info-s); color: var(--info); }
.empty { color: var(--mut); padding: 10px 4px; font-size: 13.5px; }

/* ── календарь на месте (не поле с иконкой) ───────────────── */
.cal { display: inline-block; background: #fff; border: 1.5px solid var(--l); border-radius: 12px; padding: 8px; user-select: none; }
.cal-h { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; font-weight: 800; }
.cal-h button { width: 34px; height: 34px; border: 0; border-radius: 8px; background: var(--s2); cursor: pointer; font-size: 16px; }
.cal-g { display: grid; grid-template-columns: repeat(7, 38px); gap: 3px; }
.cal-g .wd { font-size: 11px; color: var(--mut); text-align: center; font-weight: 700; }
.cal-g button { height: 36px; border: 0; border-radius: 8px; background: var(--s2); font: inherit; font-size: 13.5px;
                font-weight: 600; cursor: pointer; }
.cal-g button:hover { background: var(--acc-s); }
.cal-g button.we { color: var(--bad); }
.cal-g button.today { box-shadow: inset 0 0 0 2px var(--acc-m); }
.cal-g button.on { background: var(--acc); color: #fff; }
.cal-g button.past { opacity: .4; }

/* ── рабочий стол из виджетов (эталон, редакция 2) ────────── */
.desk-row { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 12px; margin-bottom: 12px;
            align-items: stretch; }
.w { grid-column: span 6; overflow-x: auto; background: var(--s); border: 1px solid var(--l); border-radius: var(--r-lg);
     padding: 11px 13px; display: flex; flex-direction: column; min-width: 0; }
.w.sz-xs { grid-column: span 3; } .w.sz-s { grid-column: span 4; }
.w.sz-m { grid-column: span 6; } .w.sz-l { grid-column: span 12; }
.w-stack { grid-column: span 6; display: flex; flex-direction: column; gap: 12px; min-width: 0; }   /* два виджета друг под другом в половине ряда */
.w-h { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.w-t { font-size: 14px; font-weight: 800; }
.w-t a { color: inherit; }
.w-sub { font-size: 11.5px; color: var(--mut); margin-left: auto; white-space: nowrap; }
.w-sz { display: inline-flex; border: 1.5px solid var(--l); border-radius: 7px; overflow: hidden; flex: none; }
.w-sz button { min-width: 24px; padding: 0 5px; border: 0; background: #fff; font-size: 10.5px; font-weight: 800;
               color: #94a3b8; cursor: pointer; line-height: 2.1; font-family: inherit; }
.w-sz button + button { border-left: 1px solid var(--l); }
.w-sz button:hover { background: var(--acc-s); color: var(--acc); }
.w-sz button.on { background: var(--acc); color: #fff; }
.w-tbl { width: 100%; border-collapse: collapse; }
.w-tbl thead th { font-size: 10px; font-weight: 800; color: var(--mut); text-transform: uppercase; letter-spacing: .03em;
                  text-align: left; padding: 0 7px 3px; white-space: nowrap; }
.w-tbl thead th.r { text-align: right; }
.w-tbl tbody td { font-size: 12.5px; padding: 4px 7px; background: var(--s2); border-top: 2px solid #fff;
                  white-space: nowrap; vertical-align: middle; }
.w-tbl tbody tr:first-child td { border-top: 0; }
.w-tbl tbody td:first-child { border-radius: 7px 0 0 7px; font-weight: 700; }
.w-tbl tbody td:last-child { border-radius: 0 7px 7px 0; }
.w-tbl td.r { text-align: right; font-weight: 700; }
.w-tbl td.b { font-weight: 700; }
.w-tbl td.wrap { white-space: normal; }
.w-tbl td.cl { white-space: normal; max-width: 200px; }   /* имя с припиской (> 26 знаков) — перенос, остальные в строку */
.w-tbl td .stack > * { display: block; }
.w-tbl tr.lnk { cursor: pointer; }
.w-tbl tr.lnk:hover td { background: var(--acc-s); }
.w-tbl tr.t-good td { background: var(--good-s); } .w-tbl tr.t-warn td { background: var(--warn-s); }
.w-tbl tr.t-bad td { background: var(--bad-s); } .w-tbl tr.t-info td { background: var(--info-s); }
.w-scroll { max-height: 470px; overflow-y: auto; }
.w-scroll.w-tall { max-height: max(470px, calc(100vh - 190px)); }   /* главный список экрана — на всю высоту окна */
/* список, который заполняет высоту ряда (сосед выше) и прокручивается внутри */
.fill-abs { position: relative; flex: 1; min-height: 320px; }
.fill-abs > * { position: absolute; inset: 0; overflow-y: auto; }
.x-scroll { overflow-x: auto; }
.w-cells { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 6px; }
.w-cell { background: var(--s2); border-radius: 9px; padding: 6px 9px; }
.w-cell b { display: block; font-size: 17px; font-weight: 800; line-height: 1.2; }
.w-cell span { font-size: 11px; color: var(--mut); }
.w-cell.good b { color: var(--good); } .w-cell.bad b { color: var(--bad); } .w-cell.warn b { color: var(--warn); }
.w-empty { font-size: 12.5px; color: var(--mut); padding: 6px 2px; }
.w-foot { margin-top: 8px; }
.load-bar { height: 7px; border-radius: 4px; background: var(--l); overflow: hidden; min-width: 60px; }
.load-bar i { display: block; height: 100%; background: var(--acc); }
.load-bar.full i { background: var(--bad); }
.load-bar.near i { background: var(--warn); }

/* ── планировщик курьеры × дни ─────────────────────────────── */
.pl-tbl { border-collapse: separate; border-spacing: 3px; margin: -3px; }
.pl-tbl thead th { font-size: 11px; font-weight: 800; color: var(--mut); text-transform: uppercase; white-space: nowrap; padding: 0 2px; }
.pl-tbl thead th.we { color: var(--bad); }
.pl-tbl tbody th { text-align: left; font-size: 13.5px; white-space: nowrap; padding-right: 6px; }
.pl-tbl tbody th span { display: block; font-size: 11.5px; color: var(--mut); font-weight: 600; }
.pl-cell { width: 54px; min-height: 36px; border: 1.5px solid var(--l); border-radius: 8px; background: #fff; cursor: pointer;
           font: inherit; display: flex; flex-direction: column; align-items: center; justify-content: center; line-height: 1.1; }
.pl-cell b { font-size: 13.5px; font-weight: 800; }
.pl-cell span { font-size: 9.5px; white-space: nowrap; color: var(--mut); font-weight: 600; }
.pl-cell:hover { border-color: var(--acc-m); background: var(--s2); }
.pl-cell.near { background: var(--warn-s); border-color: #f2d7a8; }
.pl-cell.full { background: var(--bad-s); border-color: #f1c1c1; opacity: .6; cursor: not-allowed; }
.pl-cell.on { border-color: var(--acc); background: var(--acc); color: #fff; }
.pl-cell.on span { color: #e3f1e4; }

/* ── курьер (телефон) ─────────────────────────────────────── */
.c-wrap { max-width: 680px; }
.c-card { background: #fff; border: 1px solid var(--l); border-left: 5px solid var(--acc); border-radius: 14px;
          padding: 12px 14px; margin-bottom: 10px; }
.c-card.deliv { border-left-color: var(--info); }
.c-card.done { border-left-color: var(--mut); }   /* выполненные — отдельной вкладкой, без бледности (Владимир 30.09) */
.c-top { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
.c-top .grow { flex: 1; }
.c-kind { font-size: 12px; font-weight: 900; letter-spacing: .06em; color: #fff; background: var(--acc); border-radius: 6px; padding: 2px 8px; }
.c-card.deliv .c-kind { background: #c9a800; }
.c-time { font-size: 18px; font-weight: 900; display: inline-flex; align-items: center; gap: 4px; }
.c-addr { font-size: 17px; font-weight: 800; line-height: 1.3; display: flex; gap: 6px; align-items: flex-start; }
.c-note { margin-top: 5px; background: var(--warn-s); color: #7c4a03; border-radius: 8px; padding: 5px 9px; font-size: 14px; font-weight: 600; }
.c-note-o { background: var(--acc-s); color: var(--acc-d); }
.c-client { margin-top: 7px; font-size: 15px; font-weight: 700; display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.c-meta { margin-top: 4px; font-size: 14.5px; color: var(--ink2); }
.c-btns { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 10px; }
.c-btns .btn { min-height: 52px; font-size: 16px; }
.c-sum { font-size: 17px; margin-bottom: 10px; }
.c-sum b { font-size: 24px; font-weight: 900; }
.c-change { min-height: 48px; display: flex; align-items: center; font-size: 22px; font-weight: 900; }
.c-modal { width: min(96vw, 640px); }
.c-modal .chip-lg, .c-wrap .chip-lg { min-height: 44px; font-size: 15px; }
.c-modal .btn-lg { min-height: 48px; font-size: 16px; }
.c-modal .inp-lg { min-height: 46px; font-size: 17px; }
@media (max-width: 760px) {
  .modal-overlay { padding: 0; }
  .modal, .modal.modal-wide, .modal.modal-xl, .c-modal { width: 100vw; min-height: 100vh; border-radius: 0; }
  .modal-head, .modal-foot { border-radius: 0; }
  /* 14.10: панель прячем только у самого курьера — владелец/начальник в «Моих задачах» без неё не могли уйти назад */
  .route-courier.role-courier .sidebar nav { display: none; }
  .route-courier.role-courier .sidebar .brand { padding: 10px 14px; }
}

/* ── всплывающий звонок ───────────────────────────────────── */
.call-pop { position: fixed; left: 250px; bottom: 16px; width: 330px; background: #fff; border-radius: 14px; z-index: 1500;
            box-shadow: 0 16px 50px rgba(0,0,0,.3); padding: 0 14px 12px; border: 2px solid var(--acc); }
.call-h { display: flex; align-items: center; gap: 6px; margin: 0 -14px 10px; padding: 8px 14px; background: var(--acc);
          color: #fff; font-weight: 800; border-radius: 11px 11px 0 0; }
@media (max-width: 760px) { .call-pop { left: 8px; right: 8px; width: auto; } }

/* ── скрипт заявки (по образцу скрипта-калькулятора ERP клининга) ── */
.wz .modal-body { padding: 12px 16px 0; }
.wz-top { flex-wrap: wrap; row-gap: 6px; }
.wz-nums { display: flex; gap: 4px; }
.wz-num { width: 26px; height: 26px; border-radius: 8px; border: 1.5px solid var(--l); background: #fff; color: var(--mut);
          font: inherit; font-size: 13px; font-weight: 800; cursor: pointer; }
.wz-num.done { border-color: var(--acc-m); color: var(--acc-d); background: var(--acc-s); }
.wz-num.warn { border-color: var(--warn); color: var(--warn); background: var(--warn-s); }
.wz-num.current { border-color: var(--acc); background: var(--acc); color: #fff; }
.wz-num:disabled { opacity: .4; cursor: not-allowed; }
.wz-crumbs { font-size: 13px; color: var(--ink2); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 460px; }
.wz-price { font-size: 17px; font-weight: 900; color: var(--good); white-space: nowrap; }
.wz-layout { display: grid; grid-template-columns: minmax(0, 3fr) minmax(300px, 2fr); gap: 14px; align-items: start; }
.wz-main { min-width: 0; padding-bottom: 8px; }
.wz-side { position: sticky; top: 52px; background: var(--s2); border: 1px solid var(--l); border-radius: 12px; padding: 9px 11px; }
.wz-script { background: #fffbe6; border-left: 4px solid #f59e0b; border-radius: 0 9px 9px 0; padding: 7px 11px; margin-bottom: 8px;
             font-size: 14px; line-height: 1.45; }
.wz-script-h { display: flex; align-items: center; gap: 8px; margin-bottom: 3px; }
.wz-step-t { font-size: 11.5px; font-weight: 900; text-transform: uppercase; letter-spacing: .05em; color: #b45309; }
.wz-edit { margin-left: auto; border: 0; background: transparent; color: #b45309; cursor: pointer; padding: 2px; }
.wz-script textarea { margin: 6px 0; }
.wz-q { display: flex; gap: 10px; align-items: flex-start; padding: 5px 8px; border-radius: 10px; margin-bottom: 4px; border: 2px solid transparent; }
.wz-q.req { background: #fff; border-color: var(--l); }
.wz-ql { width: 128px; flex: none; font-size: 13px; font-weight: 800; padding-top: 6px; }
.wz-ql b { color: var(--bad); }
.wz-q .chips { flex: 1; }
.wz-q.need, .carpet.need { animation: wzneed 1.2s ease; border-color: var(--bad) !important; }
@keyframes wzneed { 0%, 30%, 60% { background: var(--bad-s); } 15%, 45% { background: #fff; } }
.wz-hint { font-size: 12.5px; color: var(--warn); font-weight: 700; margin-top: 4px; width: 100%; }
.wz-hint:empty { display: none; }
.carpet { margin-bottom: 10px; border: 2px solid var(--l); }
.carpet .c-what, .carpet .c-size, .carpet .c-state { display: none; }
form[data-step="what"] .carpet .c-what, form[data-step="size"] .carpet .c-size, form[data-step="state"] .carpet .c-state { display: block; }
form:not([data-step="what"]) .carpet .c-del { display: none; }
.c-unknown { align-self: flex-end; }
.wz-arrows { position: sticky; bottom: 10px; display: flex; gap: 8px; justify-content: flex-end; margin-top: 10px; z-index: 6; pointer-events: none; }
.wz-arr { pointer-events: auto; height: 38px; min-width: 38px; border-radius: 19px; border: 0; background: #fff; color: var(--ink);
          font: inherit; font-size: 18px; font-weight: 800; cursor: pointer; box-shadow: 0 4px 14px rgba(15,23,42,.18); }
.wz-next { background: var(--acc); color: #fff; padding: 0 18px; font-size: 14.5px; }
.wz-next.disabled-look { background: #9cb8a0; }
.disabled-look { opacity: .75; }
.wz-left .alert { font-weight: 500; }
.wz-left-list { display: flex; flex-wrap: wrap; gap: 4px 10px; margin-top: 4px; }
.wz-left-list a { color: var(--warn); font-weight: 700; text-decoration: underline; font-size: 13px; }
.wz-check { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 12px; }
.wz-ci { font-size: 14px; font-weight: 700; }
.wz-ci.ok { color: var(--good); } .wz-ci.no { color: var(--bad); }
@media (max-width: 980px) { .wz-layout { grid-template-columns: 1fr; } .wz-side { position: static; } .wz-q { flex-direction: column; } .wz-ql { width: auto; padding: 0; } }

/* ── сводка заказа ── */
.o-sum { background: var(--s2); border: 1px solid var(--l); border-radius: 12px; padding: 8px 11px; margin-bottom: 10px; }
.o-sum-c { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 4px; }
.o-name { font-size: 16px; font-weight: 800; color: var(--ink); }
.o-kv { gap: 2px 14px; font-size: 13.5px; }

/* ── вход ─────────────────────────────────────────────────── */
.login-wrap { min-height: 100vh; display: grid; place-items: center; background: linear-gradient(135deg, #1b5e20, #43a047); padding: 16px; }
.login-card { background: #fff; border-radius: 18px; padding: 28px 26px; width: min(94vw, 380px);
              box-shadow: 0 20px 60px rgba(0,0,0,.25); display: flex; flex-direction: column; gap: 14px; }
.login-card .brand-mark { background: var(--acc); color: #fff; width: 44px; height: 44px; font-size: 24px; border-radius: 12px; }

/* ── узкие экраны ─────────────────────────────────────────── */
@media (max-width: 980px) {
  .w, .w.sz-xs, .w.sz-s, .w.sz-m, .w.sz-l, .w-stack { grid-column: span 12 !important; }
}
@media (max-width: 760px) {
  .layout { flex-direction: column; }
  .sidebar { width: 100%; height: auto; position: static; }
  /* Владимир 14.10: значки разделов рядами целиком (до 8 — два ряда по 4, больше — по 5 в ряд);
     .layout — чтобы перебить refinement.css (он грузится позже) (раньше лента вбок, крайние резались пополам) */
  .layout .sidebar nav { display: grid; grid-template-columns: repeat(var(--nav-cols, 4), minmax(0, 1fr)); gap: 2px; padding: 4px 6px 6px; overflow: visible; }
  .layout .sidebar nav a { flex-direction: column; justify-content: center; gap: 1px; min-height: 46px; padding: 4px 0; font-size: 10px; font-weight: 600; letter-spacing: -.2px;
                   line-height: 1.1; text-align: center; white-space: nowrap; position: relative; }
  .sidebar nav a .ico { width: 19px; height: 19px; }
  .sidebar nav a .nav-t { display: none; }
  .sidebar nav a .nav-s { display: block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
  .sidebar nav a .nav-badge { position: absolute; top: 1px; right: 2px; margin: 0; padding: 0 4px; font-size: 10px; }
  .userbox { display: none; }
  .brand-out { display: inline-flex; }
  .imp { display: none; }
  .content { padding: 12px; }
  .modal-2col { grid-template-columns: 1fr; }
  .modal-side { border-left: 0; border-top: 1px solid var(--l); padding-left: 0; padding-top: 10px; }
  .grid2, .grid3 { grid-template-columns: 1fr; }
}

/* ── статусы договоров с цветом, как в OmisCRM (Владимир 30.09.2026) ─────────── */
.cst { display: inline-block; padding: 1px 8px; border-radius: 5px; font-size: 12px; font-weight: 700; white-space: nowrap;
       border: 1px solid rgba(0,0,0,.12); line-height: 1.5; }
.tbl tr.cr td, .w-tbl tr.cr td { background: var(--rowbg, var(--s2)); color: var(--rowfg, var(--ink)); }
.tbl tr.cr.lnk:hover td, .w-tbl tr.cr.lnk:hover td { background: var(--rowbg, var(--acc-s)); filter: brightness(.93); }
.tbl .od { display: inline-block; margin-left: 3px; padding: 0 5px; border-radius: 4px; background: var(--bad); color: #fff;
           font-size: 11px; font-weight: 800; }
/* список договоров: колонки OmisCRM, одна строка на договор, длинное — многоточием (полный текст в подсказке) */
.tbl-omis thead th { padding: 4px 5px; }
.tbl-omis tbody td { font-size: 12.5px; font-weight: 500; padding: 4px 5px; }
.tbl-omis tbody td.b { font-weight: 700; }
.tbl-omis tbody td.tel { font-weight: 600; }
.tbl-omis td.ell { max-width: 170px; overflow: hidden; text-overflow: ellipsis; }
.tbl-omis td.ell.ell-s { max-width: 160px; }     /* источник — вторичное, длинные сочетания Omis — в подсказке */
.tbl-omis td.ell.ell-a { max-width: 240px; }     /* адрес: 99 % целиком, выбросы — многоточием */
.tbl-omis td.cm { white-space: normal; min-width: 140px; max-width: 190px; line-height: 1.3; }
.tbl-omis td.cm > div { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.tbl-omis td.cl { max-width: 210px; white-space: normal; }      /* перенос — только для выбросов (> 26 знаков) */
.tbl-omis tbody td.mut2 { font-weight: 400; }
.tbl-omis .cst { font-size: 11.5px; padding: 0 7px; }
/* карточка договора: строка ручных статусов */
.cst-row { display: flex; flex-wrap: wrap; align-items: center; gap: 5px; margin-top: 10px; }
.cst-row .cst-l { font-size: 12px; font-weight: 700; color: var(--mut); margin-right: 3px; }
/* Выпадающая панель из кнопки (03.11, статусы договора; годится и для фильтров): не окно посередине, а прямо под кнопкой */
.dd { position: relative; display: inline-block; }
.dd-btn::after { content: " ▾"; font-weight: 700; }
.dd-btn[aria-expanded="true"]::after { content: " ▴"; }
.dd-pop { position: absolute; left: 0; top: calc(100% + 5px); z-index: 60; display: flex; flex-wrap: wrap; gap: 5px;
          width: max-content; max-width: min(560px, 86vw); padding: 8px; background: #fff; border: 1px solid var(--l);
          border-radius: 10px; box-shadow: 0 12px 32px rgba(0,0,0,.2); }
.dd-pop.hidden { display: none; }
.dd-pop .cst-b { opacity: .92; }
/* вариант «списком» (Владимир 03.11): статусы друг под другом, во всю ширину списка, как в OmisCRM */
.dd-pop.dd-list { flex-direction: column; flex-wrap: nowrap; gap: 3px; width: 250px; max-height: min(70vh, 560px); overflow-y: auto; padding: 6px; }
.dd-pop.dd-list .cst-b { display: block; width: 100%; text-align: left; white-space: normal; min-height: 30px; border-radius: 6px; }
.cst-b { font: inherit; font-size: 12.5px; font-weight: 700; min-height: 28px; padding: 2px 10px; cursor: pointer; opacity: .8; }
.cst-b:hover { opacity: 1; box-shadow: 0 0 0 2px rgba(0,0,0,.25); }
.cst-b.on { opacity: 1; cursor: default; box-shadow: 0 0 0 2px var(--ink); }
.t-sum { font-size: 13px; color: var(--ink2); } .t-sum b { color: var(--ink); }
/* сводка за период */
.rep-f { display: flex; flex-wrap: wrap; align-items: center; gap: 5px; margin-top: 8px; }
.rep-f .rep-fl { font-size: 12px; font-weight: 700; color: var(--mut); width: 70px; }
.rep-f a.chip, .rep-more summary.chip { text-decoration: none; min-height: 28px; padding: 2px 10px; font-size: 13px; }
.rep-f .cnt { color: var(--mut); font-weight: 600; font-size: 11.5px; }
.rep-f .chip.on .cnt { color: inherit; opacity: .8; }
.rep-more { display: contents; }
.rep-more summary { list-style: none; cursor: pointer; }
.rep-more summary::-webkit-details-marker { display: none; }
.rep-more[open] summary { display: none; }
.pal { gap: 4px; }
.pal .pal-c { width: 30px; min-width: 30px; min-height: 26px; padding: 0; border: 1px solid rgba(0,0,0,.18); border-radius: 6px; }
.pal .pal-c.on { box-shadow: 0 0 0 2px #fff, 0 0 0 4px var(--ink); }
.pal .pal-c::before, .pal .pal-c::after { display: none !important; }
/* итог смены курьера: сколько принял, сколько сдать наличными */
.c-money { background: #fff; border: 1.5px solid var(--acc-m); border-radius: 12px; padding: 10px 12px; margin-bottom: 10px; }
.c-money-h { font-weight: 800; font-size: 15px; margin-bottom: 4px; }
.c-money-r { display: flex; justify-content: space-between; font-size: 15px; padding: 2px 0; }
.c-money-r b { font-size: 17px; font-variant-numeric: tabular-nums; }
/* «Задачи»: отметить галочками и передать другой машине (Владимир 30.09) */
.tbl-omis .ck-c { width: 30px; padding-left: 6px; padding-right: 0; }
.ck { width: 22px; height: 22px; border-radius: 6px; border: 2px solid var(--ink2); background: #fff; cursor: pointer; padding: 0;
      display: inline-grid; place-items: center; vertical-align: middle; }
.ck.on { background: var(--acc); border-color: var(--acc); }
.ck.on::after { content: ""; width: 10px; height: 6px; border: solid #fff; border-width: 0 0 3px 3px; transform: rotate(-45deg) translate(1px, -1px); }
.tbl tr.cr.picked td { box-shadow: inset 0 2px 0 var(--acc), inset 0 -2px 0 var(--acc); }
.t-bar { position: sticky; bottom: calc(10px + env(safe-area-inset-bottom, 0px)); z-index: 20; display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
         margin-top: 10px; padding: 10px 14px; background: #1f2d27; color: #fff; border-radius: 12px; box-shadow: 0 10px 30px rgba(0,0,0,.25); }
.t-bar[hidden] { display: none; }
.t-bar > span { font-size: 14px; margin-right: 4px; }
.t-money { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: -2px 0 8px; font-size: 13px; color: var(--ink2); }
.t-money-i b { color: var(--ink); }

/* ── Новая заявка одним экраном (таблица Владимира 30.09.2026) ── */
.ik .modal-body { padding: 10px 12px 6px; }
.ik-head-sub { font-size: 12px; margin-left: 10px; }
.ik-top { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, .95fr) minmax(0, 1fr); gap: 10px; align-items: start; }
.ik-col { padding: 8px 10px; }
.ik-top > .panel + .panel { margin-top: 0; }
.ik-row { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; padding: 3px 0; border-radius: 8px; }
.ik-l { width: 134px; flex: none; font-size: 12.5px; font-weight: 700; color: var(--ink2); white-space: nowrap; }
.ik-l b { color: var(--bad); }
.ik-pair { display: flex; gap: 6px; flex: 1; min-width: 0; }
.ik-pair .inp { flex: 1; min-width: 0; }
.ik-pair .inp-phone { flex: 0 0 180px; }
.ik-row > .inp-phone { flex: 0 0 180px; }
.ik-row.need { animation: wzneed 1.2s ease; }
.ik-st.on { background: color-mix(in srgb, var(--stc) 55%, #fff); border-color: color-mix(in srgb, var(--stc) 70%, #000); color: var(--ink); }
.ik-st.on::before { background: color-mix(in srgb, var(--stc) 70%, #000); }
.ik-dd { position: relative; flex: 1; min-width: 0; }
.ik-dd .inp { width: 100%; }
.ik-dd .inp.ik-sub { border-color: var(--warn); }
.ik-dl { position: absolute; z-index: 30; left: 0; right: 0; top: calc(100% + 2px); max-height: 260px; overflow: auto; background: #fff;
         border: 1.5px solid var(--acc-m); border-radius: 9px; box-shadow: 0 10px 30px rgba(0,0,0,.14); padding: 3px; }
.ik-dl button { display: block; width: 100%; text-align: left; border: 0; background: none; font: inherit; font-size: 13px; padding: 4px 8px; border-radius: 6px; cursor: pointer; }
.ik-dl button:hover, .ik-dl button.act { background: var(--acc-s); }
#ik-addrs:empty { display: none; }
#ik-addrs { margin-bottom: 4px; }
#ik-street { width: 100%; }
.ik-client { margin-top: 6px; border-top: 1px solid var(--l); padding-top: 6px; font-size: 12.5px; }
.ik-client .sec-h { display: none; }
.ik-client > .empty, .ik-client > .alert { padding: 4px 8px; font-size: 12.5px; }
.ik-yn { border-collapse: collapse; width: 100%; }
.ik-yn td { padding: 2px 4px; vertical-align: middle; }
.ik-yl { font-size: 13px; font-weight: 700; white-space: nowrap; width: 1%; }
.ik-yh { font-size: 11.5px; white-space: normal; line-height: 1.2; }   /* длинная подсказка переносится, не обрезается на 1280 */
.ik-yn .chips { flex-wrap: nowrap; }
.ik-yn .chip { min-width: 46px; justify-content: center; white-space: nowrap; }
.ik-edge { font-size: 12.5px; color: var(--mut); font-weight: 600; }
.ik-edge.on { color: var(--warn); font-weight: 800; }
#ik-ov-row.ik-hl { background: var(--warn-s); box-shadow: 0 0 0 2px var(--warn-s); }
.ik-calc { margin-top: 6px; border-top: 1px solid var(--l); padding-top: 4px; max-height: 250px; overflow: auto; }
.ik-calc .calc { font-size: 12.5px; }
.ik-rugs { margin-top: 10px; padding: 6px 10px; }
.ik-rugs-h { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 13px; }
.ik-rugs-h .stepper button { width: 26px; min-height: 26px; }
.ik-rugs-h .stepper input { width: 40px; font-size: 13.5px; }
.ik-item { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; padding: 3px 0; border-top: 1px dashed var(--l); margin-top: 4px; }
.ik-n { font-weight: 800; width: 18px; }
.ik-area { min-width: 52px; font-size: 12.5px; }
.ik-plan { margin-top: 10px; padding: 7px 10px; }
.ik-plan.ik-off .ik-plan-h > :not(b) { opacity: .45; pointer-events: none; }
.ik-plan-h { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
#ik-cal { margin-bottom: 6px; }
.ik-grid-h { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 12.5px; margin-bottom: 6px; }
.ik-lg { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; }
.ik-lg i { width: 14px; height: 10px; border-radius: 3px; display: inline-block; }
.ik-cars { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-start; }
.ik-car { flex: 0 0 calc(50% - 5px); max-width: 100%; min-width: 0; }   /* одна машина — тот же размер, в левом верхнем углу (Владимир 03.10) */
@media (max-width: 1100px) { .ik-car { flex-basis: 100%; } }
.ik-t { border-collapse: separate; border-spacing: 2px; width: 100%; table-layout: fixed; font-size: 12px; }
.ik-t th { font-size: 10.5px; font-weight: 800; color: var(--mut); text-transform: uppercase; letter-spacing: .02em; text-align: left; padding: 2px 5px; }
.ik-t th.ik-car-h { font-size: 13px; color: var(--ink); text-transform: none; letter-spacing: 0; }
.ik-t th.ik-car-h span { font-weight: 600; color: var(--mut); font-size: 11.5px; margin-left: 6px; }
.ik-t th.ik-iv { background: var(--s2); border-radius: 6px; color: var(--ink2); }
.ik-t th.ik-iv { white-space: normal; overflow: hidden; line-height: 1.3; }   /* узкая колонка — счётчик переносится, не налезает на соседнюю (19.10) */
.ik-t th.ik-iv span { float: right; white-space: nowrap; }
.ik-t th.ik-car-h b.ik-cnt { color: var(--bad); font-size: 12.5px; margin-left: 8px; }
.ik-t th.ik-iv span.ik-full { color: var(--warn); }
.ik-t th.ik-iv span.ik-over { color: var(--bad); }
.ik-t td { padding: 0; height: 24px; }
.ik-t td.ik-d, .ik-t td.ik-s { background: var(--s2); padding: 2px 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: pointer; }
.ik-t td.ik-d { border-radius: 6px 0 0 6px; font-weight: 700; font-size: 11.5px; letter-spacing: -.01em; }
.ik-t td.ik-s { border-radius: 0 6px 6px 0; }
.ik-t td.ik-d:hover, .ik-t td.ik-s:hover { filter: brightness(.95); }
.ik-t.ik-nsa { margin-top: 6px; }
/* Владимир 16.10: назначенный договор в своей ячейке — сразу после «Назначить» */
.ik-t td.ik-own { padding: 2px 6px; border-radius: 6px; font-weight: 800; font-size: 11.5px; white-space: nowrap; overflow: hidden;
  text-overflow: ellipsis; outline: 2px solid var(--acc); outline-offset: -2px; background: var(--acc-s); }
.ik-t td.ik-own-d, .ik-t td.ik-own-s { box-shadow: inset 0 2px 0 var(--ink), inset 0 -2px 0 var(--ink); cursor: default; }
.ik-t td.ik-own-d { box-shadow: inset 2px 0 0 var(--ink), inset 0 2px 0 var(--ink), inset 0 -2px 0 var(--ink); }
.ik-t td.ik-own-s { box-shadow: inset -2px 0 0 var(--ink), inset 0 2px 0 var(--ink), inset 0 -2px 0 var(--ink); }
/* район звонящего — рамкой: заливка у строки занята цветом статуса договора (Владимир 01.10) */
.ik-t td.ik-same { box-shadow: inset 0 2px 0 #0b5d2a, inset 0 -2px 0 #0b5d2a; }
.ik-t td.ik-d.ik-same { box-shadow: inset 2px 0 0 #0b5d2a, inset 0 2px 0 #0b5d2a, inset 0 -2px 0 #0b5d2a; }
.ik-t td.ik-s.ik-same { box-shadow: inset -2px 0 0 #0b5d2a, inset 0 2px 0 #0b5d2a, inset 0 -2px 0 #0b5d2a; }
.ik-lg i.ik-same-lg { background: #fff; border: 2px solid #0b5d2a; box-sizing: border-box; }
.ik-t td.ik-done { opacity: .6; }
.ik-tag { font-size: 10px; color: var(--warn); }
.ik-free { width: 100%; height: 24px; border: 1.5px dashed var(--acc-m); background: #fff; border-radius: 6px; font: inherit; font-size: 12px;
           color: var(--acc-d); font-weight: 700; cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding: 0 5px; }
.ik-free:hover { background: var(--acc-s); border-style: solid; }
.ik-free.sel { background: var(--acc); border: 1.5px solid var(--acc-d); color: #fff; }
.ik-free.ik-urg { border-color: #e2b25c; color: var(--warn); }
.ik-free.ik-urg.sel { background: var(--warn); color: #fff; }
.ik-free.ik-ext { border-color: var(--l); color: var(--mut); font-weight: 600; }
.ik-free.ik-ext.sel { background: var(--ink2); color: #fff; }
.ik-free.ik-ro { display: block; line-height: 21px; text-align: center; cursor: default; border-color: var(--l); color: var(--mut); font-weight: 600; }
.ik-free.ik-ro:hover { background: #fff; border-style: dashed; }
.ik-t td.ik-none { background: none; font-size: 11px; color: var(--mut); text-align: center; }
.ik-t tr.ik-dh td { font-size: 10.5px; font-weight: 800; color: var(--mut); text-transform: uppercase; padding: 4px 5px 0; height: auto; }
.ik-t tr.ik-dl-r td.ik-d, .ik-t tr.ik-dl-r td.ik-s { background: var(--info-s); }
.ik-other { font-size: 12px; color: var(--mut); margin-top: 3px; }
.ik-foot { display: flex; align-items: center; gap: 10px; padding: 8px 12px; border-top: 1px solid var(--l); background: #fff;
           position: sticky; bottom: 0; border-radius: 0 0 14px 14px; }
.ik-sel { font-size: 13.5px; }
.ik-sel .warn-t { color: var(--warn); font-weight: 700; }
@media (max-width: 1100px) { .ik-top { grid-template-columns: 1fr 1fr; } .ik-top > :last-child { grid-column: 1 / -1; } }
@media (max-width: 760px) { .ik-top { grid-template-columns: 1fr; } .ik-l { width: 90px; } }

/* ── показатели списком (эталон) и касса в журнале оплат ── */
.w-kpi { display: grid; gap: 2px; }
.w-kpi-r { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: baseline; gap: 10px;
           background: var(--s2); border-radius: 7px; padding: 4px 8px; }
.w-kpi-r .k { font-size: 12.5px; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.w-kpi-r .k i { font-style: normal; color: var(--mut); font-size: 11.5px; }
.w-kpi-r .v { font-size: 14px; font-weight: 800; white-space: nowrap; text-align: right; }
.pay-cash-f { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--l); }
.pay-range { display: flex; gap: 14px; align-items: flex-start; flex-wrap: wrap; margin-bottom: 12px; }
.due-pm { display: inline-flex; gap: 2px; } .due-pm .btn { min-width: 26px; padding: 1px 7px; font-weight: 800; }
.st-mv { width: 22px; height: 22px; padding: 0; border: 1px solid var(--l); background: #fff; border-radius: 6px; cursor: pointer;
         font: inherit; font-size: 12px; font-weight: 800; color: var(--ink2); line-height: 1; }
.st-mv:hover:not(:disabled) { background: var(--acc-s); border-color: var(--acc-m); }
.st-mv:disabled { opacity: .3; cursor: default; }
.st-mv + .st-mv { margin-left: 2px; }
.pay-left { grid-column: span 4; display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.w-tbl td.pay-m { max-width: 170px; overflow: hidden; text-overflow: ellipsis; }
.w-tbl td.pay-cl { max-width: 190px; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 980px) { .pay-left { grid-column: span 12; } }
.pay-right { grid-column: span 8; min-width: 0; }
@media (max-width: 1500px) {
  .pay-left { grid-column: span 12; flex-direction: row; align-items: flex-start; }
  .pay-left > .w { flex: 1 1 0; min-width: 0; }
  .pay-right { grid-column: span 12; }
}
@media (max-width: 980px) { .pay-left { flex-direction: column; } }

/* ── Инструкции для ролей (Владимир 01.10): слева вкладки, справа текст ── */
.help-grid { display: grid; grid-template-columns: minmax(200px, 270px) minmax(0, 960px); gap: 12px; align-items: start; }
.help-grid > .w { grid-column: auto; }
.help-tabs { display: flex; flex-direction: column; gap: 4px; }
.help-tab { text-align: left; min-height: 32px; padding: 5px 10px; border: 1px solid var(--l); border-radius: var(--r);
  background: var(--s); font: inherit; font-size: 14px; font-weight: 600; color: var(--ink); cursor: pointer; }
.help-tab:hover { border-color: var(--acc); color: var(--acc); }
.help-tab.on { background: var(--acc); border-color: var(--acc); color: #fff; }
.help-new { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.help-new .inp { flex: 1 1 100%; min-width: 0; }
.help-text { white-space: pre-wrap; font-size: 15px; line-height: 1.55; max-width: 860px; overflow-wrap: anywhere; }
.help-edit { display: flex; flex-direction: column; gap: 8px; max-width: 860px; }
.help-edit textarea.inp { min-height: 300px; font-size: 14.5px; }
@media (max-width: 760px) { .help-grid { grid-template-columns: minmax(0, 1fr); } }
/* допы на один ковёр в строке заявки — справа, мелкие чипы (Владимир 01.10) */
.ik-item .ik-ie { margin-left: auto; gap: 3px; flex-wrap: nowrap; }
.ik-item .ik-ie .chip { min-height: 26px; padding: 1px 6px; font-size: 12px; }
.ik-item input.ik-sz { max-width: 64px !important; }
.ik-item .ik-ie .chip.on { background: var(--warn-s); border-color: var(--warn); color: var(--warn); }
.ik-item .ik-ie .chip.on::before { display: none; }
.ik-yh .ik-v3 { display: inline-flex; vertical-align: middle; margin-right: 4px; }
.ik-yh .ik-v3 .chip { min-width: 0; min-height: 26px; padding: 1px 8px; font-size: 12.5px; }
/* курьер: фото при заборе и условия на месте (Владимир 03.10) */
.dropzone.dz-ok { border-color: var(--good); background: var(--good-s); }
.c-thumbs { display: flex; flex-wrap: wrap; gap: 8px; }
.c-th { position: relative; display: inline-flex; flex-direction: column; align-items: center; }
.c-th img { width: 72px; height: 72px; object-fit: cover; border-radius: 8px; }
.c-th-l { font-size: 11.5px; color: var(--mut); }
.c-th-x { position: absolute; top: -6px; right: -6px; width: 26px; height: 26px; border-radius: 50%; border: 1px solid var(--l);
  background: var(--s); font-size: 16px; line-height: 1; cursor: pointer; }
.c-cond { display: flex; flex-direction: column; gap: 4px; }
.c-cond > span { font-size: 12.5px; font-weight: 700; color: var(--ink2); margin-top: 4px; }
.c-cond .chips { flex-wrap: nowrap; overflow-x: auto; }
#c-pick-btn:disabled { opacity: .45; }
/* замер: фото ковра от курьера слева от ковра (Владимир 03.10) */
.m-item.m-has-ph { display: grid; grid-template-columns: 120px minmax(0, 1fr); column-gap: 12px; }
.m-item.m-has-ph > :not(.m-ph) { grid-column: 2; }
.m-item .m-ph { grid-column: 1; grid-row: 1 / span 20; align-self: start; }
.m-item .m-ph img { width: 120px; height: 120px; object-fit: cover; border-radius: 10px; display: block; }
.m-ph-s { width: 56px; height: 56px; object-fit: cover; border-radius: 8px; }
.m-auto { color: var(--good); font-weight: 700; display: inline-flex; align-items: center; gap: 8px; margin-right: 8px; }
.ik-yh .ik-v3 .chip.on::before { display: none; }   /* без точки — кнопки не прыгают */
.ik-ovl { cursor: pointer; text-decoration: underline dotted; }
.m-head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 8px; }
.m-sum { font-weight: 700; }
.ik-yh-f { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.ik-yh .ik-v3 { margin-right: 0; flex-wrap: nowrap; }
@media (max-width: 1400px) {     /* ноутбуки операторов: «нет / да» уже, чтобы подсказки и «сами 300 ₽» не обрезались */
  .ik-yn .chip { min-width: 38px; padding-left: 7px; padding-right: 7px; }
  .ik-yn td { padding: 2px 3px; }
}
/* Финансы (владелец 04.10): виджеты по два в ряд */
.fin-row .w { grid-column: span 6; }
@media (max-width: 1100px) { .fin-row .w { grid-column: span 12; } }
.fin-rev-top { display: flex; align-items: baseline; gap: 10px; margin-bottom: 6px; }
.fin-big { font-size: 24px; font-weight: 800; }
.fin-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.fin-chip { background: var(--s2); border: 1px solid var(--l); border-radius: var(--r-sm); padding: 3px 9px; font-size: 13px; }
.fin-mv-bar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 6px; }
.fin-flt .chip { min-height: 26px; padding: 1px 8px; font-size: 12.5px; }
.fin-acc { display: inline-flex; gap: 4px; }
/* курьер: мои деньги */
.c-money.lnk { cursor: pointer; }
.c-money-hand { border-top: 1px dashed var(--l); padding-top: 4px; margin-top: 2px; }
.c-money-go { margin-top: 6px; color: var(--acc); font-weight: 700; font-size: 14px; display: flex; align-items: center; gap: 6px; }
.c-hand { display: flex; justify-content: space-between; align-items: baseline; font-size: 18px; margin-bottom: 8px; }
.c-hand b { font-size: 28px; }
.c-photo-btn.dz-ok { border-color: var(--good); background: var(--good-s); color: var(--good); }
.c-ops { display: flex; flex-direction: column; }
.c-op { display: grid; grid-template-columns: auto 1fr auto; gap: 8px; align-items: baseline; padding: 7px 2px; border-bottom: 1px solid var(--l); font-size: 15px; }
.c-op-t { color: var(--mut); font-size: 13px; }
.c-op-k i { color: var(--mut); font-style: normal; font-size: 13px; }
.c-money-btns { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 10px; }
.c-money-btns .btn { min-height: 48px; font-size: 15px; }
.c-money-r.lnk { cursor: pointer; }
.fin-jr tr.jr-day td { background: var(--acc-s, #e3f1e6); border-top: 4px solid #fff; }
.fin-per-bar { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; margin-bottom: 8px; }
.fin-per-bar > .chip { min-height: 26px; padding: 1px 9px; font-size: 12.5px; }
.fin-cal { display: flex; gap: 10px; flex-wrap: wrap; width: 100%; margin-top: 4px; }
.c-shift { display: flex; flex-direction: column; gap: 4px; margin: 4px 0 8px; font-size: 15px; }
.c-shift > div { display: flex; justify-content: space-between; }
.c-shift-t { border-top: 1px dashed var(--l); padding-top: 4px; font-size: 17px; }
.c-money-btns .btn { min-width: 0; white-space: normal; line-height: 1.15; padding: 4px 8px; justify-content: center; }
.fin-pconf { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; padding: 6px 0; border-bottom: 1px dashed var(--l); }
/* календарь «День / Период» в виджете (как mini_calendar ERP клининга) */
.rcal { flex-basis: 100%; max-width: 280px; background: var(--s); border: 1px solid var(--l); border-radius: var(--r); padding: 8px; margin-top: 4px; }
.rc-modes { display: flex; gap: 3px; margin-bottom: 6px; }
.rc-modes button { flex: 1; border: 1.5px solid var(--l); background: var(--s); border-radius: 6px; padding: 3px 0; font: inherit; font-size: 12.5px; font-weight: 700; cursor: pointer; }
.rc-modes button.on { background: var(--acc); border-color: var(--acc); color: #fff; }
.rc-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 4px; font-size: 13px; }
.rc-head button { border: 0; background: var(--s2); border-radius: 6px; width: 28px; height: 26px; cursor: pointer; font-size: 15px; }
.rc-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.rc-grid .rc-w { font-size: 10.5px; color: var(--mut); text-align: center; text-transform: uppercase; }
.rc-grid button { border: 0; background: var(--s2); border-radius: 6px; height: 30px; font: inherit; font-size: 13px; font-weight: 600; cursor: pointer; }
.rc-grid button.we { color: var(--bad); }
.rc-grid button.in { background: var(--acc-s); }
.rc-grid button.sel { background: var(--acc); color: #fff; }
.rc-hint { font-size: 12px; color: var(--mut); margin-top: 4px; }
.c-act { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; margin: 8px 0; }
.c-act .btn { min-width: 0; white-space: normal; line-height: 1.15; padding: 6px 4px; font-size: 13.5px; flex-direction: column; gap: 3px; min-height: 58px; }
.c-act .btn.on { border-color: var(--acc); background: var(--acc-s); color: var(--acc-d); }

/* ── Курьер по видео владельца 3 (04.10): мелкие фильтры, компактные строки, плоские кнопки, нижнее меню ── */
.c-page { padding-bottom: 70px; }
.c-seg { display: flex; gap: 4px; margin-bottom: 8px; overflow-x: auto; }
.c-seg a { flex: none; padding: 4px 11px; border-radius: 14px; font-size: 13px; font-weight: 700; color: var(--ink2);
  background: var(--s2); cursor: pointer; white-space: nowrap; }
.c-seg a.on { background: var(--acc); color: #fff; }
.c-sum2 { background: #fff; border: 1px solid var(--l); border-radius: 10px; padding: 7px 10px; margin-bottom: 8px; }
.c-sum2-h { display: flex; justify-content: space-between; font-size: 13px; font-weight: 700; margin-bottom: 4px; }
.c-sum2-g { display: grid; grid-template-columns: repeat(4, 1fr); gap: 4px; }
.c-sum2-g > * { display: flex; flex-direction: column; min-width: 0; }
.c-sum2-g span { font-size: 11px; color: var(--mut); white-space: nowrap; }
.c-sum2-g b { font-size: 14px; white-space: nowrap; font-variant-numeric: tabular-nums; }
.c-sum2-g a { cursor: pointer; color: inherit; }
.c-sum2-g a b { color: var(--acc); }
.c-sum2-n { font-size: 12px; margin-top: 3px; }
.c-sum2-b { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin-top: 6px; }
.c-sum2-b .btn { justify-content: center; min-height: 32px; }
.c-rows { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--l); border-radius: 10px; overflow: hidden; }
.c-row { display: block; padding: 7px 10px; border-bottom: 1px solid var(--l); color: inherit; text-decoration: none; cursor: pointer; }
.c-row:last-child { border-bottom: 0; }
.c-row:active, .c-row:hover { background: var(--s2); }
.c-row-1 { display: flex; align-items: center; gap: 6px; font-size: 13px; }
.c-row-1 .grow { flex: 1; }
.c-row-t { font-size: 14px; }
.c-row-ok { color: var(--good); font-weight: 700; display: inline-flex; align-items: center; gap: 3px; }
.c-row-a { font-size: 14.5px; font-weight: 700; line-height: 1.25; margin-top: 2px; }
.c-row-m { font-size: 12.5px; color: var(--ink2); margin-top: 1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.c-k { font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; border-radius: 4px; padding: 1px 6px; }
.c-k.p { background: var(--acc-s); color: var(--acc-d); }          /* вывоз — зелёный */
.c-k.d { background: #fff59d; color: #5c4b00; }                  /* доставка — жёлтая, как в Omis (Владимир 04.10: «не голубым») */
.c-dot { width: 9px; height: 9px; border-radius: 50%; display: inline-block; }
.c-bad { color: var(--bad); font-weight: 700; }
.c-nt { color: #7c4a03; }
.c-empty { padding: 22px; text-align: center; color: var(--mut); }
.c-nav { position: fixed; left: 0; right: 0; bottom: 0; z-index: 40; display: grid; grid-template-columns: repeat(4, 1fr);
  background: #fff; border-top: 1px solid var(--l); padding: 5px 0 calc(6px + env(safe-area-inset-bottom)); }
.c-nav a { display: flex; flex-direction: column; align-items: center; gap: 1px; font-size: 11.5px; font-weight: 700; color: var(--mut); text-decoration: none; }
.c-nav a.on { color: var(--acc); }
/* Владимир 16.10 (видео): «Деньги» открываются окном — нижняя панель курьера остаётся видна и нажимается поверх окна */
body:has(.c-nav) .c-nav { z-index: 1001; }
body:has(.c-nav) .modal-overlay .modal-body { padding-bottom: 76px; }      /* низ окна не прячется под панелью */
@media (min-width: 761px) { .c-nav { left: 196px; max-width: 680px; margin-left: 20px; border: 1px solid var(--l); border-bottom: 0; border-radius: 10px 10px 0 0; } }
/* карточка задачи — плоские кнопки */
.c-modal .c-go { min-height: 42px; font-size: 15px; margin-top: 10px; }
.c-off { margin-bottom: 8px; }
.c-off > summary { list-style: none; display: inline-flex; }
.c-off > summary::-webkit-details-marker { display: none; }
.c-off[open] > summary { background: var(--s2); }
.c-off form { margin-top: 6px; }
.c-ph-row { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.c-phb { display: flex; align-items: center; justify-content: center; gap: 5px; min-height: 38px; padding: 4px 8px; font-size: 13.5px; font-weight: 700; border-radius: 8px; }
.c-phb.ok { border-color: var(--good); background: var(--good-s); color: var(--good); }
.c-phb input[type=file] { display: none; }
.c-slots { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.c-slot { cursor: pointer; }
.c-slot-b { width: 64px; height: 64px; border: 1.5px dashed var(--acc-m); border-radius: 8px; display: flex; align-items: center; justify-content: center; color: var(--acc); background: var(--acc-s); }
.c-th img { width: 64px; height: 64px; }
.c-give { display: flex; flex-direction: column; gap: 4px; margin-top: 12px; font-size: 16px; }
.c-give b { font-size: 20px; }
/* осмотр машины и смена */
.c-box { background: #fff; border: 1px solid var(--l); border-radius: 10px; padding: 9px 11px; margin-bottom: 8px; }
.c-chk { display: flex; align-items: center; gap: 10px; border: 1.5px dashed var(--acc-m); border-radius: 10px; padding: 8px 10px; margin-top: 6px; cursor: pointer; text-align: left; min-height: 0; }
.c-chk.ok { border-style: solid; background: var(--good-s); border-color: #b9dcbc; }
.c-chk input[type=file] { display: none; }
.c-chk-ic { width: 48px; height: 48px; flex: none; border-radius: 8px; background: var(--acc-s); color: var(--acc); display: flex; align-items: center; justify-content: center; }
.c-chk-th { width: 48px; height: 48px; flex: none; border-radius: 8px; object-fit: cover; }
.c-chk-t { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.c-chk-t b { font-size: 15px; }
.c-chk-t small { font-size: 12px; color: var(--mut); }
.c-chk-ok { color: var(--good); }
.c-km { display: flex; align-items: center; gap: 6px; margin: 6px 0 2px 58px; }
.c-km label { font-size: 12.5px; color: var(--ink2); white-space: nowrap; }
.c-km .inp { width: 120px; }
.c-page > .c-go, .c-wrap .c-go { min-height: 44px; font-size: 15px; }
.c-car-h { display: flex; align-items: baseline; gap: 8px; font-size: 16px; margin-bottom: 4px; }
.c-car-h .grow { flex: 1; }
.c-kv { display: flex; flex-direction: column; }
.c-kv > div { display: flex; justify-content: space-between; gap: 10px; padding: 4px 0; border-bottom: 1px solid var(--l); font-size: 14px; }
.c-kv > div:last-child { border-bottom: 0; }
.c-kv span { color: var(--ink2); }
.c-kv b.warn { color: var(--warn); } .c-kv b.bad { color: var(--bad); }
.c-kv-t b { font-size: 16px; }
.c-carf { display: grid; grid-template-columns: auto 1fr; gap: 6px 8px; align-items: center; margin-top: 8px; font-size: 13px; }
.c-carf .c-cals { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.c-carf .btn { grid-column: 1 / -1; justify-content: center; }
@media (max-width: 560px) { .c-carf .c-cals { grid-template-columns: 1fr; } }
.c-ins { display: grid; grid-template-columns: 70px 1fr auto; gap: 8px; align-items: center; padding: 5px 0; border-bottom: 1px solid var(--l); font-size: 13.5px; }
.c-ins-ph { display: flex; gap: 4px; }
.c-ins-ph img { width: 34px; height: 34px; object-fit: cover; border-radius: 5px; }
.c-ins-no { width: 34px; text-align: center; color: var(--bad); }
.c-me-l { margin-top: 6px; font-size: 13px; display: flex; flex-direction: column; gap: 3px; }
.c-row-a { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.c-km { margin-left: 0; }
.c-km .inp { flex: 1; width: auto; min-width: 0; }
.c-items { display: flex; flex-direction: column; gap: 2px; font-size: 14px; background: var(--s2); border-radius: 8px; padding: 6px 9px; }
.c-items b { white-space: nowrap; }
.c-give { flex-direction: row; align-items: center; flex-wrap: wrap; gap: 8px; }
.c-give > span { font-size: 15px; }
.c-give .btn { flex: 1 1 100%; }
.c-days { display: flex; flex-direction: column; font-size: 13px; }
.c-days > div { display: grid; grid-template-columns: 68px 42px 1fr 1fr 1fr; gap: 6px; padding: 4px 0; border-bottom: 1px solid var(--l); white-space: nowrap; }
.c-days > div > * { overflow: hidden; text-overflow: ellipsis; }
.c-days-h { font-size: 11px; color: var(--mut); font-weight: 700; }
.c-th > a { display: block; line-height: 0; }
/* ── курьер, видео 4 (04.10): фото по номерам ковров, шапка задачи, цвет строк ── */
.c-row.p { background: #eef7ef; }
.c-row.d { background: #e9f3f8; }
.c-row.p:hover, .c-row.p:active { background: #e1f0e3; }
.c-row.d:hover, .c-row.d:active { background: #dcecf4; }
.c-row.done { opacity: .8; }
.c-clamp { cursor: pointer; font-size: 13px; }
.c-clamp > span { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.c-clamp.open > span { display: block; }
.c-who { margin-top: 8px; font-size: 16px; }
.c-act2 { display: grid; grid-template-columns: 1fr auto; gap: 6px; margin: 6px 0; }
.c-act2 .btn { justify-content: center; min-height: 38px; }
.c-offf { margin-bottom: 8px; }
.c-cond2 { font-size: 13.5px; color: var(--ink2); margin: 2px 0 4px; }
.c-cnt-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.c-prow { display: flex; align-items: center; gap: 8px; padding: 5px 0; border-top: 1px solid var(--l); flex-wrap: wrap; }
.c-prow .c-phb { flex: none; width: 168px; justify-content: flex-start; border: 1.5px dashed var(--acc-m); background: var(--acc-s); color: var(--acc-d); }
.c-prow .c-phb.ok { border-style: solid; border-color: var(--good); background: var(--good-s); color: var(--good); }
.c-prow .c-phb.busy { opacity: .5; }
.c-pth { display: flex; flex-wrap: wrap; gap: 6px; }
.c-pth .c-th img { width: 46px; height: 46px; }
.c-pth .c-th-x { width: 22px; height: 22px; top: -5px; right: -5px; font-size: 13px; }
.c-dl { display: flex; flex-direction: column; background: var(--s2); border-radius: 8px; padding: 4px 9px; margin-top: 8px; font-size: 14px; }
.c-dl-r { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; padding: 4px 0; border-bottom: 1px solid var(--l); }
.c-dl-r:last-child { border-bottom: 0; }
.c-dl-r > div:first-child { flex: 1; min-width: 0; }
.c-dl-r .c-pth { flex-basis: 100%; }
.c-dl-r .c-pth img { width: 72px; height: 72px; }
/* курьер без связи (видео 4): полоска состояния, задачи и фото «ждут связи» */
.kl-net { position: fixed; top: 0; left: 50%; transform: translateX(-50%); z-index: 90; background: var(--info); color: #fff;
  font-size: 12.5px; font-weight: 700; padding: 3px 12px; border-radius: 0 0 10px 10px; white-space: nowrap; }
.kl-net.off { background: #8a5a00; }
.c-row.queued { outline: 2px dashed var(--warn); outline-offset: -2px; }

.c-thq img { outline: 2px dashed var(--warn); outline-offset: -2px; }
.c-row, .c-row:hover { text-decoration: none; }
.c-row-q { font-size: 11.5px; font-weight: 800; color: var(--warn); margin-top: 2px; }
/* задачи курьера таблицей (Владимир 05.10) */
.c-tbl td:first-child { white-space: nowrap; }
.c-tbl .tel a { color: inherit; text-decoration: none; }
.c-tr.queued td { outline: none; box-shadow: inset 0 2px 0 var(--warn), inset 0 -2px 0 var(--warn); }
.c-tbl td.ad { min-width: 190px; }
/* выбор машины в начале смены (Владимир 05.10) */
.c-cars { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; }
@media (max-width: 560px) { .c-cars { grid-template-columns: repeat(2, minmax(0, 1fr)); } }   /* Владимир 14.10: «Ларгус 4» уезжал за экран — два ряда */
.c-car-b { flex-direction: column; gap: 0; min-height: 52px; justify-content: center; padding: 4px; }
.c-car-b b { font-size: 18px; } .c-car-b small { font-size: 11px; color: var(--mut); font-weight: 600; }
.c-car-b.on { border-color: var(--acc); background: var(--acc-s); color: var(--acc-d); box-shadow: inset 0 0 0 1px var(--acc); }
.c-dim { opacity: .45; pointer-events: none; }
.c-carf .c-cals3 { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 760px) { .c-carf .c-cals3 { grid-template-columns: 1fr; } }
/* доставка: статус кнопкой (Владимир 05.10) */
.dl-mode { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin: 4px 0 8px; }
.dl-mode .cst-b { font-size: 13px; padding: 5px 12px; opacity: .55; }
.dl-mode .cst-b.on { opacity: 1; box-shadow: 0 0 0 2px var(--ink); }
/* инструкции: новое подсвечено, вкладки кнопками в заявке (Даша 06.10) */
.help-tab.new { border-color: var(--warn); background: var(--warn-s); }
.help-new-m { font-style: normal; font-size: 10.5px; font-weight: 800; color: #fff; background: #e8590c; border-radius: 8px; padding: 0 6px; margin-left: 4px; }
.nav-badge.nav-new { background: #e8590c; }
.nav-s { display: none; }
.ik-help { display: inline-flex; flex-wrap: wrap; gap: 4px; align-items: center; }
.ik-help-b { max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ik-help-b.new { border-color: #e8590c; background: #fff0e6; color: #b3410a; box-shadow: inset 0 0 0 1px #e8590c; }
.help-tab-r { display: flex; gap: 4px; align-items: stretch; }
.help-tab-r .help-tab { flex: 1; min-width: 0; }
.help-mv { display: flex; gap: 2px; }
.help-mv .btn { min-width: 26px; padding: 0 6px; justify-content: center; }
/* расходы бизнеса — как приложение Владимира (06.10) */
.biz-month { display: flex; align-items: center; justify-content: center; gap: 12px; margin-bottom: 10px; font-size: 16px; text-transform: capitalize; }
.biz-wrap { display: grid; grid-template-columns: minmax(0, 1fr) 280px; gap: 14px; align-items: start; }
.biz-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); gap: 8px; min-width: 0; }
.biz-tile { min-width: 0; }
.biz-tile { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 10px 6px; background: #fff; border: 1px solid var(--l);
  border-radius: 12px; cursor: pointer; font: inherit; }
.biz-tile:hover { border-color: var(--acc); }
.biz-t-n { font-size: 13px; font-weight: 700; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.biz-ic { width: 52px; height: 52px; border-radius: 50%; display: flex; align-items: center; justify-content: center; }
.biz-ic-s { width: 30px; height: 30px; flex: none; }
.biz-t-s { font-size: 14px; font-weight: 800; } .biz-t-s.z { color: var(--mut); font-weight: 600; }
.biz-t-a { font-size: 10.5px; color: var(--info); }
.biz-center { display: flex; flex-direction: column; gap: 2px; padding: 16px; background: #fff; border: 2px solid var(--l); border-radius: 16px;
  cursor: pointer; font: inherit; text-align: left; position: sticky; top: 10px; }
.biz-c-l { font-size: 12px; color: var(--mut); font-weight: 700; margin-top: 6px; } .biz-c-l i { font-style: normal; color: var(--acc); }
.biz-c-e { font-size: 24px; color: #d6336c; } .biz-c-i { font-size: 20px; color: var(--good); } .biz-c-p { font-size: 26px; } .biz-c-p.neg { color: var(--bad); }
.biz-c-r { font-size: 11.5px; color: var(--mut); margin-top: 8px; }
.biz-add { display: flex; flex-direction: column; gap: 6px; }
.biz-amt { font-size: 20px; font-weight: 800; }
.biz-day { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; } .biz-day .cal { flex-basis: 100%; }
.biz-ops { display: flex; flex-direction: column; }
.biz-op { display: grid; grid-template-columns: 50px 1fr auto auto; gap: 8px; align-items: center; padding: 4px 0; border-bottom: 1px solid var(--l); font-size: 14px; }
.biz-op-c { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ink2); }
.biz-op.lnk { cursor: pointer; }
.biz-op.lnk:hover { background: var(--acc-s); }
.biz-car { border-bottom: 1px solid var(--l); }
.biz-car summary { display: grid; grid-template-columns: minmax(0,1fr) auto auto; gap: 10px; align-items: baseline; padding: 6px 2px; cursor: pointer; font-size: 14px; }
.biz-car summary .r { text-align: right; min-width: 80px; }
.biz-car .w-tbl { margin: 0 0 6px; }
.biz-cat-r { display: flex; align-items: center; gap: 4px; margin-bottom: 5px; } .biz-cat-r .inp { flex: 1; min-width: 0; }
.biz-cat-r.off { opacity: .5; }
@media (max-width: 760px) { .biz-wrap { grid-template-columns: 1fr; } .biz-center { order: -1; position: static; } .biz-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; } .biz-ic { width: 44px; height: 44px; } .biz-t-n { font-size: 12px; } .biz-wrap { min-width: 0; } }
/* Сборка машины (этап 2): ковёр не положен — красная кнопка, положен — зелёная */
.cargo { margin-top: 8px; padding: 8px 10px; border-radius: 8px; background: var(--bad-s); color: var(--bad); border: 1px solid #f1c1c1; }
.cargo.ok { background: var(--good-s); color: var(--good); border-color: #bfe6cc; }
.cargo .mut { color: inherit; opacity: .8; }
.cargo-h { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 6px; }
.cargo-row { display: flex; flex-wrap: wrap; gap: 6px; }
.cargo-b { min-height: 32px; padding: 4px 12px; border-radius: 8px; border: 1px solid #efc4c4; background: var(--bad-s); color: var(--bad);
  font: inherit; font-weight: 600; cursor: pointer; white-space: nowrap; }
.cargo-b.on { background: var(--good); border-color: var(--good); color: #fff; }
.cargo-n { display: inline-block; padding: 1px 7px; border-radius: 6px; background: var(--bad-s); color: var(--bad); font-weight: 600; }
.cargo-n.ok { background: var(--good-s); color: var(--good); }
/* Смена (этап 2): крупные кнопки «Пришёл / Ушёл» — сразу камера */
.sh-wrap { max-width: 640px; }
.sh-now .sh-st { font-size: 15px; margin-bottom: 8px; } .sh-st.ok { color: var(--good); } .sh-st.done { color: var(--ink-2, #555); }
.sh-btn { display: flex; align-items: center; gap: 12px; width: 100%; min-height: 64px; padding: 10px 14px; border-radius: 12px; cursor: pointer;
  border: 1.5px solid var(--good); background: var(--good); color: #fff; font: inherit; text-align: left; }
.sh-btn.sh-out { background: #fff; color: var(--bad); border-color: var(--bad); }
.sh-btn.busy, .sh-go.busy { opacity: .6; pointer-events: none; }
.sh-ic { width: 40px; height: 40px; flex: none; border-radius: 10px; background: rgba(255,255,255,.18); display: flex; align-items: center; justify-content: center; }
.sh-out .sh-ic { background: var(--bad-s); }
.sh-t { display: flex; flex-direction: column; min-width: 0; } .sh-t b { font-size: 17px; } .sh-t small { opacity: .85; font-size: 12.5px; }
.sh-confirm { margin-top: 8px; padding: 10px 12px; border-radius: 10px; background: var(--bad-s); border: 1px solid #f1c1c1; }
.sh-q { font-weight: 600; color: var(--bad); margin-bottom: 8px; }
.sh-go { cursor: pointer; }
.sh-sum { display: flex; flex-wrap: wrap; gap: 6px 16px; margin: 4px 0 8px; } .sh-sum b { font-size: 16px; margin-left: 4px; }
.sh-late { color: var(--warn); font-weight: 600; }
.sh-door { display: flex; align-items: center; gap: 10px; padding: 7px 10px; border-bottom: 1px solid var(--l); background: #fff; }
.sh-door:first-child { border-radius: 10px 10px 0 0; } .sh-door:last-child { border-radius: 0 0 10px 10px; border-bottom: 0; }
.sh-door.ok { background: var(--good-s); }
.sh-door .sh-who { flex: 1; min-width: 0; display: flex; flex-direction: column; } .sh-door .sh-who b { font-size: 15px; }
.sh-door .sh-who .mut { font-size: 12.5px; }
.sh-door > .sh-btn, .sh-door > div > .sh-btn { width: auto; min-height: 44px; padding: 6px 12px; flex: none; }
.sh-door .sh-btn small { display: none; } .sh-door .sh-btn .sh-ic { width: 28px; height: 28px; } .sh-door .sh-btn b { font-size: 15px; }
.sh-door .sh-confirm { position: absolute; top: calc(100% - 4px); right: 10px; left: 10px; z-index: 5; box-shadow: 0 6px 18px rgba(0,0,0,.15); }
.sh-door { position: relative; }
.sh-list { border: 1px solid var(--l); border-radius: 10px; }
.sh-cell { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.sh-th { width: 32px; height: 32px; border-radius: 6px; object-fit: cover; display: block; }
/* Смены: «Сегодня на работе» (Владимир 04.11) — с телефона первым экраном, кнопки внизу */
.sh-today { margin-bottom: 10px; max-width: 640px; }
.sh-today .w-h { gap: 10px; }
.sh-cnt { font-size: 14px; padding: 1px 9px; border-radius: 7px; } .sh-cnt b { font-size: 18px; font-weight: 800; }
.sh-cnt.ok { background: var(--good-s); color: var(--good); } .sh-cnt.bad { background: var(--bad-s); color: var(--bad); }
.sh-no { color: var(--bad); font-weight: 600; }
.sh-cour { display: flex; flex-wrap: wrap; gap: 4px 14px; margin-top: 8px; font-size: 12.5px; }
.sh-acts { display: contents; } .sh-acts-m { display: none; }
@media (max-width: 760px) {
  .sh-hide-m, .sh-acts { display: none; }
  .sh-acts-m { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 12px; }
  .sh-today { max-width: none; } .sh-today .w-h .w-sub { display: none; } .sh-today .w-tbl td { font-size: 14px; padding-top: 6px; padding-bottom: 6px; }
}
@media (max-width: 760px) { .w .w-tbl.keep-tbl th, .w .w-tbl.keep-tbl td { padding-left: 3px; padding-right: 3px; font-size: 12px; } .w .w-tbl.keep-tbl th { letter-spacing: 0; } .keep-tbl .cst { white-space: normal; } }

/* ── Табель (s2.t8, макет 16.10): как Google-таблица Владимира ── */
.sal-bar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.sal-m { font-size: 15px; min-width: 120px; text-align: center; }
/* лист прокручивается внутри: шапка с именами и итоги остаются на виду (31 день + много людей) */
.sal-wrap { overflow: auto; max-width: 100%; max-height: calc(100vh - 150px); border: 1px solid var(--l); border-radius: 10px; background: #fff; }
.sal-t tfoot tr.sal-tot td { position: sticky; bottom: 0; z-index: 1; box-shadow: 0 -1px 0 var(--l); }
.sal-t tfoot tr.sal-tot .sal-dh { z-index: 2; }
.sal-t { border-collapse: collapse; font-size: 13px; min-width: 100%; }
.sal-t th, .sal-t td { border: 1px solid var(--l); padding: 0; height: 26px; }
.sal-t thead th { background: #e3f0dc; font-size: 12.5px; font-weight: 800; color: var(--ink); padding: 3px 6px; min-width: 76px;
                  text-align: center; line-height: 1.15; position: sticky; top: 0; z-index: 1; }
.sal-t thead th span { display: block; font-size: 10.5px; font-weight: 600; color: var(--mut); }
.sal-t .sal-dh { padding: 2px 8px; white-space: nowrap; background: #fff; font-weight: 600; position: sticky; left: 0; z-index: 1; min-width: 70px; }
.sal-t thead .sal-dh { background: #e3f0dc; z-index: 2; }
.sal-t .sal-dh span { color: var(--mut); font-weight: 500; margin-left: 4px; }
.sal-t td.sal-date { cursor: pointer; }
.sal-t td.sal-date:hover { color: var(--acc-d); text-decoration: underline; }
.sal-c { width: 100%; height: 25px; border: 0; background: transparent; font: inherit; font-variant-numeric: tabular-nums; text-align: right;
         padding: 0 6px; color: var(--ink); }
.sal-c:focus { outline: 2px solid var(--acc); outline-offset: -2px; background: #fff; }
.sal-c.sal-dirty { color: var(--warn); }
.sal-t tr.sal-bonus td, .sal-t tr.sal-bonus .sal-dh { background: #f6d1d4; }
.sal-t tr.sal-we td, .sal-t tr.sal-we .sal-dh { background: #f6b26b; }
.sal-t tr.sal-sel td, .sal-t tr.sal-sel .sal-dh { background: #dcebe0; }
.sal-t tr.sal-sel.sal-we td, .sal-t tr.sal-sel.sal-we .sal-dh { background: #e9c99a; }
.sal-t tr.sal-sel .sal-dh { box-shadow: inset 3px 0 0 var(--acc-d); }
.sal-t tr.sal-today .sal-dh { font-weight: 800; }
.sal-t tfoot td { padding: 2px 6px; text-align: right; font-weight: 800; font-variant-numeric: tabular-nums; background: #eef5ea; }
.sal-t tfoot .sal-dh { text-align: left; background: #eef5ea; }
.sal-t tr.sal-wkr td { font-weight: 700; color: var(--acc-d); background: #fff; }
.sal-t tr.sal-wkr .sal-dh, .sal-t tr.sal-sent .sal-dh { background: #fff; font-weight: 600; color: var(--mut); }
.sal-t tr.sal-sent td { background: #fff; font-weight: 600; font-size: 12px; }
.sal-done { color: var(--good); }
.sal-pr { display: flex; gap: 6px; align-items: center; padding: 4px 0; border-bottom: 1px solid var(--l); }
.sal-pr .inp { flex: 1; min-width: 0; }
.sal-pr .sal-pn { flex: 0 0 110px; }
.sal-pr .sal-pp { flex: 0 0 140px; }
.sal-new { border-bottom: 0; margin-top: 8px; }
@media (max-width: 760px) { .sal-pr { flex-wrap: wrap; } .sal-pr .inp { flex: 1 1 100%; } .sal-pr .sal-pn, .sal-pr .sal-pp { flex: 1 1 40%; } }

/* ── Комплектование (Владимир 19.10) ── */
.kit-t td { vertical-align: middle; }
.kit-t .kit-step button { width: 30px; min-height: 28px; }
.kit-t .kit-step input { width: 44px; font-size: 14px; }
.kit-t { width: auto; min-width: min(100%, 760px); }
.kit-t .kit-of { margin-left: 6px; font-size: 13px; }
.kit-t tr.kit-over .kit-of { color: var(--warn); font-weight: 700; }
.kit-t tr.kit-over .kit-of::after { content: " — больше, чем в договоре"; font-weight: 500; font-size: 12px; }
@media (max-width: 560px) { .kit-t th, .kit-t td { padding-left: 4px; padding-right: 4px; } .kit-t .kit-step button { width: 34px; min-height: 32px; } }

/* Сводка: календарь под полем даты (Владимир 19.10) */
.rep-dt { position: relative; display: inline-block; }
.rep-cal { position: absolute; top: calc(100% + 4px); left: 0; z-index: 40; }
.rep-cal .cal { box-shadow: 0 8px 24px rgba(0,0,0,.16); }
@media (max-width: 560px) { .rep-cal { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); } }

/* Стирщики (Владимир 20.10): фото стирки по дням и склад химии */
.wa-wrap { margin-bottom: 10px; }
.wa-who { margin-bottom: 4px; }
.wa-w, .ch-j { max-width: 980px; }
.wa-m { display: inline-flex; align-items: center; gap: 8px; } .wa-m b { min-width: 110px; text-align: center; font-size: 13.5px; }
.wa-t td.cr { cursor: pointer; }
.wa-t tr.wa-open > td { background: var(--s2); padding: 8px; }
.wa-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 6px; }
.wa-w { width: fit-content; max-width: 100%; min-width: min(100%, 420px); box-sizing: border-box; }
.wa-ph { background: #fff; border: 1px solid var(--l); border-radius: 8px; overflow: hidden; }
.wa-ph img { display: block; width: 100%; aspect-ratio: 1; object-fit: cover; }
.wa-gone { aspect-ratio: 1; display: flex; align-items: center; justify-content: center; text-align: center; font-size: 11.5px; color: var(--mut); }
.wa-cap { display: flex; align-items: center; justify-content: space-between; gap: 4px; padding: 2px 6px; font-size: 12px; color: var(--mut); }
.wa-x { border: 0; background: none; color: var(--mut); cursor: pointer; padding: 2px; border-radius: 6px; line-height: 0; }
.wa-x:hover { background: var(--bad-s); color: var(--bad); }
.ch-acts { display: flex; flex-wrap: wrap; gap: 4px 10px; }
.ch-f { display: inline-flex; gap: 4px; align-items: center; }
.ch-q { width: 52px; text-align: center; padding: 3px 4px; min-height: 30px; }
.ch-u { width: 64px; }
.ch-add { margin-top: 8px; }
@media (max-width: 600px) { .ch-t td, .ch-t th { padding-left: 4px; padding-right: 4px; } .ch-t .ch-q { width: 36px; } .ch-t .ch-x { display: none; } .ch-acts { column-gap: 4px; } }  /* убрать средство — с компьютера */

/* s3.t1 — разбор звонков: пропущенные вопросы красным, реплики разговора, отметки скрипта */
.stack.miss > span { color: var(--bad); font-weight: 600; }
.stack.miss > span.mut, .stack.miss > span.ok { font-weight: 400; }
.stack.miss > span.mut { color: var(--mut); }
.stack.miss > span.ok { color: var(--good); }
.call-text { max-height: 62vh; overflow-y: auto; font-size: 13.5px; line-height: 1.45; display: grid; gap: 3px; }
.cl-line { padding: 3px 8px; border-radius: 7px; }
.cl-line b { font-weight: 700; margin-right: 4px; }
.cl-line.op { background: var(--s2, #f4f8f9); }
.cl-line.op b { color: var(--acc); }
.cl-line.cli b { color: var(--ink2, #536771); }
.chk-list { display: grid; gap: 1px; font-size: 13px; }
.chk-list > div { padding: 2px 6px; border-radius: 6px; white-space: nowrap; }
.chk-list .ok { color: var(--good); }
.chk-list .miss { color: var(--bad); background: var(--bad-s); font-weight: 700; }
.chk-list .mut { color: var(--mut); }
.w-kpi-h { font-size: 10px; font-weight: 700; text-transform: uppercase; color: var(--mut); letter-spacing: .03em; padding: 6px 7px 2px; }
.calls-sum { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-start; margin-bottom: 12px; }
.calls-sum > .tbl { width: auto; flex: 1 1 360px; }

/* Каналы (02.11): QR-вход MAX в карточке канала */
.ch-list { width: fit-content; max-width: 100%; min-width: min(100%, 640px); }
.ch-hint { font-size: 11.5px; }
.ch-about { margin-top: 6px; font-size: 12px; line-height: 1.45; }
.ch-qr { border: 1px solid var(--l); border-radius: 12px; padding: 10px 12px; background: var(--s2); }
.ch-qr-row { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }
.ch-qr-img { width: 216px; height: 216px; flex: none; display: flex; align-items: center; justify-content: center;
  background: #fff; border-radius: 10px; border: 1px solid var(--l); }
.ch-qr-img img, .ch-qr-img canvas { display: block; }
.ch-steps { margin: 0; padding-left: 18px; font-size: 13.5px; line-height: 1.6; flex: 1 1 200px; }
.ch-qr-msg { margin-top: 8px; font-size: 12.5px; }
.ch-qr-msg.ch-bad { color: var(--bad); font-weight: 700; }
.ch-ok { color: var(--good, #2e7d32); font-weight: 800; font-size: 14px; display: flex; align-items: center; gap: 6px; }
.ch-narrow { display: none; font-size: 11.5px; }
@media (max-width: 760px) {
  .ch-list .ch-wide { display: none; }
  .ch-list .ch-narrow { display: block; }
  .ch-list .ch-title { white-space: normal; }
  .ch-list .w-tbl tbody td, .ch-list .w-tbl .nowrap { white-space: normal; }
}
/* Звонки в карточке клиента (02.11): слушать / переслать */
.cl-call .cl-acts { margin-top: 4px; gap: 6px; }
.cl-call .cl-acts .btn { padding: 2px 9px; font-size: 12px; }

/* правка комментария к заказу (Даша 02.11): маленькая ссылка «изменить» в строке даты */
.cm-edit { display: inline; margin-left: 6px; }
.cm-edit > summary { display: inline; cursor: pointer; color: var(--acc); font-weight: 600; list-style: none; }
.cm-edit > summary::-webkit-details-marker { display: none; }
.cm-edit[open] { display: block; margin-top: 4px; }
.cm-edit[open] > summary { color: var(--mut); }
.cm-edit textarea { font-size: 13px; min-height: 44px; }

/* Меню учётки: «Ещё» со скрытыми разделами и «Настроить меню» (Владимир 04.11) */
.sidebar nav .nav-more-btn { color: #b9d6bb; }
.sidebar nav .nav-more { display: none; flex-direction: column; gap: 2px; }
.sidebar nav .nav-more-btn.open + .nav-more { display: flex; }
.sidebar nav .nav-hid { opacity: .85; padding-left: 18px; }
.sidebar nav .nav-cfg { font-size: 12.5px; color: #b9d6bb; }
@media (max-width: 760px) {
  .sidebar nav .nav-more-btn.open + .nav-more { display: contents; }
  .sidebar nav .nav-hid { padding-left: 0; }
}
.mm-tbl td { vertical-align: middle; }
.mm-tbl .mm-ord { display: inline-flex; gap: 3px; }
.mm-tbl .mm-ord button { width: 28px; padding: 2px 0; }
.mm-tbl tr.mm-off td:first-child { color: var(--mut); }
