/* kabinet/public/style.css — общий CSS кабинета.
   Источник правды: этот файл; views.js читает его при старте (константа STYLE).
   Шрифт Onest самохостится: fonts.googleapis.com в РФ нестабилен и блокировал первую отрисовку. */
/* cyrillic-ext */
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/kabinet/public/fonts/gNMKW3F-SZuj7xmS-HYoEoeyxMI.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/kabinet/public/fonts/gNMKW3F-SZuj7xmb-HYoEoeyxMI.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/kabinet/public/fonts/gNMKW3F-SZuj7xmR-HYoEoeyxMI.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/kabinet/public/fonts/gNMKW3F-SZuj7xmf-HYoEoey.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/kabinet/public/fonts/gNMKW3F-SZuj7xmS-HYoEoeyxMI.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/kabinet/public/fonts/gNMKW3F-SZuj7xmb-HYoEoeyxMI.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/kabinet/public/fonts/gNMKW3F-SZuj7xmR-HYoEoeyxMI.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/kabinet/public/fonts/gNMKW3F-SZuj7xmf-HYoEoey.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/kabinet/public/fonts/gNMKW3F-SZuj7xmS-HYoEoeyxMI.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/kabinet/public/fonts/gNMKW3F-SZuj7xmb-HYoEoeyxMI.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/kabinet/public/fonts/gNMKW3F-SZuj7xmR-HYoEoeyxMI.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/kabinet/public/fonts/gNMKW3F-SZuj7xmf-HYoEoey.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

.copy-chip{background:none;border:0;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:4px}
.copy-chip .copy-ico{opacity:.4;flex:none}
.copy-chip:hover{color:#2563eb}
.copy-chip:hover .copy-ico{opacity:1}
.ext-ico{vertical-align:-1px;margin-left:3px;flex:none}
a .ext-ico{opacity:.6}
a:hover .ext-ico{opacity:1}
/* карточный вид списка закупок: ховер подсвечивает карточку целиком, а не каждую ячейку */
[data-customer-notice-view="cards"] .customer-notice-table tr:hover td{background:transparent}
[data-customer-notice-view="cards"] .customer-notice-table tr{padding:16px 18px;gap:12px 22px}
/* карточка закупки заказчика */
.notice-card-wrap{max-width:900px;margin:0 auto;display:flex;flex-direction:column;gap:12px}
.notice-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:14px;padding-top:14px;border-top:1px solid var(--border)}
.notice-actions form{display:flex;gap:8px;align-items:center;margin:0}
.notice-actions .btn{white-space:nowrap}
.doc-dl{margin-left:8px;color:var(--muted);display:inline-flex;vertical-align:middle}
.doc-dl:hover{color:#2563eb}
:root{
  /* нейтральные — только холодные, тёплых серых в палитре нет */
  --bg:#f4f6f9; --surface:#fff; --surface-2:#f0f3f7; --surface-3:#e5eaf1;
  --border:#e3e8ef; --border-strong:#cdd5e0;
  --ink:#0f172a; --ink-2:#334155; --muted:#64748b; --faint:#94a3b8;
  /* один живой акцент */
  --accent:#2563eb; --accent-soft:#eff4ff; --accent-strong:#1d4ed8; --accent-line:#bfd3f8;
  /* 4 семантических цвета, не больше */
  --ok:#16794c;     --ok-soft:#e7f6ee;   --ok-line:#a9d9c1;
  --warn:#92610a;   --warn-soft:#fdf3d9; --warn-line:#eed9a4;
  --danger:#c2273a; --danger-soft:#fdecef; --danger-line:#f2c2c9;
  --info:#4f46b8;   --info-soft:#efedfd;  --info-line:#c9c4ee;
  --radius:12px; --radius-sm:8px; --radius-label:999px;
  --shadow-1:0 1px 2px rgba(15,23,42,.06);
  --shadow-2:0 8px 24px rgba(15,23,42,.10);
  --focus-ring:0 0 0 3px var(--accent-soft);
  --topbar-h:70px; --side-width:236px; --side-collapsed-width:72px;
  /* совместимые имена: старый код читает их, значения — из палитры выше */
  --surface-soft:var(--surface-2); --shadow-soft:var(--shadow-2);
  --green-bg:var(--ok-soft); --green-fg:var(--ok);
  --amber-bg:var(--warn-soft); --amber-fg:var(--warn);
  --red-bg:var(--danger-soft); --red-fg:var(--danger);
  --blue-bg:var(--accent-soft); --blue-fg:var(--accent);
  --violet-bg:var(--info-soft); --violet-fg:var(--info);
  --slate-bg:var(--surface-2); --slate-fg:var(--muted);
}
*{box-sizing:border-box}
/* Фильтры прячут строки через row.hidden, но браузерное [hidden]{display:none}
   слабее любого авторского правила: карточный вид (tr{display:grid}) и мобильная
   раскладка (.crm tr{display:block}) его перебивали, и фильтр «Никто не подал»
   пересчитывал счётчик, ничего не убирая с экрана. Глушим глобально. */
[hidden]{display:none!important}
body{margin:0;background:var(--bg);color:var(--ink);
  font-family:'Onest',ui-sans-serif,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  font-size:13px;line-height:1.55;-webkit-font-smoothing:antialiased;}
a{color:inherit;text-decoration:none}
.app{display:flex;min-height:100vh;background:var(--bg)}
/* sidebar */
.side{width:var(--side-width);flex-shrink:0;background:rgba(255,255,255,.92);border-right:1px solid var(--border);
  display:flex;flex-direction:column;position:sticky;top:0;height:100vh;backdrop-filter:blur(18px);
  z-index:80;transition:width .28s cubic-bezier(.2,.8,.2,1),box-shadow .18s ease}
.side .brand{min-height:70px;padding:16px 14px 16px 18px;font-weight:600;font-size:15px;letter-spacing:0;border-bottom:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;gap:10px}
.brand-text,.nav-label,.side .foot .btn-label{white-space:nowrap;overflow:hidden;transition:opacity .18s ease,transform .28s cubic-bezier(.2,.8,.2,1),max-width .28s cubic-bezier(.2,.8,.2,1)}
.brand-text{display:block;max-width:150px}
.side .brand small{display:block;font-weight:500;color:var(--faint);font-size:12px;letter-spacing:0;margin-top:2px}
.side-toggle{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;flex:none;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft);color:var(--muted);cursor:pointer;transition:background .14s,color .14s,border-color .14s,transform .28s cubic-bezier(.2,.8,.2,1)}
.side-toggle:hover{background:var(--surface);color:var(--ink);border-color:var(--border-strong)}
.side-toggle svg{width:17px;height:17px}
.nav{padding:14px 10px;flex:1}
.nav a{min-height:38px;display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:12px;color:var(--muted);
  font-weight:500;margin-bottom:4px;position:relative;transition:background .14s,color .14s,box-shadow .14s,transform .14s}
.nav a:hover{background:var(--surface-soft);color:var(--ink)}
.nav a.active{background:var(--ink);color:var(--surface);box-shadow:0 10px 26px rgba(29,35,41,.16)}
.nav-count{margin-left:auto;min-width:18px;height:18px;background:var(--red-fg);color:var(--surface);border-radius:999px;font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center;padding:0 5px;line-height:1}
.nav a svg{width:16px;height:16px;opacity:.85;flex-shrink:0}
.side .foot{padding:10px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:8px}
.side .foot .btn{width:100%;justify-content:flex-start}
.foot-account{position:relative}
.org-switcher{width:100%;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--ink);padding:8px;display:flex;align-items:center;gap:9px;text-align:left;cursor:pointer;font:inherit;box-shadow:0 8px 22px rgba(23,29,39,.05);transition:border-color .14s,background .14s,box-shadow .14s}
.org-switcher:hover,.foot-account.org-menu-open .org-switcher{border-color:var(--border-strong);background:var(--surface-2);box-shadow:0 12px 30px rgba(23,29,39,.08)}
.org-avatar{width:32px;height:32px;border-radius:999px;background:var(--ink);color:var(--surface);display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;letter-spacing:.02em;flex:none}
.org-current{min-width:0;flex:1;transition:opacity .18s ease,transform .28s cubic-bezier(.2,.8,.2,1),max-width .28s cubic-bezier(.2,.8,.2,1)}
.org-kicker{display:block;font-size:12px;color:var(--faint);font-weight:600;line-height:1.15}
.org-name{display:block;font-size:12px;font-weight:700;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.org-chevron{width:16px;height:16px;color:var(--muted);flex:none;transition:transform .16s ease,opacity .18s ease}
.foot-account.org-menu-open .org-chevron{transform:rotate(180deg)}
.org-menu{position:absolute;left:0;right:0;bottom:calc(100% + 8px);z-index:70;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 18px 46px rgba(23,29,39,.18);padding:6px}
.org-menu[hidden]{display:none}
.org-menu form{margin:0}
.org-menu-item{width:100%;min-height:36px;border:0;background:transparent;border-radius:8px;color:var(--ink);padding:8px 10px;display:flex;align-items:center;gap:9px;text-align:left;font:inherit;font-size:12px;font-weight:600;cursor:pointer}
.org-menu-item:hover{background:var(--surface-soft)}
.org-menu-item.active{background:var(--ink);color:var(--surface)}
.org-menu-check{margin-left:auto;color:currentColor;font-size:12px}
.org-menu-sep{height:1px;background:var(--border);margin:6px 4px}
.org-menu-add{color:var(--accent)}
.org-menu-add svg{width:16px;height:16px;flex:none}
.logout-form{margin:0}
.logout-btn{border:1px solid transparent;background:var(--surface-soft);color:var(--muted);border-radius:12px}
.logout-btn:hover{background:var(--red-bg);color:var(--red-fg);border-color:rgba(194,39,58,.14)}
.app.side-collapsed .side{width:var(--side-collapsed-width);box-shadow:10px 0 30px rgba(31,35,40,.04)}
.app.side-collapsed .side .brand{justify-content:center;padding-left:10px;padding-right:10px}
.app.side-collapsed .brand-text,.app.side-collapsed .nav-label,.app.side-collapsed .side .foot .btn-label{opacity:0;transform:translateX(-8px);max-width:0}
.app.side-collapsed .side-toggle{transform:rotate(180deg)}
.app.side-collapsed .nav a{justify-content:center;gap:0;padding-left:0;padding-right:0}
.app.side-collapsed .nav-count{position:absolute;right:9px;top:5px;margin-left:0;min-width:16px;height:16px;font-size:12px}
.app.side-collapsed .side .foot .btn{justify-content:center;padding-left:0;padding-right:0}
.app.side-collapsed .org-switcher{justify-content:center;border-color:transparent;background:transparent;box-shadow:none;padding:5px}
.app.side-collapsed .org-current,.app.side-collapsed .org-chevron{opacity:0;transform:translateX(-8px);max-width:0;overflow:hidden}
.app.side-collapsed .org-avatar{width:38px;height:38px}
.app.side-collapsed .org-menu{left:calc(100% + 10px);right:auto;bottom:0;width:226px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:0;cursor:pointer;
  background:var(--surface-soft);color:var(--ink-2);border-radius:var(--radius-sm);padding:8px 16px;font:inherit;
  font-weight:500;font-size:13px;line-height:1;transition:background .14s,color .14s,transform .04s,box-shadow .14s}
.btn:hover{background:var(--surface-3)}
.btn:active{transform:scale(.985)}
.btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}
.btn svg{width:16px;height:16px;flex:none}
.btn-primary{background:var(--ink);color:var(--surface);box-shadow:var(--shadow-1)}
.btn-primary:hover{background:var(--ink-2)}
.btn-ghost{background:transparent;color:var(--muted)}
.btn-ghost:hover{background:var(--surface-2);color:var(--ink)}
.btn-ghost.btn-accent{color:var(--accent)}
.btn-ghost.btn-accent:hover{background:var(--accent-soft);color:var(--accent-strong)}
.btn-accent:not(.btn-ghost){border:1px solid var(--border-strong);background:var(--surface);color:var(--ink);font-weight:600}
.btn-accent:not(.btn-ghost):hover{background:var(--ink);border-color:var(--ink);color:#fff}
.use-cost{border:1px solid var(--border-strong);background:var(--surface);color:var(--ink);font-weight:600}
.use-cost:hover{background:var(--ink);border-color:var(--ink);color:#fff}
.btn-save{background:var(--ink);color:#fff;font-weight:600;box-shadow:var(--shadow-1)}
.btn-save:hover{background:var(--ink-2)}
.btn-danger{background:var(--danger-soft);color:var(--danger)}
.btn-danger:hover{background:var(--danger-line)}
/* крупная кнопка с обводкой для редких разрушающих действий */
.btn-danger-outline{border:1px solid var(--danger-line);background:var(--surface);color:var(--danger);
  font-weight:600;font-size:13px;padding:12px 22px;border-radius:var(--radius-sm)}
.btn-danger-outline:hover{background:var(--danger-soft);border-color:var(--danger)}
.btn-sm{padding:6px 12px;font-size:12px}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
/* main */
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:20;background:rgba(247,249,252,.86);backdrop-filter:blur(16px);
  border-bottom:1px solid rgba(215,222,232,.78);padding:18px 30px;display:flex;align-items:center;gap:16px}
.topbar h1{font-size:22px;font-weight:500;margin:0;letter-spacing:0}
/* закреплённая шапка карточки: «Закупка» + предмет, чтобы при прокрутке было
   видно, над чем работаем */
.topbar-heading{min-width:0;display:flex;align-items:baseline;gap:10px;flex:1}
.topbar-heading h1{flex:none}
.topbar-note{min-width:0;flex:1;color:var(--muted);font-size:14px;line-height:1.3;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.topbar-board{min-height:70px;padding:12px 30px;gap:16px;background:rgba(255,255,255,.94)}
.topbar-board h1{font-size:22px;font-weight:600;min-width:126px}
.topbar-board .top-actions{flex-wrap:nowrap}
.topbar-board .board-search{max-width:560px}
.board-search input{height:42px;padding-left:40px;padding-right:46px;border-color:var(--border);box-shadow:none}
.board-search:focus-within input{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.board-search-clear{position:absolute;right:1px;top:50%;transform:translateY(-50%);width:40px;height:40px;border:0;border-radius:8px;background:transparent;color:var(--muted);font:inherit;font-size:18px;line-height:1;cursor:pointer}
.board-search-clear:hover{background:var(--surface-soft);color:var(--ink)}
.board-search-clear:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.board-view-action{background:transparent;color:var(--muted);box-shadow:none}
/* Кнопка тура в шапке доски: тихая, как «Настроить вид» */
.board-tour-action{background:transparent;color:var(--muted);box-shadow:none}
.board-tour-action:hover{color:var(--accent)}
@media(max-width:1279px){.topbar-board .top-actions{flex-wrap:wrap}.topbar-board{align-items:flex-start}}
.top-actions{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.btn-icon{width:36px;height:36px;padding:0}
.btn-icon svg{width:18px;height:18px}
.bell{position:relative;display:inline-flex;align-items:center;color:var(--muted);padding:6px;border-radius:8px}
.bell:hover{background:var(--surface-soft);color:var(--ink)}
.bell svg{width:19px;height:19px}
.bell-count{position:absolute;top:1px;right:1px;min-width:16px;height:16px;background:var(--red-fg);color:var(--surface);border-radius:999px;font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center;padding:0 4px;line-height:1}
.notif-list{display:flex;flex-direction:column;gap:10px}
.notif-row{display:block;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow-soft);transition:border-color .12s,transform .06s}
.notif-row:hover{border-color:var(--border-strong);transform:translateY(-1px)}
/* колокольчик в шапке доски */
.notif-bell{position:relative;display:inline-flex}
.notif-bell-btn{position:relative}
.notif-bell-badge{position:absolute;top:-3px;right:-3px;min-width:17px;height:17px;background:var(--red-fg);color:#fff;border:2px solid var(--surface);border-radius:999px;font-size:11px;font-weight:600;display:flex;align-items:center;justify-content:center;padding:0 4px;line-height:1;font-variant-numeric:tabular-nums}
.notif-pop{position:absolute;top:calc(100% + 8px);right:0;z-index:40;width:min(400px,calc(100vw - 32px));max-height:min(72vh,640px);overflow:auto;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:0 18px 44px rgba(15,23,42,.18);padding:6px 0}
.notif-pop[hidden]{display:none}
.notif-pop-group{padding:10px 14px 2px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);display:flex;align-items:center;justify-content:space-between;gap:8px}
.notif-item{display:block;padding:9px 14px;border-bottom:1px solid var(--border)}
.notif-item:last-child{border-bottom:0}
.notif-item:hover{background:var(--surface-soft)}
.notif-item-top{display:flex;align-items:baseline;gap:8px;font-size:12px;font-variant-numeric:tabular-nums}
.notif-item-when{font-weight:600;color:var(--ink)}
.notif-item-when.urgent{color:var(--red-fg)}
.notif-item-left{color:var(--faint)}
.notif-item-kind{margin-left:auto;color:var(--muted)}
.notif-item-subj{display:block;font-size:13px;font-weight:500;color:var(--ink);line-height:1.35;margin:3px 0 2px;text-decoration:none}
.notif-item-subj:hover{text-decoration:underline}
.notif-item-sub{font-size:12px;color:var(--muted);line-height:1.35}
.notif-item-where{font-size:12px;color:var(--muted);margin-top:2px}
.notif-item-where a{color:var(--accent-fg,#3358d4)}
.notif-item-row{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.notif-pop-empty{padding:22px 16px;text-align:center;font-size:13px;color:var(--muted)}
.notif-pop-foot{display:flex;flex-wrap:wrap;gap:14px;padding:11px 14px 8px;border-top:1px solid var(--border);font-size:12px}
@media(max-width:680px){.notif-pop{position:fixed;top:auto;right:8px;left:8px;width:auto}}
.org-suggest-empty{font-size:12px;color:var(--faint);padding:8px 2px}
.org-suggest-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center}
.org-suggest-row .btn{white-space:nowrap}
.org-add-suggestions{max-height:min(52vh,520px);overflow:auto;padding-right:4px}
.notif-badges{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.notif-subj{font-weight:500;font-size:13px;color:var(--ink);line-height:1.4;margin-bottom:5px}
.notif-sub{font-size:12px;color:var(--muted)}
.live-dot{width:9px;height:9px;border-radius:50%;background:var(--green-fg);box-shadow:0 0 0 0 rgba(30,125,68,.5);animation:pulse 1.8s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(30,125,68,.5)}70%{box-shadow:0 0 0 7px rgba(30,125,68,0)}100%{box-shadow:0 0 0 0 rgba(30,125,68,0)}}
.pstats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
@media(max-width:680px){.pstats{grid-template-columns:repeat(2,1fr)}}
.pstat{background:var(--surface-soft);border-radius:var(--radius-sm);padding:12px 14px}
.pstat .pv{font-size:18px;font-weight:500;color:var(--ink);font-variant-numeric:tabular-nums}
.pstat .pl{font-size:12px;color:var(--faint);margin-top:3px}
.ctx-menu{position:fixed;z-index:60;min-width:212px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:0 18px 44px rgba(31,35,40,.16);padding:6px;font-size:13px}
.ctx-menu[hidden]{display:none}
.ctx-item{display:block;width:100%;text-align:left;background:none;border:0;border-radius:8px;padding:8px 10px;color:var(--ink);font:inherit;cursor:pointer}
.ctx-item:hover{background:var(--surface-soft)}
.ctx-danger{color:var(--red-fg)}
.ctx-danger:hover{background:var(--red-bg)}
.ctx-sep{height:1px;background:var(--border);margin:6px 4px}
.ctx-label{font-size:12px;color:var(--faint);padding:6px 10px 2px}
.ctx-move{display:flex;flex-wrap:wrap;gap:4px;padding:2px 6px 6px}
.ctx-move button{font-size:12px;padding:4px 9px;border-radius:999px;border:1px solid var(--border);background:var(--surface-soft);color:var(--ink);font:inherit;cursor:pointer}
.ctx-move button:hover{background:var(--border)}
.modal-overlay{position:fixed;inset:0;z-index:80;background:rgba(17,24,39,.45);display:flex;align-items:flex-start;justify-content:center;padding:20px;overflow:auto}
.modal{background:var(--surface);border-radius:var(--radius);max-width:420px;width:100%;max-height:calc(100dvh - 40px);overflow:auto;margin:auto 0;padding:22px;box-shadow:0 20px 50px rgba(0,0,0,.25)}
.org-add-modal{max-width:min(760px,100%)}
.modal h3{margin:0 0 8px;font-size:15px}
.modal p{margin:0 0 18px;color:var(--muted);font-size:13px;line-height:1.5}
.modal-actions{display:flex;justify-content:flex-end;gap:8px}
/* кастомные выпадающие списки: нативный select спрятан, но остаётся в форме */
.cselect{position:relative;display:inline-block;min-width:0}
.cselect-input{display:block;width:100%}
.cselect>select{position:absolute;width:1px;height:1px;padding:0;margin:0;opacity:0;pointer-events:none}
.cselect-btn{width:100%;min-height:36px;display:flex;align-items:center;justify-content:space-between;gap:8px;
  border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--ink);
  padding:7px 10px;font:inherit;font-size:13px;line-height:1.2;cursor:pointer;text-align:left;
  transition:border-color .14s,box-shadow .14s,background .14s}
.cselect-btn:hover{border-color:var(--border-strong)}
.cselect-btn:focus-visible,.cselect.is-open .cselect-btn{outline:none;border-color:var(--accent);box-shadow:var(--focus-ring)}
.cselect-btn[disabled]{background:var(--surface-2);color:var(--faint);cursor:not-allowed}
.cselect-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cselect-caret{flex:none;color:var(--muted);font-size:12px;line-height:1;transform:translateY(-2px);transition:transform .16s ease}
.cselect.is-open .cselect-caret{transform:translateY(-2px) rotate(180deg)}
.cselect-menu{position:absolute;z-index:140;left:0;top:calc(100% + 4px);min-width:100%;max-height:280px;overflow:auto;
  background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow-2);padding:4px;display:grid;gap:2px}
.cselect-menu[hidden]{display:none}
.cselect-option{width:100%;border:0;border-radius:8px;background:transparent;color:var(--ink);
  padding:7px 9px;font:inherit;font-size:13px;line-height:1.3;text-align:left;cursor:pointer;white-space:nowrap}
.cselect-option:hover,.cselect-option:focus-visible{outline:none;background:var(--surface-2)}
.cselect-option[aria-selected="true"]{background:var(--accent-soft);color:var(--accent-strong);font-weight:600}
.cselect-option[disabled]{color:var(--faint);cursor:not-allowed}
@media(max-width:680px){
  .modal-overlay{padding:12px}
  .modal{max-height:calc(100dvh - 24px);padding:18px}
  .org-suggest-row{grid-template-columns:1fr}
  .org-suggest-row .btn{width:100%}
}
/* Полоса над колонками: доска рисуется всегда, а строка говорит, что с ней сейчас. */
.board-note{display:flex;align-items:center;gap:10px;margin-bottom:10px;padding:10px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);font-size:13px;color:var(--ink-2)}
.board-note-quiet{color:var(--muted)}
.board-note form{margin:0}
.board-note .btn{margin-left:auto}
.board-note .btn + form .btn{margin-left:8px}
.board-note-spin{width:14px;height:14px;flex:0 0 14px;border:2px solid var(--border);border-top-color:var(--accent,#3355ff);border-radius:50%;animation:board-note-spin .8s linear infinite}
@keyframes board-note-spin{to{transform:rotate(360deg)}}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(10px);z-index:90;max-width:calc(100vw - 48px);background:var(--ink);color:var(--surface);padding:11px 18px;border-radius:14px;font-size:14px;font-weight:500;box-shadow:0 10px 30px rgba(0,0,0,.25);opacity:0;pointer-events:none;transition:opacity .18s ease,transform .18s ease}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
/* вариант «снизу слева»: показывается при копировании реквизитов, чтобы подтверждение
   не прыгало рядом с цифрами и не ломало вёрстку строки. */
.toast.toast-left{left:24px;transform:translateY(10px)}
.toast.toast-left.show{transform:translateY(0)}
/* снэкбар итога импорта: карточка внизу слева, а не всплывашка-«пилюля».
   Живёт до закрытия по кнопке или таймеру, при наведении таймер замирает. */
/* Держим плашку у ПРАВОГО края: слева фиксированное меню кабинета, и всплывающая
   поверх него карточка перекрывала бы «Выйти». */
.snackbar{position:fixed;right:24px;bottom:24px;z-index:95;display:flex;align-items:flex-start;gap:12px;
  min-width:280px;max-width:min(420px,calc(100vw - 32px));
  background:var(--surface);color:var(--ink);border:1px solid var(--border);border-radius:14px;padding:14px 40px 18px 16px;
  box-shadow:0 18px 44px rgba(23,29,39,.16);opacity:0;transform:translateY(14px) scale(.98);pointer-events:none;
  transition:opacity .22s cubic-bezier(.2,.8,.3,1),transform .22s cubic-bezier(.2,.8,.3,1)}
.snackbar.show{opacity:1;transform:none;pointer-events:auto}
.snackbar-icon{width:32px;height:32px;flex:none;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;
  background:var(--green-bg,#e7f6ec);color:var(--green-fg,#1a7f37)}
.snackbar-icon svg{width:18px;height:18px}
.snackbar.is-empty .snackbar-icon{background:var(--surface-soft);color:var(--muted)}
.snackbar-body{min-width:0;display:flex;flex-direction:column;gap:3px}
.snackbar-title{font-size:14px;font-weight:700;line-height:1.25}
.snackbar-text{font-size:12.5px;color:var(--muted);line-height:1.4}
.snackbar-actions{display:flex;align-items:center;gap:12px;margin-top:6px}
.snackbar-link{font-size:12.5px;font-weight:600;color:var(--accent);background:none;border:0;padding:0;cursor:pointer}
.snackbar-link:hover{text-decoration:underline;text-underline-offset:2px}
.snackbar-close{position:absolute;top:8px;right:8px;width:24px;height:24px;border:0;background:none;color:var(--faint);
  border-radius:6px;font-size:16px;line-height:1;cursor:pointer}
.snackbar-close:hover{background:var(--surface-soft);color:var(--ink)}
.snackbar-bar{position:absolute;left:0;right:0;bottom:0;height:3px;background:transparent;overflow:hidden;border-radius:0 0 14px 14px}
.snackbar-bar i{display:block;height:100%;background:var(--accent);transform-origin:left center;animation:snackbar-bar linear forwards}
.snackbar:hover .snackbar-bar i{animation-play-state:paused}
@keyframes snackbar-bar{from{transform:scaleX(1)}to{transform:scaleX(0)}}
@media(max-width:720px){.snackbar{left:12px;right:12px;bottom:12px;min-width:0;max-width:none}}
@media(prefers-reduced-motion:reduce){.snackbar{transition:opacity .2s}.snackbar.show{transform:none}}
.hist{display:flex;flex-direction:column;gap:6px}
.hist-row{display:grid;grid-template-columns:110px auto 1fr;gap:8px;align-items:center;font-size:12px;color:var(--muted)}
.hist-row .badge{white-space:nowrap}
.hist-row .hist-res{color:var(--ink);grid-column:1 / -1;padding-left:2px}
@media(max-width:680px){.hist-row{grid-template-columns:1fr auto}}
.mon-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;align-items:start;max-width:1180px}
.mon-main{display:flex;flex-direction:column;gap:16px;min-width:0}
.mon-side{position:sticky;top:86px;display:flex;flex-direction:column;gap:16px}
@media(max-width:1080px){.mon-grid{grid-template-columns:1fr}.mon-side{position:static}}
.notif-hidden{display:none}
.mon-more{margin-top:12px;width:100%}
.tg-guide{margin:8px 0 2px;padding-left:20px;font-size:12px;color:var(--muted);line-height:1.6}
.tg-guide li{margin-bottom:4px}
.tg-guide code{background:var(--surface-soft);border-radius:4px;padding:1px 5px;font-size:12px}
.content{padding:24px 30px 34px}
/* badges */
.badge{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;padding:4px 10px;
  border-radius:var(--radius-label);white-space:nowrap;line-height:1.4}
.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none;opacity:.9}
.b-green{background:var(--green-bg);color:var(--green-fg)} .b-amber{background:var(--amber-bg);color:var(--amber-fg)}
.c-won{display:inline-block;max-width:100%;color:var(--green-fg);font-size:12px;font-weight:600;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.b-red{background:var(--red-bg);color:var(--red-fg)} .b-blue{background:var(--blue-bg);color:var(--blue-fg)}
.b-violet{background:var(--violet-bg);color:var(--violet-fg)} .b-slate{background:var(--slate-bg);color:var(--slate-fg)}
.b-place,.b-org{background:var(--surface-2);color:var(--muted)}
/* пользовательские метки: одна семья — общие насыщенность и светлота, разный тон */
.label-badge{font-size:12px;padding:5px 12px;color:var(--ink-2)}
.label-mint{background:#c9eee6;color:#2c6d60}
.label-peach{background:#eed8c9;color:#6d472c}
.label-pink{background:#eec9d8;color:#6d2c47}
.label-lemon{background:#eee8c9;color:#6d622c}
.label-sky{background:#c9deee;color:#2c526d}
.label-lavender{background:#d4c9ee;color:#402c6d}
.label-slate{background:#d6d9e1;color:#424957}
/* Подсветка ищет по КОРНЯМ, поэтому совпадение часто попадает внутрь слова:
   «стул»ьчика, «кресл»а, «медицинск»их. Горизонтальный отступ без компенсации
   раздвигал бы соседние буквы, и слово читалось как разорванное пробелом.
   Отрицательное поле возвращает текст на место, фон при этом остаётся шире букв. */
mark.hl{background:var(--warn-line);color:inherit;border-radius:8px;padding:0 2px;margin:0 -2px}
/* inputs */
.input,select.input{border:1px solid var(--border-strong);background:var(--surface);border-radius:var(--radius-sm);
  padding:8px 11px;font:inherit;font-size:13px;color:var(--ink);width:100%}
.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.search{position:relative;flex:1;max-width:520px}
.search input{height:44px;padding-left:40px;border-color:var(--border);border-radius:8px;box-shadow:0 8px 26px rgba(23,29,39,.04)}
.search svg{position:absolute;left:9px;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--faint)}
/* filter bar */
.filters{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;margin-bottom:18px;background:rgba(255,255,255,.88);border:1px solid var(--border);border-radius:var(--radius);padding:12px 16px;box-shadow:var(--shadow-soft)}
.fgroup{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.flabel{font-size:12px;color:var(--faint);font-weight:500;margin-right:3px;text-transform:uppercase;letter-spacing:.03em}
.chip{font-size:12px;font-weight:500;padding:5px 12px;border-radius:999px;border:0;
  background:var(--surface-soft);color:var(--muted);cursor:pointer;user-select:none;transition:all .12s}
.chip:hover{background:var(--border)}
.chip.on{background:var(--ink-2);color:var(--surface)}
.muted{color:var(--muted)} .faint{color:var(--faint)}
/* board */
.board-shell{min-height:calc(100dvh - 116px);display:flex;flex-direction:column;--board-col-gap:16px;--board-card-gap:12px;--board-card-pad:16px}
.board-toolbar{display:flex;align-items:center;gap:10px;margin:-24px -30px 16px;padding:8px 30px;background:rgba(255,255,255,.82);border-bottom:1px solid var(--border);min-height:56px;overflow:visible}
.list-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.view-switch{display:inline-flex;flex:none;padding:3px;gap:2px;background:var(--surface-soft);border:1px solid var(--border);border-radius:10px}
.view-switch-opt{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:8px;color:var(--muted);font:inherit;font-size:13px;font-weight:600;text-decoration:none;transition:background .15s ease,color .15s ease}
.view-switch-opt svg{width:16px;height:16px;flex-shrink:0}
.view-switch-opt:hover{color:var(--ink)}
.view-switch-opt.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(23,29,39,.12)}
.view-switch-opt:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media(max-width:640px){.view-switch-opt span{display:none}.view-switch-opt{padding:6px 10px}}
.board-filter-anchor{position:relative;flex:none}
.board-filter-toggle{height:40px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--muted);display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 12px;font:inherit;font-size:13px;font-weight:600;cursor:pointer}
.board-filter-toggle:hover{border-color:var(--border-strong);color:var(--ink)}
.board-filter-toggle:focus-visible,.board-filter-reset:focus-visible,.active-filter-chip:focus-visible,.board-filter-popover .chip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.board-filter-toggle svg{width:17px;height:17px}
.board-filter-toggle-count{min-width:20px;height:20px;border-radius:999px;background:var(--ink);color:var(--surface);display:inline-flex;align-items:center;justify-content:center;padding:0 6px;font-size:12px}
.board-filter-popover{position:absolute;left:0;top:calc(100% + 8px);z-index:30;width:min(380px,calc(100vw - 32px));max-height:min(620px,calc(100dvh - 150px));overflow:auto;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 18px 48px rgba(23,29,39,.16);padding:16px}
.board-filter-popover[hidden]{display:none}
.board-filter-section+.board-filter-section{border-top:1px solid var(--border);margin-top:14px;padding-top:14px}
.board-filter-label{font-size:12px;font-weight:600;color:var(--muted);margin-bottom:8px}
.board-filter-hint{font-weight:400;color:var(--faint);margin-left:6px}
.board-filter-options{display:flex;flex-wrap:wrap;gap:7px}
.board-filter-popover .chip{min-height:34px;border:1px solid var(--border);background:var(--surface-soft);color:var(--muted);padding:6px 11px}
.board-filter-popover .chip.on{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.board-filter-popover .board-urgent-filter.on{background:var(--red-bg);border-color:var(--danger-line);color:var(--red-fg)}
.board-filter-price{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.board-filter-price label{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:7px;color:var(--faint);font-size:12px}
.board-filter-price .input{height:40px}
.active-filters{display:flex;align-items:center;gap:6px;min-width:0;overflow-x:auto;scrollbar-width:none}
.active-filters::-webkit-scrollbar{display:none}
.active-filter-chip{height:32px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--ink);display:inline-flex;align-items:center;gap:6px;padding:0 10px;font:inherit;font-size:12px;white-space:nowrap;cursor:pointer}
.active-filter-chip span{color:var(--faint);font-size:15px;line-height:1}
.board-filter-reset{border:0;background:transparent;color:var(--accent);font:inherit;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap}
.board-refresh-form{margin:0;flex:none}
.board-filter-empty{margin:0 0 16px;padding:14px 16px;border:1px dashed var(--border-strong);border-radius:12px;background:var(--surface);display:flex;align-items:center;gap:10px;color:var(--muted)}
.board-filter-empty[hidden]{display:none}
.board-filter-empty strong{color:var(--ink)}
.board{display:flex;gap:var(--board-col-gap);overflow-x:auto;padding:0 2px 10px;align-items:stretch;height:calc(100dvh - var(--board-top-offset,138px));min-height:260px;background:transparent;border:0;border-radius:0;box-shadow:none;scroll-snap-type:x proximity}
.col{--col-width:clamp(300px,22vw,344px);flex:0 0 var(--col-width);width:var(--col-width);min-width:var(--col-width);max-width:var(--col-width);background:var(--surface-soft);border:0;border-radius:12px;display:flex;flex-direction:column;height:100%;max-height:none;padding:10px;position:relative;scroll-snap-align:start;transition:box-shadow .14s}
.col.resizing{box-shadow:0 0 0 2px rgba(47,111,178,.16)}
.col-head{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:8px;padding:4px 4px 10px;background:var(--surface-soft);cursor:default}
.col-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.col-title{font-weight:600;font-size:13px;color:var(--ink);border-radius:6px;padding:1px 4px;margin:-1px -4px;cursor:text;flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.col-head:hover .col-title{background:var(--surface)}
.col-title.editing{background:var(--surface);box-shadow:0 0 0 2px var(--accent);outline:0;cursor:text}
.col-head-actions{margin-left:auto;display:inline-flex;align-items:center;gap:2px}
.col-head-btn{width:26px;height:26px;border:0;border-radius:7px;background:transparent;color:var(--faint);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;pointer-events:none;transition:opacity .12s,background .12s,color .12s}
.col-head-btn svg{width:15px;height:15px}
.col-head:hover .col-head-btn,.col:focus-within .col-head-btn{opacity:1;pointer-events:auto}
.col-head-btn:hover{background:var(--surface);color:var(--ink)}
.col-head-btn.active{opacity:1;pointer-events:auto;background:var(--ink);color:var(--surface)}
.col-count{min-width:26px;height:22px;border-radius:8px;background:var(--border);color:var(--muted);display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex:none}
.col-info{padding:0 4px 8px}
.col-info[hidden]{display:none}
.col-info-text{display:block;color:var(--faint);font-size:12px;line-height:1.35}
.col-filter{padding:0 2px 8px}
.col-filter[hidden]{display:none}
.col-filter-input{height:32px;font-size:12px}
.col-add{padding:0 2px 8px}
.col-add[hidden]{display:none}
.col-add-form{display:flex;flex-direction:column;gap:6px}
.card.col-filter-hidden{display:none}
.col-resize-handle{position:absolute;top:0;right:-5px;width:10px;height:100%;cursor:ew-resize;z-index:6;touch-action:none;display:flex;justify-content:center}
.col-resize-handle::after{content:"";width:2px;height:calc(100% - 20px);margin-top:10px;border-radius:999px;background:transparent;transition:background .12s,opacity .12s}
.col-resize-handle:hover::after,.col-resize-handle:focus-visible::after,.col.resizing .col-resize-handle::after{background:var(--accent)}
.col-resize-handle:focus-visible{outline:2px solid rgba(47,111,178,.24);outline-offset:2px}
body.is-col-resizing{cursor:ew-resize;user-select:none}
body.is-col-resizing *{cursor:ew-resize!important}
.col-sub{min-height:31px;padding:0 4px 9px;color:var(--faint);font-size:12px;line-height:1.35}
.col-sub-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.col-sub-empty{visibility:hidden}
/* overflow-x:hidden обязателен: одно только overflow-y:auto по спецификации превращает
   overflow-x в auto, и колонка панорамировалась вбок, если карточка (каталоги ЛО/СПб
   с длинными заказчиками) оказывалась на пару пикселей шире. */
.col-body{overflow-y:auto;overflow-x:hidden;padding:0 1px 2px;display:flex;flex-direction:column;gap:var(--board-card-gap);min-height:0;flex:1;border-radius:8px;transition:background .12s}
/* Свой скролл у каждой колонки — это правильно для канбана (колонки разной длины,
   шапки всегда видны, автоскролл при перетаскивании живёт на колонке). Полоска видна
   только ВО ВРЕМЯ прокрутки (app.js вешает .is-scrolling): постоянный брусок рядом
   с колонкой из трёх карточек выглядел грязно. Chrome 121+ предпочитает стандартные
   scrollbar-width/color вебкитным ::-webkit-scrollbar — поэтому стандартные свойства
   отдаём только браузерам без вебкитного синтаксиса (Firefox). */
.col-body::-webkit-scrollbar{width:10px}
.col-body::-webkit-scrollbar-track{background:transparent}
.col-body::-webkit-scrollbar-thumb{border:2px solid transparent;border-radius:999px;background:transparent;background-clip:padding-box}
.col-body.is-scrolling::-webkit-scrollbar-thumb{background:var(--border-strong);background-clip:padding-box}
@supports not selector(::-webkit-scrollbar){
  .col-body{scrollbar-width:thin;scrollbar-color:transparent transparent}
  .col-body.is-scrolling{scrollbar-color:var(--border-strong) transparent}
}
.board-modal[hidden]{display:none}
.board-modal{position:fixed;inset:0;z-index:210;display:flex;align-items:center;justify-content:center;padding:20px}
.board-modal-backdrop{position:absolute;inset:0;background:rgba(17,24,39,.38);backdrop-filter:blur(3px)}
/* Прокручивается ТОЛЬКО тело: когда скроллилась сама карточка, её белая подложка
   уезжала вместе с содержимым и сверху просвечивал фон страницы. */
.board-modal-card{--modal-pad:18px;position:relative;display:flex;flex-direction:column;width:min(760px,100%);max-height:min(840px,calc(100vh - 40px));background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 24px 70px rgba(17,24,39,.24);padding:var(--modal-pad);isolation:isolate}
.board-modal-card>.board-modal-head{flex:none}
.board-modal-body{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;margin:0 calc(-1 * var(--modal-pad)) calc(-1 * var(--modal-pad));padding:0 var(--modal-pad) var(--modal-pad)}
.board-modal-card.import-modal-card{--modal-pad:22px;width:min(760px,100%)}
.confirm-modal-card{width:min(440px,100%);padding:20px}
.confirm-modal-card .board-modal-head{margin-bottom:18px}
.confirm-modal-card .board-modal-kicker{font-size:13px;color:var(--ink-2)}
.board-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px}
.board-modal-head h2{font-size:18px;font-weight:700;margin:0;letter-spacing:0;color:var(--ink)}
.board-modal-kicker{margin:5px 0 0;color:var(--muted);font-size:13px;line-height:1.35}
.board-modal-close{width:40px;height:40px;border:0;border-radius:8px;background:var(--surface-soft);color:var(--muted);font:inherit;font-size:22px;line-height:1;cursor:pointer;flex:none}
.board-modal-close:hover{background:var(--border);color:var(--ink)}
.board-view-form{display:flex;flex-direction:column;gap:14px}
.board-status-list{display:flex;flex-direction:column;gap:10px}
/* обучающий тур */
/* Выше модалок (у них 210): шаг «правила импорта» открывает модалку и рассказывает
   поверх неё — окно тура не должно тонуть под backdrop-ом. */
.tour-root{position:fixed;inset:0;z-index:300;pointer-events:none}
.tour-root>*{pointer-events:auto}
.tour-ring{position:fixed;border-radius:10px;box-shadow:0 0 0 9999px rgba(15,23,42,.55);
  outline:2px solid var(--accent);transition:top .2s,left .2s,width .2s,height .2s;pointer-events:none}
.tour-pop{position:fixed;width:340px;max-width:calc(100vw - 24px);background:var(--surface);border-radius:var(--radius);
  box-shadow:0 24px 60px rgba(15,23,42,.3);padding:20px 20px 16px;transition:top .2s,left .2s}
.tour-title{margin:0 0 8px;font-size:16px;font-weight:600;color:var(--ink);padding-right:74px}
.tour-text{margin:0 0 16px;font-size:13px;line-height:1.6;color:var(--ink-2)}
.tour-skip{position:absolute;top:14px;right:14px;border:0;background:none;color:var(--muted);font:inherit;font-size:12px;cursor:pointer}
.tour-skip:hover{color:var(--ink)}
.tour-foot{display:flex;align-items:center;justify-content:space-between;gap:12px}
/* Шагов много: россыпь точек превращалась в кашу, поэтому прогресс — тонкая полоска
   по верхней кромке окна плюс счётчик «7 из 18» в подвале. */
.tour-progress{position:absolute;top:0;left:0;right:0;height:3px;background:var(--accent-soft);border-radius:var(--radius) var(--radius) 0 0;overflow:hidden}
.tour-progress-fill{display:block;height:100%;width:0;background:var(--accent);border-radius:0 2px 2px 0;transition:width .25s ease}
.tour-count{font-size:12px;font-weight:600;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
.tour-actions{display:flex;gap:8px}
.tour-actions .btn:disabled{opacity:.4;cursor:default}
/* ---------- база знаний ---------- */
.kb-wrap{max-width:1040px}
.kb-hero{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-1);
  padding:22px 24px;margin-bottom:16px;display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}
.kb-hero h2{margin:0 0 6px;font-size:19px}
.kb-hero p{margin:0;color:var(--ink-2);max-width:560px}
.kb-hero-actions{display:flex;gap:8px;flex-wrap:wrap}
.kb-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:20px}
.kb-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-1);
  overflow:hidden;display:flex;flex-direction:column}
.kb-shot{background:linear-gradient(180deg,var(--surface-2),var(--surface));border-bottom:1px solid var(--border);
  padding:18px 18px 14px;display:flex;justify-content:center}
.kb-shot svg{width:100%;max-width:430px;height:auto;display:block}
.kb-body{padding:16px 18px 18px}
.kb-kicker{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:0 0 6px}
.kb-body h3{margin:0 0 8px;font-size:15px}
.kb-body p{margin:0 0 8px;color:var(--ink-2);line-height:1.6}
.kb-tips{margin:10px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:7px}
.kb-tips li{position:relative;padding-left:18px;color:var(--ink-2);font-size:12.5px;line-height:1.5}
.kb-tips li::before{content:'';position:absolute;left:2px;top:7px;width:6px;height:6px;border-radius:50%;background:var(--accent)}
.kb-tips li b{color:var(--ink)}
.kb-faq{margin-bottom:8px}
.kb-faq h2{font-size:17px;margin:6px 0 12px}
.kb-faq details{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);margin-bottom:8px;box-shadow:var(--shadow-1)}
.kb-faq summary{cursor:pointer;padding:12px 16px;font-weight:600;list-style-position:inside}
.kb-faq summary:hover{color:var(--accent)}
.kb-faq details[open] summary{border-bottom:1px solid var(--border)}
.kb-faq-a{padding:12px 16px;color:var(--ink-2);line-height:1.65}
.kb-faq-a p{margin:0 0 8px}
.kb-faq-a p:last-child{margin-bottom:0}
@media(max-width:980px){.kb-grid{grid-template-columns:1fr}}
.cstats{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 14px}
.cstat{flex:1 1 160px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:11px 14px;box-shadow:var(--shadow-soft)}
.cstat-v{font-size:20px;font-weight:600;color:var(--ink);line-height:1.15}
.cstat-k{font-size:12px;color:var(--muted);margin-top:2px}
.cstat-x{font-size:12px;color:var(--ink-2);margin-top:5px}
.card-history{opacity:.92;border-style:dashed;cursor:default}
.card-history:hover{opacity:1}
.board-hide-list{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.wz-hide-row{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--ink-2);cursor:pointer}
.wz-hide-row input{width:15px;height:15px;accent-color:var(--accent)}
.board-status-hint{color:var(--muted);font-size:12px;margin:0 0 12px}
.board-status-hint span{font-size:14px;vertical-align:middle}
.board-status-row{display:grid;grid-template-columns:26px minmax(0,1fr) auto;gap:10px;align-items:center;border-radius:10px}
.board-status-drag{display:inline-flex;align-items:center;justify-content:center;width:26px;height:34px;color:var(--faint);cursor:grab;border-radius:8px}
.board-status-drag:hover{color:var(--muted);background:var(--surface-soft)}
.board-status-drag svg{width:16px;height:16px}
.board-status-row.dragging{opacity:.5}
.board-status-row.drag-over{box-shadow:0 0 0 2px var(--accent) inset}
.board-status-lock{height:34px;display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft);color:var(--muted);font-size:12px;font-weight:600;padding:0 10px;white-space:nowrap}
.label-picker[hidden]{display:none}
.label-picker{position:fixed;inset:0;z-index:95;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(17,24,39,.38);backdrop-filter:blur(3px)}
.label-picker-panel{width:min(520px,100%);max-height:min(720px,calc(100dvh - 40px));overflow:auto;background:var(--surface);color:var(--ink);border:1px solid var(--border);border-radius:12px;box-shadow:0 24px 70px rgba(17,24,39,.24);padding:18px;display:flex;flex-direction:column;gap:16px}
.label-picker-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.label-back{width:34px;height:34px;border:0;border-radius:8px;background:var(--surface-soft);color:var(--muted);display:inline-flex;align-items:center;justify-content:center;font:inherit;font-size:22px;line-height:1;cursor:pointer;flex:none}
.label-back:hover{background:var(--border);color:var(--ink)}
.label-picker-title{font-size:18px;font-weight:700;line-height:1.2}
.label-picker-sub{margin:4px 0 0;color:var(--muted);font-size:13px;line-height:1.35}
.label-section-title{font-size:12px;color:var(--faint);font-weight:700;text-transform:uppercase;letter-spacing:.03em;margin-bottom:8px}
.label-current-list{display:flex;flex-wrap:wrap;gap:7px;min-height:31px}
.label-current-empty{color:var(--faint);font-size:13px;line-height:31px}
.label-current-pill{display:inline-flex;align-items:center;gap:4px}
.label-current-remove{width:22px;height:22px;border:0;border-radius:999px;background:var(--surface-soft);color:var(--muted);font:inherit;font-size:15px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.label-current-remove:hover{background:var(--red-bg);color:var(--red-fg)}
.label-search-wrap{position:relative}
.label-search-wrap svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--faint);pointer-events:none}
.label-search-input{height:42px;padding-left:36px;padding-right:38px}
.label-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:30px;height:30px;border:0;border-radius:8px;background:transparent;color:var(--muted);font-size:22px;line-height:1;cursor:pointer}
.label-clear:hover{background:var(--surface-soft);color:var(--ink)}
.label-create-row{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px;font-weight:600;flex-wrap:wrap}
.label-create-row[hidden]{display:none}
.label-create-row .label-badge{border:0;font:inherit;font-size:13px;padding:5px 12px;cursor:pointer}
.board-import-settings form{margin:0}
.board-import-settings .note{margin-bottom:0}
.board-import-form{display:flex;flex-direction:column;gap:14px}
.import-section{border:1px solid var(--border);border-radius:12px;background:var(--surface);padding:18px}
.import-section-head{display:flex;align-items:center;gap:10px;margin-bottom:16px}
.import-advanced{border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.import-advanced>summary{list-style:none;cursor:pointer;padding:16px 18px;display:flex;align-items:center;gap:10px;font-weight:600;color:var(--ink);border-radius:12px}
.import-advanced>summary::-webkit-details-marker{display:none}
.import-advanced>summary:hover{background:var(--surface-2)}
.import-advanced-hint{margin-left:auto;font-weight:500;font-size:12px;color:var(--faint)}
.import-advanced-chevron{transition:transform .16s ease;color:var(--muted);font-size:12px}
.import-advanced[open]>summary .import-advanced-chevron{transform:rotate(180deg)}
.import-advanced[open]>summary{border-bottom:1px solid var(--border);border-radius:12px 12px 0 0}
.import-advanced-body{padding:16px 18px 18px}
.import-dates{display:flex;gap:12px;flex-wrap:wrap;margin-top:10px}
.import-dates[hidden]{display:none}
.import-dates label{display:flex;flex-direction:column;gap:4px;min-width:170px;flex:1}
.import-dates .set-lbl{margin:0}
.import-dates .input{width:100%}
.import-icon{width:28px;height:28px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;background:var(--surface-soft);color:var(--muted);border:1px solid var(--border);flex:none}
.import-icon svg{width:16px;height:16px}
.import-section-title{font-size:15px;font-weight:700;color:var(--ink)}
.board-import-form .input:focus{border-color:var(--border-strong);box-shadow:0 0 0 3px rgba(29,35,41,.08)}
.import-field{margin-top:14px}
.import-field:first-child{margin-top:0}
.import-label-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}
.import-label-row .set-lbl{margin:0}
.field-count{font-size:12px;color:var(--faint);white-space:nowrap}
.import-section textarea.input{min-height:68px;resize:vertical;line-height:1.45}
.import-section textarea.import-places{min-height:54px}
.import-help{margin:7px 0 0;color:var(--faint);font-size:12px;line-height:1.4}
.geo-picker{position:relative}
.geo-picker-trigger{width:100%;min-height:42px;border:1px solid var(--border-strong);border-radius:8px;background:var(--surface);color:var(--ink);font:inherit;font-size:13px;padding:9px 11px;display:flex;align-items:center;justify-content:space-between;gap:10px;cursor:pointer;text-align:left}
.geo-picker-trigger:hover{border-color:var(--ink)}
.geo-picker-chevron{color:var(--muted);font-size:15px;line-height:1}
.geo-tree-popover{margin-top:10px;border:1px solid var(--border);border-radius:8px;background:var(--surface);box-shadow:0 18px 44px rgba(23,29,39,.12);padding:12px}
.geo-tree-popover[hidden]{display:none}
.geo-tree-search{position:relative;display:block;margin-bottom:10px}
.geo-tree-search input{height:38px;padding-left:34px}
.geo-tree-search svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--faint);z-index:1}
.geo-tree-grid{display:grid;grid-template-columns:minmax(170px,.9fr) minmax(210px,1fr) minmax(170px,.9fr);gap:10px;min-height:320px}
.geo-tree-col{border-right:1px solid var(--border);padding-right:8px;max-height:340px;overflow:auto}
.geo-tree-col:last-child{border-right:0;padding-right:0}
.geo-tree-pane{display:none}
.geo-tree-pane.is-active{display:block}
.geo-tree-row{width:100%;min-height:38px;border:0;background:transparent;border-radius:8px;color:var(--ink);padding:8px 10px;display:flex;align-items:center;gap:9px;text-align:left;font:inherit;font-size:13px;cursor:pointer}
.geo-tree-row:hover,.geo-tree-row.is-active{background:var(--surface-soft)}
.geo-tree-row.is-checked{font-weight:700}
.geo-tree-row input{width:18px;height:18px;accent-color:var(--ink);flex:none}
.geo-tree-row span{min-width:0;overflow:hidden;text-overflow:ellipsis}
.geo-tree-city{color:var(--muted)}
.geo-tree-row[hidden]{display:none}
.import-chip-row{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:10px}
.board-import-form .optchip{margin:0;border:1px solid var(--border);background:var(--surface);color:var(--muted);border-radius:8px;padding:8px 12px}
.board-import-form .optchip:has(input:checked){background:var(--ink);border-color:var(--ink);color:var(--surface);box-shadow:0 8px 18px rgba(29,35,41,.12)}
.board-import-form .optchip.all:has(input:checked){background:var(--ink);border-color:var(--ink);color:var(--surface)}
.import-param-grid{display:grid;grid-template-columns:minmax(230px,1fr) minmax(140px,.62fr) minmax(210px,.9fr);gap:16px;align-items:start}
.import-param-block .set-lbl{margin-bottom:8px}
.board-import-form .seg{background:var(--surface);border:1px solid var(--border);padding:3px;border-radius:8px}
.board-import-form .seg span{border-radius:8px;padding:7px 12px}
.board-import-form .seg label:has(input:checked) span{background:var(--surface-soft);color:var(--ink);box-shadow:inset 0 0 0 1px var(--border-strong)}
.import-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;justify-content:space-between;margin-top:6px;padding-top:16px;border-top:1px solid var(--border)}
.import-actions .btn{min-height:46px;border-radius:10px;padding:10px 20px;display:inline-flex;align-items:center;gap:9px;justify-content:center;font-weight:600;font-size:13px}
.import-actions .btn svg{width:17px;height:17px;flex:none}
.import-action-icon{font-size:18px;line-height:1}
.import-action-text{display:flex;flex-direction:column;align-items:flex-start;font-size:13px;font-weight:700;line-height:1.15}
.import-action-text span{font-size:12px;font-weight:500;opacity:.72;margin-top:3px}
.import-actions .btn-primary{min-width:230px}
/* Форма поиска в стиле «строка: подпись слева — поле справа» (как у Контур.Закупок) */
.sf-form{display:flex;flex-direction:column}
.sf-top{display:flex;align-items:center;justify-content:flex-end;padding:0 0 10px}
.sf-toggle{background:none;border:none;color:var(--accent);font:inherit;font-size:13px;font-weight:600;cursor:pointer;padding:4px 0;white-space:nowrap}
.sf-toggle:hover{text-decoration:underline}
.sf-row{display:grid;grid-template-columns:172px minmax(0,1fr);gap:8px 18px;padding:14px 0;border-top:1px solid var(--border);align-items:start}
.sf-lbl{display:flex;align-items:center;gap:7px;padding-top:7px}
.sf-lbl .set-lbl{margin:0}
.sf-form textarea.input{min-height:44px;resize:vertical;line-height:1.45}
.tip{position:relative;display:inline-flex;width:16px;height:16px;border-radius:50%;border:1px solid var(--border-strong);color:var(--muted);font-size:10px;font-weight:700;align-items:center;justify-content:center;cursor:help;flex:none}
.tip::after{content:attr(data-tip);position:absolute;left:0;top:calc(100% + 8px);z-index:80;width:min(320px,74vw);background:var(--ink);color:var(--surface);border-radius:9px;padding:9px 12px;font-size:12px;font-weight:400;line-height:1.5;text-align:left;box-shadow:0 12px 28px rgba(15,23,42,.22);white-space:normal;opacity:0;pointer-events:none;transform:translateY(-4px);transition:opacity .12s ease,transform .12s ease}
.tip:hover::after,.tip:focus::after,.tip:focus-visible::after{opacity:1;transform:none}
/* Мониторинг: первый вход, сводка правил, расписание */
.mon-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:14px 0 18px}
.mon-step{display:flex;gap:10px;align-items:flex-start;font-size:13px}
.mon-step-n{width:24px;height:24px;border-radius:50%;background:var(--ink);color:var(--surface);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;flex:none}
.mon-step span{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.mon-chan-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.mon-chan-card{border:1px solid var(--border);border-radius:12px;padding:16px;background:var(--surface)}
.mon-kw-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.kw-chip{display:inline-flex;background:var(--accent-soft);border:1px solid var(--accent-line);color:var(--ink);border-radius:999px;padding:4px 12px;font-size:13px;font-weight:600}
.mon-sched{display:flex;align-items:center;gap:10px;margin-top:14px;padding-top:14px;border-top:1px solid var(--border);flex-wrap:wrap}
.mon-sched select{max-width:230px}
@media(max-width:680px){.sf-row{grid-template-columns:1fr;gap:6px}.sf-lbl{padding-top:0}.mon-steps,.mon-chan-cards{grid-template-columns:1fr}}
.import-note-line{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:12px;line-height:1.35}
.import-note-line svg{width:14px;height:14px;flex:none;color:var(--faint)}
.col-body.drop-over{background:var(--accent-soft);box-shadow:inset 0 0 0 1.5px var(--accent)}
.card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:var(--board-card-pad);cursor:grab;box-shadow:none;transition:border-color .14s,transform .08s,box-shadow .14s;min-width:0;-webkit-user-select:none;user-select:none}
.card:hover{border-color:var(--border-strong);transform:translateY(-1px);box-shadow:0 10px 24px rgba(23,29,39,.08)}
.card:active{cursor:grabbing}
/* оригинал убираем из потока: его место занимает плейсхолдер такой же высоты */
.card.dragging{display:none}
.board.is-dragging{scroll-snap-type:none;cursor:grabbing}
/* браузерная привязка скролла воевала бы с автоскроллом у края колонки */
.board.is-dragging .col-body{overflow-anchor:none}
.board.is-dragging .card{cursor:grabbing}
.board.is-dragging .card:hover{transform:none;box-shadow:none;border-color:var(--border)}
.board.is-dragging .card .card-menu-btn{opacity:0;pointer-events:none}
.card-menu-btn{position:absolute;top:8px;right:8px;width:28px;height:28px;border:1px solid transparent;border-radius:8px;background:var(--surface);color:var(--muted);display:inline-flex;align-items:center;justify-content:center;font:inherit;font-size:22px;font-weight:700;line-height:1;cursor:pointer;z-index:2;opacity:0;pointer-events:none;transform:translateY(-2px);transition:opacity .12s,transform .12s,background .12s,color .12s,box-shadow .12s,border-color .12s}
.card:hover .card-menu-btn,.card:focus-within .card-menu-btn{opacity:1;pointer-events:auto;transform:none}
/* На тач-экране наведения не бывает: «⋮» и кнопки колонки оставались невидимыми,
   и перенести карточку между колонками с телефона было нечем. */
@media(hover:none){
  .card-menu-btn,.col-head-btn{opacity:1;pointer-events:auto;transform:none}
}
.card-menu-btn:hover{background:var(--surface-soft);color:var(--ink);border-color:var(--border);box-shadow:0 6px 16px rgba(23,29,39,.1)}
/* Место под кнопку «⋮» — по её РЕАЛЬНОМУ следу: 28px ширины плюс 8px отступа справа.
   Было зарезервировано 28, и на наведении непрозрачная кнопка наезжала на последний
   значок — со стороны выглядело, будто значок пропадает. */
.card .c-badges{display:flex;flex-wrap:wrap;gap:6px;margin:0 42px 12px 0;min-width:0}
.card .c-badges .badge{max-width:210px;overflow:hidden;text-overflow:ellipsis}
/* Лишние значки убирает скрипт и ставит вместо них счётчик «+N», по которому ряд
   разворачивается. Раньше ряд просто резали по высоте (max-height): нижняя строка
   обрезалась пополам, а метки за ней пропадали совсем и добраться до них было нечем.
   [hidden] задаём явно: display:inline-flex у .badge перебивает встроенное правило. */
.card .c-badges > [hidden]{display:none}
.c-badges-more{flex:none;font:inherit;font-size:12px;font-weight:600;line-height:1.4;padding:4px 9px;
  border-radius:var(--radius-label);border:1px dashed var(--border);background:transparent;color:var(--muted);cursor:pointer;white-space:nowrap}
.c-badges-more:hover{background:var(--surface-soft);color:var(--ink);border-style:solid}
.card .c-work{font-weight:600;font-size:15px;line-height:1.4;color:var(--ink);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:10px}
.card .c-work:hover{color:var(--accent)}
.card .c-cust-sub{font-size:12px;color:var(--muted);margin-bottom:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:none;letter-spacing:0}
.card a.c-cust-sub:hover,.regional-customer-link:hover{color:var(--accent);text-decoration:underline;text-underline-offset:2px}
.card .c-foot{border-top:1px solid var(--border);padding-top:12px;display:flex;align-items:center;justify-content:space-between;gap:8px}
.card .c-foot-main{min-width:0}
.card .c-nmck{display:block;font-weight:600;font-size:18px;font-variant-numeric:tabular-nums;line-height:1.12}
.card .c-deadline{display:block;margin-top:4px;font-size:12px;color:var(--faint);white-space:nowrap}
.card .c-deadline.is-expired{color:var(--red-fg);font-weight:600}
.card .c-foot-side{display:flex;align-items:center;gap:8px;flex:none}
/* источник закупки: значок + название, тихой подписью справа от цены */
.c-source{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;line-height:1;color:var(--muted);white-space:nowrap}
.c-source svg{width:15px;height:15px;flex:none}
.c-source-eis{color:var(--accent)}
.c-source-lenreg,.c-source-spb{color:var(--muted)}
.card .c-bookmark{width:30px;height:30px;border:0;background:transparent;color:var(--faint);border-radius:8px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.card .c-bookmark:hover{background:var(--surface-soft);color:var(--ink)}
.card .c-bookmark svg{width:18px;height:18px}
/* подсказки заказчика в форме импорта */
.customer-suggest{margin-top:6px;border:1px solid var(--border);border-radius:10px;background:var(--surface);overflow:hidden;max-height:260px;overflow-y:auto}
.customer-suggest-row{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid var(--border);background:none;padding:9px 12px;font:inherit;cursor:pointer}
.customer-suggest-row:last-child{border-bottom:0}
.customer-suggest-row:hover{background:var(--surface-soft)}
.customer-suggest-name{font-size:13px;font-weight:600;line-height:1.3}
.customer-suggest-meta{font-size:11.5px;color:var(--muted);margin-top:2px;line-height:1.35}
.customer-suggest-empty{padding:9px 12px;font-size:12px;color:var(--muted)}
.customer-suggest-src{font-size:10.5px;color:var(--faint);text-transform:uppercase;letter-spacing:.04em}
/* догрузка колонки: кнопка-хвост, она же цель наблюдателя за прокруткой */
.col-more{flex:none;width:100%;border:1px dashed var(--border-strong);background:var(--surface-soft);color:var(--muted);
  border-radius:8px;padding:10px;font:inherit;font-size:12.5px;cursor:pointer;transition:color .12s,border-color .12s,background .12s}
.col-more:hover{color:var(--ink);border-color:var(--accent);background:var(--surface)}
.col-more.is-loading{color:var(--faint);border-style:solid;cursor:default}
/* слот будущей позиции — высоту задаёт JS по размеру перетаскиваемой карточки */
.drop-placeholder{flex:none;box-sizing:border-box;min-height:6px;border-radius:8px;border:1.5px dashed var(--accent);background:var(--accent-soft)}
/* корзина перетаскивания */
#drag-trash{position:fixed;left:50%;bottom:30px;transform:translate(-50%,18px);display:flex;align-items:center;gap:9px;
  background:var(--surface);border:1px solid var(--border-strong);color:var(--muted);padding:14px 28px;border-radius:999px;
  box-shadow:0 18px 44px rgba(31,35,40,.16);font-size:13px;font-weight:500;opacity:0;pointer-events:none;z-index:50;
  transition:opacity .15s,transform .15s,background .12s,color .12s,border-color .12s}
#drag-trash svg{width:17px;height:17px}
/* невидимый запас вокруг таблетки: в узкую полоску курсор с ходу не попадал */
#drag-trash::before{content:'';position:absolute;top:-22px;bottom:-30px;left:-70px;right:-70px;border-radius:999px}
#drag-trash.show{opacity:1;transform:translate(-50%,0);pointer-events:auto}
#drag-trash.over{background:var(--red-bg);color:var(--red-fg);border-color:var(--red-fg);transform:translate(-50%,0) scale(1.04);box-shadow:0 20px 48px rgba(31,35,40,.2)}
.col-add .btn{width:100%}
.hidden{display:none!important}
/* table */
.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-soft)}
.customer-contract-wrap{max-height:68vh;overflow:auto}
.customer-contract-wrap table.crm th{z-index:3;box-shadow:0 1px 0 var(--border)}
.customer-contract-wrap table.crm td{vertical-align:top}
.customer-contract-wrap .contract-subject{font-weight:500;line-height:1.35;max-width:560px}
.customer-contract-wrap .contract-meta{margin-top:4px;font-size:12px}
.customer-contract-wrap .contract-supplier{max-width:360px;line-height:1.35}
.customer-list-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-soft)}
.customer-list-head{position:sticky;top:0;z-index:2;background:var(--surface-soft);border-bottom:1px solid var(--border);padding:11px 14px;color:var(--faint);font-size:12px;font-weight:500;display:grid;gap:12px}
.customer-list-head [data-customer-notice-sort]{cursor:pointer;user-select:none}
.customer-list-head [data-customer-notice-sort]:hover{color:var(--ink)}
.customer-contract-list .customer-list-head{grid-template-columns:105px minmax(0,1.5fr) minmax(180px,.8fr) 150px 110px 92px}
.customer-section{margin-top:18px}
.customer-section-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0 0 10px}
.customer-section-title h3{margin:0}
.stats[data-customer-stats]{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.customer-brief{margin:2px 0 4px;padding:12px 14px;background:var(--surface-soft);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13px;line-height:1.55;color:var(--ink-2)}
.customer-brief p{margin:0 0 6px}
.customer-brief p:last-child{margin-bottom:0}
.customer-brief-score b{font-size:14px}
.customer-notice-filterbar{margin-top:12px;display:flex;align-items:end;justify-content:flex-start;gap:14px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px}
.customer-filter-group{display:flex;flex-direction:column;gap:4px}
.customer-filter-label{font-size:12px;color:var(--faint);font-weight:600}
.customer-filter-group select.input{min-width:150px;padding:7px 10px;font-size:13px}
.customer-filter-meta{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.reduction-good{color:var(--ok);font-weight:600}
.reduction-mid{color:var(--warn);font-weight:600}
.reduction-high{color:var(--danger);font-weight:600}
.customer-notice-table-wrap{margin-top:16px;background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:var(--shadow-soft)}
.customer-notice-table-scroll{overflow-x:auto}
.customer-notice-table{width:100%;min-width:860px;table-layout:auto}
table.crm.customer-notice-table th{font-size:12px;color:var(--faint);font-weight:700;background:var(--surface-soft);white-space:normal;line-height:1.3;position:sticky;top:0;z-index:2}
table.crm.customer-notice-table th.notice-date{white-space:nowrap}
.customer-notice-table th[data-customer-notice-sort]{cursor:pointer;user-select:none}
.customer-notice-table th[data-customer-notice-sort]:hover{color:var(--ink)}
.customer-notice-table th .th-sub{display:block;font-weight:600;color:var(--faint);font-size:11px;margin-top:2px;cursor:pointer}
.customer-notice-table th .th-sub:hover{color:var(--ink)}
.customer-notice-table td{vertical-align:top;padding:13px 16px}
.customer-notice-table .notice-subject-cell{min-width:260px}
.customer-notice-table .notice-date{white-space:nowrap;color:var(--muted);width:90px}
.customer-notice-table .notice-winner{max-width:260px;overflow-wrap:anywhere}
.customer-notice-table td.customer-row-num{width:96px}
.customer-notice-table .notice-action{width:96px;white-space:nowrap}
.customer-notice-table .notice-num-full{cursor:default}
.customer-notice-table .customer-row-title,.customer-notice-table .customer-row-subject{overflow-wrap:anywhere}
.customer-notice-table .notice-subject-cell .customer-row-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.customer-notice-table .notice-reg-link{font-variant-numeric:tabular-nums;color:var(--accent)}
.customer-notice-table-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 18px;border-top:1px solid var(--border);color:var(--muted);font-size:12px}
.regional-history-note{margin:12px 2px 0}
.stats.regional-history-stats{grid-template-columns:repeat(5,minmax(0,1fr))}
.regional-history-loading{margin-top:18px;padding:26px}
.regional-loading-head{display:flex;align-items:center;gap:12px;font-size:15px;font-weight:700}
.regional-loading-spinner{width:22px;height:22px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:regional-spin .8s linear infinite}
.regional-loading-track{height:7px;margin-top:18px;border-radius:999px;background:var(--surface-2);overflow:hidden}
.regional-loading-bar{width:38%;height:100%;border-radius:inherit;background:var(--accent);animation:regional-load 1.35s ease-in-out infinite}
@keyframes regional-spin{to{transform:rotate(360deg)}}
@keyframes regional-load{0%{transform:translateX(-110%)}100%{transform:translateX(360%)}}
.regional-history-wrap{margin-top:10px}
.regional-history-table{min-width:1428px;table-layout:fixed}
.regional-history-table th:nth-child(1){width:250px}
.regional-history-table th:nth-child(2){width:108px}
.regional-history-table th:nth-child(3){width:520px}
.regional-history-table th:nth-child(4){width:86px}
.regional-history-table th:nth-child(5){width:96px}
.regional-history-table th:nth-child(6){width:110px}
.regional-history-table th:nth-child(7){width:90px}
.regional-history-table th:nth-child(8){width:168px}
.regional-history-table .notice-subject-cell{min-width:0;width:250px}
.regional-history-table .notice-subject-cell .customer-row-subject{
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden
}
.regional-history-table .notice-winner{width:520px;max-width:none;overflow:visible}
.regional-history-table .regional-price-check{min-width:132px}
.regional-history-table tr[hidden]{display:none!important}
.regional-offers{margin-top:7px}
.regional-offers>summary{display:inline-flex;align-items:center;gap:5px;color:var(--accent);font-size:12px;font-weight:600;cursor:pointer;list-style:none}
.regional-offers>summary::-webkit-details-marker{display:none}
.regional-offers>summary::before{content:"›";font-size:16px;line-height:1;transition:transform .14s}
.regional-offers[open]>summary::before{transform:rotate(90deg)}
.regional-offer-list{width:100%;margin-top:8px;border:1px solid var(--border);border-radius:9px;overflow:hidden;background:var(--surface)}
.regional-offer-row{display:grid;grid-template-columns:90px minmax(0,1fr) 104px;gap:10px;align-items:center;padding:8px 10px;border-bottom:1px solid var(--border);font-size:12px}
.regional-offer-row:last-child{border-bottom:0}
.regional-offer-row.is-winner{background:var(--ok-soft)}
.regional-offer-name{min-width:0;overflow-wrap:anywhere}
.regional-offer-price{font-weight:600;white-space:nowrap;text-align:right}
[data-customer-notice-view="cards"] .regional-history-table .notice-winner{grid-column:1/-1;max-width:none}
[data-customer-notice-view="cards"] .regional-offers{width:100%;max-width:none}
[data-customer-notice-view="cards"] .regional-offer-list{box-shadow:none}
.regional-supplier-section{margin-top:18px}
.regional-supplier-list{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-soft)}
.regional-supplier-card{border-bottom:1px solid var(--border)}
.regional-supplier-card:last-child{border-bottom:0}
.regional-supplier-card>summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:38px minmax(240px,1fr) 92px 130px 100px 18px;gap:14px;align-items:center;padding:10px 14px}
.regional-supplier-card>summary::-webkit-details-marker{display:none}
.regional-supplier-card[open]>summary{background:var(--surface-2);border-bottom:1px solid var(--border)}
.regional-supplier-name{font-weight:600;min-width:0;overflow-wrap:anywhere}
.regional-supplier-meta{font-size:12px;color:var(--faint);margin-top:2px}
.regional-supplier-bar{height:4px;max-width:520px;margin-top:6px;border-radius:999px;background:var(--surface-3);overflow:hidden}
.regional-supplier-bar>span{display:block;height:100%;border-radius:inherit;background:var(--accent)}
.regional-supplier-metric{text-align:right;font-weight:600}
.regional-supplier-metric small{display:block;color:var(--faint);font-weight:500}
.regional-supplier-purchases{padding:8px 14px 12px 66px}
.regional-supplier-purchase{display:grid;grid-template-columns:90px minmax(0,1fr) 110px 168px;gap:12px;align-items:center;padding:7px 0;border-bottom:1px solid var(--border);font-size:12px}
.regional-supplier-purchase-name{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.regional-supplier-purchase-result{text-align:right}
.regional-supplier-purchase:last-child{border-bottom:0}
@media(max-width:720px){
  .stats.regional-history-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .regional-offer-row{grid-template-columns:1fr auto}
  .regional-offer-row>div:first-child{grid-column:1/-1}
  .regional-supplier-card>summary{grid-template-columns:32px minmax(0,1fr) 18px}
  .regional-supplier-metric{display:none}
  .regional-supplier-purchases{padding-left:14px}
  .regional-supplier-purchase{grid-template-columns:80px minmax(0,1fr)}
  .regional-supplier-purchase>div:last-child{display:none}
}
@media(min-width:721px) and (max-width:1100px){.stats.regional-history-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){.customer-notice-table .notice-subject-cell{min-width:0}}
.customer-supplier-wrap{margin-top:10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-soft);overflow:hidden}
.customer-supplier-wrap table.crm td{vertical-align:top}
.customer-supplier-cards{display:block}
.supplier-card{background:transparent;border:0;border-bottom:1px solid var(--border);border-radius:0;box-shadow:none;overflow:hidden}
.supplier-card:last-child{border-bottom:none}
.supplier-card>summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:30px minmax(0,1fr) 64px 104px 84px 18px;gap:10px;align-items:center;padding:6px 12px;min-height:44px}
.supplier-card>summary::-webkit-details-marker{display:none}
.supplier-card:hover{background:var(--surface-2)}
.supplier-card[open]>summary{border-bottom:1px solid var(--border);background:var(--surface-2)}
.supplier-card .customer-row-title{font-size:13px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.supplier-card .customer-row-meta{font-size:11px;margin-top:0;display:inline-block}
.supplier-card .customer-row-num{font-size:13px}
.supplier-card .customer-row-num .customer-row-meta{display:block}
.supplier-card .customer-detail-body{padding:0 10px 10px 10px;font-size:12px}
/* переключатель вида списка закупок */
.view-switch{display:inline-flex;gap:2px;padding:2px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm)}
.view-switch-btn{display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;color:var(--muted);font:inherit;font-size:12px;font-weight:600;padding:5px 10px;border-radius:6px;cursor:pointer;transition:background .14s,color .14s}
.view-switch-btn svg{width:14px;height:14px;flex:none}
.view-switch-btn:hover{color:var(--ink)}
.view-switch-btn[aria-pressed="true"]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1)}
.view-switch-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}
/* карточный вид: та же разметка таблицы, другая раскладка — сортировка, фильтры и живое
   обновление строк продолжают работать без второго рендерера */
.customer-notice-table-wrap[data-customer-notice-view="cards"]{background:transparent;border:0;box-shadow:none;overflow:visible}
[data-customer-notice-view="cards"] .customer-notice-table-scroll{overflow:visible}
[data-customer-notice-view="cards"] .customer-notice-table{min-width:0;display:block}
[data-customer-notice-view="cards"] .customer-notice-table thead{display:none}
[data-customer-notice-view="cards"] .customer-notice-table tbody{display:grid;gap:10px}
[data-customer-notice-view="cards"] .customer-notice-table tr{display:grid;
  grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:12px 20px;align-items:start;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  padding:14px 16px;box-shadow:var(--shadow-1);transition:border-color .14s,box-shadow .14s}
[data-customer-notice-view="cards"] .customer-notice-table tr:hover{border-color:var(--border-strong);box-shadow:var(--shadow-2)}
[data-customer-notice-view="cards"] .customer-notice-table td{display:block;padding:0;border:0;width:auto;text-align:left;vertical-align:baseline}
[data-customer-notice-view="cards"] .regional-history-table .notice-winner{width:auto}
[data-customer-notice-view="cards"] .notice-subject-cell{grid-column:1/-2;min-width:0}
[data-customer-notice-view="cards"] .notice-action{grid-column:-2/-1;justify-self:end;white-space:nowrap}
[data-customer-notice-view="cards"] .customer-row-subject{font-size:14px;font-weight:600;line-height:1.35;white-space:normal;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
[data-customer-notice-view="cards"] .notice-winner{max-width:none;overflow-wrap:anywhere;grid-column:span 2}
/* подпись показателя берём из data-label — в таблице её даёт шапка, в карточке шапки нет */
[data-customer-notice-view="cards"] td[data-label]:not(.notice-action)::before{content:attr(data-label);
  display:block;font-size:11px;font-weight:600;color:var(--faint);margin-bottom:2px}
[data-customer-notice-view="cards"] .customer-row-num{font-size:14px;font-weight:600}
@media (max-width:720px){
  [data-customer-notice-view="cards"] .customer-notice-table tr{grid-template-columns:repeat(2,minmax(0,1fr))}
  [data-customer-notice-view="cards"] .notice-subject-cell{grid-column:1/-1}
  [data-customer-notice-view="cards"] .notice-action{grid-column:1/-1;justify-self:start}
}
.supplier-rank{width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;background:var(--surface-2);color:var(--muted);flex:none}
.supplier-rank-1{background:#f6e7b2;color:#7a5a00}
.supplier-rank-2{background:#e6e9ef;color:#5b6472}
.supplier-rank-3{background:#f0d9c4;color:#8a4b17}
.supplier-ident{min-width:0}
.supplier-chevron{color:var(--faint);font-size:12px;transition:transform .15s ease;justify-self:end}
.supplier-card[open] .supplier-chevron{transform:rotate(180deg)}
.supplier-card:hover .supplier-chevron{color:var(--ink)}
.supplier-bar{margin-top:3px;height:3px;max-width:420px;border-radius:2px;background:var(--surface-2);overflow:hidden}
.supplier-bar span{display:block;height:100%;border-radius:2px;background:var(--accent);opacity:.55}
.supplier-card-top .supplier-bar span{opacity:.9}
.supplier-row{list-style:none;cursor:default;display:grid;grid-template-columns:30px minmax(0,1fr) 64px 104px;gap:10px;align-items:center;padding:6px 12px;min-height:44px;border-bottom:1px solid var(--border)}
.supplier-row:last-child{border-bottom:none}
.supplier-row:hover{background:var(--surface-2)}
.customer-supplier-name{font-weight:500;line-height:1.35;max-width:760px;overflow-wrap:anywhere}
.customer-contract-row{border-bottom:1px solid var(--border);background:var(--surface)}
.customer-contract-row:last-child{border-bottom:none}
.customer-contract-row>summary{list-style:none;cursor:pointer}
.customer-contract-row>summary::-webkit-details-marker{display:none}
.customer-contract-summary{display:grid;gap:12px;align-items:start;padding:14px}
.customer-contract-summary{grid-template-columns:105px minmax(0,1.5fr) minmax(180px,.8fr) 150px 110px 92px}
.customer-contract-row:hover{background:var(--surface-2)}
.customer-row-title{font-weight:500;line-height:1.35;min-width:0}
.customer-row-subject{font-weight:500;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.customer-row-meta{font-size:12px;color:var(--muted);margin-top:4px}
.customer-row-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.customer-detail-body{padding:0 14px 14px 14px;color:var(--muted);font-size:13px;line-height:1.45}
.customer-detail-grid{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:10px;margin-top:10px}
.customer-detail-cell{background:var(--surface-soft);border:1px solid var(--border);border-radius:8px;padding:9px 10px}
.customer-detail-cell .label{display:block;color:var(--faint);font-size:12px;margin:0 0 3px}
.supplier-contracts{margin-top:8px;border:1px solid var(--border);border-radius:8px;overflow:hidden}
.supplier-contract-line{display:grid;grid-template-columns:84px minmax(0,1fr) 116px 76px;gap:10px;align-items:start;padding:7px 9px;border-bottom:1px solid var(--border);background:var(--surface)}
.supplier-contract-line:last-child{border-bottom:none}
.supplier-contract-subject{min-width:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.customer-toolbar{display:flex;justify-content:space-between;gap:12px;align-items:end;flex-wrap:wrap}
.customer-sort-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.customer-sort-actions .mini-chip{cursor:pointer}
@media(max-width:900px){
  .customer-list-head{display:none}
  .customer-contract-summary{grid-template-columns:1fr}
  .supplier-card>summary{grid-template-columns:1fr}
  .customer-row-num{text-align:left}
  .customer-detail-grid,.supplier-contract-line{grid-template-columns:1fr}
}
table.crm{width:100%;border-collapse:collapse;font-size:13px}
table.crm th{text-align:left;font-weight:500;color:var(--faint);font-size:12px;padding:11px 14px;
  border-bottom:1px solid var(--border);background:var(--surface-soft);cursor:pointer;white-space:nowrap;position:sticky;top:0}
table.crm th:hover{color:var(--ink)}
table.crm td{padding:12px 14px;border-bottom:1px solid var(--border);vertical-align:middle}
table.crm tr:last-child td{border-bottom:none}
table.crm tr:hover td{background:var(--surface-2)}
table.crm .t-cust{font-weight:500;max-width:280px}
table.crm .t-subj{color:var(--muted);max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Список закупок: строки-карточки. Таблицу оставляем ради сортировки по столбцам,
   но рисуем как карточки — плотно, без сеточной «бухгалтерии». */
.list-wrap{overflow:visible;border:0;background:transparent;box-shadow:none}
table.crm.list-cards{border-collapse:separate;border-spacing:0 10px}
table.crm.list-cards th{background:transparent;border-bottom:0;padding:2px 16px 0;position:static}
table.crm.list-cards td{border-bottom:0;background:var(--surface);padding:16px 14px;vertical-align:middle;
  border-top:1px solid var(--border);border-bottom:1px solid var(--border);transition:box-shadow .14s,border-color .14s}
table.crm.list-cards td:first-child{border-left:1px solid var(--border);border-radius:12px 0 0 12px;padding-left:18px}
table.crm.list-cards td:last-child{border-right:1px solid var(--border);border-radius:0 12px 12px 0;padding-right:18px}
table.crm.list-cards tr:hover td{background:var(--surface);border-color:var(--border-strong);box-shadow:0 8px 22px rgba(23,29,39,.07)}
table.crm.list-cards .t-cust{max-width:none;width:44%}
.list-subject{display:block;font-size:14.5px;font-weight:600;line-height:1.35;color:var(--ink);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.list-subject:hover{color:var(--accent)}
.list-customer{margin-top:5px;font-size:12.5px;font-weight:400;color:var(--muted);line-height:1.4;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.list-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px}
.list-tags:empty{display:none}
table.crm.list-cards .list-price{font-size:15px;font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums}
.list-open{white-space:nowrap;text-align:right}
.list-open-card{display:inline-flex;align-items:center;gap:4px;margin-left:10px;font-size:12px;font-weight:600;color:var(--muted)}
.list-open-card:hover{color:var(--accent)}
table.crm.list-cards tr.hidden{display:none}
.db-shell{display:flex;flex-direction:column;gap:12px}
.db-empty{text-align:center;max-width:520px;margin:34px auto 0;padding:40px 26px}
.db-empty .note{margin-left:auto;margin-right:auto;max-width:400px}
.db-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap}
.db-toolbar-main{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.db-filter-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px;box-shadow:var(--shadow-soft)}
.db-filter-grid{display:grid;grid-template-columns:154px minmax(240px,1fr) minmax(170px,.7fr) minmax(170px,.7fr) 132px auto;gap:8px;align-items:end}
.db-filter-reset{align-self:end;white-space:nowrap}
.db-editor-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}
.db-editor-head h3{margin:0;font-size:15px}
.db-editor{display:grid;gap:14px}
.db-editor-grid{display:grid;grid-template-columns:repeat(2,minmax(210px,1fr));gap:10px 12px;align-items:end}
.db-field{display:flex;flex-direction:column;gap:6px;min-width:0}
.db-field span{font-size:12px;color:var(--faint);font-weight:600;text-transform:uppercase;letter-spacing:.03em}
.db-workbench{height:calc(100dvh - 292px);min-height:460px;max-width:100%;overflow:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-soft);scrollbar-gutter:stable both-edges}
.db-table-wrap{overflow:visible}
.db-table{min-width:1960px}
.db-table td{vertical-align:top;background:var(--surface)}
.db-table th{z-index:2}
.db-table th:nth-child(1),.db-table td:nth-child(1){width:170px;position:sticky;left:0;z-index:3;background:var(--surface)}
.db-table th:nth-child(1){background:var(--surface-soft);z-index:5}
.db-table th:nth-child(2),.db-table td:nth-child(2){width:260px}
.db-table th:nth-child(3),.db-table td:nth-child(3){width:190px}
.db-table th:nth-child(4),.db-table td:nth-child(4){width:190px}
.db-table th:nth-child(5),.db-table td:nth-child(5){width:190px}
.db-table th:nth-child(6),.db-table td:nth-child(6){width:190px}
.db-table th:nth-child(7),.db-table td:nth-child(7){width:190px}
.db-table th:nth-child(8),.db-table td:nth-child(8){width:210px}
.db-table th:nth-child(9),.db-table td:nth-child(9){width:160px}
.db-table th:nth-child(10),.db-table td:nth-child(10){width:100px}
.db-table th:nth-child(11),.db-table td:nth-child(11){width:120px}
.db-table th:nth-child(12),.db-table td:nth-child(12){width:122px;position:sticky;right:0;z-index:3;background:var(--surface)}
.db-table th:nth-child(12){background:var(--surface-soft);z-index:5}
.db-sku{font-weight:700;color:var(--ink);overflow-wrap:anywhere;line-height:1.35}
.db-name{font-weight:600;color:var(--ink);line-height:1.35}
.db-manual-specs{margin-top:8px;display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.db-manual-title{width:100%;font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:var(--faint);font-weight:700}
.db-manual-chip{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--border);border-radius:999px;background:var(--surface-soft);padding:3px 7px;font-size:12px;color:var(--muted)}
.db-manual-chip form{margin:0;display:inline-flex}.db-manual-chip button{border:0;background:transparent;color:var(--faint);font:inherit;font-weight:700;cursor:pointer;padding:0 1px}.db-manual-chip button:hover{color:var(--red-fg)}
.db-attrs{display:flex;flex-wrap:wrap;gap:6px}
.db-cell-muted{color:var(--muted);font-size:12px;line-height:1.4}
.db-cell-long{max-width:250px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.db-price{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.db-source{max-width:360px;overflow:hidden;text-overflow:ellipsis}
.db-row-actions{display:flex;gap:6px;align-items:center;justify-content:flex-end}
.db-row-actions form{margin:0}
.db-pager{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.db-page-label{font-size:12px;color:var(--muted);font-weight:600}
.db-product-modal-card{width:min(920px,100%)}
.db-editor-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}
@media(max-width:980px){
  .db-filter-grid,.db-editor-grid{grid-template-columns:1fr 1fr}
  .db-filter-grid .btn,.db-editor-grid .btn{width:100%}
  .db-workbench{height:calc(100dvh - 250px);min-height:360px}
}
@media(max-width:640px){
  .db-filter-grid,.db-editor-grid{grid-template-columns:1fr}
  .db-toolbar{align-items:stretch}
  .db-toolbar .btn{width:100%}
}
.org-row{cursor:pointer}
.org-row:hover td{background:var(--surface-2)}
.org-summary{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:8px;font-size:12px;color:var(--muted);font-weight:500}
.org-summary a{color:var(--accent)}
.org-open{color:var(--accent);font-weight:600;white-space:nowrap}
.organizations-workspace{display:grid;gap:16px}
.organizations-hero{display:grid;grid-template-columns:minmax(280px,.9fr) minmax(0,1.1fr);gap:18px;align-items:center;padding:26px 28px}
.organizations-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.organizations-actions .btn{min-height:48px;padding:0 22px;font-size:13px;font-weight:700}
.organizations-benefits{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.org-benefit{display:grid;grid-template-columns:44px minmax(0,1fr);gap:12px;align-items:center}
.org-benefit-icon{width:44px;height:44px;border-radius:12px;background:var(--surface-soft);border:1px solid var(--border);color:var(--ink);display:inline-flex;align-items:center;justify-content:center}
.org-benefit-icon svg{width:20px;height:20px}
.org-benefit-title{font-size:13px;font-weight:700;color:var(--ink);line-height:1.3}
.org-benefit-text{font-size:12px;color:var(--muted);line-height:1.4;margin-top:3px}
.organizations-filter-panel{padding:16px 18px;display:grid;grid-template-columns:minmax(320px,1fr) 220px 180px;gap:12px;align-items:end}
.org-search-field{position:relative}
.org-search-field svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:17px;height:17px;color:var(--faint)}
.org-search-field .input{height:44px;padding-left:40px}
.party-page{display:flex;flex-direction:column;gap:14px}
.party-search{padding:12px 14px}
.party-search-form{display:flex;gap:10px;align-items:stretch}
.party-search-field{position:relative;flex:1;display:flex;align-items:center}
.party-search-field svg{position:absolute;left:12px;width:18px;height:18px;color:var(--faint);pointer-events:none}
.party-search-field .input{width:100%;padding-left:38px;height:42px}
.party-search-form .btn{white-space:nowrap;padding-left:20px;padding-right:20px}
.party-mode{display:flex;gap:16px;margin-top:10px;flex-wrap:wrap}
.party-mode-opt{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);cursor:pointer}
.party-suggestions{margin-top:12px;display:flex;flex-direction:column;border:1px solid var(--border);border-radius:10px;overflow:hidden}
.party-suggestions[hidden]{display:none}
.party-suggest-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px;border-bottom:1px solid var(--border);background:var(--surface)}
.party-suggest-row:last-child{border-bottom:none}
.party-suggest-row:hover{background:var(--surface-2)}
.party-suggest-name{font-weight:600;font-size:13px}
.party-suggest-meta{font-size:12px;color:var(--muted);margin-top:2px}
.party-suggest-empty{padding:11px 14px;font-size:13px;color:var(--faint)}
.party-filter{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:12px 14px}
.party-filter-field{position:relative;flex:1;min-width:240px;display:flex;align-items:center}
.party-filter-field svg{position:absolute;left:12px;width:17px;height:17px;color:var(--faint);pointer-events:none}
.party-filter-field .input{width:100%;padding-left:36px}
.party-filter .input[data-org-type-filter],.party-filter .input[data-org-status-filter]{min-width:170px;flex:none}
.party-table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:var(--shadow-soft)}
.party-table-scroll{overflow-x:auto}
.party-table{width:100%}
.party-table th{background:var(--surface-soft);font-size:12px;color:var(--faint);font-weight:700}
.party-table-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 18px;border-top:1px solid var(--border);color:var(--muted);font-size:12px}
.organizations-table-wrap{overflow:auto;border-radius:12px}
.organizations-table{min-width:1060px}
.organizations-table th{font-size:12px;color:var(--faint);font-weight:700;background:var(--surface-soft)}
.organizations-table td{vertical-align:middle;padding:16px 18px}
.org-row[hidden]{display:none}
.organizations-table .org-open{color:var(--ink);font-weight:700;white-space:normal}
.organizations-table .t-subj{margin-top:4px;line-height:1.45}
.org-history-cell{font-size:13px;color:var(--muted);line-height:1.45}
.org-history-cell b{display:block;color:var(--ink);font-size:13px;margin-bottom:2px}
.org-history-cell .faint{display:block;margin-top:2px}
.org-list-action{display:inline-flex;align-items:center;gap:8px;color:var(--ink);font-weight:700;white-space:nowrap}
.org-list-action:hover{color:var(--ink)}
.org-list-action span{font-size:18px;line-height:1}
.org-table-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-top:1px solid var(--border);color:var(--muted);font-size:12px}
.org-page-empty{padding:18px;color:var(--muted);font-size:13px}
@media(max-width:1180px){.organizations-hero{grid-template-columns:1fr}.organizations-benefits{grid-template-columns:repeat(3,minmax(0,1fr))}.organizations-filter-panel{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.organizations-hero{padding:18px}.organizations-actions .btn{width:100%}.organizations-benefits{grid-template-columns:1fr}.organizations-filter-panel{grid-template-columns:1fr}.organizations-table{min-width:920px}}
.org-cabinet{margin-bottom:16px;padding:16px 18px;background:linear-gradient(180deg,var(--warn-soft),var(--accent-soft))}
.org-cabinet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}
.org-eyebrow{font-size:12px;color:var(--faint);font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.org-title{font-size:15px;font-weight:600;color:var(--ink);margin-top:2px}
.org-meta{font-size:12px;color:var(--muted);margin-top:2px}
.org-kpis{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:10px}
.org-kpi{background:rgba(255,255,255,.7);border:1px solid var(--border);border-radius:12px;padding:10px 12px}
.org-kpi .k{font-size:12px;color:var(--faint);margin-bottom:2px}
.org-kpi .v{font-size:15px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
.org-workbench{display:block;margin-bottom:16px}
.org-workbench[hidden]{display:none}
.org-tabs{display:flex;gap:6px;margin:0 0 14px;padding:5px;background:var(--surface);border:1px solid var(--border);border-radius:12px;width:max-content;max-width:100%}
.org-tab{border:0;background:transparent;color:var(--muted);border-radius:8px;padding:9px 18px;font:inherit;font-size:13px;font-weight:700;cursor:pointer}
.org-tab.on{background:var(--ink);color:var(--surface)}.org-tab-panel[hidden]{display:none}
.finance-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:16px}.finance-chart-card{border:1px solid var(--border);border-radius:12px;padding:16px;background:var(--surface-soft)}
.finance-chart-card h4{margin:0 0 4px;font-size:13px}.finance-chart-card p{margin:0 0 12px}.finance-chart{display:block;width:100%;height:auto;overflow:visible}.finance-table{margin-top:16px}
/* линейный график: заливка под линией, круглая шкала, наведение по годам */
.fc-grid{stroke:var(--border);stroke-width:1;stroke-dasharray:2 4}
.fc-grid.zero{stroke:var(--border-strong);stroke-dasharray:none}
.fc-axis{font-size:11px;fill:var(--faint)}
.fc-line{fill:none;stroke:var(--accent);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
.fc-line.alt{stroke:var(--ok)}
.fc-area{stroke:none}
.fc-dot{fill:var(--surface);stroke:var(--accent);stroke-width:2}
.fc-dot.alt{stroke:var(--ok)}
.fc-legend{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:10px;font-size:12px;color:var(--muted)}
.fc-legend-item{display:inline-flex;align-items:center;gap:7px}
.fc-legend-item i{width:9px;height:9px;border-radius:3px;display:inline-block}
.fc-band{fill:transparent}
.fc-cursor{stroke:var(--border-strong);stroke-width:1;stroke-dasharray:3 3;opacity:0}
.fc-mark{fill:var(--surface);stroke:var(--accent);stroke-width:3;opacity:0}
.fc-mark.alt{stroke:var(--ok)}
.fc-tip{opacity:0;pointer-events:none;filter:drop-shadow(0 10px 24px rgba(15,23,42,.28))}
.fc-tip rect{fill:var(--ink)}
.fc-tip text{fill:rgba(255,255,255,.74);font-size:13px}
.fc-tip .fc-tip-head{fill:#fff;font-weight:700;font-size:14px;letter-spacing:.02em}
.fc-tip .fc-tip-value{fill:#fff;font-weight:700;font-variant-numeric:tabular-nums}
.fc-tip .fc-tip-delta{font-size:12px;font-weight:600}
.fc-tip .fc-tip-delta.up{fill:#6ee7b7}
.fc-tip .fc-tip-delta.down{fill:#fca5a5}
.fc-hover:hover .fc-cursor,.fc-hover:hover .fc-mark,.fc-hover:hover .fc-tip{opacity:1}
.finance-donut-wrap{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.finance-donut{width:158px;height:158px;flex:none}
.finance-donut-arc{transition:opacity .14s}
.finance-donut-wrap:hover .finance-donut-arc{opacity:.55}
.finance-donut-arc:hover{opacity:1}
.finance-donut-value{font-size:17px;font-weight:700;fill:var(--ink)}
.finance-donut-label{font-size:11px;fill:var(--faint);text-transform:uppercase;letter-spacing:.06em}
.finance-legend{display:flex;flex-direction:column;gap:2px;font-size:13px;min-width:0;flex:1}
.finance-legend-item{display:grid;grid-template-columns:10px minmax(0,1fr);align-items:start;gap:10px;padding:9px 0;border-top:1px solid var(--border)}
.finance-legend-item:first-child{border-top:0}
.finance-legend-dot{width:10px;height:10px;border-radius:3px;flex:none;margin-top:4px}
.finance-legend-body{min-width:0}
.finance-legend-label{color:var(--muted);font-size:12.5px;line-height:1.3}
.finance-legend-nums{display:flex;align-items:baseline;gap:8px;margin-top:2px}
.finance-legend-nums b{font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}
.finance-legend-nums span{color:var(--faint);font-size:12px;font-variant-numeric:tabular-nums}
/* KPI-плитки финансов: крупная цифра, изменение и спарклайн */
.finance-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.finance-year{display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:999px;padding:2px 4px 2px 13px;background:var(--surface-soft);white-space:nowrap}
.finance-year select{border:0;background:transparent;font:inherit;font-size:13px;font-weight:700;color:var(--ink);cursor:pointer;padding:5px 8px 5px 0;outline:none}
.finance-year:hover{border-color:var(--border-strong);background:var(--surface)}
.finance-year-static{padding:5px 13px;font-size:12px;font-weight:700;color:var(--muted)}
.finance-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0 14px}
.finance-kpi{position:relative;overflow:hidden;border:1px solid var(--border);border-radius:12px;padding:14px 15px 12px;background:var(--surface)}
.finance-kpi-label{font-size:11px;font-weight:600;color:var(--faint);text-transform:uppercase;letter-spacing:.06em}
.finance-kpi-value{margin-top:7px;font-size:26px;font-weight:700;line-height:1.1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.finance-kpi.tone-accent .finance-kpi-value{color:var(--accent)}
.finance-kpi.tone-ok .finance-kpi-value{color:var(--ok)}
.finance-kpi.tone-danger .finance-kpi-value{color:var(--danger)}
.finance-kpi-foot{display:flex;align-items:center;gap:6px;margin-top:7px;min-height:17px;font-size:12px;flex-wrap:wrap}
.finance-kpi-delta{font-weight:700}
.finance-kpi-delta.up{color:var(--ok)}
.finance-kpi-delta.down{color:var(--danger)}
.finance-kpi-caption{color:var(--faint)}
.finance-spark{display:block;width:100%;height:28px;margin-top:10px;opacity:.85}
.profile-group + .profile-group{margin-top:18px}
.profile-group-title{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.profile-group .profile-facts{margin-top:8px}
/* владельцы: имя, доля и полоса доли — связь читается с одного взгляда */
.owner-group + .owner-group{margin-top:18px}
.owner-group-title{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px}
.owner-row{display:flex;align-items:flex-start;gap:14px;padding:11px 0;border-top:1px solid var(--border)}
.owner-row:first-of-type{border-top:0}
.owner-main{min-width:0;flex:1}
.owner-name{font-size:13px;font-weight:600;line-height:1.35}
.owner-meta{font-size:12px;color:var(--faint);margin-top:2px}
.owner-bar{height:6px;border-radius:999px;background:var(--surface-3);margin-top:7px;max-width:320px;overflow:hidden}
.owner-bar span{display:block;height:100%;border-radius:999px;background:var(--accent)}
.owner-share{text-align:right;font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.owner-share-sum{display:block;font-size:11px;font-weight:500;color:var(--faint)}
/* справочные факты — плотный двухколоночный список «ключ → значение»,
   а не сетка крупных плиток с дырами в последнем ряду */
.profile-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 36px;margin-top:10px}
.profile-fact{display:flex;align-items:baseline;justify-content:space-between;gap:18px;padding:9px 0;border-bottom:1px solid var(--border)}
.profile-fact .k{font-size:12.5px;color:var(--muted);flex:none;max-width:52%}
.profile-fact .v{font-size:13px;font-weight:600;line-height:1.4;text-align:right;min-width:0}
.org-hints-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px;align-items:start;margin-bottom:16px}
.org-detail-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;align-items:start}
.org-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px}
.org-flash{margin:0 0 14px;background:var(--green-bg);color:var(--green-fg);border:1px solid rgba(30,125,68,.18);border-radius:var(--radius-sm);padding:9px 12px;font-size:12px;font-weight:500}
.org-history-progress{margin:0 0 14px;display:flex;align-items:center;gap:9px;background:var(--blue-bg);color:var(--blue-fg);border:1px solid rgba(50,103,168,.16);border-radius:var(--radius-sm);padding:9px 12px;font-size:12px;font-weight:500}
.org-history-progress.partial{background:var(--amber-bg);color:var(--amber-fg);border-color:rgba(146,97,10,.16)}
.org-history-progress.complete{background:var(--green-bg);color:var(--green-fg);border-color:rgba(30,125,68,.18)}
.org-history-progress-dot{width:7px;height:7px;border-radius:999px;background:currentColor;flex:none}
.org-history-progress.running .org-history-progress-dot{animation:org-progress-pulse 1.3s ease-in-out infinite}
@keyframes org-progress-pulse{0%,100%{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}
.org-chip-list{display:flex;flex-wrap:wrap;gap:7px}
.org-hint-cloud{max-height:220px;overflow-y:auto;padding-right:2px}
.hint-form{display:inline-flex;margin:0}
.hint-action{border:1px solid var(--border);background:var(--surface-soft);color:var(--muted);border-radius:999px;padding:5px 10px;font:inherit;font-size:12px;font-weight:500;line-height:1;cursor:pointer;transition:background .12s,color .12s,border-color .12s}
.hint-action:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-line)}
.hint-action-added{background:var(--ok-soft);color:var(--ok);border-color:var(--ok-line);cursor:default}
.hint-action-added:hover{background:var(--ok-soft);color:var(--ok);border-color:var(--ok-line)}
.hint-check{margin-right:4px;font-weight:700}
.hint-addall{margin:0 0 14px}
.customer-hint{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 11px;background:var(--surface)}
.customer-hint+.customer-hint{margin-top:8px}
.customer-hint .name{font-size:13px;font-weight:600;color:var(--ink);line-height:1.35}
.customer-hint .meta{font-size:12px;color:var(--muted);margin-top:2px}
.mini-chip{border:1px solid var(--border);background:var(--surface-soft);color:var(--muted);border-radius:999px;padding:5px 10px;font:inherit;font-size:12px;line-height:1;cursor:pointer;transition:background .12s,color .12s,border-color .12s}
.mini-chip:hover,.mini-chip.on{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.contract-subject{max-width:520px;line-height:1.45}
.contract-title{font-weight:600;color:var(--ink);line-height:1.35}
.contract-object{font-size:12px;color:var(--muted);line-height:1.35;margin-top:4px}
.contract-customer{max-width:260px;line-height:1.4}
.contract-reduction{display:flex;flex-direction:column;align-items:flex-end;gap:4px;min-width:112px}
.contract-reduction .faint{font-size:12px;white-space:nowrap}
@media(max-width:1080px){.org-hints-grid{grid-template-columns:1fr}}
@media(max-width:980px){.org-kpis{grid-template-columns:repeat(2,1fr)}.org-detail-grid{grid-template-columns:1fr}}
@media(max-width:1100px){.finance-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:820px){.finance-grid,.profile-facts,.finance-kpis{grid-template-columns:1fr}.org-tabs{width:100%}.org-tab{flex:1}}
@media(max-width:720px){
  table.crm thead{display:none}
  table.crm,table.crm tbody,table.crm tr,table.crm td{display:block;width:100%}
  table.crm tr{border:1px solid var(--border);border-radius:var(--radius);margin-bottom:10px;padding:6px 4px}
  table.crm tr:hover td{background:transparent}
  table.crm td{border:0;padding:6px 14px;text-align:left!important}
}
.num{text-align:right;font-variant-numeric:tabular-nums}
select.status-sel{border:1px solid var(--border);border-radius:8px;padding:3px 6px;font-size:12px;background:var(--surface)}
/* card detail */
.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}
@media(max-width:1100px){.grid3{grid-template-columns:1fr}}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:1000px){.grid2{grid-template-columns:1fr}}
/* tender header + tabs */
.t-head{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:16px;box-shadow:var(--shadow-soft)}
.t-head .t-title{font-size:18px;font-weight:500;line-height:1.35;margin:6px 0 2px}
.t-head .t-cust{font-size:13px;color:var(--muted);margin-bottom:16px}
.t-head .t-kpis{display:flex;gap:32px;border-top:1px solid var(--border);padding-top:14px;flex-wrap:wrap}
.t-kpi .k{font-size:12px;color:var(--faint);margin-bottom:2px}
.t-kpi .v{font-size:18px;font-weight:500;font-variant-numeric:tabular-nums}
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);margin-bottom:18px}
.tab{font-size:13px;color:var(--muted);padding:9px 14px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;background:0;border-top:0;border-left:0;border-right:0;font:inherit}
.tab:hover{color:var(--ink)}
.tab.active{color:var(--ink);font-weight:500;border-bottom-color:var(--ink)}
.tab .tcount{font-size:12px;color:var(--surface);background:var(--faint);border-radius:999px;padding:0 6px;margin-left:5px}
.tab-panel{display:none}
.tab-panel.active{display:block}
/* read-view карточки: заказчик + факты сеткой с цветом и воздухом */
.read-sec{margin-bottom:18px}
.read-sec:last-child{margin-bottom:0}
.read-lbl{font-size:12px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);margin:0 0 6px}
.read-cust{font-size:13px;line-height:1.5;color:var(--ink)}
.facts{display:grid;grid-template-columns:1fr 1fr;gap:16px 28px}
@media(max-width:640px){.facts{grid-template-columns:1fr}}
.fact .fl{font-size:12px;color:var(--faint);margin-bottom:4px}
.fact .fv{font-size:15px;font-weight:500;font-variant-numeric:tabular-nums;color:var(--ink)}
.fact .fv small{font-weight:400;color:var(--faint);font-size:12px;font-variant-numeric:normal}
.fv-green{color:var(--green-fg)} .fv-amber{color:var(--amber-fg)} .fv-red{color:var(--red-fg)}
.read-divider{height:1px;background:var(--border);margin:18px 0}
.notes-text{font-size:13px;line-height:1.55;color:var(--ink);white-space:pre-wrap}
.ai-panel{position:relative;overflow:hidden}
.ai-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:2px}
.ai-title{display:flex;align-items:center;gap:9px}
.ai-kpis{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.ai-chip{font-size:12px;color:var(--muted);background:var(--surface-soft);border-radius:999px;padding:4px 9px}
.ai-summary{background:linear-gradient(180deg,var(--accent-soft),var(--accent-soft));border:1px solid var(--accent-line);border-radius:8px;padding:13px 15px;margin:12px 0;font-size:13px;line-height:1.6}
.work-title{font-weight:500}
table.crm.works-table td{vertical-align:top}
table.crm.works-table td.num,table.crm.works-table tfoot td{white-space:nowrap}
table.crm.works-table tfoot td{background:var(--surface-soft);border-top:1px solid var(--border)}
.works-total-label{text-align:right;font-weight:600;padding:10px 14px}
.works-total-value{font-weight:700;padding:10px 14px}
.work-detail{margin-top:7px}
.work-detail>summary{cursor:pointer;display:inline-flex;align-items:center;gap:6px;color:var(--accent);font-size:12px;font-weight:500;list-style:none}
.work-detail>summary::-webkit-details-marker{display:none}
.work-detail>summary:before{content:'▸';color:var(--faint)}
.work-detail[open]>summary:before{content:'▾'}
.work-detail-box{margin-top:8px;border:0;border-left:2px solid var(--border);border-radius:0;background:transparent;padding:2px 0 4px 14px;max-height:380px;overflow:auto}
.work-detail-meta{display:flex;gap:6px 12px;flex-wrap:wrap;margin-bottom:6px;font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.02em}
.work-detail-meta a{color:var(--muted);text-decoration:none}.work-detail-meta a:hover{color:var(--ink);text-decoration:underline}
.work-detail-table{width:100%;border-collapse:collapse;font-size:12px;background:transparent}
/* рабочее место сметы (фаза 1 — читалка) */
.smeta-workspace{display:flex;flex-direction:column}
.sw-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0}
.sw-filter{border:1px solid var(--border);background:var(--surface);color:var(--muted);border-radius:999px;padding:5px 12px;font:inherit;font-size:12px;font-weight:600;cursor:pointer}
.sw-filter:hover{border-color:var(--border-strong);color:var(--ink)}
.sw-filter.active{background:var(--ink);border-color:var(--ink);color:#fff}
.sw-search{flex:1;min-width:180px;max-width:340px;border:1px solid var(--border);border-radius:8px;padding:6px 10px;font:inherit;font-size:12px}
.sw-shown{margin-left:auto;color:var(--faint);font-size:12px}
.sw-layout{display:flex;border:1px solid var(--border);border-top:0}
.sw-nav{width:250px;flex:none;border-right:1px solid var(--border);max-height:68vh;overflow:auto;padding:8px;background:var(--surface)}
.sw-nav-item{display:block;padding:7px 9px;border-radius:8px;font-size:12px;color:var(--ink-2);line-height:1.35}
.sw-nav-item:hover{background:var(--surface-2)}
.sw-nav-meta{display:block;color:var(--faint);font-size:11px;margin-top:2px}
.sw-main{flex:1;min-width:0;max-height:68vh;overflow:auto;background:var(--surface)}
.sw-section>summary{cursor:pointer;position:sticky;top:0;z-index:5;display:flex;gap:10px;align-items:baseline;padding:9px 12px;background:var(--surface-2);border-bottom:1px solid var(--border);font-size:12px;font-weight:600;list-style:none}
.sw-section>summary::-webkit-details-marker{display:none}
.sw-section-sum{margin-left:auto;white-space:nowrap;color:var(--ink)}
.sw-section-meta{color:var(--faint);font-weight:500;white-space:nowrap}
.sw-table{width:100%;border-collapse:collapse;font-size:12px}
.sw-table td{padding:6px 10px;border-bottom:1px solid var(--border);vertical-align:top}
.sw-table td.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.sw-row-material td:first-child{box-shadow:inset 2px 0 0 var(--accent)}
.sw-hidden{display:none}
.sw-footer{position:sticky;bottom:0;display:flex;gap:6px 18px;flex-wrap:wrap;align-items:center;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-top:1px solid var(--border-strong);border-radius:0 0 var(--radius) var(--radius);font-size:12px;font-weight:600}
.sw-footer .faint{font-weight:500}
.sw-own{background:#fff}
.sw-table thead th{position:sticky;top:36px;background:var(--surface-2);font-size:11px;text-transform:uppercase;letter-spacing:.02em;color:var(--faint);text-align:left;padding:5px 10px;border-bottom:1px solid var(--border)}
.sw-table thead th.num{text-align:right}
.sw-input{width:100%;min-width:70px;border:1px solid transparent;border-radius:6px;padding:4px 6px;font:inherit;font-size:12px;background:transparent}
.sw-input:hover{border-color:var(--border)}
.sw-input:focus{outline:none;border-color:var(--accent);background:#fff;box-shadow:var(--focus-ring)}
.sw-input-num{text-align:right;max-width:90px}
.sw-saved{animation:swSaved .9s ease}
@keyframes swSaved{0%{background:var(--ok-soft)}100%{background:transparent}}
.work-detail-table th{padding:4px 10px 6px;text-align:left;vertical-align:bottom;color:var(--faint);font-weight:600;font-size:11px;border-bottom:1px solid var(--border)}
.work-detail-table td{padding:6px 10px;text-align:left;vertical-align:top;color:var(--ink-2);border-bottom:1px solid var(--border)}
.work-detail-table td:first-child,.work-detail-table th:first-child{color:var(--faint);width:34px}
.work-detail-table tr:last-child td{border-bottom:0}
.work-detail-table tbody tr:hover td{background:var(--surface-soft)}
.stage-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
@media(max-width:900px){.stage-kpis{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.stage-kpis{grid-template-columns:1fr}}
.stage-kpi{background:var(--surface-soft);border:1px solid var(--border);border-radius:12px;padding:11px 12px}
.stage-kpi .label{font-size:12px;color:var(--faint);margin-bottom:3px}
.stage-kpi .value{font-size:15px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
.stage-timeline{display:grid;gap:8px;margin:0 0 14px;padding:12px;background:linear-gradient(180deg,var(--surface-2),var(--warn-soft));border:1px solid var(--border);border-radius:12px}
.stage-time-row{display:grid;grid-template-columns:minmax(130px,220px) 1fr 94px;gap:10px;align-items:center;font-size:12px}
.stage-time-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-weight:500}
.stage-time-date{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}
.stage-rail{height:8px;border-radius:999px;background:var(--border-strong);overflow:hidden}
.stage-bar{height:100%;border-radius:inherit;min-width:8px}
.stage-bar.b-green{background:var(--green-fg)}.stage-bar.b-amber{background:var(--amber-fg)}.stage-bar.b-red{background:var(--red-fg)}.stage-bar.b-slate{background:var(--slate-fg)}
.stage-table .stage-name{font-weight:500;color:var(--ink);max-width:460px}
.work-portfolio{display:grid;gap:14px}
.work-portfolio-kpis{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr));gap:10px}
.work-portfolio-kpi{border:1px solid var(--border);background:var(--surface);padding:13px 14px;border-radius:var(--radius-sm)}
.work-portfolio-kpi .k{font-size:12px;color:var(--faint);margin-bottom:3px}.work-portfolio-kpi .v{font-size:18px;font-weight:600;font-variant-numeric:tabular-nums}
.work-filterbar{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr)) auto;gap:10px;align-items:end;padding:12px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm)}
.work-filterbar label,.exec-form-field{display:grid;gap:5px;font-size:12px;font-weight:600;color:var(--muted)}
.work-filterbar select,.exec-form-field select,.exec-form-field input,.exec-form-field textarea{width:100%;min-height:38px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);padding:8px 10px;font:inherit;font-size:13px}
.exec-form-field strong{min-height:38px;display:flex;align-items:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-soft);color:var(--ink);padding:8px 10px;font-size:13px;font-weight:600}
.work-visible{align-self:center;color:var(--muted);font-size:12px;white-space:nowrap}.work-empty-filter{padding:18px;color:var(--muted);text-align:center}
.work-row-risk td:first-child{box-shadow:inset 3px 0 var(--red-fg)}.work-risk{color:var(--red-fg);font-weight:600}.work-safe{color:var(--green-fg);font-weight:600}
.execution-workspace{display:grid;gap:14px}
.execution-workspace .row-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.execution-workspace .row-actions form{margin:0}
.execution-workspace textarea{width:100%;min-height:100px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 11px;font:inherit;font-size:13px;line-height:1.45;resize:vertical;background:var(--surface);color:var(--ink)}
.exec-flash{border:1px solid rgba(35,128,82,.2);background:var(--green-bg);color:var(--green-fg);border-radius:var(--radius-sm);padding:9px 12px;font-size:12px;font-weight:600}
.exec-identity{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:16px 18px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm)}
.exec-identity-main{display:grid;gap:8px;min-width:0}.exec-identity-badges{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.exec-confidence{font-size:12px;color:var(--muted)}
.exec-evidence{display:flex;gap:6px;flex-wrap:wrap}.exec-evidence span{font-size:12px;color:var(--muted);background:var(--surface-soft);border:1px solid var(--border);border-radius:999px;padding:4px 8px}
.exec-nav{display:flex;gap:2px;overflow:auto;border-bottom:1px solid var(--border);background:transparent}.exec-nav button{flex:none;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);font:inherit;font-size:13px;font-weight:600;padding:10px 13px;cursor:pointer}.exec-nav button.active{color:var(--ink);border-bottom-color:var(--ink)}
.exec-section[hidden]{display:none}.exec-section{display:grid;gap:14px}.exec-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.exec-section-head h3{margin:0}
.exec-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.exec-summary-grid>.panel{margin:0}
.exec-table-actions{display:flex;justify-content:flex-end;gap:5px;white-space:nowrap}.exec-table-actions form{margin:0}.exec-table-actions .btn{padding:5px 8px}
.exec-form{display:grid;gap:16px}.exec-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.exec-form-grid .wide{grid-column:1/-1}.exec-form-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:4px}
.exec-transfer-list{display:grid;gap:8px}.exec-transfer-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 10px}.exec-transfer-row.done{background:var(--surface-soft);color:var(--muted)}
.exec-doc-groups{display:grid;gap:16px}.exec-doc-group h3{margin:0 0 9px}.exec-doc-empty{padding:14px 0;color:var(--muted);font-size:13px}
.exec-cal-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.exec-cal-nav{display:flex;align-items:center;gap:7px}.exec-cal-nav .btn-icon{width:34px;height:34px}.exec-cal-title{font-size:18px;font-weight:600;text-transform:capitalize;min-width:170px;text-align:center}
.seg{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;background:var(--surface-soft)}.seg button{border:0;background:transparent;color:var(--muted);font:inherit;font-size:12px;font-weight:600;padding:7px 10px;cursor:pointer}.seg button.active{background:var(--ink);color:var(--surface)}
.execution-calendar{display:grid;grid-template-columns:repeat(7,minmax(92px,1fr));border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;background:var(--surface)}
.exec-cal-head{background:var(--surface-soft);border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:8px 9px;font-size:12px;font-weight:600;color:var(--muted);text-align:center;text-transform:uppercase}.exec-cal-head:nth-child(7){border-right:0}
.exec-cal-day{min-height:100px;border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:7px;background:var(--surface)}.exec-cal-day:nth-child(7n){border-right:0}.exec-cal-day.muted{background:var(--surface-2);color:var(--faint)}.exec-cal-day.today{box-shadow:inset 0 0 0 2px var(--amber-fg);background:var(--warn-soft)}.exec-cal-num{font-size:12px;font-weight:600;margin-bottom:6px;text-align:right;color:var(--muted)}
.exec-cal-chip{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:8px;padding:3px 5px;margin-top:4px;font-size:12px;font-weight:600;background:var(--blue-bg);color:var(--blue-fg)}.exec-cal-chip.delivery{background:var(--green-bg);color:var(--green-fg)}.exec-cal-chip.acceptance{background:var(--slate-bg);color:var(--slate-fg)}.exec-cal-chip.payment-out{background:var(--amber-bg);color:var(--amber-fg)}.exec-cal-chip.payment-in{background:var(--violet-bg);color:var(--violet-fg)}
.exec-calendar-agenda{display:grid;grid-template-columns:repeat(7,minmax(100px,1fr));border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.exec-agenda-day{min-height:180px;padding:10px;border-right:1px solid var(--border);background:var(--surface)}.exec-agenda-day:last-child{border-right:0}.exec-agenda-day h4{margin:0 0 8px;font-size:12px;color:var(--muted)}.exec-day-agenda{display:grid;gap:8px}.exec-agenda-event{border-left:3px solid var(--blue-fg);padding:8px 10px;background:var(--surface-soft);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.exec-agenda-event .title{font-weight:600}.exec-agenda-event .meta{font-size:12px;color:var(--muted);margin-top:2px}
@media(max-width:1100px){.work-portfolio-kpis{grid-template-columns:repeat(3,1fr)}.work-filterbar{grid-template-columns:repeat(3,1fr)}.exec-summary-grid{grid-template-columns:1fr}}
@media(max-width:820px){.work-portfolio-kpis{grid-template-columns:repeat(2,1fr)}.work-filterbar{grid-template-columns:1fr 1fr}.exec-identity{flex-direction:column}.execution-calendar,.exec-calendar-agenda{grid-template-columns:repeat(7,minmax(62px,1fr));min-width:620px}.execution-calendar-shell{overflow:auto}.exec-cal-day{min-height:82px;padding:5px}.exec-cal-chip{font-size:12px}.exec-cal-toolbar{align-items:flex-start;flex-direction:column}.exec-form-grid{grid-template-columns:1fr}}
@media(max-width:760px){
  .work-row td{display:grid!important;grid-template-columns:minmax(112px,42%) minmax(0,1fr);gap:10px;align-items:start}
  .work-row td:before{content:attr(data-label);color:var(--faint);font-size:12px;font-weight:600;line-height:1.45}
  .work-row td:first-child{display:block!important;padding-top:11px;padding-bottom:9px}
  .work-row td:first-child:before{display:none}
}
@media(max-width:560px){.work-portfolio-kpis,.work-filterbar{grid-template-columns:1fr}.exec-identity .row-actions{width:100%}.exec-identity .row-actions .btn{flex:1}.exec-cal-toolbar{min-width:620px}}
.ai-progress{position:fixed;right:22px;bottom:22px;z-index:190;width:min(360px,calc(100vw - 32px));background:rgba(255,255,255,.94);backdrop-filter:blur(12px);border:1px solid var(--border-strong);border-radius:12px;box-shadow:0 18px 50px rgba(17,24,39,.2);padding:15px 16px;display:none}
.ai-progress.show{display:block;animation:rise .16s ease-out}
@keyframes rise{from{transform:translateY(10px);opacity:.65}to{transform:translateY(0);opacity:1}}
.ai-orbit{width:38px;height:38px;border-radius:12px;background:var(--ink);color:var(--surface);display:flex;align-items:center;justify-content:center;position:relative;flex:none}
.ai-orbit:after{content:'';position:absolute;inset:-5px;border-radius:12px;border:1px solid var(--accent-line);border-top-color:var(--ok);animation:spin 1.1s linear infinite}
.ai-progress-title{font-weight:600;font-size:13px}
.ai-progress-step{font-size:12px;color:var(--muted);margin-top:2px}
.ai-progress-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:12px}
.ai-progress-steps span{height:4px;border-radius:999px;background:var(--border);overflow:hidden}
.ai-progress-steps span:before{content:'';display:block;height:100%;width:45%;border-radius:inherit;background:var(--accent);animation:sweep 1.25s ease-in-out infinite}
.ai-progress-steps span:nth-child(2):before{animation-delay:.18s}.ai-progress-steps span:nth-child(3):before{animation-delay:.36s}
@keyframes sweep{0%{transform:translateX(-110%)}55%,100%{transform:translateX(240%)}}
.materials-form{padding:0}
.materials-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0;padding:2px 0 12px;flex-wrap:wrap}
.materials-toolbar>strong{font-size:13px;color:var(--ink)}
.materials-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.material-card{position:relative;min-width:0;border:1px solid var(--border);border-radius:12px;background:var(--surface);padding:16px;box-shadow:0 1px 2px rgba(16,24,40,.02);transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}
.material-card:hover{border-color:var(--border-strong);box-shadow:0 12px 28px rgba(17,24,39,.07);transform:translateY(-1px)}
.material-card.rag-row-matched{border-left:4px solid var(--ok)}.material-card.rag-row-review{border-left:4px solid var(--warn)}.material-card.rag-row-none{border-left:4px solid var(--danger)}
.material-card .b-green{background:var(--ok-soft);color:var(--ok)}.material-card .b-amber{background:var(--warn-line);color:var(--warn)}.material-card .b-red{background:var(--danger-soft);color:var(--danger)}.material-card .b-slate{background:var(--border);color:var(--ink-2)}
.materials-table-shell{overflow:auto;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.materials-modern-table{width:100%;min-width:1050px;border-collapse:separate;border-spacing:0;table-layout:fixed}
.materials-modern-table .col-product{width:34%}.materials-modern-table .col-match{width:23%}.materials-modern-table .col-qty{width:10%}.materials-modern-table .col-nmck{width:14%}.materials-modern-table .col-buy{width:19%}
.materials-modern-table th{padding:11px 14px;background:var(--accent-soft);border-bottom:1px solid var(--border);color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.02em;text-align:left}
.materials-modern-table td{padding:15px 14px;border-bottom:1px solid var(--border);vertical-align:top;background:var(--surface)}.materials-modern-table tbody tr:last-child td{border-bottom:0}.materials-modern-table tbody tr:hover td{background:var(--surface)}
.materials-modern-table tr.rag-row-matched td:first-child{box-shadow:inset 3px 0 var(--ok)}.materials-modern-table tr.rag-row-review td:first-child{box-shadow:inset 3px 0 var(--warn)}.materials-modern-table tr.rag-row-none td:first-child{box-shadow:inset 3px 0 var(--danger)}
.materials-modern-table .mat-product{position:relative}.mat-product-title{display:block}.materials-modern-table .mat-name{font-size:13px;font-weight:700;line-height:1.4;color:var(--ink)}
.mat-ai-search{position:relative;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;margin-left:6px;border:1px solid var(--border);border-radius:6px;background:var(--surface);vertical-align:-4px}
.mat-ai-search svg{width:12px;height:12px;display:block}
.mat-ai-search:hover{border-color:var(--border-strong);background:var(--surface-2)}
.materials-modern-table .mat-distinction{margin-top:6px;display:inline-block;padding:2px 8px;border-radius:var(--radius-sm);background:var(--warn-soft);color:var(--warn);font-size:12px;font-weight:600;line-height:1.4;max-width:520px}
.materials-modern-table .mat-distinction-label{opacity:.75;font-weight:500}
.materials-modern-table .m-specs{margin-top:7px}.materials-modern-table .mat-qty strong,.materials-modern-table .mat-nmck>strong{display:block;color:var(--ink);font-size:13px;font-weight:700}.materials-modern-table .mat-qty>span,.materials-modern-table .mat-nmck>span{display:block;margin-top:3px;color:var(--faint);font-size:12px}
.materials-modern-table .historical-price-note{color:var(--warn)}
.mat-purchase label>span{display:block;color:var(--muted);font-size:12px;font-weight:600}.mat-purchase .mat-buy{width:100%;margin-top:5px;padding:7px 9px;border:1px solid var(--border-strong);border-radius:8px;background:var(--surface);color:var(--ink);text-align:right;font-weight:700;font-variant-numeric:tabular-nums}.mat-purchase .mat-buy:focus{outline:0;border-color:var(--ink-2);box-shadow:0 0 0 3px rgba(15,23,42,.08)}
.mat-purchase-total{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:7px;color:var(--muted);font-size:12px}.mat-purchase-total strong{color:var(--ink);font-size:12px}
.web-search-action{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:10px;padding-top:9px;border-top:1px solid var(--border)}
/* display:flex перебивает [hidden] — без этой строки скрытая кнопка остаётся видимой */
.web-search-action[hidden]{display:none}
.web-search-button{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border-strong);border-radius:8px;background:var(--surface);color:var(--ink-2);padding:7px 10px;font:inherit;font-size:12px;font-weight:700;cursor:pointer;transition:.15s ease}.web-search-button.is-parser{border-color:var(--border-strong);background:var(--surface);color:var(--ink-2)}.web-search-button.is-parser:hover{border-color:var(--faint);background:var(--surface-2)}.web-search-button.is-apify{border-color:var(--border-strong);background:var(--surface);color:var(--ink-2)}.web-search-button.is-apify:hover{border-color:var(--faint);background:var(--surface-2)}
.web-search-button:hover{background:var(--surface-2);border-color:var(--faint)}.web-search-button:disabled{cursor:wait;opacity:.65}.web-search-button span{font-size:15px;line-height:10px}
.web-saved-count{color:var(--ok);background:var(--ok-soft);border-radius:999px;padding:4px 7px;font-size:12px;font-weight:700}
.web-results-row td{padding:0!important;background:transparent!important;border:0!important}.web-results-row[hidden]{display:none}
.web-results-panel{position:fixed;z-index:220;left:50%;bottom:20px;transform:translateX(-50%);display:flex;flex-direction:column;width:min(640px,calc(100vw - 32px));height:auto;max-height:min(74vh,600px);padding:16px;border:1px solid var(--border-strong);border-radius:14px;background:var(--surface);box-shadow:0 24px 70px rgba(16,24,40,.20),0 6px 18px rgba(16,24,40,.08)}.web-results-panel:before{display:none}.web-material-tabs{display:flex;flex:0 0 auto;gap:7px;overflow-x:auto;margin:-2px -2px 14px;padding:2px 2px 8px;scrollbar-width:thin}.web-material-tab{position:relative;max-width:210px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--muted);padding:8px 12px;font:inherit;font-size:12px;font-weight:700;cursor:pointer}.web-material-tab:hover{border-color:var(--accent-line);color:var(--accent)}.web-material-tab.active{border-color:var(--accent-strong);background:var(--accent-strong);color:var(--surface)}.web-material-tab.has-results:after{content:"";display:inline-block;width:6px;height:6px;margin-left:7px;border-radius:50%;background:var(--ok)}.web-results-head{position:relative;flex:0 0 auto;display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid var(--border)}.web-results-title{font-size:15px;font-weight:700;color:var(--accent-strong)}.web-results-sub{margin-top:4px;color:var(--muted);font-size:12px}.web-results-providers{margin-top:4px;color:var(--faint);font-size:12px}.web-results-controls{display:flex;align-items:center;gap:7px;white-space:nowrap}.web-results-refresh,.web-results-close{border:1px solid var(--border);background:var(--surface);color:var(--muted);height:32px;border-radius:8px;cursor:pointer;transition:.15s ease;display:inline-flex;align-items:center;justify-content:center}.web-results-refresh{padding:0 14px;font:inherit;font-size:12px;font-weight:600}.web-results-refresh:hover{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent)}.web-results-close{width:32px;font-size:13px;font-weight:500;line-height:1}.web-results-close:hover{border-color:var(--danger-line);background:var(--danger-soft);color:var(--danger)}.web-market-stats{display:flex;flex:0 0 auto;gap:7px;flex-wrap:wrap;margin:0 0 14px}.web-market-stats span{border:1px solid var(--accent-line);border-radius:999px;background:var(--accent-soft);color:var(--accent);padding:5px 9px;font-size:12px}.web-market-stats .excluded{border-color:var(--warn-line);background:var(--warn-soft);color:var(--warn)}
.web-candidate-grid{display:grid;grid-template-columns:minmax(0,1fr);align-content:start;gap:0;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 8px 8px 0;scrollbar-gutter:stable}.web-candidate-grid::-webkit-scrollbar{width:9px}.web-candidate-grid::-webkit-scrollbar-thumb{border:2px solid transparent;border-radius:999px;background:var(--border-strong);background-clip:padding-box}
.web-candidate-card{position:relative;display:block;min-width:0;padding:13px 8px 14px;border-bottom:1px solid var(--border);background:transparent;transition:background .15s ease}.web-candidate-card:hover{background:var(--accent-soft)}.web-candidate-card:last-child{border-bottom:0}.web-candidate-card.is-listing .web-candidate-name{color:var(--ink-2)}
.web-candidate-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap}.web-candidate-head>.web-candidate-name{flex:1 1 auto;min-width:220px}.web-candidate-head>.web-price-row{flex:0 0 auto;margin:0;justify-content:flex-end;flex-wrap:wrap}
.web-candidate-image{position:relative;display:flex;align-items:center;justify-content:center;height:132px;border-radius:8px;background:var(--surface);border:1px solid var(--border);overflow:hidden}.web-candidate-image img{max-width:100%;max-height:100%;object-fit:contain;padding:6px}.web-candidate-placeholder{display:grid;justify-items:center;gap:6px;color:var(--faint);font-size:12px;font-weight:600}.web-candidate-placeholder b{font-size:18px;font-weight:400}
.web-candidate-body{display:flex;flex-direction:column;min-width:0}
.web-candidate-name{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:var(--accent-strong);font-size:13px;font-weight:700;line-height:1.34;letter-spacing:-.005em;text-decoration:none}.web-candidate-name:hover{color:var(--accent);text-decoration:underline}
.web-candidate-meta{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin-top:5px;color:var(--muted);font-size:12px}.web-candidate-supplier{max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-2);font-weight:600}.web-candidate-state{display:inline-flex;align-items:center;gap:4px;color:var(--muted)}.web-candidate-state:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.web-candidate-state.ok{color:var(--ok)}.web-candidate-state.listing{color:var(--warn)}.web-candidate-state.found{color:var(--accent)}.web-candidate-meta em{font-style:normal;color:var(--border-strong)}.web-candidate-score{color:var(--faint);font-variant-numeric:tabular-nums}.web-provider-tag{margin-left:auto;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--faint);padding:1px 6px;font-size:12px;font-weight:600}
.web-price-row{display:flex;align-items:baseline;flex-wrap:wrap;gap:9px;margin-top:9px}.web-candidate-price{color:var(--accent-strong);font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.web-candidate-price.unknown{color:var(--faint);font-size:15px;font-weight:700}.web-price-delta{border-radius:8px;padding:2px 7px;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}.web-price-delta.down{background:var(--ok-soft);color:var(--ok)}.web-price-delta.up{background:var(--danger-soft);color:var(--danger)}.web-candidate-price-details{color:var(--muted);font-size:12px;font-weight:600}.web-candidate-price.unverified{color:var(--ink-2)}.web-price-unverified{border-bottom:1px dashed var(--border-strong);color:var(--faint);font-size:12px;font-weight:600;cursor:help}
.web-candidate-availability{margin-top:4px;color:var(--ok);font-size:12px;font-weight:600}.web-candidate-availability.unknown{color:var(--warn)}
.web-specs{display:grid;grid-template-columns:repeat(auto-fill,minmax(195px,1fr));gap:3px 16px;margin-top:9px}.web-specs span{display:flex;gap:5px;min-width:0;color:var(--ink-2);font-size:12px;line-height:1.38}.web-specs span:before{flex:0 0 auto;font-weight:700}.web-specs .ok:before{content:"✓";color:var(--ok)}.web-specs .bad:before{content:"✕";color:var(--danger)}.web-specs .unknown:before{content:"?";color:var(--faint)}.web-specs .bad{color:var(--danger)}.web-specs .unknown{color:var(--faint)}.web-specs span i{font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.web-specs-more{margin-top:5px;color:var(--faint);font-size:12px}
.web-candidate-note{margin-top:7px;color:var(--warn);font-size:12px;line-height:1.45}
.web-candidate-actions{display:flex;align-items:center;gap:8px;margin-top:10px;padding-top:0}.web-candidate-actions button,.web-candidate-actions a{display:inline-flex;align-items:center;justify-content:center;height:30px;border-radius:8px;padding:0 12px;font:inherit;font-size:12px;font-weight:600;text-decoration:none;white-space:nowrap;cursor:pointer;transition:.15s ease}.web-add{border:1px solid var(--accent-strong);background:var(--accent-strong);color:var(--surface)}.web-add:hover{background:var(--ink)}.web-add.saved{border-color:var(--ok-line);background:var(--ok-soft);color:var(--ok)}.web-open{border:1px solid var(--border-strong);background:var(--surface);color:var(--ink-2)}.web-open:hover{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent)}.web-candidate-card.is-listing .web-add{border-color:var(--border-strong);background:var(--surface);color:var(--ink-2)}.web-candidate-card.is-listing .web-add:hover{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent)}
.web-results-toolbar{display:flex;flex:0 0 auto;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 12px}.web-results-toolbar>b{margin-right:2px;color:var(--faint);font-size:12px;font-weight:700;letter-spacing:.03em;text-transform:uppercase}.web-sort-chip{border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--muted);padding:5px 10px;font:inherit;font-size:12px;font-weight:700;cursor:pointer;transition:.15s ease}.web-sort-chip:hover{border-color:var(--accent-line);color:var(--accent)}.web-sort-chip.active{border-color:var(--accent-strong);background:var(--accent-strong);color:var(--surface)}
.web-search-empty,.web-search-loading,.web-search-error{border:1px dashed var(--border-strong);border-radius:12px;padding:22px;text-align:center;color:var(--muted);font-size:12px}.web-search-error{border-color:var(--danger-line);background:var(--danger-soft);color:var(--danger)}
/* Товарная выдача списком, как в маркетплейсе: крупное фото слева, все
   характеристики позиции видны сразу, без раскрытия. */
.web-results-panel{width:min(1000px,calc(100vw - 56px));height:min(760px,calc(100vh - 92px));padding:18px}
.web-search-progress{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;flex:0 0 auto;margin:-3px 0 14px}.web-search-progress span{height:4px;border-radius:999px;background:var(--accent-soft);overflow:hidden}.web-search-progress span:before{content:"";display:block;width:45%;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent-line),var(--accent));animation:webSweep 1.2s ease-in-out infinite}.web-search-progress span:nth-child(2):before{animation-delay:.16s}.web-search-progress span:nth-child(3):before{animation-delay:.32s}@keyframes webSweep{0%{transform:translateX(-110%)}60%,100%{transform:translateX(240%)}}
.web-loading-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:0;min-height:0;overflow:hidden}.web-skeleton-card{display:grid;grid-template-columns:186px 1fr;gap:20px;min-height:186px;padding:18px 6px 20px;border-bottom:1px solid var(--border)}.web-skeleton-image{border-radius:8px}.web-skeleton-image,.web-skeleton-body i,.web-skeleton-body b{background:linear-gradient(100deg,var(--border) 20%,var(--accent-soft) 38%,var(--border) 56%);background-size:260% 100%;animation:webShimmer 1.35s linear infinite}.web-skeleton-body{display:grid;align-content:start;gap:12px;padding:20px}.web-skeleton-body i{display:block;height:13px;border-radius:8px}.web-skeleton-body i:nth-child(1){width:48%}.web-skeleton-body i:nth-child(2){width:92%;height:18px}.web-skeleton-body i:nth-child(3){width:70%}.web-skeleton-body i:nth-child(4){width:38%;height:28px;margin-top:8px}.web-skeleton-body b{display:block;width:100%;height:36px;margin-top:24px;border-radius:8px}@keyframes webShimmer{to{background-position:-160% 0}}
@media(max-width:900px){.web-results-panel{width:calc(100vw - 24px)}}@media(max-width:720px){.web-results-panel{inset:58px 8px 8px;width:auto;height:auto;transform:none;padding:14px;border-radius:12px}.web-results-panel:before{display:none}.web-results-refresh{width:32px;padding:0;font-size:0}.web-results-refresh:first-letter{font-size:15px}.web-candidate-card,.web-skeleton-card{grid-template-columns:118px minmax(0,1fr);gap:14px}.web-candidate-image{height:118px}.web-candidate-name{font-size:13px}.web-candidate-price{font-size:22px}.web-specs{grid-template-columns:minmax(0,1fr)}.web-candidate-actions{flex-wrap:wrap}}.material-card-head{display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:10px;align-items:start}
.material-index{width:28px;height:28px;border-radius:8px;background:var(--border);color:var(--muted);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}
.material-card .mat-name{font-size:13px;font-weight:700;line-height:1.35;color:var(--accent-strong)}
.material-qty{display:inline-flex;align-items:center;gap:4px;border-radius:999px;background:var(--accent-soft);color:var(--accent);padding:5px 9px;font-size:12px;font-weight:700;white-space:nowrap}
.mat-field-source,.mat-source{margin-top:4px;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mat-field-source a,.mat-source a{color:var(--muted);text-decoration:none}.mat-field-source a:hover,.mat-source a:hover{color:var(--accent);text-decoration:underline}
.mat-field-unverified{color:var(--faint)}
.material-card-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(210px,.8fr);gap:14px;margin-top:14px;padding-top:13px;border-top:1px solid var(--border)}
.material-money{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.material-money-box{min-width:0;border-radius:8px;background:var(--accent-soft);padding:9px 10px}
.material-money-label{display:block;color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.material-money-value{display:block;margin-top:4px;color:var(--accent-strong);font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}
.material-money-note{display:block;margin-top:2px;color:var(--faint);font-size:12px}
.material-buy-box{background:var(--ok-soft)}.material-buy-box .material-money-label{color:var(--ok)}
.material-buy-box .mat-buy{width:100%;margin-top:4px;border:1px solid var(--ok-line);background:var(--surface);border-radius:8px;padding:6px 8px;text-align:right;font-size:13px;font-weight:700;color:var(--ok);font-variant-numeric:tabular-nums}
.material-buy-total{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 2px 0;color:var(--muted);font-size:12px}.material-buy-total strong{color:var(--ok);font-size:13px}
.materials-totals{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:14px;padding:12px 14px;border-radius:12px;border:1px solid var(--border);background:var(--surface-soft);color:var(--ink)}
.materials-total{min-width:150px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 10px;border-left:1px solid var(--border)}.materials-total:first-child{border-left:0}.materials-total span{color:var(--muted);font-size:12px}.materials-total strong{font-size:13px;font-variant-numeric:tabular-nums;color:var(--ink)}.materials-total.mat-econ-row strong{color:var(--ok)}
.m-specs{font-size:12px;color:var(--muted);margin-top:6px;line-height:1.5;max-width:760px}
.m-specs summary{cursor:pointer;display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-weight:600;list-style:none}
.m-specs summary:hover{color:var(--ink)}
.m-specs summary::-webkit-details-marker{display:none}
.m-specs summary:before{content:'▸';color:var(--faint)}
.m-specs[open] summary:before{content:'▾'}
.m-spec-body{margin-top:5px;color:var(--muted)}
.m-spec-list{margin:6px 0 0 0;padding:0;display:grid;gap:4px;list-style:none}
.m-spec-list li{position:relative;padding-left:12px;color:var(--muted)}
.m-spec-list li:before{content:'';position:absolute;left:0;top:.72em;width:4px;height:4px;border-radius:50%;background:var(--faint)}
.m-specs-merged .m-spec-list li{padding-left:14px}
.m-spec-conflict:before{background:var(--red-fg,#c0392b)!important;width:5px;height:5px}
.m-spec-eis:before{background:var(--amber-fg,#b8860b)!important}
.m-spec-doc:before{background:var(--accent-strong,#2b6cb0)!important}
.m-spec-conflict .m-spec-text{color:var(--ink);font-weight:600}
.m-spec-alt{display:block;color:var(--red-fg,#c0392b)}
.m-spec-tag{margin-left:6px;padding:0 5px;border-radius:var(--radius-sm);background:var(--surface-soft);color:var(--faint);font-size:11px;font-weight:600;white-space:nowrap}
.m-spec-doc .m-spec-tag{color:var(--accent-strong)}.m-spec-eis .m-spec-tag{color:var(--amber-fg)}
.m-spec-state{margin-left:6px;font-weight:600}
.m-spec-state-same{color:var(--green-fg)}.m-spec-state-diff{color:var(--red-fg)}.m-spec-state-unchecked{color:var(--faint);font-weight:500}
.m-spec-source{margin-top:6px}
.mat-char-summary{margin:0 0 10px;padding:8px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-soft);font-size:12px;color:var(--muted);line-height:1.5}
.mat-char-summary strong{color:var(--ink)}
.mat-char-diff{border-color:var(--warn,#d69e2e);background:var(--warn-soft,#fdf6e3)}
.mat-char-same{border-color:var(--green-border,var(--border))}
.rag-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:0 0 12px;padding:0;background:transparent;border:0;font-size:12px}
.rag-summary-main,.rag-filters{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.rag-summary-title{font-weight:700;color:var(--accent-strong)}.rag-average{color:var(--muted)}
.rag-summary .good{color:var(--green-fg);font-weight:600}.rag-summary .warn{color:var(--amber-fg);font-weight:600}.rag-summary .bad{color:var(--red-fg);font-weight:600}
.rag-filter{border:0;background:var(--border);color:var(--muted);border-radius:999px;padding:6px 10px;font:inherit;font-size:12px;font-weight:600;cursor:pointer}
.rag-filter.active,.rag-filter:hover{background:var(--accent);color:var(--surface)}
.rag-cell{min-width:0;max-width:100%;font-size:12px;color:var(--muted);line-height:1.4}
.rag-choice,.rag-top{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.rag-top{margin-top:0}
.rag-compact-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:7px}
.rag-compact-actions .rag-open{margin:0;padding:5px 9px}
.rag-status-note{margin-top:5px;color:var(--amber-fg);font-size:12px;line-height:1.35}
.rag-sku{font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
@media(max-width:1100px){.materials-grid{grid-template-columns:1fr}}
@media(max-width:640px){.material-card-body{grid-template-columns:1fr}.material-money{grid-template-columns:1fr 1fr}.materials-totals{justify-content:stretch}.materials-total{flex:1 1 100%;border-left:0;border-top:1px solid var(--border)}}
.rag-reason{margin-top:3px;line-height:1.45}
.rag-fact-line{display:flex;gap:7px;flex-wrap:wrap;margin-top:4px;font-size:12px}
.rag-fact-line .good,.rag-candidate-stats .good{color:var(--green-fg);font-weight:600}
.rag-fact-line .bad,.rag-candidate-stats .bad{color:var(--red-fg);font-weight:600}
.rag-open{margin-top:6px}
.rag-drawer{position:fixed;right:0;top:0;bottom:0;width:min(1180px,100vw);z-index:190;background:var(--accent-soft);border-left:1px solid var(--border-strong);box-shadow:0 28px 90px rgba(16,24,40,.28);padding:0 22px 22px;overflow:auto}
.rag-drawer[hidden]{display:none}
.rag-drawer-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;position:sticky;top:0;background:rgba(248,250,252,.96);backdrop-filter:blur(14px);z-index:3;padding:18px 0 14px;border-bottom:1px solid var(--border)}.rag-drawer-head strong{font-size:15px;color:var(--accent-strong)}.rag-drawer-head .faint{font-size:12px;margin-top:2px}
.rag-panel-title{margin-top:14px;padding:14px 16px;border-radius:12px;background:var(--surface);border:1px solid var(--border)}.rag-panel-title h4{margin:0;font-size:15px}.rag-panel-title p{margin:8px 0 0;color:var(--muted);font-size:12px;line-height:1.5}
.rag-panel-top{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.rag-panel-metrics{display:flex;align-items:center;gap:8px;flex:none}
.rag-metric{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid var(--border);border-radius:999px;background:var(--surface-2);color:var(--muted);font-size:12px;white-space:nowrap}
.rag-metric b{color:var(--ink);font-weight:700}
.rag-metric .hint{margin-left:0}
.rag-candidate-list{display:grid;gap:12px;margin-top:12px}
.rag-candidate-card{border:1px solid var(--border);border-radius:12px;padding:14px;background:var(--surface);box-shadow:0 4px 14px rgba(16,24,40,.04)}
.rag-candidate-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:8px}
.rag-candidate-meta,.rag-candidate-stats{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.rag-candidate-stats{margin:6px 0 8px}
.rag-cand-table{width:100%;border-collapse:collapse;margin-top:5px;font-size:12px}
.rag-cand-table th,.rag-cand-table td{padding:4px 5px;border-top:1px solid var(--border);text-align:left;vertical-align:top}
.rag-cand-table th{color:var(--faint);font-weight:500}
.rag-score{cursor:help}
.rag-compare-table{width:100%;border-collapse:collapse;font-size:12px}
.rag-compare-table th,.rag-compare-table td{padding:9px 10px;border-top:1px solid var(--border);vertical-align:top;text-align:left}
.rag-compare-table th{font-weight:600;color:var(--muted);background:var(--accent-soft)}.rag-compare-table tr.fact-match td,.rag-compare-table tr.fact-mismatch td{background:var(--surface)}
.rag-fact-status{display:inline-flex;border-radius:999px;padding:3px 7px;font-size:12px;font-weight:700;white-space:nowrap}.rag-fact-status.status-match{background:var(--ok-soft);color:var(--ok)}.rag-fact-status.status-mismatch{background:var(--danger-soft);color:var(--danger)}.rag-fact-status.status-missing{background:var(--border);color:var(--ink-2)}
.rag-fact-status.status-made{background:var(--info-soft);color:var(--info)}
.rag-candidate-stats .made{color:var(--info);font-weight:600}
.rag-made-note{margin-top:3px;font-size:12px;color:var(--info)}
.rag-actions-col{width:1%}
.rag-compare-table td.rag-row-actions{width:1%;white-space:nowrap;text-align:right;padding-left:0}
/* Кнопки есть в каждой строке, и постоянно видимые превращали таблицу в стену
   кнопок. Показываем по наведению на строку; там, где наведения нет (тач), —
   всегда, иначе действие станет недоступным. */
.rag-row-actions .btn{opacity:0;transition:opacity .12s ease}
.rag-compare-table tr:hover .rag-row-actions .btn,.rag-row-actions .btn:focus-visible{opacity:1}
@media (hover:none){.rag-row-actions .btn{opacity:1}}
.make-rule-add{margin:0 0 0 6px;padding:5px 9px;font-size:12px;white-space:nowrap;font-weight:600;box-shadow:none;border:1px solid var(--info-line);background:var(--info-soft);color:var(--info)}
.make-rule-add:hover{background:var(--info);color:#fff;border-color:var(--info)}
.make-rule-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media(max-width:640px){.make-rule-grid{grid-template-columns:1fr}}
.make-rules-panel{margin-top:14px}
.rag-compare-table .fact-match td{background:var(--ok-soft)}.rag-compare-table .fact-match td:last-child{color:var(--green-fg);font-weight:600}
.rag-compare-table .fact-mismatch td{background:var(--warn-soft)}.rag-compare-table .fact-mismatch td:last-child{color:var(--red-fg);font-weight:600}
.rag-compare-table .fact-missing td{background:var(--surface-2)}.rag-compare-table .fact-missing td:last-child{color:var(--slate-fg);font-weight:600}
.manual-spec-add{margin:0;padding:5px 9px;font-size:12px;font-weight:600;white-space:nowrap;box-shadow:none;border:1px solid var(--border-strong);background:var(--surface);color:var(--ink-2)}
.manual-spec-add:hover{background:var(--ink);border-color:var(--ink);color:#fff}
.manual-spec-modal-card{width:min(540px,100%)}
.manual-spec-form{display:grid;gap:12px}
.manual-spec-source{border:1px solid var(--border);border-radius:8px;background:var(--surface-soft);padding:10px 12px;color:var(--muted);font-size:12px}
.manual-spec-source span{display:block;font-size:12px;text-transform:uppercase;color:var(--faint);font-weight:700;margin-bottom:3px}
.manual-spec-source strong{display:block;color:var(--ink);font-size:13px;line-height:1.4}
.manual-spec-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:2px;flex-wrap:wrap}
.rag-score{display:inline-flex;align-items:center;border-radius:999px;padding:2px 7px;font-weight:600;font-variant-numeric:tabular-nums}
.rag-score-strong{background:var(--green-bg);color:var(--green-fg)}
.rag-score-check{background:var(--amber-bg);color:var(--amber-fg)}
.rag-score-weak{background:var(--slate-bg);color:var(--slate-fg)}
.mat-save-state{font-size:12px;color:var(--muted);align-self:center}
.mat-buy{font-variant-numeric:tabular-nums}
.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow-soft)}
.panel h3{margin:0 0 14px;font-size:13px;font-weight:500}
.field{display:block;margin-bottom:10px}
.field span{display:block;font-size:12px;color:var(--muted);margin-bottom:3px}
.calc-form{display:grid;gap:14px}
.calc-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.calc-form .field{margin:0}
.money-field{position:relative}
.money-field .input{padding-right:112px;font-variant-numeric:tabular-nums}
.money-field-readout{position:absolute;right:11px;bottom:10px;max-width:98px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right;font-size:12px!important;color:var(--faint)!important;margin:0!important;pointer-events:none}
.calc-note{margin:0;padding:11px 12px;background:var(--surface-soft);border:1px solid var(--border);border-radius:var(--radius-sm)}
.result-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.result-tabs{display:inline-flex;gap:3px;padding:3px;background:var(--surface-soft);border:1px solid var(--border);border-radius:8px}
.result-tab{border:0;background:transparent;color:var(--muted);border-radius:8px;padding:7px 10px;font:inherit;font-size:12px;font-weight:600;cursor:pointer}
.result-tab:hover{color:var(--ink)}
.result-tab.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(17,24,39,.06)}
.result-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(190px,.7fr);gap:18px;align-items:start}
.result-panel[hidden]{display:none}
.result-kpis{display:grid;gap:10px;border-left:1px solid var(--border);padding-left:18px}
.result-kpi{border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;background:linear-gradient(180deg,var(--ok-soft),var(--surface))}
.result-kpi .k{font-size:12px;color:var(--muted);margin-bottom:4px}
.result-kpi .v{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--green-fg);line-height:1.15}
.result-kpi.muted .v{font-size:15px;color:var(--ink)}
.kv{width:100%;font-size:13px;border-collapse:collapse}
.kv td{padding:4px 0} .kv td.k{color:var(--muted)} .kv td.v{text-align:right;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;padding-left:10px}
/* справочные строки: не расход, в прибыли не участвуют — отделяем чертой и приглушаем */
.kv tr.kv-ref td{color:var(--faint);font-weight:500}
.kv tr:not(.kv-ref) + tr.kv-ref td{border-top:1px solid var(--border);padding-top:9px}
/* подсказка «i»: объясняет показатель прямо на месте, без ухода в справку */
.hint{position:relative;display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;flex:none;
  margin-left:5px;border:1px solid var(--border-strong);border-radius:50%;background:transparent;color:var(--muted);
  font:inherit;font-size:10px;font-weight:700;line-height:1;cursor:help;vertical-align:middle;padding:0}
.hint:hover,.hint:focus-visible{background:var(--ink);border-color:var(--ink);color:var(--surface);outline:none}
.hint-tip{position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);width:250px;max-width:70vw;
  background:var(--ink);color:#fff;text-align:left;font-size:11.5px;font-weight:400;line-height:1.45;letter-spacing:.1px;
  padding:9px 11px;border-radius:9px;box-shadow:0 14px 34px rgba(17,24,39,.28);
  opacity:0;visibility:hidden;transition:opacity .12s ease,transform .12s ease;pointer-events:none;z-index:200;white-space:normal}
.hint:hover .hint-tip,.hint:focus-visible .hint-tip{opacity:1;visibility:visible;transform:translateX(-50%) translateY(-2px)}
.kv td.v .hint-tip,.hint-end .hint-tip{left:auto;right:-4px;transform:none}
.kv td.v .hint:hover .hint-tip,.hint-end:hover .hint-tip,.hint-end:focus-visible .hint-tip{transform:translateY(-2px)}
.field span .hint{margin-left:4px}
/* discount ladder */
.scenario-analysis{display:grid;gap:16px}
.scenario-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.scenario-title{margin:0;font-size:15px;font-weight:700;color:var(--ink)}
.scenario-sub{margin:3px 0 0;color:var(--muted);font-size:12px}
.scenario-toggle{display:inline-flex;gap:3px;padding:3px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft)}
.scenario-toggle button{border:0;background:transparent;border-radius:8px;padding:7px 11px;font:inherit;font-size:12px;font-weight:600;color:var(--muted);cursor:pointer}
.scenario-toggle button.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(17,24,39,.06)}
.scenario-body{display:grid;grid-template-columns:280px minmax(0,1fr);gap:18px;align-items:stretch}
.scenario-side{display:grid;gap:12px}
.scenario-card{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);padding:14px}
.scenario-card h4{margin:0 0 12px;font-size:12px;color:var(--ink)}
.scenario-range{width:100%;accent-color:var(--ink)}
.scenario-scale{display:flex;justify-content:space-between;color:var(--faint);font-size:12px;margin-top:6px}
.scenario-selected{display:inline-flex;align-items:center;justify-content:center;min-width:64px;height:34px;border-radius:8px;background:var(--surface-soft);border:1px solid var(--border);font-size:18px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.scenario-kpis{display:grid;grid-template-columns:1fr 1fr;gap:0}
.scenario-kpi{padding:0 12px;border-left:1px solid var(--border)}
.scenario-kpi:first-child{padding-left:0;border-left:0}
.scenario-kpi .k{font-size:12px;color:var(--muted);margin-bottom:4px}
.scenario-kpi .v{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--green-fg)}
.scenario-chart-wrap{min-height:300px;border:1px solid var(--border);border-radius:var(--radius-sm);background:linear-gradient(180deg,var(--surface),var(--surface-2));padding:10px}
.scenario-chart-wrap[hidden],.scenario-table[hidden]{display:none}
.scenario-chart{display:block;width:100%;height:auto;min-height:260px}
.scenario-axis{stroke:var(--border-strong);stroke-width:1}
.scenario-grid{stroke:var(--border);stroke-width:1}
.scenario-profit-line{fill:none;stroke:var(--green-fg);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.scenario-margin-line{fill:none;stroke:var(--ink);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.scenario-profit-dot{fill:var(--surface);stroke:var(--green-fg);stroke-width:3}
.scenario-margin-dot{fill:var(--surface);stroke:var(--ink);stroke-width:3}
.scenario-point.active{r:7}
.scenario-legend{display:flex;align-items:center;gap:18px;margin:0 0 8px 4px;color:var(--muted);font-size:12px}
.scenario-legend span{display:inline-flex;align-items:center;gap:7px}
.scenario-legend i{width:18px;height:3px;border-radius:999px;display:inline-block}
.scenario-legend .profit{background:var(--green-fg)}
.scenario-legend .margin{background:var(--ink)}
.scenario-svg-label{font-size:12px;fill:var(--muted)}
.scenario-table{width:100%;border-collapse:collapse;font-size:12px;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;background:var(--surface)}
.scenario-table th,.scenario-table td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left}
.scenario-table th{color:var(--faint);font-weight:600;background:var(--surface-soft)}
.scenario-table td{font-variant-numeric:tabular-nums}
.scenario-table tr:last-child td{border-bottom:0}
.scenario-table tr.active td{background:var(--ok-soft)}
@media(max-width:1180px){.scenario-body{grid-template-columns:1fr}.result-layout{grid-template-columns:1fr}.result-kpis{border-left:0;padding-left:0;grid-template-columns:repeat(2,1fr)}}
@media(max-width:720px){.calc-grid,.result-kpis,.scenario-kpis{grid-template-columns:1fr}.money-field .input{padding-right:12px}.money-field-readout{position:static;display:block;max-width:none;text-align:left;margin-top:4px!important}.scenario-chart-wrap{overflow-x:auto}.scenario-chart{min-width:680px}}
.docs li{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--border)}
.docs li:last-child{border:none}
.docs .ic{width:15px;height:15px;color:var(--faint);flex-shrink:0}
.documents-workspace{display:grid;gap:16px}
.docs-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.docs-title{display:flex;align-items:center;gap:10px}
.docs-title h3{margin:0;font-size:15px;font-weight:700}
.docs-stats{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.docs-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.docs-filters{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.docs-filter,.docs-view{border:1px solid var(--border);background:var(--surface-soft);color:var(--muted);border-radius:999px;padding:7px 12px;font:inherit;font-size:12px;font-weight:600;line-height:1;cursor:pointer}
.docs-filter.active,.docs-view.active{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.docs-view-toggle{margin-left:auto;display:inline-flex;border:1px solid var(--border);background:var(--surface-soft);border-radius:8px;padding:3px;gap:3px}
.docs-view{border:0;border-radius:8px;padding:7px 9px;background:transparent}
.docs-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;border:1px solid var(--border);border-radius:8px;background:var(--surface);overflow:hidden}
.docs-live{border:1px solid var(--border);border-radius:8px;background:var(--surface-soft);padding:12px;display:grid;gap:10px}
.docs-live[hidden]{display:none}
.docs-live-head{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12px;color:var(--muted)}
.docs-live-title{font-size:13px;font-weight:700;color:var(--ink)}
.docs-live-list{display:grid;gap:6px}
.docs-live-row{display:grid;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:9px;border:1px solid var(--border);border-radius:8px;background:var(--surface);padding:8px 10px;min-width:0}
.docs-live-index{font-size:12px;color:var(--faint);font-variant-numeric:tabular-nums}
.docs-live-name{min-width:0;font-size:12px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.docs-live-meta{font-size:12px;color:var(--muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.docs-live-state{font-size:12px;font-weight:700;color:var(--muted);white-space:nowrap}
.docs-live-row.is-loading .docs-live-state{color:var(--ink)}
.docs-live-row.is-done .docs-live-state{color:var(--green-fg)}
.docs-live-row.is-error .docs-live-state{color:var(--amber-fg)}
.docs-live-row.is-loading .docs-live-state:before{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--ink);margin-right:6px;animation:docPulse 1s ease-in-out infinite}
@keyframes docPulse{0%,100%{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1.08)}}
.documents-workspace.list .docs-grid{grid-template-columns:1fr}
.documents-workspace.list .doc-card:nth-child(2n){border-left:0}
/* плотная строка файла: иконка · имя · вес · действия — как в файловом менеджере */
.doc-card{position:relative;min-width:0;background:var(--surface);padding:7px 12px;display:flex;align-items:center;gap:10px;border-top:1px solid var(--border)}
.doc-card:nth-child(-n+2){border-top:0}
.documents-workspace.list .doc-card:nth-child(2){border-top:1px solid var(--border)}
.doc-card:nth-child(2n){border-left:1px solid var(--border)}
.doc-card:hover{background:var(--surface-soft)}
.doc-card[hidden]{display:none}
.doc-card-main{min-width:0;flex:1;display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px}
.doc-card-title{min-width:0;flex:1;font-size:12px;font-weight:600;color:var(--ink);line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.doc-card-meta{flex:none;color:var(--muted);font-size:12px;line-height:1.3;white-space:nowrap;font-variant-numeric:tabular-nums}
.doc-readiness{display:inline-flex;align-items:center;margin-left:6px;border-radius:999px;padding:1px 6px;font-size:12px;font-weight:600;line-height:1.3;background:var(--slate-bg);color:var(--slate-fg)}
.doc-readiness-missing,.doc-readiness-no-text,.doc-readiness-archive-no-text{background:var(--amber-bg);color:var(--amber-fg)}
/* действия строки: подписи «Просмотреть»/«Скачать» всплывают поверх правого края,
   поэтому в покое имя файла занимает всю ширину строки и не режется многоточием */
.doc-card-actions{position:absolute;right:8px;top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:4px;white-space:nowrap;opacity:0;pointer-events:none;padding-left:14px;border-radius:8px;background:var(--surface-2);box-shadow:-16px 0 14px -6px var(--surface-2);transition:opacity .12s ease}
.doc-card:hover .doc-card-actions,.doc-card:focus-within .doc-card-actions{opacity:1;pointer-events:auto}
.doc-act{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 9px;border-radius:8px;color:var(--accent);font-size:12px;font-weight:600;line-height:1}
.doc-act:hover{background:var(--accent-soft);text-decoration:none}
.doc-act svg{width:14px;height:14px;flex:none}
/* на узком экране строка короткая — подписи убираем, чтобы всплывашка не закрыла имя */
@media(max-width:1080px){.doc-act span{display:none}.doc-act{padding:0 6px}}
@media(hover:none){.doc-card-actions{position:static;transform:none;opacity:1;pointer-events:auto;padding-left:0;background:transparent;box-shadow:none}.doc-act span{display:none}.doc-act{padding:0 6px}}
.docs-zip{margin-left:auto;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);background:var(--surface-soft);color:var(--ink);border-radius:999px;padding:6px 12px;font-size:12px;font-weight:600;line-height:1}
.docs-zip:hover{background:var(--surface);text-decoration:none}
.docs-zip svg{width:14px;height:14px}
.docs-zip+.docs-view-toggle{margin-left:0}
.archive-files{flex:0 0 100%;order:3;margin-top:2px}
.archive-files>summary{cursor:pointer;color:var(--muted);font-size:12px;list-style:none}
.archive-files>summary::-webkit-details-marker{display:none}
.archive-files>summary:before{content:'▸ ';font-size:12px}
.archive-files[open]>summary:before{content:'▾ '}
.archive-file-grid{margin-top:6px;display:grid;grid-template-columns:1fr 1fr;gap:4px 16px;max-height:126px;overflow:auto}
.archive-file-grid a,.archive-file-grid div{min-width:0;display:flex;align-items:center;gap:6px;color:var(--muted);font-size:12px;line-height:1.25}
.archive-file-grid span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* просмотрщик документа: свой хэдер + список файлов, тело — iframe с /view */
/* z-index обязателен: iframe тела рисуется своим слоем и иначе перекрывает выпадашку */
/* файлы внутри архива — с отступом и «веткой», архив сам по себе не открывается */
@media(max-width:720px){.doc-viewer-head{grid-template-columns:auto 1fr auto}.doc-viewer-brand b{display:none}.doc-viewer-pick{justify-self:stretch;max-width:none}.doc-viewer-actions span{display:none}}
.ai-workspace{margin-top:16px;padding:0;overflow:hidden;border:1px solid var(--border);border-top:0;background:var(--surface-2);box-shadow:var(--shadow-soft)}
.ai-hero{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 22px;background:var(--surface);border-bottom:1px solid var(--border)}
.ai-hero-main{display:flex;gap:12px;align-items:center;min-width:0}
.ai-hero-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.ai-hero h3{margin:0;font-size:16px;font-weight:700;color:var(--ink)}
.ai-meta{font-size:12px;color:var(--muted);margin-top:4px}
.ai-hero-insights{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:7px}.ai-insight{display:inline-flex;align-items:center;border-radius:999px;background:var(--border);color:var(--ink-2);padding:4px 8px;font-size:12px;font-weight:700}.ai-draft-pill{background:var(--warn-soft);color:var(--warn)}.ai-ready-pill{background:var(--ok-soft);color:var(--ok)}
.ai-summary-card{margin:12px 22px 0;border:1px solid var(--border);border-radius:12px;background:var(--surface);padding:0 14px;font-size:12px;line-height:1.6;color:var(--ink)}
.ai-summary-card>summary{list-style:none;cursor:pointer;padding:11px 0;font-weight:700;display:flex;align-items:center;gap:7px}.ai-summary-card>summary::-webkit-details-marker{display:none}.ai-summary-card>summary:before{content:'▸';color:var(--faint)}.ai-summary-card[open]>summary:before{content:'▾'}.ai-summary-body{padding:0 0 12px;color:var(--muted)}
.ai-doc-map{margin:12px 22px 0;border:1px solid var(--border);border-radius:12px;background:var(--surface);padding:14px 16px}
.ai-doc-map>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;font-weight:700}.ai-doc-map>summary::-webkit-details-marker{display:none}.ai-doc-map>summary:before{content:'▸';color:var(--faint)}.ai-doc-map[open]>summary:before{content:'▾'}.ai-doc-map>summary .note{margin-left:auto;font-weight:500}
.ai-doc-map-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}
.ai-doc-map[open] .ai-doc-map-grid{margin-top:12px}
.ai-doc-map-item{border:1px solid var(--border);border-radius:8px;padding:9px 10px;background:var(--surface-soft);display:flex;align-items:flex-start;justify-content:space-between;gap:8px;font-size:12px}
.ai-doc-map-item.is-found{background:var(--green-bg);border-color:rgba(35,128,82,.18)}
.ai-doc-map-item.is-missing,.ai-doc-map-item.is-warn{background:var(--amber-bg);border-color:rgba(146,97,10,.18)}
.ai-doc-map-label{font-weight:700;color:var(--ink)}
.ai-doc-map-note{color:var(--muted);font-size:12px;margin-top:2px}
.ai-quality-card{margin:12px 22px 0;border:1px solid var(--border);border-radius:12px;background:var(--surface);padding:14px 16px}
.ai-quality-card h4{margin:0 0 10px;font-size:13px}
.ai-quality-list{display:grid;gap:8px}
.ai-quality-item{display:grid;grid-template-columns:auto minmax(0,1fr);gap:9px;align-items:flex-start;padding:9px 10px;border-radius:8px;background:var(--surface-soft);font-size:12px;line-height:1.45}
.ai-quality-item .badge{margin-top:1px}
.ai-quality-title{font-weight:700;color:var(--ink)}
.ai-quality-detail{color:var(--muted);margin-top:2px}
.ai-run-status{margin:12px 22px 0;border:1px solid var(--border);border-radius:12px;background:var(--surface-soft);padding:0 14px;font-size:12px;color:var(--muted)}
.ai-run-status>summary{cursor:pointer;list-style:none;padding:11px 0;color:var(--ink);font-weight:700;display:flex;align-items:center;gap:7px}
.ai-run-status>summary::-webkit-details-marker{display:none}
.ai-run-status>summary:before{content:'▸';color:var(--faint)}
.ai-run-status[open]>summary:before{content:'▾'}
.ai-run-status-body{display:grid;gap:7px;padding:0 0 12px;line-height:1.5}
.ai-run-status-body details summary{cursor:pointer;color:var(--ink);font-weight:600}
.ai-quality{margin:12px 22px 0;border:1px solid var(--border);border-radius:12px;background:var(--surface-soft);padding:11px 14px;display:grid;gap:4px;font-size:12px;line-height:1.5;color:var(--muted)}
.ai-quality strong{color:var(--ink)}
.ai-quality-warning{background:var(--warn-soft);border-color:rgba(146,97,10,.22)}
.ai-feedback{margin:0!important}.ai-feedback-float{position:fixed;right:24px;bottom:84px;z-index:179}.ai-feedback-float>summary{list-style:none;background:var(--danger)!important;color:var(--surface)!important;border-radius:999px!important;padding:10px 15px!important;box-shadow:0 14px 32px rgba(194,39,58,.28);font-weight:700!important}.ai-feedback-float>summary::-webkit-details-marker{display:none}.ai-feedback-float>summary:hover{background:var(--danger)!important}.ai-feedback-float>form{position:absolute;right:0;bottom:48px;width:min(340px,calc(100vw - 32px));padding:14px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 24px 70px rgba(16,24,40,.24)}
.ai-sections{padding:18px 22px 22px}.ai-sections-single{padding-top:18px}
.ai-info{margin:12px 22px 22px;border:1px solid var(--border);border-radius:12px;background:var(--surface);padding:0 16px}
.ai-info>summary{list-style:none;cursor:pointer;display:flex;align-items:baseline;gap:10px;padding:13px 0;font-size:13px;font-weight:700;color:var(--ink)}
.ai-info>summary::-webkit-details-marker{display:none}
.ai-info>summary:before{content:'▸';color:var(--faint)}
.ai-info[open]>summary:before{content:'▾'}
.ai-info>summary .note{font-weight:500}
.ai-info-body{padding:0 0 16px}
.ai-info-body .ai-doc-map,.ai-info-body .ai-summary-card,.ai-info-body .ai-run-status,.ai-info-body .ai-quality,.ai-info-body .ai-quality-card{margin:10px 0 0}
.ai-info-body>:first-child{margin-top:0}
.ai-data-tabs{padding:16px 22px 22px}
.ai-data-tabs-bar{position:sticky;top:calc(var(--topbar-h) + 43px);z-index:12;display:flex;align-items:center;gap:8px;margin:0 0 12px;padding:8px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-soft)}
.ai-data-tab{border:1px solid transparent;background:var(--surface-soft);color:var(--muted);border-radius:8px;padding:9px 13px;font:inherit;font-size:13px;font-weight:700;line-height:1;cursor:pointer;display:inline-flex;align-items:center;gap:8px}
.ai-data-tab:hover{color:var(--ink);background:var(--border)}
.ai-data-tab.active{background:var(--ink);color:var(--surface)}
.ai-data-tab-count{min-width:22px;height:22px;border-radius:999px;background:rgba(105,115,134,.12);color:inherit;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-variant-numeric:tabular-nums}
.ai-data-tab.active .ai-data-tab-count{background:rgba(255,255,255,.16)}
.ai-data-panels{display:block}
.ai-section{min-width:0;border:1px solid var(--border);border-radius:12px;background:var(--surface);overflow:hidden}
.ai-section[hidden]{display:none}
.ai-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border);background:var(--surface-soft)}
.ai-section-title{font-size:13px;font-weight:700;color:var(--ink)}
.ai-section-sub{font-size:12px;color:var(--muted);margin-top:2px}
.ai-section-body{padding:0;overflow:auto}
.ai-section-body .table-wrap{border:0;border-radius:0;box-shadow:none}
.ai-section-body .materials-toolbar{padding:12px 14px;margin:0;border-bottom:1px solid var(--border)}
.ai-section-body .rag-summary{margin:10px 14px}
@media(max-width:700px){.ai-hero{align-items:flex-start;flex-direction:column}.ai-hero>form,.ai-hero>.btn{align-self:stretch}.ai-sections{padding:14px}.ai-doc-map,.ai-summary-card,.ai-run-status,.ai-quality,.ai-quality-card{margin-left:14px;margin-right:14px}}
.floating-ai-chat{position:fixed;right:24px;bottom:24px;z-index:180;margin:0;border:0;padding:0}
.ai-chat-pill{border:0;background:var(--ink);color:var(--surface);border-radius:999px;padding:12px 16px;box-shadow:0 16px 38px rgba(17,24,39,.24);font:inherit;font-size:13px;font-weight:700;display:flex;align-items:center;gap:10px;cursor:pointer}
.ai-chat-count{min-width:20px;height:20px;border-radius:999px;background:rgba(255,255,255,.16);display:inline-flex;align-items:center;justify-content:center;font-size:12px}
.floating-chat-panel{position:absolute;right:0;bottom:54px;width:min(430px,calc(100vw - 32px));height:min(620px,calc(100dvh - 112px));background:var(--surface);border:1px solid var(--border-strong);border-radius:12px;box-shadow:0 24px 70px rgba(17,24,39,.24);display:flex;flex-direction:column;overflow:hidden}
.floating-chat-panel[hidden]{display:none}
.floating-chat-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border);background:rgba(255,255,255,.96)}
.floating-chat-title{font-size:13px;font-weight:700}
.floating-chat-close{border:0;background:var(--surface-soft);color:var(--muted);border-radius:8px;width:30px;height:30px;cursor:pointer}
.floating-ai-chat .chat-msgs{flex:1;max-height:none;padding:14px 16px;overflow-y:auto}
.floating-ai-chat .chat-input{margin:0 14px 14px;border-radius:12px;padding-left:7px;align-items:center}
.floating-ai-chat .chat-input:focus-within{border-color:var(--border-strong);box-shadow:0 0 0 3px rgba(29,35,41,.08)}
.chat-context-bar{position:relative;flex:0 0 auto;padding:0}
.chat-context-picker{position:relative;width:max-content;max-width:100%;font-size:12px}
.chat-context-picker>summary{list-style:none;display:inline-flex;align-items:center;gap:6px;max-width:142px;padding:8px 7px;border:0;border-radius:8px;background:transparent;color:var(--muted);font-weight:700;cursor:pointer}
.chat-context-picker>summary:hover,.chat-context-picker[open]>summary{background:var(--surface-soft);color:var(--ink)}
.chat-context-picker>summary::-webkit-details-marker{display:none}
.chat-context-picker>summary span[data-chat-doc-summary]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-context-icon{font-size:18px;line-height:1;color:var(--ink);font-weight:400}
.chat-context-chevron{font-size:12px;transition:transform .15s}
.chat-context-picker[open] .chat-context-chevron{transform:rotate(180deg)}
.chat-context-popover{position:absolute;left:0;bottom:calc(100% + 8px);z-index:4;width:min(380px,calc(100vw - 60px));padding:12px;background:var(--surface);border:1px solid var(--border-strong);border-radius:12px;box-shadow:0 18px 48px rgba(17,24,39,.2)}
.chat-context-title{font-size:13px;font-weight:700;margin-bottom:9px}
.chat-doc-all{width:100%;display:flex;align-items:center;justify-content:space-between;border:0;border-radius:8px;background:var(--surface-soft);color:var(--ink);padding:9px 10px;font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.chat-doc-all:after{content:'✓';opacity:0}
.chat-doc-all.active:after{opacity:1}
.chat-doc-section{margin-top:8px}
.chat-doc-search{width:100%;border:1px solid var(--border);border-radius:8px;padding:8px 10px;font:inherit;font-size:12px;outline:0}
.chat-doc-list{display:flex;flex-direction:column;gap:4px;max-height:190px;overflow:auto;margin-top:7px}
.chat-doc-list label{display:flex;align-items:flex-start;gap:8px;padding:7px;border-radius:8px;line-height:1.35;cursor:pointer}
.chat-doc-list label:hover{background:var(--surface-soft)}
.chat-doc-list input{margin-top:2px;accent-color:var(--ink)}
.empty{color:var(--faint);font-size:13px;padding:8px 0}
.note{font-size:12px;color:var(--muted)}
details.add summary{cursor:pointer;color:var(--accent);font-weight:600;font-size:13px;list-style:none}
details.add summary::-webkit-details-marker{display:none}
/* dashboard */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}
@media(max-width:900px){.stats{grid-template-columns:repeat(2,1fr)}}
.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow-soft)}
.stat .v{font-size:22px;font-weight:500;font-variant-numeric:tabular-nums;letter-spacing:-.2px}
.stat .l{font-size:12px;color:var(--faint);margin-top:4px}
.charts{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:900px){.charts{grid-template-columns:1fr}}
.bar-row{display:grid;grid-template-columns:130px 1fr 38px;align-items:center;gap:10px;margin-bottom:9px}
.bar-row .bl{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar-row .bt{height:20px;background:var(--surface-soft);border-radius:8px;overflow:hidden}
.bar-row .bf{height:100%;border-radius:8px;min-width:3px;transition:width .35s}
.bar-row .bn{font-size:12px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums}
.bar-row .bn-note{display:block;font-size:11px;font-weight:500;color:var(--faint);white-space:nowrap}
/* настройки: чипы-чекбоксы, сегмент-контрол, числа без спиннеров */
/* Настройки колокольчика: строка с описанием и переключателем справа. */
.notif-pop-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-bottom:1px solid var(--border);font-size:12px;color:var(--muted)}
.notif-opt{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:var(--surface);cursor:pointer;margin-bottom:8px}
.notif-opt:hover{border-color:var(--border-strong)}
.notif-opt-text{display:flex;flex-direction:column;gap:3px;min-width:0}
.notif-opt-text b{font-size:14px;font-weight:600;color:var(--ink)}
.notif-opt-text .muted{font-size:12px;line-height:1.35}
.notif-opt input{position:absolute;opacity:0;width:0;height:0}
.notif-opt-switch{flex:none;width:38px;height:22px;border-radius:999px;background:var(--border);position:relative;transition:background .15s}
.notif-opt-switch::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:999px;background:var(--surface);box-shadow:0 1px 3px rgba(16,24,40,.28);transition:transform .15s}
.notif-opt:has(input:checked) .notif-opt-switch{background:var(--accent)}
.notif-opt:has(input:checked) .notif-opt-switch::after{transform:translateX(16px)}
.optchip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500;padding:6px 13px;border-radius:999px;background:var(--surface-soft);color:var(--muted);cursor:pointer;user-select:none;margin:0 7px 7px 0;transition:background .12s,color .12s}
.optchip:hover{background:var(--border)}
.optchip input{position:absolute;opacity:0;width:0;height:0}
.optchip:has(input:checked){background:var(--ink);color:var(--surface)}
.optchip.all:has(input:checked){background:var(--accent);color:var(--surface)}
.seg{display:inline-flex;background:var(--surface-soft);border-radius:8px;padding:3px;gap:2px}
.seg label{cursor:pointer;margin:0}
.seg input{position:absolute;opacity:0;width:0;height:0}
.seg span{display:block;font-size:12px;font-weight:500;color:var(--muted);padding:7px 14px;border-radius:8px;transition:background .12s,color .12s}
.seg label:has(input:checked) span{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.06)}
input[type=number]{appearance:textfield;-moz-appearance:textfield}
input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.set-lbl{font-size:12px;color:var(--muted);margin:0 0 8px}
/* индикатор загрузки (медленные формы: ИИ-разбор, загрузка документов) */
.spinner{width:20px;height:20px;border:2.5px solid var(--border-strong);border-top-color:var(--ink);border-radius:50%;animation:spin .7s linear infinite;flex:none}
@keyframes spin{to{transform:rotate(360deg)}}
.load-overlay{position:fixed;inset:0;background:rgba(247,247,248,.72);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:200}
.load-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px 26px;display:flex;align-items:center;gap:14px;box-shadow:0 12px 34px rgba(0,0,0,.14);max-width:400px}
.load-card .lt{font-size:13px;font-weight:500;color:var(--ink)}
.load-card .ls{font-size:12px;color:var(--muted);margin-top:2px}
/* «печатает» — три точки для чата ИИ */
.typing{display:inline-flex;gap:4px;align-items:center}
.typing span{width:6px;height:6px;border-radius:50%;background:var(--faint);animation:blink 1.2s infinite both}
.typing span:nth-child(2){animation-delay:.2s}.typing span:nth-child(3){animation-delay:.4s}
@keyframes blink{0%,80%,100%{opacity:.25}40%{opacity:1}}
/* чат «Спросить ИИ» (как в ChatGPT) */
.chat{margin-top:18px;border-top:1px solid var(--border);padding-top:16px}
.chat-msgs{display:flex;flex-direction:column;gap:10px;max-height:440px;overflow-y:auto;padding:4px 2px}
.chat-empty{color:var(--faint);font-size:13px;padding:10px 2px;line-height:1.5}
.msg{display:flex}
.msg.user{justify-content:flex-end}
.msg .bubble{max-width:82%;padding:10px 14px;border-radius:12px;font-size:13px;line-height:1.55;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:anywhere}
.msg.user .bubble{background:var(--ink);color:var(--surface);border-bottom-right-radius:5px}
.msg.ai .bubble{background:var(--surface-soft);color:var(--ink);border-bottom-left-radius:5px}
.ai-publication-state{display:flex;flex-wrap:wrap;align-items:flex-start;gap:6px 12px;margin:12px 22px 0;padding:12px 14px;border-radius:12px;font-size:12.5px;line-height:1.55;border:1px solid var(--border);background:var(--surface)}
.ai-publication-state strong{white-space:nowrap;font-size:11.5px;font-weight:700;padding:3px 10px;border-radius:999px;margin-top:1px}
.ai-publication-state span{color:var(--muted);flex:1;min-width:220px}
.ai-publication-state.is-published{border-color:rgba(35,128,82,.22)}
.ai-publication-state.is-published strong{color:var(--ok);background:var(--ok-soft)}
.ai-publication-state.is-unpublished{border-color:rgba(146,97,10,.2)}
.ai-publication-state.is-unpublished strong{color:var(--warn);background:var(--warn-soft)}
.chat-sources{margin-top:8px;display:flex;flex-wrap:wrap;gap:6px}
.chat-sources a{font-size:12px;color:var(--accent);text-decoration:none;border:1px solid var(--border-strong);border-radius:8px;padding:2px 8px;background:var(--surface);white-space:normal}
.chat-sources a:hover{border-color:var(--accent)}
.chat-input{display:flex;gap:8px;align-items:flex-end;margin-top:14px;background:var(--surface);border:1px solid var(--border-strong);border-radius:12px;padding:7px 7px 7px 14px;transition:border-color .12s,box-shadow .12s}
.chat-input:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.chat-input textarea{flex:1;border:0;outline:0;resize:none;font:inherit;font-size:13px;background:0;color:var(--ink);max-height:140px;line-height:1.5;padding:6px 0}
.chat-input button{border-radius:8px;padding:8px 13px;min-width:42px;font-size:15px;line-height:1}
/* мобильный: отдельная нижняя навигация как в приложении */
.mobile-bottom-nav{display:none}
/* Полоса колонок доски — только для телефона. Канбан на 375px превращался в шахту
   с вложенной прокруткой: страница не листалась, а колонка листалась внутри себя. */
.board-tabs{display:none}
@media(max-width:720px){
  body{padding-bottom:70px;background:var(--surface-2)}
  .app{display:block;min-height:100dvh}
  .side{display:none}
  .main{min-height:100dvh}
  .content{padding:12px 12px 20px}
  /* Заголовок и действия — одной строкой, поиск — второй. Было grid из трёх колонок,
     и поиск на всю ширину выталкивал действия в третью строку: шестерёнка висела
     одна посреди пустого этажа. */
  .topbar,.topbar-board{min-height:0;padding:10px 12px;display:flex;flex-wrap:wrap;align-items:center;gap:8px;background:rgba(255,255,255,.94)}
  .topbar h1,.topbar-board h1{flex:1 1 auto;min-width:0;font-size:17px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .topbar-heading{flex:1 1 auto;min-width:0;gap:8px}
  .topbar-note{font-size:12px}
  .top-actions{margin-left:0!important;flex:none;flex-wrap:nowrap;gap:6px}
  /* Действия шапки — значками. Подписи на телефон не помещаются, но сами кнопки
     («Импорт в доску», «Добавить по номеру») нужны именно здесь: раньше их просто
     прятали, и импорт с телефона был недоступен. */
  .top-actions .btn{width:38px;height:38px;padding:0;border-radius:10px;flex:none;justify-content:center;background:var(--surface);border:1px solid var(--border)}
  .top-actions .btn>span:not(.sr-only){display:none}
  .top-actions .btn svg{width:18px;height:18px}
  .topbar .search{order:9;flex:1 0 100%;width:100%;max-width:none}
  .topbar .search input,.topbar .board-search input{height:42px;border-radius:10px;box-shadow:none}
  .board-shell{min-height:auto}
  /* Панель фильтров: значки вида + «Фильтры» + счётчик в одну строку.
     overflow тут держим видимым — иначе поповер фильтров обрежется. */
  .board-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:-12px -12px 10px;padding:8px 12px;min-height:0;overflow:visible}
  .board-filter-toggle{height:38px}
  .active-filters{flex:1 1 100%;order:5}
  .active-filters:empty{display:none}
  .board-filter-reset{order:6}
  /* Поповер фильтров на телефоне — лист снизу: якорь кнопки стоит посреди строки,
     и выпадашка шириной 380px уезжала за правый край экрана. */
  .board-filter-popover{position:fixed;left:8px;right:8px;top:auto;bottom:78px;width:auto;max-height:min(70dvh,560px);border-radius:14px;box-shadow:0 -12px 44px rgba(23,29,39,.22)}
  .board-tabs{display:flex;gap:6px;margin:0 -12px 10px;padding:0 12px 2px;overflow-x:auto;scrollbar-width:none}
  .board-tabs::-webkit-scrollbar{display:none}
  .board-tab{flex:none;display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 13px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--muted);font:inherit;font-size:13px;font-weight:600;white-space:nowrap;cursor:pointer}
  .board-tab-dot{width:7px;height:7px;border-radius:50%;flex:none}
  .board-tab-count{color:var(--faint);font-variant-numeric:tabular-nums}
  .board-tab.active{background:var(--ink);border-color:var(--ink);color:var(--surface)}
  .board-tab.active .board-tab-count{color:rgba(255,255,255,.7)}
  /* Одна колонка списком: прокручивается страница целиком, а не коробка внутри неё. */
  .board{display:block;height:auto;min-height:0;overflow:visible;padding:0;scroll-snap-type:none}
  .col{display:none;width:auto;min-width:0;max-width:none;height:auto;padding:0;background:transparent;border-radius:0}
  .board:not(.board-mobile-ready)>.col:first-child,
  .board.board-mobile-ready>.col.board-col-active{display:flex}
  /* Название и счётчик колонки уже есть в полосе вкладок — в шапке оставляем
     только кнопки (добавить вручную, чем грузится, поиск по колонке). */
  .col-head{position:static;padding:0 0 8px;background:transparent}
  .col-head .col-dot,.col-head .col-title,.col-head .col-count{display:none}
  .col-head-actions{margin-left:0}
  .col-head-btn{width:34px;height:34px;border:1px solid var(--border);background:var(--surface)}
  .col-head:empty,.col-head-actions:empty{display:none}
  .col-body{overflow:visible;padding:0;gap:8px}
  .col-info,.col-filter,.col-add{padding:0 0 8px}
  .col-mobile-empty{padding:18px 4px;color:var(--faint);font-size:13px;text-align:center}
  .board-modal{align-items:flex-end;padding:12px}
  .board-modal-card,.board-modal-card.import-modal-card{--modal-pad:16px;width:100%;max-height:calc(100dvh - 24px);border-radius:12px}
  .board-modal-head h2{font-size:18px}
  .label-picker{align-items:flex-end;padding:0}
  .label-picker-panel{width:100%;max-height:calc(100dvh - 12px);border-radius:12px 12px 0 0;padding:16px;gap:14px}
  .label-search-input{height:42px;padding-left:36px}
  .import-section{padding:14px}
  .geo-tree-grid{grid-template-columns:1fr;min-height:auto}
  .geo-tree-col{border-right:0;border-bottom:1px solid var(--border);max-height:220px;padding:0 0 8px}
  .geo-tree-col:last-child{border-bottom:0;padding-bottom:0}
  .import-param-grid{grid-template-columns:1fr;gap:14px}
  .board-import-form .seg{display:flex;width:100%;overflow-x:auto}
  .board-import-form .seg label{flex:1}
  .board-import-form .seg span{text-align:center;white-space:nowrap;padding:7px 10px}
  .import-actions .btn{width:100%}
  .col-resize-handle{display:none}
  /* Карточка плотнее: предмет в две строки, цена и срок — одной строкой снизу.
     Прежние 14px отступа и три строки заголовка давали ~200px на карточку. */
  .card{padding:12px 12px 11px;border-radius:12px}
  .card:hover{transform:none;box-shadow:none}
  .card .c-badges{margin:0 34px 8px 0;gap:5px}
  .card .c-work{font-size:14px;line-height:1.35;-webkit-line-clamp:2;margin-bottom:6px}
  .card .c-cust-sub{margin-bottom:9px}
  .card .c-foot{padding-top:9px}
  .card .c-nmck{font-size:16px}
  .card-menu-btn{top:6px;right:6px}
  .ctx-menu{max-width:calc(100vw - 16px);max-height:min(70dvh,520px);overflow:auto}
  .ctx-item{padding:10px}
  .ctx-move button{padding:7px 12px}
  .mobile-bottom-nav{position:fixed;left:0;right:0;bottom:0;width:100vw;max-width:100vw;overflow:hidden;z-index:120;height:66px;background:rgba(255,255,255,.95);border-top:1px solid var(--border);display:flex;align-items:stretch;padding:6px 6px max(6px,env(safe-area-inset-bottom));box-shadow:0 -12px 30px rgba(23,29,39,.08);backdrop-filter:blur(16px)}
  /* flex:1 — вкладок четыре, а фиксированные 20% оставляли пятую долю пустой справа */
  .mobile-tab{min-width:0;flex:1 1 0;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--muted);font-size:12px;font-weight:500;border-radius:10px}
  .mobile-tab svg{width:18px;height:18px}
  .mobile-tab span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .mobile-tab.active{color:var(--ink);background:var(--surface-soft)}
  .grid3{grid-template-columns:1fr}
}
/* procurement detail */
.t-page{display:flex;flex-direction:column;gap:22px}
.t-back{display:inline-flex;align-items:center;gap:8px;width:max-content;color:var(--muted);font-size:13px;font-weight:600;transition:color .12s}
.t-back:hover{color:var(--ink)}
/* шапка закупки: одна карточка — бейджи, заголовок с НМЦК, факты в строку */
.t-hero{display:flex;flex-direction:column;gap:12px}
.t-hero-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:18px 22px 16px;box-shadow:0 10px 30px rgba(23,29,39,.05)}
.t-hero-badges{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:12px}
.t-hero-row{display:flex;align-items:flex-start;justify-content:space-between;gap:28px}
.t-hero-title{min-width:0;max-width:1000px;margin:0;font-size:22px;font-weight:700;line-height:1.24;letter-spacing:0;color:var(--ink)}
.t-hero-side{flex:none;text-align:right}
.t-hero-price-label{font-size:12px;font-weight:600;color:var(--faint);text-transform:uppercase;letter-spacing:.04em;line-height:1.2}
.t-hero-price{margin-top:2px;font-size:22px;font-weight:700;line-height:1.15;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.t-hero-facts{margin-top:16px;padding-top:14px;border-top:1px solid var(--border);display:grid;grid-template-columns:minmax(0,2fr) repeat(auto-fit,minmax(120px,1fr));gap:14px 26px}
.t-hero-fact{min-width:0}
.t-hero-fact-label{font-size:12px;font-weight:600;color:var(--faint);margin-bottom:3px}
.t-hero-fact-value{font-size:13px;font-weight:600;line-height:1.4;color:var(--ink);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.t-hero-fact.wide .t-hero-fact-value{font-weight:600;line-height:1.45}
/* табы: закреплены под верхней панелью, подчёркивание вместо коробки */
.t-tabs{position:sticky;top:var(--topbar-h);z-index:15;display:flex;gap:2px;width:100%;max-width:100%;overflow-x:auto;scrollbar-width:none;margin:0;padding:0;border:0;border-bottom:1px solid var(--border);background:var(--bg)}
.t-tabs::-webkit-scrollbar{display:none}
.t-tabs .tab{flex:none;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;padding:11px 14px;background:transparent;color:var(--muted);font-size:13px;font-weight:600;white-space:nowrap;transition:color .12s,border-color .12s}
.t-tabs .tab:hover{color:var(--ink)}
.t-tabs .tab.active{color:var(--ink);border-bottom-color:var(--ink);background:transparent;box-shadow:none}
.t-tabs .tcount{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;margin-left:6px;padding:0 5px;border-radius:999px;background:var(--surface-soft);border:1px solid var(--border);color:var(--muted);font-size:12px;font-weight:700}
.t-tabs .tab.active .tcount{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.t-overview-grid{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:18px;align-items:start}
.t-overview-grid.single{grid-template-columns:minmax(0,1fr)}
.tender-result-panel,.tender-about-panel{padding:24px;border-radius:12px}
.tender-contacts-panel{grid-column:1/-1}
.t-panel-head{display:flex;align-items:center;gap:13px;margin-bottom:18px}
.t-panel-head h3{margin:0;font-size:15px;font-weight:700;color:var(--ink)}
.t-panel-icon{width:36px;height:36px;border-radius:8px;background:var(--surface-soft);border:1px solid var(--border);color:var(--muted);display:inline-flex;align-items:center;justify-content:center;flex:none}
.t-panel-icon svg{width:18px;height:18px}
.t-info-list{display:grid}
.t-info-row{display:grid;grid-template-columns:minmax(132px,.42fr) minmax(0,1fr);gap:18px;align-items:start;padding:14px 0;border-bottom:1px solid var(--border)}
.t-info-row:first-child{padding-top:0}
.t-info-row:last-child{border-bottom:0}
.t-info-label{font-size:12px;color:var(--faint);font-weight:600;line-height:1.35}
.t-info-value{font-size:13px;font-weight:600;line-height:1.46;color:var(--ink);word-break:normal;overflow-wrap:anywhere}
.t-info-value.money{font-size:15px;font-variant-numeric:tabular-nums}
.t-info-value.danger{color:var(--red-fg)}
.t-info-value.ok{color:var(--green-fg)}
.t-panel-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:18px}
.t-notes{margin-top:18px;border-top:1px solid var(--border);padding-top:16px}
.t-notes textarea{min-height:86px;resize:vertical}
@media(max-width:1180px){
  .t-overview-grid{grid-template-columns:1fr}
}
@media(max-width:720px){
  .t-page{gap:16px}
  .t-hero-title{font-size:18px;line-height:1.25}
  .t-hero-row{flex-direction:column;gap:10px}
  .t-hero-side{text-align:left}
  .t-hero-price{font-size:22px}
  .t-hero-facts{grid-template-columns:1fr;gap:12px}
  .t-hero-card,.tender-result-panel,.tender-about-panel{padding:16px;border-radius:12px}
  .t-tabs{top:var(--topbar-h-mobile,56px)}
  .t-tabs .tab{padding:10px 12px}
  .t-info-row{grid-template-columns:1fr;gap:5px}
}

/* календарь сроков */
.cal-head{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.cal-nav{display:inline-flex;gap:4px}
.cal-nav-btn{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:34px;padding:0 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--ink-2);font-size:13px;font-weight:600;text-decoration:none}
.cal-nav-btn:hover{border-color:var(--border-strong);color:var(--ink)}
.cal-title{font-size:18px;font-weight:600;text-transform:capitalize;margin:0 6px}
.cal-legend{display:inline-flex;gap:12px;margin-left:auto;font-size:12px;color:var(--muted);flex-wrap:wrap}
.cal-legend span{display:inline-flex;align-items:center;gap:5px}
/* minmax(0,1fr): без нуля длинный неразрывный текст чипа задаёт min-content колонки,
   семь колонок вылезают за экран и суббота с воскресеньем обрезаются без скролла */
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);overflow:hidden}
.cal-dow{padding:8px 10px;font-size:12px;font-weight:600;color:var(--muted);text-transform:lowercase;border-bottom:1px solid var(--border);background:var(--surface-soft)}
.cal-cell{min-width:0;min-height:96px;padding:5px;border-top:1px solid var(--border);border-left:1px solid var(--border);display:flex;flex-direction:column;gap:3px}
.cal-cell:nth-child(-n+14){border-top:0}
.cal-cell:nth-child(7n+1){border-left:0}
.cal-cell.cal-out .cal-day{color:var(--faint)}
.cal-cell.cal-today{background:var(--blue-bg)}
.cal-day{font-size:12px;font-weight:600;color:var(--ink-2);align-self:flex-end;padding:1px 5px;border-radius:6px}
.cal-cell.cal-today .cal-day{background:var(--blue-fg);color:#fff}
.cal-chip{display:flex;align-items:center;gap:5px;width:100%;min-width:0;border:0;background:var(--surface-soft);border-radius:6px;padding:3px 6px;font:inherit;font-size:12px;line-height:1.3;color:var(--ink);cursor:pointer;text-align:left;overflow:hidden}
.cal-chip:hover{background:var(--border)}
.cal-chip .cal-dot{flex:0 0 7px;width:7px;height:7px;border-radius:50%}
.cal-chip-time{color:var(--muted);flex:none;font-variant-numeric:tabular-nums}
.cal-chip-text{min-width:0;flex:1 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-chip-bell{flex:none;margin-left:auto;color:var(--muted);font-size:11px}
.cal-cell:not(.open) .cal-chip:nth-of-type(n+5){display:none}
.cal-more{border:0;background:transparent;color:var(--muted);font:inherit;font-size:12px;cursor:pointer;text-align:left;padding:2px 6px}
.cal-more:hover{color:var(--ink)}
.cal-ev-meta{font-size:13px;color:var(--ink-2);display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.cal-ev-meta b{font-weight:600}
.cal-remind-label{font-size:12px;font-weight:600;color:var(--muted);margin-bottom:8px}
.cal-remind-btns{display:flex;flex-wrap:wrap;gap:7px}
.cal-remind-btn{min-height:34px;border:1px solid var(--border);border-radius:999px;background:var(--surface-soft);color:var(--muted);padding:6px 12px;font:inherit;font-size:13px;cursor:pointer}
.cal-remind-btn.on{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.cal-remind-hint{font-size:12px;color:var(--faint);margin-top:8px}
.cal-add-form{display:flex;flex-direction:column;gap:10px}
.cal-add-form .cal-add-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}
@media(max-width:900px){
  .cal-grid{grid-template-columns:repeat(1,1fr)}
  .cal-dow{display:none}
  .cal-cell{border-left:0;min-height:0}
  .cal-cell.cal-out{display:none}
  .cal-cell:empty{display:none}
}
