/* DM Realty — палитра и шрифт «Метода Цифры» (как в DM Projects / DM Finance v1). */
@font-face{font-family:Montserrat;src:url(fonts/Montserrat-Regular.woff2)format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Montserrat;src:url(fonts/Montserrat-Medium.woff2)format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:Montserrat;src:url(fonts/Montserrat-SemiBold.woff2)format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:Montserrat;src:url(fonts/Montserrat-Bold.woff2)format('woff2');font-weight:700;font-display:swap}
/* Golos Text (SIL OFL 1.1) — основной текст, подписи, таблицы, кнопки, меню; Montserrat — заголовки, названия карточек, крупные цифры (решение 30.10) */
@font-face{font-family:'Golos Text';src:url(fonts/GolosText-cyrillic-ext.woff2)format('woff2');font-weight:400 900;font-display:swap;unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:'Golos Text';src:url(fonts/GolosText-cyrillic.woff2)format('woff2');font-weight:400 900;font-display:swap;unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Golos Text';src:url(fonts/GolosText-latin-ext.woff2)format('woff2');font-weight:400 900;font-display:swap;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}
@font-face{font-family:'Golos Text';src:url(fonts/GolosText-latin.woff2)format('woff2');font-weight:400 900;font-display:swap;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}

:root {
  /* дизайн-система «Метод Цифры» (Claude Design, 29.10): постер — navy, синий логотипа, голубой акцент; светлая и тёмная темы */
  --ink:#061634; --ink-2:#3a5373; --ink-3:#4f6a8c;
  --line:#d3dfec; --line-soft:#e3ebf4; --line-strong:#a9bdd3;
  --bg:#eaf0f8; --panel:#ffffff; --panel-2:#f4f8fc; --sunken:#dfe8f3;
  --good:#13784f; --good-soft:#dff3ea;
  --bad:#bb2f26; --bad-soft:#fbe5e2; --bad-line:#f1c9c4;
  --warn:#9a5800; --warn-soft:#fbefdc; --warn-line:#efd6ae;
  --accent:#0067ab; --accent-fill:#0071bc; --on-accent:#ffffff; --accent-strong:#005a96; --accent-soft:#dcedfa; --accent-line:#c4dcf0;
  --chart-1:#0071bc; --chart-2:#9fc3e3; --chart-forecast:#cfe4f5;
  --chess-off:#aeb6c2; --chess-off-ink:#2b3442; --pay-1:#2a78d6; --pay-2:#eb6834; --pay-3:#1baf7a; --pay-4:#eda100; --pay-5:#6250d6; --pay-6:#e87ba4; --pay-7:#008300; --pay-other:#8a94a6;
  --brand-dark:#061634; --brand-glow:#0a2d64; --brand-panel-hi:#044275; --brand-panel-lo:#052245; --brand-mist:#a9bcd9; --brand-accent-light:#29abe2;
  --radius:14px; --radius-sm:10px;
  --shadow:0 1px 2px rgba(6,22,52,.06),0 8px 28px rgba(6,22,52,.08);
  --focus:0 0 0 2px var(--panel),0 0 0 4px var(--accent-fill);
  --font:"Golos Text",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  --font-head:Montserrat,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  color-scheme:light;
}
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) {
  --ink:#ffffff; --ink-2:#a9bcd9; --ink-3:#8aa2c4;
  --line:#1d3d69; --line-soft:#142f57; --line-strong:#2f5585;
  --bg:#061634; --panel:#0b2347; --panel-2:#0f2c57; --sunken:#04102a;
  --good:#3ccf91; --good-soft:#0c3b3a; --bad:#ff7f73; --bad-soft:#43201f; --bad-line:#6b2f2c; --warn:#f2b24c; --warn-soft:#3a2f1a; --warn-line:#6a5124;
  --accent:#29abe2; --accent-fill:#29abe2; --on-accent:#061634; --accent-strong:#5cc3ec; --accent-soft:#0a3157; --accent-line:#1d4f80;
  --chart-1:#29abe2; --chart-2:#2f5d92; --chart-forecast:#173e6b;
  --chess-off:#4a5566; --chess-off-ink:#e6eaf0; --pay-1:#3987e5; --pay-2:#d95926; --pay-3:#199e70; --pay-4:#c98500; --pay-5:#9085e9; --pay-6:#d55181; --pay-7:#2fa12f; --pay-other:#7f8ea8;
  --shadow:0 1px 0 rgba(255,255,255,.04),0 10px 30px rgba(0,0,0,.35);
  color-scheme:dark;
} }
:root[data-theme="dark"] {
  --ink:#ffffff; --ink-2:#a9bcd9; --ink-3:#8aa2c4;
  --line:#1d3d69; --line-soft:#142f57; --line-strong:#2f5585;
  --bg:#061634; --panel:#0b2347; --panel-2:#0f2c57; --sunken:#04102a;
  --good:#3ccf91; --good-soft:#0c3b3a; --bad:#ff7f73; --bad-soft:#43201f; --bad-line:#6b2f2c; --warn:#f2b24c; --warn-soft:#3a2f1a; --warn-line:#6a5124;
  --accent:#29abe2; --accent-fill:#29abe2; --on-accent:#061634; --accent-strong:#5cc3ec; --accent-soft:#0a3157; --accent-line:#1d4f80;
  --chart-1:#29abe2; --chart-2:#2f5d92; --chart-forecast:#173e6b;
  --chess-off:#4a5566; --chess-off-ink:#e6eaf0; --pay-1:#3987e5; --pay-2:#d95926; --pay-3:#199e70; --pay-4:#c98500; --pay-5:#9085e9; --pay-6:#d55181; --pay-7:#2fa12f; --pay-other:#7f8ea8;
  --shadow:0 1px 0 rgba(255,255,255,.04),0 10px 30px rgba(0,0,0,.35);
  color-scheme:dark;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.5 var(--font);font-feature-settings:"tnum" 1}
:where(a,button,select,input,textarea):focus-visible{outline:none;box-shadow:var(--focus);border-radius:8px}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
h1{font-size:22px;margin:0;font-weight:600;letter-spacing:-.01em}
h2{font-size:17px;margin:0 0 12px;font-weight:700}
h3{font-size:14px;margin:0 0 8px;font-weight:600}
.muted{color:var(--ink-2)}
.small{font-size:12px}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.nowrap{white-space:nowrap}

/* ------------------------------------------------------------ шапка (как в DM Finance: os-header) */
:root{--brand-on-dark:#fff;--brand-on-dark-2:rgba(255,255,255,.64);--brand-line-dark:rgba(255,255,255,.08);--hdr:118px}
.os-wrap{max-width:2200px;margin:0 auto;padding:0 32px}
.os-header{position:sticky;top:0;z-index:20;background:var(--brand-dark);color:var(--brand-on-dark);border-bottom:1px solid var(--brand-line-dark)}
.os-header-inner{display:flex;align-items:center;gap:24px;flex-wrap:wrap;padding-top:16px;padding-bottom:6px}
.os-brand{display:flex;align-items:center;gap:12px;color:var(--brand-on-dark)}
.os-brand:hover{text-decoration:none}
.os-logo{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px;background:rgba(255,255,255,.08);color:var(--brand-on-dark);font-weight:800;font-size:15px;letter-spacing:.02em;flex:none}
.os-brand-text{display:flex;flex-direction:column;line-height:1.3}
.os-brand-name{font-size:16px;font-weight:800;letter-spacing:-.02em}
.os-brand-sub{font-size:12.5px;color:var(--brand-accent-light);font-weight:600}
.os-status{display:flex;align-items:center;gap:14px;margin-left:auto;flex-wrap:wrap}
.os-status-item{font-size:12.5px;color:var(--brand-on-dark-2);white-space:nowrap}
.os-status-item strong{color:var(--brand-on-dark);font-weight:600}
.os-chip{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:11.5px;font-weight:700;letter-spacing:.06em}
.os-chip.is-live{background:rgba(63,217,169,.16);color:#3fd9a9}
.os-chip.is-offline{background:rgba(240,160,110,.18);color:#f0a06e}
.os-chip.is-pending{background:rgba(255,255,255,.10);color:var(--brand-on-dark-2)}
.os-header .os-refresh{background:transparent;color:var(--brand-on-dark);border:1px solid rgba(255,255,255,.22);border-radius:9px;padding:6px 12px;font-size:12.5px;font-weight:600}
.os-header .os-refresh:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.4);color:#fff}
.os-nav-row{display:flex;align-items:flex-end;gap:12px}
.os-nav{display:flex;align-items:center;gap:2px;overflow-x:auto;scrollbar-width:none;flex:1;min-width:0}
.os-nav::-webkit-scrollbar{display:none}
.os-tab{font-size:13px;color:var(--brand-on-dark-2);padding:12px 9px 13px;border-bottom:2px solid transparent;display:inline-flex;align-items:baseline;gap:6px;white-space:nowrap;font-weight:500}
.os-tab:hover{color:var(--brand-on-dark);text-decoration:none}
.os-tab.is-active{color:var(--brand-on-dark);font-weight:600;border-bottom-color:var(--brand-accent-light)}
.os-tab-num{font-size:10.5px;font-weight:700;letter-spacing:.04em;opacity:.65}
.os-header .os-analyst-open{align-self:center;margin-bottom:4px;font-size:13px;font-weight:600;color:var(--brand-dark);background:var(--brand-accent-light);border:1px solid transparent;border-radius:999px;padding:7px 16px;flex:none}
.os-header .os-analyst-open:hover{background:#ffffff;border-color:transparent;color:var(--brand-dark)}
.os-eyebrow{font-size:11.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-bottom:4px}
.login-brand{display:flex;align-items:center;gap:12px;color:var(--ink);margin-bottom:6px}
.login-brand .os-logo{background:var(--brand-dark);color:#fff}
.login-sub{font-size:12.5px;color:var(--accent);font-weight:600}
.changelog{max-height:60vh;overflow:auto;display:grid;gap:14px}
.changelog h3{margin:0 0 4px}
.changelog ul{margin:0;padding-left:18px;color:var(--ink-2)}
.changelog li{margin:2px 0}
.user-menu{position:relative;flex:none}
.user-menu summary{list-style:none;cursor:pointer;white-space:nowrap;color:rgba(255,255,255,.85);font-size:13px;font-weight:500;padding:7px 12px;border:1px solid rgba(255,255,255,.18);border-radius:9px;display:flex;align-items:center;gap:6px}
.user-menu summary::-webkit-details-marker{display:none}
.user-menu summary::after{content:'';width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px);margin-left:4px;opacity:.7}
.user-menu summary:hover,.user-menu[open] summary{color:#fff;background:rgba(255,255,255,.06)}
.user-menu.on summary{background:rgba(69,183,232,.16);border-color:transparent;color:#fff}
.user-menu .where{color:var(--brand-accent-light)}
.user-menu-list{position:absolute;right:0;top:calc(100% + 6px);min-width:210px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow);padding:6px;display:grid;z-index:30}
.user-menu-list a,.user-menu-list button{display:block;text-align:left;color:var(--ink);background:transparent;border:0;border-radius:7px;padding:8px 12px;font:500 14px/1.3 var(--font)}
.user-menu-list a:hover,.user-menu-list button:hover{background:var(--line-soft);color:var(--ink);text-decoration:none}
.user-menu-list a.on{background:var(--accent-soft);color:var(--accent)}
.user-menu-list hr{border:0;border-top:1px solid var(--line);margin:6px 4px}

.page{max-width:2200px;width:100%;margin:0 auto;padding:28px 32px 56px}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.page-head .sub{margin-top:4px;color:var(--ink-2)}

/* ---------------------------------------------------------- элементы */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}
.card + .card{margin-top:16px}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1000px){.g2,.g3,.g4{grid-template-columns:1fr}}

button,.btn{font:inherit;font-weight:600;border:1px solid var(--line-strong);background:var(--panel);color:var(--ink);padding:7px 14px;border-radius:9px;cursor:pointer;white-space:nowrap}
button:hover{border-color:var(--accent);color:var(--accent)}
button.primary,.btn.primary{background:var(--accent-fill);border-color:var(--accent-fill);color:var(--on-accent)}
button.primary:hover{background:var(--accent-strong);color:var(--on-accent)}
button.ghost{border-color:transparent;background:transparent;color:var(--ink-2);padding:4px 8px}
button.ghost:hover{color:var(--accent)}
button.danger:hover{border-color:var(--bad);color:var(--bad)}
button:disabled{opacity:.5;cursor:default}
.icon-btn{border:none;background:none;color:var(--ink-3);padding:2px 6px;font-size:16px;line-height:1}
.icon-btn:hover{color:var(--bad)}

input,select,textarea{font:inherit;color:var(--ink);background:var(--panel);border:1px solid var(--line-strong);border-radius:8px;padding:6px 9px;width:100%;min-width:0}
input:hover,select:hover,textarea:hover{border-color:var(--ink-3)}
input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:none;box-shadow:var(--focus)}
input[type=checkbox]{width:auto;accent-color:var(--accent)}
input.num{text-align:right}
input:disabled,select:disabled{background:var(--line-soft);color:var(--ink-2)}
textarea{resize:vertical;min-height:60px}
label.field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--ink-2);font-weight:500}
label.field > span{font-weight:600}
label.check{display:inline-flex;align-items:center;gap:8px;cursor:pointer}
.fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px 16px}
.hint{font-size:12px;color:var(--ink-2);margin-top:6px}

table{border-collapse:collapse;width:100%}
.tbl th{font-size:12px;font-weight:600;color:var(--ink-2);text-align:left;padding:8px 8px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--panel);position:sticky;top:0}
.tbl td{padding:6px 8px;border-bottom:1px solid var(--line-soft);vertical-align:middle}
.tbl tr:hover td{background:var(--panel-2)}
.tbl tr.sec td{background:var(--accent-soft);font-weight:600}
.tbl tr.total td{font-weight:700;border-top:2px solid var(--line);background:var(--panel-2)}
.tbl td input,.tbl td select{padding:4px 7px}
.tbl.compact td{padding:4px 6px}
.scroll{overflow:auto}
.th-num{text-align:right!important}

.pill{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:600;background:var(--line-soft);color:var(--ink-2);white-space:nowrap}
.pill.good{background:var(--good-soft);color:var(--good)}
.pill.bad{background:var(--bad-soft);color:var(--bad)}
.pill.warn{background:var(--warn-soft);color:var(--warn)}
.pill.accent{background:var(--accent-soft);color:var(--accent)}

.notice{border-radius:var(--radius-sm);padding:10px 14px;margin-bottom:12px;border:1px solid var(--line);background:var(--line-soft)}
.notice.warn{background:var(--warn-soft);border-color:var(--warn-line);color:var(--warn)}
.notice.bad{background:var(--bad-soft);border-color:var(--bad-line);color:var(--bad)}
.notice.info{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-strong)}
.notice ul{margin:4px 0 0;padding-left:18px}

.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 14px}
.kpi .l{font-size:12px;color:var(--ink-2);font-weight:500}
.kpi .v{font-size:20px;font-weight:700;margin-top:2px;white-space:nowrap}
.kpi .s{font-size:12px;color:var(--ink-2)}
.v.good{color:var(--good)}.v.bad{color:var(--bad)}

.empty{padding:40px;text-align:center;color:var(--ink-2)}
.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.spacer{flex:1}

/* ------------------------------------------------------------ DM Realty */
.login{min-height:100vh;display:grid;place-items:center;background:var(--brand-dark)}
.login form{width:360px;background:var(--panel);border-radius:18px;padding:28px;box-shadow:var(--shadow);display:grid;gap:14px}
.login .err{color:var(--bad);font-size:13px;min-height:18px}
.layout{display:grid;grid-template-columns:minmax(0,1fr) 0;transition:grid-template-columns .2s}
.layout.ai-open{grid-template-columns:minmax(0,1fr) 400px}
@media (max-width:1100px){.layout.ai-open{grid-template-columns:1fr}.ai-panel{position:fixed;right:0;top:var(--hdr);bottom:0;width:min(420px,100vw);z-index:25}}
.ai-panel{background:var(--panel);border-left:1px solid var(--line);height:calc(100vh - var(--hdr));position:sticky;top:var(--hdr);display:flex;flex-direction:column;overflow:hidden}
.ai-panel .head{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px}
.ai-panel .head h2{margin:0;flex:1}
.ai-panel .sub{font-size:12px;color:var(--ink-2);padding:0 18px 8px}
.ai-log{flex:1;overflow:auto;padding:12px 18px;display:grid;gap:10px;align-content:start}
.msg{border-radius:12px;padding:10px 12px;font-size:13px;line-height:1.5;white-space:pre-wrap;max-width:95%}
.msg.user{background:var(--accent-soft);justify-self:end}
.msg.ai{background:var(--line-soft)}
.msg.err{background:var(--bad-soft);color:var(--bad)}
.msg .meta{font-size:11px;color:var(--ink-3);margin-top:6px;white-space:normal}
.ai-form{padding:12px 18px;border-top:1px solid var(--line);display:grid;gap:8px}
.ai-form textarea{min-height:64px}
.presets{display:flex;flex-wrap:wrap;gap:6px}
.presets button{font-weight:500;font-size:12px;padding:4px 10px}
.filters{display:flex;gap:10px;flex-wrap:wrap;align-items:end;margin-bottom:14px}
.filters label.field{min-width:140px}
.filters select{padding:5px 8px}
.signal{border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px 16px;display:grid;gap:8px;background:var(--panel)}
.signal .t{font-weight:700;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.signal .rec{display:grid;grid-template-columns:auto 1fr;gap:6px 10px;font-size:13px}
.signal .rec .st{font-size:11px;font-weight:600;padding:1px 8px;border-radius:999px;background:var(--line-soft);color:var(--ink-2);white-space:nowrap;align-self:start;margin-top:2px}
.signal .rec .st.calc{background:var(--good-soft);color:var(--good)}
.sev{width:8px;height:8px;border-radius:50%;display:inline-block}
.sev.critical{background:var(--bad)}.sev.high{background:#d9772b}.sev.medium{background:#d4a72c}.sev.low{background:var(--ink-3)}
.chess{display:grid;gap:18px}
.chess .section{display:grid;gap:4px}
.chess .floor{display:flex;gap:4px;align-items:center}
.chess .floor .f{width:28px;font-size:11px;color:var(--ink-2);text-align:right;padding-right:4px}
.cell{width:80px;min-height:44px;border-radius:7px;padding:4px 6px;font-size:11px;line-height:1.25;cursor:pointer;border:1px solid transparent;color:var(--ink)}
.cell b{display:block;font-size:11px}
.cell:hover{border-color:var(--ink)}
.st-free{background:#d8f1e3}.st-free_booking{background:#fff5c2}.st-paid_booking{background:#f7e39a}.st-vip_booking{background:#f1c4e6}
.st-reserve{background:#dcdcdc}.st-assessment{background:#bfe0f7}.st-sold{background:#f6c6c6}.st-not_for_sale{background:#eee;color:var(--ink-3)}
.legend{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;margin-bottom:12px}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend i{width:14px;height:14px;border-radius:4px;display:inline-block}
.bars{display:grid;gap:6px}
.bar{display:grid;grid-template-columns:140px 1fr 70px;align-items:center;gap:8px;font-size:12px}
.bar .track{height:14px;background:var(--line-soft);border-radius:4px;overflow:hidden}
.bar .fill{height:100%;background:var(--accent);border-radius:4px}
.bar .fill.good{background:var(--good)}.bar .fill.bad{background:var(--bad)}
.tree td.lvl1{padding-left:8px;font-weight:700}.tree td.lvl2{padding-left:24px;font-weight:600}.tree td.lvl3{padding-left:44px}
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:16px;overflow-x:auto}
.tabs a{padding:8px 14px;color:var(--ink-2);font-weight:600;border-bottom:2px solid transparent;white-space:nowrap}
.tabs a.on{color:var(--accent);border-bottom-color:var(--accent)}
.tabs a:hover{text-decoration:none;color:var(--accent)}
.map-grid{display:grid;grid-template-columns:180px 1fr;gap:6px 12px;align-items:center;font-size:13px}
.map-grid .req::after{content:' *';color:var(--bad)}
.pf td.plan{color:var(--ink-2)}
.pf td.ok{color:var(--good);font-weight:600}.pf td.lag{color:var(--bad);font-weight:600}
.delta.good{color:var(--good)}.delta.bad{color:var(--bad)}
.badge-demo{background:var(--warn-soft);color:var(--warn);border:1px solid var(--warn-line);border-radius:999px;padding:2px 10px;font-size:12px;font-weight:600}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--brand-dark);color:#fff;padding:10px 18px;border-radius:10px;z-index:50;font-weight:500;box-shadow:var(--shadow)}
.toast.bad{background:var(--bad)}
.hist li{font-size:12px;padding:3px 0;border-bottom:1px dashed var(--line-soft)}
.mono{font-family:var(--mono);font-size:12px}
.svg-chart{width:100%;height:auto;display:block}
.roles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
@media (max-width:1000px){.roles{grid-template-columns:1fr}}
.role{border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 14px}
.role h3{margin-bottom:6px}
.role ul{margin:0;padding-left:16px;font-size:13px}

/* Система → Источники: коннекторы и мастер соответствий */
.checks{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:6px}
.check{display:inline-flex;align-items:center;gap:8px;font-size:14px;cursor:pointer}
.pick{display:inline-flex;align-items:center;white-space:nowrap}
.pick select{min-width:200px}
details>summary{cursor:pointer;color:var(--accent);font-weight:600;margin:6px 0}
.sticky-actions{position:sticky;bottom:0;background:var(--bg, #f3f4f7);padding:10px 0;z-index:2}
td input:not([type=checkbox]){min-width:140px}
td .pick select.src{max-width:420px}
.card .row{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:5px 0;border-bottom:1px solid var(--line-soft)}
.card .row:last-child{border-bottom:0}
.card .row>b{text-align:right;font-weight:600}
.tbl td select{min-width:110px}
/* Параметры помещений: сворачиваемые разделы и подсветка дублей */
details.section{padding:0;margin-top:16px}
details.section>summary{list-style:none;display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:16px 20px;margin:0;cursor:pointer;color:var(--ink)}
details.section>summary::-webkit-details-marker{display:none}
details.section>summary::before{content:"▸";color:var(--muted, #8a93a6);transition:transform .15s}
details.section[open]>summary::before{transform:rotate(90deg)}
details.section>summary .sec-title{font-size:16px;font-weight:700}
details.section>summary .sec-meta{font-size:13px;font-weight:500;color:var(--muted, #8a93a6)}
details.section[open]>summary{border-bottom:1px solid var(--line-soft)}
details.section>:not(summary){margin-left:20px;margin-right:20px}
details.section>:last-child{margin-bottom:18px}
details.section>.hint{margin-top:12px}
.row-issue{font-size:12px;margin-top:4px;line-height:1.35}
.row-issue.error{color:var(--bad)}
.row-issue.warn{color:var(--warn)}
.toolbar .spacer{flex:1}
/* Параметры помещений: примеры — одной строкой, названия и поля — шире */
.sample{display:block;max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
td input.label-input{width:280px;min-width:280px}
td .pick select.src{min-width:340px;max-width:none}
.pb-path{margin-top:3px}
i.swatch{display:inline-block;box-sizing:border-box;flex-shrink:0;width:12px;height:12px;border-radius:3px;margin-right:8px;vertical-align:middle}
/* настройки: поля ввода, списки, числа и текст в строке таблицы — на одной линии;
   подписи под полем (путь в Profitbase, замечания) не сдвигают соседние ячейки.
   Ячейки без полей ввода опускаются на половину разницы высоты поля (34px) и строки текста */
.tbl:has(td input,td select,td button) td{vertical-align:top;line-height:1.35}
.tbl:has(td input,td select,td button) td input,.tbl:has(td input,td select,td button) td select,.tbl:has(td input,td select,td button) td button{height:34px;vertical-align:top}
.tbl:has(td input,td select,td button) td:not(:has(input,select,button)){padding-top:calc(6px + (34px - 1.35em) / 2)}
td input.swatch-input,input.swatch-input{width:44px;min-width:44px;max-width:44px;padding:3px;cursor:pointer}
i.swatch.none{background:transparent;border:1px dashed var(--line-strong)}
details.section>ul.group-list{margin:4px 20px 0 40px;padding:0}
h2.group-title{margin:28px 0 0;font-size:18px}
.tbl tr.row-on td{background:var(--accent-soft, var(--accent-soft))}
.tbl td input[type=radio],.tbl td input[type=checkbox]{width:auto;min-width:0;height:auto;margin:9px 0 0}
.choice-list{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.choice{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;cursor:pointer;max-width:860px}
.choice.on{border-color:var(--accent);background:var(--accent-soft, var(--accent-soft))}
.choice input{width:auto;margin-top:3px}
.choice b{display:block}
.busy>details.section{opacity:.55;pointer-events:none}
.busy-note{position:sticky;top:8px;z-index:3;margin-top:16px}
.choice-row{display:flex;gap:8px;flex-wrap:wrap}
.choice-row .choice{padding:7px 12px;align-items:center}
.choice-row .choice input{margin-top:0}
.chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.pb-chip{display:inline-flex;align-items:center;gap:2px;height:30px;padding:0 4px 0 10px;border:1px solid var(--line);border-radius:999px;background:var(--panel);font-size:13px;white-space:nowrap}
.pb-chip .muted{font-size:11px}
.pb-chip b{font-weight:600;margin-left:4px;color:var(--ink-2)}
.tbl td .pb-chip button.chip-x,.pb-chip button.chip-x{height:22px;width:22px;padding:0;border:0;background:transparent;color:var(--ink-3, #8a93a6);font-size:12px;line-height:22px;margin-left:2px}
.pb-chip button.chip-x:hover{color:var(--bad)}
.tbl td select.chip-add,select.chip-add{width:180px;max-width:180px;min-width:0;height:30px;padding:2px 8px;font-size:13px;color:var(--ink-2);border-style:dashed}
.notice .pb-chip select.chip-add{margin-left:6px;height:24px;border:0}
/* выбор из длинного списка с поиском (поля Битрикс24) */
.ss{position:relative;display:inline-block;width:420px;max-width:100%;vertical-align:top}
.ss.wide{width:480px}
.ss-btn{display:flex;align-items:center;gap:8px;width:100%;height:34px;padding:0 30px 0 10px;font-weight:400;text-align:left;border:1px solid var(--line-strong);border-radius:8px;background:var(--panel);position:relative}
.ss-btn::after{content:"▾";position:absolute;right:10px;color:var(--ink-2)}
.ss-btn.empty .ss-val{color:var(--ink-2)}
.ss-val{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ss-code{font-size:11px;color:var(--ink-2);font-family:ui-monospace,Menlo,monospace;white-space:nowrap}
.ss-note{font-size:12px;color:var(--ink-2);white-space:nowrap}
.ss-panel{position:fixed;z-index:50;background:var(--panel);border:1px solid var(--line-strong);border-radius:10px;box-shadow:0 10px 30px rgba(20,30,50,.18);padding:8px}
.ss-search{width:100%;height:34px;margin-bottom:6px}
.ss-list{max-height:340px;overflow:auto}
.ss-group{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-2);padding:8px 8px 4px}
.ss-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;cursor:pointer;line-height:1.3}
.ss-item .ss-text{flex:1;min-width:0}
.ss-item.active,.ss-item:hover{background:var(--accent-soft, var(--accent-soft))}
.ss-item.on{font-weight:600}
.ss-none{padding:10px;color:var(--ink-2)}
.tbl:has(td input,td select,td button) td .ss-btn{height:34px}
h4.vm-title{margin:18px 0 4px;font-size:14px}
.ss.chip-ss{width:200px}
.ss.chip-ss .ss-btn{height:30px;border-style:dashed;font-size:13px;color:var(--ink-2)}
.conn-panel{margin:14px 0 16px;padding:12px 14px;border:1px solid var(--line-soft);border-radius:10px;background:var(--panel-2, var(--panel-2))}
.conn-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.copy-conn{margin-left:auto;display:inline-flex;align-items:center;gap:6px}
.copy-conn a{color:var(--ink-2);text-decoration:underline dotted}
.ss.src-ss{width:100%;min-width:260px}
/* общая сетка таблиц вкладки «Объекты»: одинаковые вертикали во всех разделах */
.tbl.tgrid{table-layout:fixed;width:100%}
.tbl.tgrid td,.tbl.tgrid th{overflow:hidden;text-overflow:ellipsis}
.tbl.tgrid td{overflow:visible}
.tbl.tgrid td input.label-input,.tbl.tgrid td .ss.src-ss,.tbl.tgrid td select{width:100%;min-width:0;max-width:100%}
.tbl.tgrid .cell-row{display:flex;align-items:center;gap:6px;min-width:0}
.tbl.tgrid .cell-row.wrap{flex-wrap:wrap}
.tbl.tgrid .cell-row > select{flex:1 1 auto;width:auto;min-width:0}
.tbl.tgrid .cell-row > input.label-input{flex:1 1 auto;width:auto}
.tbl.tgrid td input.unit-input{width:64px;min-width:64px;flex:0 0 64px}
.tbl.tgrid .sample{max-width:100%}
.tbl.tgrid td .chips{min-width:0}
.tbl.tgrid .pb-path{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tbl.tgrid td select.chip-add{width:180px;flex:0 0 auto}
.tbl.tgrid td .pick{display:block;min-width:0}
.tbl.tgrid td select.unit-select{width:96px;min-width:96px;flex:0 0 96px}

/* воронка — сворачиваемый блок; внутренние разделы — подложки разного цвета */
details.funnel-block{margin-top:14px;border:1px solid var(--line);border-radius:12px;background:var(--panel);overflow:hidden}
details.funnel-block > summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 16px;background:#f5f8fc;border-bottom:1px solid transparent}
details.funnel-block > summary::-webkit-details-marker{display:none}
details.funnel-block > summary::before{content:'▸';color:var(--ink-2);font-size:12px;transition:transform .15s}
details.funnel-block[open] > summary::before{transform:rotate(90deg)}
details.funnel-block[open] > summary{border-bottom-color:var(--line-soft)}
details.funnel-block > summary .fb-title{font-weight:700;font-size:15px}
details.funnel-block > summary .pill{margin-left:auto}
.fb-body{padding:14px 16px 16px}
.subpanel{margin-top:14px;padding:4px 14px 12px;border-radius:10px;border:1px solid var(--line-soft);border-left-width:4px}
.subpanel h4.vm-title{margin:10px 0 4px}
.subpanel .tbl th{background:transparent}
.subpanel.sp-link{background:var(--panel-2);border-left-color:#3b82c4}
.subpanel.sp-link h4.vm-title{color:#2563a6}
.subpanel.sp-project{background:#f5fbf7;border-left-color:#2f9e6b}
.subpanel.sp-project h4.vm-title{color:#1f7a50}
.subpanel.sp-house{background:var(--panel-2);border-left-color:#7c5cc4}
.subpanel.sp-house h4.vm-title{color:#5b3fa3}
.subpanel .tbl tr:hover td{background:transparent}
.tot-ok{color:var(--good, #1f7a50)}
.tot-warn{color:#b26a00}
.subpanel .tbl tr.total td{background:rgba(255,255,255,.6)}
.alt-row{display:flex;align-items:center;gap:8px;margin-top:6px}
.alt-row .ss.alt-ss{width:auto;flex:1 1 auto;min-width:0}
.alt-row .ss.alt-ss .ss-btn{height:30px;font-size:13px;border-style:dashed}
a.alt-link{display:inline-block;margin-top:4px;color:var(--ink-2);text-decoration:underline dotted}
.proj-pick{margin-top:14px;padding:12px 14px;border:1px solid var(--line-soft);border-radius:10px;background:var(--panel-2)}
.proj-head{display:flex;align-items:baseline;gap:10px}
.proj-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.proj-list .choice{flex:0 0 auto;padding:8px 12px}
.proj-list .choice:not(.on){opacity:.6}
.choice-list.proj-list{max-width:none;display:flex;flex-direction:row} .choice-list.proj-list .choice{width:auto;min-width:220px;max-width:360px}
/* узкий экран: «Вопросы» — выезжающая панель справа (правило после .ai-panel, чтобы перекрыть sticky) */
@media (max-width:1100px){.layout.ai-open{grid-template-columns:1fr}.layout .ai-panel{position:fixed;right:0;top:var(--hdr);bottom:0;height:auto;width:min(420px,100vw);z-index:25;box-shadow:var(--shadow)}}

/* ---------------------------------------------------- период в шапке */
.os-period{display:inline-flex;align-items:center;gap:2px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);border-radius:9px;padding:2px 4px 2px 2px}
.os-header .os-period-kind{width:auto;background:transparent;color:var(--brand-on-dark-2);border:0;font:600 12.5px/1.3 var(--font);padding:4px 6px;border-radius:7px;cursor:pointer}
.os-header .os-period-kind:hover{color:#fff;background:rgba(255,255,255,.08)}
.os-header .os-period-kind option{color:var(--ink);background:var(--panel)}
.os-header .os-period-nav{background:transparent;border:0;color:var(--brand-on-dark-2);font:600 16px/1 var(--font);padding:2px 7px;border-radius:7px}
.os-header .os-period-nav:hover{color:#fff;background:rgba(255,255,255,.08)}
.os-header .os-period-nav:disabled{opacity:.3}
.os-period-label{font-size:12.5px;font-weight:600;color:#fff;white-space:nowrap;min-width:92px;text-align:center}

/* ---------------------------------------------------- подвкладки раздела */
.page-head-wrap{margin-bottom:18px}
.subnav{display:flex;gap:2px;margin:-10px 0 14px;border-bottom:1px solid var(--line)}
.subnav a{padding:8px 12px;font-size:13.5px;font-weight:500;color:var(--ink-2);border-bottom:2px solid transparent;margin-bottom:-1px}
.subnav a:hover{color:var(--ink);text-decoration:none}
.subnav a.on{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}
.page-head-wrap .page-head{margin-bottom:0}
.page-head .sub{max-width:900px}

/* ---------------------------------------------------- карточки показателей */
.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
@media (max-width:1000px){.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
.metric{display:block;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px 16px;color:var(--ink);box-shadow:var(--shadow);position:relative}
a.metric:hover{text-decoration:none;border-color:var(--accent-line);box-shadow:0 1px 2px rgba(12,40,70,.04),0 14px 40px rgba(12,40,70,.1)}
.metric .l{font-size:12.5px;color:var(--ink-2);font-weight:500;display:flex;align-items:center;gap:6px}
.metric .l .q{display:inline-grid;place-items:center;width:15px;height:15px;border-radius:50%;background:var(--line-soft);color:var(--ink-3);font-size:10px;font-weight:700;cursor:help}
.metric .v{font-size:24px;font-weight:600;margin-top:4px;white-space:nowrap;letter-spacing:-.01em}
.metric .d{font-size:12.5px;font-weight:600;margin-top:2px}
.metric .d.good{color:var(--good)}.metric .d.bad{color:var(--bad)}.metric .d.warn{color:var(--warn)}.metric .d.muted{color:var(--ink-3);font-weight:500}
.metric .s{font-size:12px;color:var(--ink-3);margin-top:4px}
.metric.st-bad{border-left:3px solid var(--bad)}.metric.st-warn{border-left:3px solid #d9772b}
.plan-line{margin-top:12px;font-size:13px;color:var(--ink-2);padding:8px 14px;border-radius:9px;background:var(--panel);border:1px solid var(--line)}
.plan-line.good b{color:var(--good)}.plan-line.warn b{color:var(--warn)}.plan-line.bad b{color:var(--bad)}

/* ---------------------------------------------------- внимание на главной */
.card-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:10px}
.card-head h2{margin:0}
.attention{margin-bottom:16px;padding:14px 18px}
.att-row{display:grid;grid-template-columns:auto 1fr auto;gap:4px 10px;align-items:center;padding:7px 0;border-top:1px solid var(--line-soft);color:var(--ink)}
.att-row:first-of-type{border-top:0}
.att-row:hover{text-decoration:none;background:var(--panel-2)}
.att-row .att-title{font-weight:600}
.att-row .att-rec{grid-column:2 / span 2;font-size:12.5px}
.att-row .pill{justify-self:end}

/* ---------------------------------------------------- статусные точки */
.dots{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--line-strong)}
.dot.st-good{background:var(--good)}.dot.st-warn{background:#d9772b}.dot.st-bad{background:var(--bad)}.dot.st-none{background:var(--line-strong)}

/* ---------------------------------------------------- реестры */
.list-bar{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.list-bar input{max-width:320px;padding:6px 10px}
.list .more{display:block;margin:10px auto 0}
/* ---------------------------------------------------- шахматка по дому */
.house-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.house-tab{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 14px;border-radius:10px;background:var(--panel);border:1px solid var(--line);font-weight:500}
.house-tab b{font-weight:600}
.house-tab .small{color:var(--ink-3)}
.house-tab.on{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);color:var(--ink)}
.chess-card .legend.sticky{position:sticky;top:calc(var(--hdr) + 0px);background:var(--panel);z-index:2;padding:6px 0 10px;margin:-6px 0 8px;border-bottom:1px solid var(--line-soft)}
.chess-sections{display:flex;gap:20px;flex-wrap:wrap;align-items:flex-start}
.chess-sections .section{display:grid;gap:4px}
.sec-head{display:flex;align-items:baseline;gap:10px;margin-bottom:4px}
.sec-head h3{margin:0}
.pf .pf-cell{white-space:nowrap}
.pf .pf-cell .plan{color:var(--ink-3)}
.pf td.b,.pf tr.total td{font-weight:700}
.good{color:var(--good)}.bad{color:var(--bad)}.warn-t{color:var(--warn)}
details.card > summary{cursor:pointer;list-style:none}
details.card > summary::-webkit-details-marker{display:none}
details.card > summary::before{content:'▸';display:inline-block;width:14px;color:var(--ink-3)}
details.card[open] > summary::before{content:'▾'}
.tbl th.has-hint{cursor:help;text-decoration:underline dotted var(--line-strong);text-underline-offset:3px}
.tbl.tree td.gone{color:var(--ink-3);text-decoration:line-through}
/* ---------------------------------------------------- сигналы: тип, новое, решение */
.signal .kind{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);padding:2px 8px;border:1px solid var(--line);border-radius:999px}
.pill.new{background:var(--accent-fill);color:var(--on-accent);font-size:10.5px;padding:1px 7px;margin-left:6px;vertical-align:middle}
.signal.is-new{border-left:3px solid var(--accent)}
.signal.flash{box-shadow:0 0 0 3px rgba(15,119,189,.25)}
.signal .decide{display:flex;gap:8px;margin-top:2px}
button.small{padding:4px 10px;font-size:12.5px}
.decision{font-size:13px;padding:8px 12px;border-radius:9px;background:var(--line-soft);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.decision.accepted{background:var(--good-soft)}.decision.postponed{background:var(--warn-soft)}
.signal.has-decision{opacity:.85}
.pill.warn{background:var(--warn-soft);color:var(--warn)}
.msg .src{font-size:12px;color:var(--ink-2);margin-top:6px}
.msg .meta .rate{margin-left:8px}

/* =====================================================================
   Чистка типовых приёмов (27.10.2026). Правила:
   статус — подписью, а не заливкой; тонкие разделители вместо рамок в рамках;
   один акцент — на действии; цвет только у значения, которое пересекло порог.
   ===================================================================== */

/* Плашки-пилюли → подпись. Цвет несёт текст, фона и капсулы нет. */
.pill{display:inline;padding:0;border-radius:0;background:none;font-size:12.5px;font-weight:600;color:var(--ink-2);gap:0}
.pill.good{background:none;color:var(--good)}
.pill.bad{background:none;color:var(--bad)}
.pill.warn,.pill.warn{background:none;color:var(--warn)}
.pill.accent{background:none;color:var(--accent)}
.pill + .pill{margin-left:12px}
.sec-meta + .pill,.sec-title + .pill{margin-left:12px}

/* Уведомления: справка — нейтральным текстом на панели; цветной фон — только у проблемы. */
.notice{border-radius:var(--radius-sm);background:var(--panel);border:1px solid var(--line);color:var(--ink-2)}
.notice.info{background:var(--panel);border-color:var(--line);color:var(--ink-2)}
.notice.warn{background:var(--warn-soft);border-color:var(--warn-line);color:var(--ink)}
.notice.bad{background:var(--bad-soft);border-color:var(--bad-line);color:var(--ink)}
.notice.warn b,.notice.warn strong{color:var(--warn)}.notice.bad b,.notice.bad strong{color:var(--bad)}

/* Карточка показателя: без цветной кромки и без «подъёма» на наведении. */
.metric.st-bad,.metric.st-warn{border-left:1px solid var(--line)}
a.metric:hover{box-shadow:var(--shadow);border-color:var(--line-strong)}
.metric .l{gap:0}
.metric .l .hint-l{cursor:help;border-bottom:1px dotted var(--line-strong)}
.metric .v{font-size:26px;font-weight:700;letter-spacing:-.02em;margin-top:6px}
.metric .d{font-weight:500;color:var(--ink-2);font-variant-numeric:tabular-nums}
.metric .d .n{font-weight:600}
.metric .d .n.good{color:var(--good)}.metric .d .n.bad{color:var(--bad)}.metric .d .n.warn{color:var(--warn)}
.metric .d .flag{margin-left:6px;font-weight:600}
.metric .d .flag.bad{color:var(--bad)}.metric .d .flag.warn{color:var(--warn)}
.metric .s{border-top:1px solid var(--line-soft);margin-top:10px;padding-top:8px;color:var(--ink-3)}

/* Подсказка у заголовка таблицы — пунктир, без кружка «?». */
.tbl th.has-hint{text-decoration:none;border-bottom:0}
.tbl th.has-hint > span.hl{cursor:help;border-bottom:1px dotted var(--line-strong)}

/* Внимание: нумерованный список с тонкими разделителями. Серьёзность — словом справа. */
.att-list{list-style:none;margin:0;padding:0}
.att-item{display:grid;grid-template-columns:22px minmax(0,1fr) auto auto;gap:4px 16px;align-items:baseline;padding:12px 8px;margin:0 -8px;border-top:1px solid var(--line-soft);border-radius:var(--radius-sm);color:var(--ink)}
.att-item:first-child{border-top:0;padding-top:4px}
a.att-item:hover{background:var(--bg);text-decoration:none}
.att-rank{font-size:12.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.att-title{font-size:15px}
.att-amount{color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}
.att-sev{font-size:11.5px;letter-spacing:.02em;color:var(--ink-3);white-space:nowrap;min-width:72px;text-align:right}
.att-sev.critical{color:var(--bad)}.att-sev.high{color:var(--warn)}
.att-rec{grid-column:2 / span 3;font-size:13px;color:var(--ink-2)}
.att-new{margin-left:8px;font-size:11.5px;font-weight:600;color:var(--accent)}

/* Сигнал на странице «Внимание»: строка большого списка, а не карточка в карточке. */
.signals-panel{padding:6px 22px}
.signal{border:0;border-top:1px solid var(--line-soft);border-radius:0;background:none;padding:18px 0;gap:10px}
.signals-panel > .signal:first-child{border-top:0}
.signal.is-new{border-left:0}
.signal.has-decision{opacity:1}
.signal.flash{box-shadow:none;background:linear-gradient(var(--accent-soft),var(--accent-soft)) no-repeat;background-size:100% 100%;transition:background-size 1.6s}
.signal .t{display:grid;grid-template-columns:22px minmax(0,1fr) auto auto;gap:4px 16px;align-items:baseline;font-weight:400}
.signal .t .att-title{font-weight:600}
.signal .t .kind{border:0;padding:0;text-transform:none;letter-spacing:0;font-size:12.5px;color:var(--ink-3);font-weight:500;margin-right:6px}
.signal .body{padding-left:38px;display:grid;gap:10px}
.signal .rec{grid-template-columns:86px 1fr;gap:6px 12px}
.signal .rec .st{background:none;padding:0;border-radius:0;font-size:12px;font-weight:500;color:var(--ink-3);margin-top:1px}
.signal .rec .st.calc{background:none;color:var(--good);font-weight:600}
.signal .actions{display:flex;gap:18px;align-items:baseline;font-size:13px}
.signal .actions .lbl{color:var(--ink-3)}
.linkbtn{appearance:none;border:0;background:none;padding:0;font:inherit;font-size:13px;font-weight:500;color:var(--accent);cursor:pointer}
.linkbtn:hover{text-decoration:underline;color:var(--accent-strong);border:0}
.linkbtn.muted{color:var(--ink-3)}
.decision{background:none !important;padding:0;border-radius:0;font-size:13px;color:var(--ink-2)}
.decision b{font-weight:600}
.decision.accepted b{color:var(--good)}.decision.postponed b{color:var(--warn)}.decision.dismissed b{color:var(--ink-3)}

/* Статусы домов и строк — цветной текст значения, без точек. */
.dots{gap:0}
.dot{display:none}
.v-good{color:var(--good)}.v-bad{color:var(--bad)}.v-warn{color:var(--warn)}

/* Переключатели (первый вариант, переопределён ниже). */
.subnav{display:inline-flex;gap:6px;margin:0 0 18px;border:0;flex-wrap:wrap}
.subnav a{border:1px solid var(--line);background:var(--panel);color:var(--ink-2);border-radius:999px;padding:5px 14px;font-size:12.5px;font-weight:500;margin:0}
.subnav a:hover{color:var(--ink);border-color:var(--line-strong)}
.subnav a.on{background:var(--accent-fill);border-color:var(--accent-fill);color:var(--on-accent);font-weight:500}
.house-tabs{gap:6px}
.house-tab{flex-direction:row;align-items:baseline;gap:8px;border-radius:999px;padding:6px 16px;font-size:12.5px}
.house-tab b{font-weight:600}
.house-tab.on{background:var(--accent-fill);border-color:var(--accent-fill);box-shadow:none;color:var(--on-accent)}
.house-tab.on .small{color:rgba(255,255,255,.66)}

/* Строка плана под карточками — текст, а не ещё одна рамка. */
.plan-line{background:none;border:0;padding:12px 2px 0;font-size:13px;color:var(--ink-2)}
.plan-line b{color:var(--ink);font-weight:600}
.plan-line.good b,.plan-line.warn b,.plan-line.bad b{color:var(--ink)}

/* Ячейка шахматки: ровная заливка статуса, без цветной кромки слева. */
.cell{border:1px solid rgba(12,27,42,.06);border-radius:6px}
.cell:hover{border-color:var(--ink-2)}

/* Цвет статуса в таблицах — квадрат легенды, а не круглая «лампочка». */
.sev.sw{width:9px;height:9px;border-radius:2px;margin-right:8px;vertical-align:0}

/* Карточка помещения: статус — словом рядом с заголовком. */
.status-word{font-size:14px;font-weight:600;margin-left:10px;letter-spacing:0}
.status-word i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:6px;vertical-align:1px}

/* Оценка ответа помощника — словами. */
.msg .meta .rate .linkbtn{font-size:12px;margin-left:10px}

/* ---- второй проход: оценка по существу, а не по образцу DM Finance ----
   Фирменное остаётся: тёмная шапка, знак «МЦ», синий акцент, Montserrat.
   Убрано: «парящие» карточки, надзаголовки капсом, номера вкладок, значок LIVE, «пилюли»-переключатели. */
:root{--shadow:none;--radius:10px;--radius-sm:8px}
.card,.metric,.kpi{box-shadow:none}
a.metric:hover{box-shadow:none;border-color:var(--ink-3)}
.os-eyebrow{display:none}
.os-tab-num{display:none}
.os-tab{padding:12px 12px 13px;font-size:13.5px}
.os-status-item.is-warn{color:#f0a06e}

/* Подразделы и дома — обычные вкладки под заголовком: текст, активная — подчёркнута акцентом */
.subnav{display:flex;gap:0;margin:16px 0 20px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.subnav a{border:0;background:none;border-radius:0;padding:8px 14px 9px;font-size:13.5px;font-weight:500;color:var(--ink-2);border-bottom:2px solid transparent;margin-bottom:-1px}
.subnav a:first-child{padding-left:0}
.subnav a:hover{color:var(--ink);background:none}
.subnav a.on{background:none;color:var(--ink);font-weight:600;border-bottom-color:var(--accent)}
.page-head-wrap{margin-bottom:0}
.page-head-wrap > .page-head{margin-bottom:18px}
.page-head-wrap > .subnav + *{margin-top:0}
.house-tabs{gap:0;border-bottom:1px solid var(--line);margin-bottom:16px}
.house-tab{background:none;border:0;border-radius:0;border-bottom:2px solid transparent;margin-bottom:-1px;padding:8px 16px 9px;font-size:13.5px;font-weight:500;color:var(--ink-2);gap:6px}
.house-tab:first-child{padding-left:0}
.house-tab:hover{color:var(--ink);border-color:transparent;background:none}
.house-tab.on{background:none;color:var(--ink);font-weight:600;border-bottom-color:var(--accent);box-shadow:none}
.house-tab .small,.house-tab.on .small{color:var(--ink-3);font-weight:400}

/* Плотнее и ровнее: одинаковые поля у карточек, заголовки разделов без лишнего веса */
.card{padding:18px 20px}
.card h2{font-size:16px;font-weight:600}
h1{font-size:24px;font-weight:600;letter-spacing:-.015em}
.page-head .sub{font-size:14px;color:var(--ink-2);margin-top:6px;line-height:1.5}
.chart{width:100%;min-height:120px}
.chart .svg-chart{width:auto;max-width:100%}
/* линия под шапкой таблицы — тенью, чтобы липкая шапка не разрывала её у колонок */
.tbl th{border-bottom:0;box-shadow:inset 0 -1px 0 var(--line)}
.legend{gap:16px;font-size:12.5px;color:var(--ink-2)}
.legend i{width:10px;height:10px;border-radius:2px}
/* карточки в сетке стоят по верхней линии: отступ «карточка под карточкой» внутри сетки не нужен */
.grid > .card + .card{margin-top:0}
.grid{align-items:start}
/* вкладки «Системы» — тот же язык, что подразделы: активная тёмным текстом с акцентной чертой */
.tabs{gap:0}
.tabs a{font-weight:500;font-size:13.5px}
.tabs a:first-child{padding-left:0}
.tabs a.on{color:var(--ink);font-weight:600}
.tabs a:hover{color:var(--ink)}
/* итоговые строки таблиц — весом и линией, без цветной заливки */
.tbl tr.sec td{background:none;font-weight:600;border-top:1px solid var(--line)}
.tbl tr.total td{background:none}
details.card > summary h2,details.card > summary{color:var(--ink)}
/* выбор дома — строкой выбора внутри раздела, без второй линии вкладок */
.house-tabs{border-bottom:0;margin:-4px 0 14px;gap:4px}
.house-tab{border-bottom:0;padding:4px 12px;border-radius:6px}
.house-tab:first-child{padding-left:12px}
.house-tab.on{background:var(--line-soft);color:var(--ink)}
/* пояснение раздела — обычным абзацем, рамка остаётся только у предупреждений */
.notice.info{border:0;background:none;padding:0 0 4px;color:var(--ink-2);max-width:900px}
.tpl-list{display:grid;gap:6px;margin:8px 0 12px;max-width:640px}
.tpl-row{display:grid;grid-template-columns:minmax(0,1fr) 120px 28px;gap:10px;align-items:center}
.tpl-row input{font-family:var(--mono);font-size:13px}

/* ------------------------------------------------------------ главная (новая): шапка, вывод, Внимание, два ряда, дома */
.home-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px 24px;margin:4px 0 14px}
.hh-title{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px}
.hh-ctx{font-size:14px;font-weight:600;color:var(--ink-2)}
.hh-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;margin-top:6px;font-size:12.5px;color:var(--ink-2)}
.src-dot{display:inline-flex;align-items:center;gap:6px}
.src-dot i{width:8px;height:8px;border-radius:50%;background:var(--good)}
.src-dot.part i{background:#c98a12}
.src-dot.off i{background:var(--panel);box-shadow:inset 0 0 0 1.5px var(--ink-3)}
.hh-r{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.hh-cap{font-size:11.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-2)}
.seg{display:inline-flex;padding:3px;gap:2px;background:var(--sunken);border:1px solid var(--line);border-radius:10px}
.seg button{appearance:none;border:0;background:transparent;min-height:32px;min-width:42px;padding:5px 11px;border-radius:8px;font:inherit;font-size:13px;font-weight:500;color:var(--ink-2);cursor:pointer}
.seg button.on{background:var(--accent-fill);color:var(--on-accent);font-weight:600;box-shadow:0 1px 2px rgba(6,22,52,.18)}
.seg button:hover:not(.on){color:var(--ink)}
.home-lead{max-width:1000px;margin:0 0 16px;font-size:15.5px;line-height:1.5}
.home-lead p{margin:0}.home-lead p+p{margin-top:2px}
.home-att{padding:16px 20px 6px}
.home-att .card-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:2px}
.home-att .card-head h2{margin:0}
.att-row{display:grid;grid-template-columns:22px minmax(0,1fr) auto;column-gap:12px;align-items:start;padding:12px 0;border-top:1px solid var(--line-soft)}
.att-row:first-of-type{border-top:0}
.att-n{font-size:13px;color:var(--ink-3);padding-top:1px}
.att-t{font-size:14.5px;font-weight:600}
.att-b{font-size:13px;color:var(--ink-2);margin-top:3px}
.att-a{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 16px;margin-top:5px;font-size:13px}
.att-side{display:flex;flex-direction:column;align-items:flex-end;gap:4px;text-align:right;white-space:nowrap}
.att-side b{font-size:14px;font-weight:600}
.sevb{font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:999px}
.sevb.hi{background:var(--bad-soft);color:var(--bad)}.sevb.mid{background:var(--warn-soft);color:var(--warn)}
.home-att .att-row{gap:0 12px;align-items:start}
.home-att .att-row:hover{background:none}
.tbl.houses tr.grp td{padding:8px 20px}
.tbl.houses tr.grp button{margin-right:10px}
.home-row{margin-top:18px}
.row-h{margin:0 0 8px;font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}
.hcards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
@media (max-width:1100px){.hcards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.hcards{grid-template-columns:1fr}}
.hcard{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:15px 18px;display:flex;flex-direction:column;gap:5px;min-width:0}
.hcards.compact .hcard{padding:13px 18px;gap:3px}
.hc-l{font-size:13px;color:var(--ink-2)}
.hc-v{font-size:27px;line-height:1.15;font-weight:700;letter-spacing:-.01em}
.hcards.compact .hc-v{font-size:21px}
.hc-v.muted{font-size:18px;font-weight:600;color:var(--ink-2)}
.hc-d{font-size:13px;font-weight:600}
.hc-d.good{color:var(--good)}.hc-d.bad,.hc-d .bad{color:var(--bad)}.hc-d .warn,.hc-d.warn{color:var(--warn)}.hc-d.muted{font-weight:400;color:var(--ink-2)}
.hc-d b{font-weight:700}
.hc-s{font-size:12.5px;color:var(--ink)}
.hc-s.muted{color:var(--ink-2)}
.hc-foot{margin-top:auto;padding-top:8px;border-top:1px solid var(--line-soft);font-size:12.5px;color:var(--ink-2)}
.hbar{position:relative;height:7px;background:var(--sunken);border-radius:4px;overflow:hidden;margin:3px 0}
.hbar i{position:absolute;left:0;top:0;bottom:0;background:var(--accent)}
.hbar b{position:absolute;top:0;bottom:0;width:2px;background:var(--panel)}
.home-houses{margin-top:18px;padding:16px 0 12px}
.home-houses .card-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:6px 16px;padding:0 20px 8px}
.home-houses .card-head h2{margin:0}
.home-houses>p{padding:0 20px}
.home-houses .table-wrap{overflow-x:auto}
.tbl.houses{min-width:980px}
.tbl.houses th:first-child,.tbl.houses td:first-child{padding-left:20px}
.tbl.houses th:last-child,.tbl.houses td:last-child{padding-right:20px}
.tbl.houses th.num{text-align:right}
.tbl.houses td{padding:9px 8px;font-size:13.5px;vertical-align:top}
.tbl.houses td:first-child{font-weight:600;white-space:nowrap}
.tbl.houses tr.kid td{padding-top:2px;padding-bottom:8px;border-bottom-color:transparent;color:var(--ink-2);font-size:12.5px;font-weight:400}
.tbl.houses tr.kid td:first-child{padding-left:38px;font-weight:400}
.tbl.houses tr:has(+ tr.kid) td{border-bottom-color:transparent}
.tbl.houses tr.grp td{color:var(--ink-2);font-size:13px;background:var(--panel-2)}
.tbl.houses tr.tot td{font-weight:600;background:var(--panel-2);border-top:1px solid var(--line-strong)}
.tbl.houses .sub{display:block;font-size:11.5px;color:var(--ink-2);font-weight:400}
.tbl.houses .tbar{display:flex;align-items:center;gap:10px;min-width:150px}
.tbl.houses .tbar .hbar{flex:1;height:6px;margin:0}
.tbl.houses .tbar span{width:46px;text-align:right;white-space:nowrap}
.tbl.houses tr.kid .hbar i{background:#9ab7d8}
.hdot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:8px;vertical-align:1px;background:transparent}
.hdot.red{background:#c4321f}.hdot.amber{background:#c98a12}.hdot.green{background:#1f8a5b}.hdot.grey{background:#b5bdc8}
.arrow.up{color:var(--good)}.arrow.down{color:var(--bad)}
@media (max-width:640px){
  .home-att .att-row{grid-template-columns:18px minmax(0,1fr)}
  .home-att .att-side{grid-column:2;flex-direction:row;flex-wrap:wrap;align-items:baseline;justify-content:flex-start;gap:4px 10px;margin-top:6px;text-align:left}
  .home-att .card-head{flex-direction:column;align-items:flex-start;gap:2px}
  .hh-r{align-items:flex-start}
  .seg{flex-wrap:wrap}
}

/* главная на широком экране: «Внимание» — колонкой справа, карточки и дома — слева; всё в один экран 16:9 */
.home-grid{display:flex;flex-direction:column}
.home-main>.home-row:first-child{margin-top:18px}
@media (min-width:1600px){
  .home-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(380px,26%);gap:20px;align-items:start}
  .home-side{grid-column:2;grid-row:1;position:sticky;top:calc(var(--hdr) + 16px)}
  .home-main{grid-column:1;grid-row:1}
  .home-main>.home-row:first-child{margin-top:0}
  .home-att .att-row{grid-template-columns:18px minmax(0,1fr)}
  .home-att .att-side{grid-column:2;flex-direction:row;flex-wrap:wrap;align-items:baseline;justify-content:flex-start;gap:4px 10px;margin-top:6px;text-align:left}
  .home-att .card-head{flex-direction:column;align-items:flex-start;gap:2px}
  .home-head{margin-bottom:12px}
  .hcard{padding:13px 16px;gap:3px}.hc-v{font-size:24px}.hcards.compact .hcard{padding:11px 16px}.hcards.compact .hc-v{font-size:19px}
  .home-row{margin-top:14px}.row-h{margin-bottom:6px}
  .home-houses{margin-top:14px;padding-top:12px}
  .tbl.houses td{padding:7px 8px}
  .tbl.houses .sub{display:inline;margin-left:6px}
  .tbl.houses td.num .sub{display:inline}
  .tbl.houses tr.kid td{padding-top:0;padding-bottom:6px}
}
.tbl.houses tr.grp td{vertical-align:baseline}
.tbl.houses tr.grp .linkbtn{vertical-align:baseline;line-height:inherit;padding:0}
.home-att a.att-t{display:block;color:var(--ink)}
.home-att a.att-t:hover{color:var(--accent);text-decoration:none}
.att-r{font-size:13px;margin-top:4px}
.home-att .att-a{gap:4px 18px}
.att-all{padding:10px 0 6px;border-top:1px solid var(--line-soft);font-size:13px}
.row-hh{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin:0 0 6px}
.row-hh .row-h{margin:0}
.mswitch{display:inline-flex;align-items:center;gap:2px;font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink)}
.mswitch span{padding:0 4px;min-width:118px;text-align:center}
.mswitch button{appearance:none;border:1px solid var(--line);background:var(--panel);border-radius:7px;min-width:28px;min-height:26px;font:inherit;font-size:15px;line-height:1;color:var(--ink-2);cursor:pointer}
.mswitch button:hover:not([disabled]){border-color:var(--line-strong);color:var(--ink)}
.mswitch button[disabled]{opacity:.35;cursor:default}
.hc-vrow{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px}
.hc-v2{font-size:17px;font-weight:600;margin-left:10px}
.chg{font-size:13px;font-weight:600;color:var(--ink-2);white-space:nowrap}
.chg.up{color:var(--good)}.chg.down{color:var(--bad)}
.hc-gap{margin-left:12px}
.hcards.six{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (min-width:1850px){.hcards.six{grid-template-columns:repeat(6,minmax(0,1fr))}}
@media (max-width:1100px){.hcards.six{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.hcards.six{grid-template-columns:1fr}}
/* ряд «Текущий период»: шесть карточек на одной сетке — подпись, значение, вторая строка, примечание выровнены по ряду */
.kcards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:auto;gap:12px}
@media (min-width:1850px){.kcards{grid-template-columns:repeat(6,minmax(0,1fr))}}
@media (max-width:1100px){.kcards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.kcards{grid-template-columns:1fr}}
.kcard{display:grid;grid-row:span 4;grid-template-rows:subgrid;row-gap:4px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px 16px 14px;min-width:0}
.kc-l{font-size:13px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kc-v{display:flex;align-items:baseline;gap:8px;white-space:nowrap;min-width:0}
.kc-v .hc-v{font-size:21px;line-height:1.2;font-weight:700}
.kc-v .hc-v.is-empty{color:var(--ink-3);font-weight:600}
.kc-s{font-size:13px;line-height:1.4;color:var(--ink)}
.kc-s b{font-weight:600}
.kc-n{font-size:12.5px;line-height:1.4;color:var(--ink-2)}
@media (min-width:1600px){.kc-v .hc-v{font-size:19px}}
.kc-sum{font-size:15px;font-weight:600;color:var(--ink);margin-left:4px}
.att-tag{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);margin-bottom:2px}
.tagbar{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px}
.tagchip{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border:1px solid var(--line);border-radius:999px;background:var(--panel);font-size:13px;color:var(--ink)}
.tagchip:hover{text-decoration:none;border-color:var(--line-strong)}
.tagchip.on{background:var(--accent-fill);border-color:var(--accent-fill);color:var(--on-accent)}
.tagchip .n{font-size:12px;color:var(--ink-3)}.tagchip.on .n{color:rgba(255,255,255,.7)}
/* лёгкий разделитель внутри карточки: над ним подпись и значение, под ним — пояснения */
.kcard{row-gap:0}
.kc-v{padding:3px 0 10px}
.kc-s{border-top:1px solid var(--line-soft);padding-top:9px}
.kc-n{padding-top:3px}
.kc-s .hbar{margin:2px 0 7px}
.kcards.four{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1100px){.kcards.four{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.kcards.four{grid-template-columns:1fr}}
.kcards.four .kc-v .hc-v{font-size:24px}
@media (min-width:1600px){.kcards.four .kc-v .hc-v{font-size:22px}}
.os-alert{appearance:none;border:0;font:inherit;font-size:12.5px;font-weight:600;padding:5px 10px;border-radius:8px;cursor:pointer;white-space:nowrap}
.os-alert.bad{background:rgba(240,110,110,.2);color:#ffb4b4}
.os-alert.warn{background:rgba(240,190,110,.18);color:#f3c98b}
.os-alert:hover{text-decoration:none;filter:brightness(1.15)}
.modal-ov{position:fixed;inset:0;background:rgba(10,26,44,.45);z-index:100;display:flex;align-items:flex-start;justify-content:center;padding:12vh 16px 16px}
.modal{background:var(--panel);border-radius:14px;box-shadow:0 20px 60px rgba(10,26,44,.3);padding:22px 24px;width:min(560px,100%);max-height:76vh;overflow:auto}
.modal h2{margin:0 0 12px}
.rep{margin:6px 0 0;padding-left:18px}.rep li{margin:4px 0}
.hdot.closed{background:var(--panel);box-shadow:inset 0 0 0 2px var(--ink-3)}
/* главная: три уровня — «Проект», «Месяц», «Сегодня» */
.lvl-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 18px}
.lvl-tab{appearance:none;display:flex;flex-direction:column;gap:3px;text-align:left;padding:11px 14px;border-radius:12px;border:2px solid transparent;background:#eaeff5;font:inherit;color:var(--ink);cursor:pointer;min-height:44px}
.lvl-tab:hover:not(.on){background:#e2e8f0}
.lvl-tab.on{background:var(--panel);border-color:var(--accent-fill);box-shadow:0 0 0 1px var(--accent-fill),0 4px 14px rgba(0,113,188,.18)}
.lvl-tab:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.lt-h{display:flex;align-items:baseline;gap:10px}
.lt-h b{font-size:16px;font-weight:700}
.lt-k{font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase}
.lt-k.project{color:#5b4bb7}.lt-k.month{color:#0f6aa8}.lt-k.today{color:#1b7a52}
.lt-n{margin-left:auto;min-width:20px;padding:1px 7px;border-radius:999px;background:var(--warn-soft);color:var(--warn);font-size:12px;font-weight:700;text-align:center}
.lt-q{font-size:12.5px;color:var(--ink-2)}
@media (max-width:720px){.lvl-tab .lt-q{display:none}.lvl-tabs{gap:6px}.lvl-tab{padding:9px 10px}.lt-k{display:none}}
.home-main>*+*{margin-top:16px}
.home-side>*+*{margin-top:16px}
.home-grid>.home-side{margin-bottom:16px}
@media (min-width:1600px){.home-grid>.home-side{margin-bottom:0}}
.row-hh .hh-r{margin-left:auto;flex-direction:row;align-items:center;gap:10px}
.home-main .card{padding:16px 20px 12px}
.home-main .card.home-houses{padding:16px 0 12px}
.home-main .card .card-head,.home-side .card .card-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 16px;margin-bottom:8px}
.home-main .card .card-head h2,.home-side .card .card-head h2{margin:0}
.home-main .card .tbl .sub,.home-side .card .tbl .sub{display:block;font-size:11.5px;color:var(--ink-2);font-weight:400}
.home-main .card .tbl td.up{color:var(--good)}.home-main .card .tbl td.down{color:var(--bad)}
.home-main .card .tbar{display:flex;align-items:center;gap:10px;min-width:140px}
.home-main .card .tbar .hbar{flex:1;height:6px;margin:0}
.home-main .card .tbar span{width:46px;text-align:right}
.qprices{display:flex;margin:2px 4px 0 64px;font-size:11px;color:var(--ink-2)}
.qprices span{flex:1;text-align:center;white-space:nowrap}
.seg button.off{opacity:.45;cursor:default}
.home-money{padding:16px 20px 14px}
.mrow{display:flex;justify-content:space-between;gap:12px;padding:4px 0;font-size:13px}
.mrow b{font-weight:600}
.home-grid.today{margin-top:16px}
@media (min-width:1200px){
  .home-grid.today{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:20px;align-items:start}
  .home-grid.today .home-main{grid-column:1;grid-row:1}
  .home-grid.today .home-side{grid-column:2;grid-row:1;position:static}
}
.home-grid.today .home-att .att-row{grid-template-columns:22px minmax(0,1fr) auto}
.home-grid.today .home-att .att-side{grid-column:auto;flex-direction:column;align-items:flex-end;margin-top:0;text-align:right}
.tbl.houses .sub.kind{display:block!important;margin-left:17px!important}
.home-main .card .tbl th.num,.home-side .card .tbl th.num{text-align:right}
.home-main .card .tbl.mh .sub{display:inline;margin-left:8px}
.home-grid .only-wide{display:none}
@media (min-width:1600px){.home-grid .only-wide{display:block}.home-grid .only-narrow{display:none}}
.fc-sum{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:2px 0 12px;padding-bottom:12px;border-bottom:1px solid var(--line-soft)}
.fc-sum .kc-l{display:block;margin-bottom:2px}
.fc-v{font-size:20px;font-weight:700;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
@media (max-width:720px){.fc-sum{grid-template-columns:1fr}}
/* «Проект»: одна колонка — вывод, карточки, сигналы, кварталы, дома */
.home-main.proj{max-width:1500px}
.home-main.proj .home-lead{margin:0 0 4px;font-size:15px;line-height:1.5;max-width:none}
.home-att.compact .att-row{grid-template-columns:22px minmax(0,1fr) auto;padding:10px 0}
.home-att.compact .att-side{grid-column:auto;flex-direction:column;align-items:flex-end;margin-top:0;text-align:right}
.att-more{margin-top:3px}
.att-more summary{cursor:pointer;font-size:12.5px;color:var(--ink-2);list-style:none}
.att-more summary::-webkit-details-marker{display:none}
.att-more summary::before{content:'▸ ';color:var(--ink-3)}
.att-more[open] summary::before{content:'▾ '}
.tbl.houses tr.group td{border-top:1px solid var(--line)}
.tbl.houses tr.group td:first-child{font-weight:600}
.home-houses .card-head .hh-r{margin-left:auto}
/* «Что решить» — кнопка со счётчиком и выезжающая панель справа */
.os-header .os-att-open{align-self:center;margin:0 10px 4px auto;display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:13px;font-weight:600;color:#fff;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);border-radius:999px;padding:6px 8px 6px 14px;cursor:pointer;flex:none}
.os-header .os-att-open:hover,.os-header .os-att-open.on{background:rgba(255,255,255,.16)}
.os-header .os-att-open:not(:has(.att-badge)){padding-right:14px}
.att-badge{min-width:22px;height:22px;padding:0 7px;border-radius:999px;background:#c98a12;color:#fff;font-size:12px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box}
.att-badge.crit{background:#d23b2a}
.lt-n.crit{background:#d23b2a;color:#fff}
.att-drawer-wrap{position:fixed;inset:0;z-index:90}
.adr-shade{position:absolute;inset:0;background:rgba(10,26,44,.28)}
.att-drawer{position:absolute;top:0;right:0;bottom:0;width:min(460px,100%);background:var(--bg);box-shadow:-12px 0 40px rgba(10,26,44,.25);display:flex;flex-direction:column;overflow-y:auto;animation:adr-in .18s ease-out}
@keyframes adr-in{from{transform:translateX(40px);opacity:.4}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){.att-drawer{animation:none}}
.adr-head{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:12px;padding:16px 20px;background:var(--brand-dark);color:#fff}
.adr-head h2{margin:0;font-size:17px;color:#fff}
.adr-head .muted{color:rgba(255,255,255,.7)}
.adr-close{margin-left:auto;appearance:none;border:0;background:transparent;color:#fff;font-size:24px;line-height:1;min-width:36px;min-height:36px;cursor:pointer;border-radius:8px}
.adr-close:hover{background:rgba(255,255,255,.12)}
.adr-group{padding:12px 16px 4px}
.adr-group h3{margin:4px 4px 8px;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}
.adr-row{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:10px;display:flex;flex-direction:column;gap:4px}
.adr-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.adr-row .att-t{font-size:14.5px;font-weight:600;color:var(--ink)}
.adr-row .att-t:hover{color:var(--accent);text-decoration:none}
.adr-sum{font-size:13px}
.adr-row .att-a{display:flex;flex-wrap:wrap;gap:4px 16px;font-size:13px;margin-top:2px}
.adr-foot{margin-top:auto;padding:12px 20px 18px;font-size:13px}
.home-main.wide{max-width:none}
.lt-n[role=button]{cursor:pointer}
.lt-n[role=button]:hover{filter:brightness(1.1);box-shadow:0 0 0 2px rgba(15,119,189,.25)}
.qs-ctrl{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;justify-content:space-between;margin:0 0 8px}
.qs-filters{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center}
.qs-switch{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.qs-ctrl{align-items:flex-start}
.qsales select.qs-sel{width:auto;min-width:160px;max-width:280px;min-height:36px;padding:4px 30px 4px 10px;border:1px solid var(--line);border-radius:9px;background-color:var(--panel);font:inherit;font-size:13px}
.kc-bar{display:flex;justify-content:flex-end;margin:0 0 -8px}
.seg.seg-sm{padding:2px}
.seg.seg-sm button{min-height:26px;min-width:34px;padding:2px 10px;font-size:12px}
.lvl-tab{padding:9px 14px;min-height:40px;justify-content:center}
/* вкладки уровней: невыбранная — лёгкая обводка, выбранная — жирная */
.lvl-tab{border:1px solid var(--line-strong);background:var(--panel)}
.lvl-tab:hover:not(.on){background:#f5f8fb;border-color:#9fb3c8}
.lvl-tab.on{border:2px solid var(--accent);padding:8px 13px}
/* телефон: шапка не закреплена и сжата, карточки 2×2, переключатели в строку, первый столбец «Домов» закреплён */
@media (max-width:640px){
  .os-header{position:static}
  .os-header .os-period,.os-header .os-status-item,.os-header .os-refresh{display:none}
  .os-header-inner{flex-wrap:nowrap;align-items:center;gap:8px}
  .os-brand-sub{display:none}
  .os-nav-row{align-items:center;gap:6px;flex-wrap:wrap}
  .os-nav{flex:1 1 100%;order:2;min-width:0;margin:0 -4px}
  .os-tab{padding:10px 8px 11px}
  .os-header .os-att-open{margin:0 0 4px;padding:5px 6px 5px 10px;font-size:12px}
  .os-header .os-analyst-open{padding:6px 10px;font-size:12px}
  .kcards.four,.kcards{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .kcard{padding:10px 12px 12px}
  .kcards .kc-v .hc-v,.kcards.four .kc-v .hc-v{font-size:18px}
  .kc-l{white-space:normal;font-size:12px}
  .kc-s{font-size:12px}
  .seg{flex-wrap:nowrap;overflow-x:auto;max-width:100%}
  .seg button{min-width:34px;padding:5px 8px;white-space:nowrap}
  .home-houses .card-head{flex-direction:column;align-items:stretch}
  .home-houses .card-head .hh-r{margin-left:0;flex-direction:column !important;align-items:flex-start !important}
  .tbl.houses{min-width:900px}
  .tbl.houses th:first-child,.tbl.houses td:first-child{position:sticky;left:0;z-index:1;background:var(--panel);box-shadow:1px 0 0 var(--line)}
  .tbl.houses tr.tot td:first-child{background:var(--panel-2)}
  .tbl.houses .tbar{min-width:120px}
  .tbl.houses .tbar span{width:40px}
  .qs-switch{margin-left:0;align-items:flex-start}
  .lvl-tabs{gap:6px}
}
/* «Сегодня»: карточки и детализация в одной сетке из четырёх колонок */
.today-grid .card.span2,.today-fill>.card{padding:14px 16px 12px}
.today-grid .card-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px}
.today-grid .card-head h2{margin:0}
.today-grid .tbl .sub{display:block;font-size:11.5px;color:var(--ink-2)}
.today-grid .tbl td,.today-grid .tbl th{padding-left:6px;padding-right:6px}
.today-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:stretch;margin-bottom:12px}
.today-grid>.span2{grid-column:span 2;min-width:0;margin:0}
.today-grid>.card{margin:0}
.today-fill{position:relative;min-height:420px;min-width:0}
.today-fill>.card{position:absolute;inset:0;margin:0;display:flex;flex-direction:column}
.today-fill>.card>.table-wrap{flex:1 1 auto;min-height:0;overflow:auto}
.today-fill thead th{position:sticky;top:0;background:var(--panel);z-index:1}
@media (max-width:1100px){.today-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.today-grid{grid-template-columns:1fr;gap:8px}.today-grid>.span2{grid-column:auto}.today-fill{min-height:0}.today-fill>.card{position:static}.today-fill>.card>.table-wrap{max-height:360px}}
.today-fill .tbl th,.today-fill .tbl td.num,.today-fill .tbl td:first-child{white-space:nowrap}
.today-fill .tbl:has(th.num:nth-child(2)) td:first-child{white-space:normal}
.today-fill .tbl td,.today-fill .tbl th{padding-left:4px;padding-right:4px}
.today-fill .tbl td{font-size:13px}
.today-fill>.card{padding:14px 12px 12px}
.os-tab.is-off{opacity:.38;cursor:not-allowed}
.os-tab.is-off:hover{color:var(--brand-on-dark-2)}
/* Разделы (пересборка 29.10): та же сетка, что «Сегодня»; строка вида и окна над карточками */
.sx-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 12px}
.sx-win{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.today-grid>.span4{grid-column:1/-1;min-width:0;margin:0}
.today-grid>.card{padding:14px 16px 12px}
.today-grid>.card.qsales{padding:14px 16px 12px}
.sx-tbl tr.group td{font-weight:600}
.sx-tbl tr.kid td:first-child{padding-left:22px;font-weight:400;color:var(--ink-2)}
.sx-tbl td .sub,.sx-heat td .sub,.today-grid .tbl .sub{display:block;font-size:11.5px;color:var(--ink-2);font-weight:400}
.sx-tbl td .sub.v-warn{color:#9a5b00}
.sx-heat td.heat{min-width:38px}
.sx-heat th.num,.sx-heat td.num{padding-left:4px;padding-right:4px}
.page-head-wrap+.sx-bar{margin-top:4px}
@media (max-width:1100px){.today-grid>.span2{grid-column:1/-1}}
@media (max-width:640px){.sx-bar{flex-direction:column;align-items:flex-start}}
.tbl th.num{text-align:right}
.today-grid .table-wrap{overflow-x:auto;max-width:100%}
.sx-win .qs-sel{width:auto;max-width:100%}
@media (max-width:640px){
  .today-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .today-grid>.span2,.today-grid>.span4,.today-grid>.today-fill{grid-column:1/-1}
  .today-grid>.kcard{padding:10px 12px 12px}
  .today-grid .kc-v .hc-v{font-size:19px}
  .today-grid .kc-sum{font-size:13px}
}
/* «Сегодня»: сводка вчерашнего дня — одна строка над карточками */
.yd-strip{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 12px;padding:8px 10px;background:var(--panel);border:1px solid var(--line);border-radius:12px}
.yd-when{font-size:13px;font-weight:600;color:var(--ink);margin-right:6px;white-space:nowrap}
.yd-item{display:inline-flex;align-items:baseline;gap:4px;font:inherit;font-size:13px;color:var(--ink-2);background:transparent;border:1px solid transparent;border-radius:8px;padding:4px 8px;cursor:pointer;white-space:nowrap}
.yd-item b{font-size:15px;color:var(--ink)}
.yd-item:hover{background:var(--bg)}
.yd-item.on{background:var(--bg);border-color:var(--line)}
.yd-item.low b{color:#9a5b00}
.yd-item.muted b{color:var(--ink-2);font-weight:600}
.yd-item[disabled]{cursor:default;opacity:.7}
.yd-avg{font-size:11.5px;color:var(--ink-3,#8a96a3);margin-left:2px}
.yd-panel{margin:0 0 12px;padding:14px 16px 12px}
.yd-panel .card-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px}
.yd-panel .card-head h2{margin:0}
.yd-panel .tbl .sub{display:block;font-size:11.5px;color:var(--ink-2)}
.yd-panel .table-wrap{max-height:420px;overflow:auto}
.yd-tr{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 8px}
.yd-tr .chip{font-size:12px;background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:2px 8px}
@media (max-width:640px){.yd-strip{gap:2px}.yd-when{width:100%}}
.yd-tr button.chip{font:inherit;font-size:12px;cursor:pointer;color:var(--ink-2)}
.yd-tr button.chip:hover{border-color:var(--ink-3,#8a96a3)}
.yd-tr button.chip.on{background:var(--accent-fill);border-color:var(--accent-fill);color:var(--on-accent)}
/* ===== дизайн-система «Метод Цифры»: насыщенность постера ===== */
.os-header{background:radial-gradient(900px 260px at 88% -40%, var(--brand-glow), transparent 70%), var(--brand-dark)}
.os-mark{width:34px;height:auto;display:block;flex:none}
.login-brand .os-mark{width:40px}
body{background:var(--bg)}
.login{background:radial-gradient(1100px 500px at 85% 0%, var(--brand-glow), transparent 70%), var(--brand-dark)}
.login form{background:var(--panel);color:var(--ink)}
/* фирменная карточка: первая в ряду на каждом экране — градиент панели постера */
.kcards.four>.kcard:first-child,.today-grid>.kcard:first-child{background:linear-gradient(180deg,var(--brand-panel-hi),var(--brand-panel-lo));border-color:transparent;color:#fff;box-shadow:0 10px 30px rgba(4,66,117,.28)}
.kcards.four>.kcard:first-child .kc-l,.today-grid>.kcard:first-child .kc-l,
.kcards.four>.kcard:first-child .kc-n,.today-grid>.kcard:first-child .kc-n,
.kcards.four>.kcard:first-child .muted,.today-grid>.kcard:first-child .muted{color:var(--brand-mist)}
.kcards.four>.kcard:first-child .kc-s,.today-grid>.kcard:first-child .kc-s{color:#fff;border-top-color:rgba(255,255,255,.16)}
.kcards.four>.kcard:first-child .kc-sum,.today-grid>.kcard:first-child .kc-sum,
.kcards.four>.kcard:first-child .hc-v,.today-grid>.kcard:first-child .hc-v{color:#fff}
.kcards.four>.kcard:first-child .hc-v.is-empty,.today-grid>.kcard:first-child .hc-v.is-empty{color:var(--brand-mist)}
.kcards.four>.kcard:first-child .v-warn,.today-grid>.kcard:first-child .v-warn{color:#f2b24c}
.kcards.four>.kcard:first-child .v-bad,.today-grid>.kcard:first-child .v-bad,.kcards.four>.kcard:first-child .chg.down,.today-grid>.kcard:first-child .chg.down{color:#ff8f84}
.kcards.four>.kcard:first-child .up,.today-grid>.kcard:first-child .up,.kcards.four>.kcard:first-child .chg.up,.today-grid>.kcard:first-child .chg.up{color:#3ccf91}
.kcards.four>.kcard:first-child .hbar{background:rgba(255,255,255,.18)}
.kcards.four>.kcard:first-child .hbar i{background:var(--brand-accent-light)}
.kcards.four>.kcard:first-child .hbar b{background:#fff}
/* выбор темы в меню пользователя */
.theme-pick{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:4px 10px;font-size:13px;color:var(--ink-2)}
.theme-pick .seg button{font-size:12px;padding:4px 8px}
/* таблицы и карточки: насыщеннее границы заголовков, синий акцент активного */
.tbl th{color:var(--ink-2)}
.card,.kcard{background:var(--panel)}
.user-menu-list{min-width:290px}
.sx-filters{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;margin:0 0 10px}
.sx-check{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-2);cursor:pointer}
.sx-check input{width:auto}
.sx-scroll{max-height:360px;overflow:auto}
.tbl tr.lease td{color:var(--ink-2);font-style:normal;background:var(--panel-2)}
.tbar{display:flex;align-items:center;gap:8px;justify-content:flex-end}
.tbar .hbar{flex:1;min-width:60px}
.dec{display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:999px;font-size:12px;font-weight:700}
.dec-up{background:var(--good-soft);color:var(--good)}
.dec-down{background:var(--bad-soft);color:var(--bad)}
.dec-hold{background:var(--accent-soft);color:var(--accent)}
.dec-few{background:var(--panel-2);color:var(--ink-3)}
.chess .cell.ly{border-color:transparent}
.dq-fixed{color:var(--good);font-size:12.5px;font-weight:600}
.today-grid>details.card{margin:0}

/* ------------------------------------------------------------ ДС 2.0: окно решения, скелетоны, иконки */
.dlg{border:0;padding:0;border-radius:var(--radius);background:var(--panel);color:var(--ink);box-shadow:0 18px 48px rgba(6,22,52,.28);width:min(520px,calc(100vw - 32px))}
.dlg::backdrop{background:rgba(6,22,52,.45)}
.dlg form{display:grid;gap:12px;padding:22px 24px 20px}
.dlg h2{margin:0;font-size:18px}
.dlg-sub{font-size:13px;color:var(--ink-2);margin-top:-6px}
.dlg-field{display:grid;gap:6px;font-size:13px;color:var(--ink-2)}
.dlg-field textarea,.dlg-field input{font:inherit;font-size:14px;color:var(--ink);background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:9px 11px;resize:vertical}
.dlg-field input{max-width:200px}
.dlg-err{font-size:12.5px;color:var(--bad);min-height:0}
.dlg-err:empty{display:none}
.dlg-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}
@keyframes dmr-skel{from{background-position:180% 0}to{background-position:-80% 0}}
.skel{background-color:var(--sunken);background-image:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent);background-size:60% 100%;background-repeat:no-repeat;border-radius:6px;animation:dmr-skel 1.5s ease-in-out infinite}
:root[data-theme="dark"] .skel{background-image:linear-gradient(90deg,transparent,rgba(255,255,255,.06),transparent)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .skel{background-image:linear-gradient(90deg,transparent,rgba(255,255,255,.06),transparent)}}
.skel-stack{display:flex;flex-direction:column;gap:10px}
.skel-line{height:13px}
.skel-title{height:26px;width:260px;border-radius:8px}
.skel-num{height:30px;width:120px;border-radius:8px}
.skel-page{display:grid;gap:14px;padding-top:8px}
.skel-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.skel-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px;display:grid;gap:12px}
.skel-table{gap:14px}
@media (max-width:760px){.skel-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (prefers-reduced-motion: reduce){.skel{animation:none}}
.ico{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;vertical-align:-3px}
.os-refresh,.os-analyst-open,.os-att-open{display:inline-flex;align-items:center;gap:7px}

/* количество и сумма в одной ячейке читались одним числом: количество — жирнее, сумма — через точку */
.tbl b.cnt{font-weight:700;color:var(--ink)}
.home-main .card .tbl.mh .sub::before,.tbl.houses .sub::before{content:"· ";color:var(--ink-3)}
.tbl.houses .sub::before{content:""}
@media (max-width:640px){.tbl.houses .sub::before{content:"· "}}
.sx-tbl tr.group td:first-child{white-space:nowrap}
.sx-fold{display:inline-grid;place-items:center;flex:none;width:24px;height:24px;margin:0;padding:0;border:1px solid var(--line);border-radius:7px;background:var(--panel);color:var(--accent);cursor:pointer;vertical-align:middle}
.sx-fold:hover{border-color:var(--accent-fill);background:var(--accent-soft)}
.sx-fold .ico{width:16px;height:16px;vertical-align:0}
.sx-fold-sp{display:inline-block;flex:none;width:24px}
.sx-g{display:flex;align-items:flex-start;gap:8px}
.sx-g .sx-fold{margin-top:-2px}
.sx-tbl thead .sx-g{align-items:center}
.sx-tbl thead .sx-g .sx-fold{margin-top:0}
.sx-tbl thead .sx-g{font:inherit}
.sx-foldall{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border:1px solid var(--line-strong);border-radius:8px;background:var(--panel);color:var(--accent);font:600 13px var(--font);cursor:pointer}
.sx-foldall:hover{border-color:var(--accent-fill)}
.sx-usp{display:inline-flex;align-items:center;gap:8px;margin-left:12px}
.sx-usp select{font:inherit;font-size:13px;height:32px;padding:0 10px;border:1px solid var(--line-strong);border-radius:8px;background:var(--panel);color:var(--ink);max-width:260px}
.sx-usp.on select{border-color:var(--accent-fill);box-shadow:0 0 0 1px var(--accent-fill)}
.sx-left{display:flex;align-items:center;gap:0;flex-wrap:wrap}
.sx-tbl tr.kid td:first-child{padding-left:42px}

/* ------------------------------------------------------------ шахматка: три вида (компактно · подробно · списком) */
.chess-top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.chess-top .seg button{display:inline-flex;align-items:center;gap:4px}
.chess-card .legend{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;margin:0 0 12px;font-size:13px}
.chess-card .legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.ch-scroll{overflow-x:auto;padding-bottom:6px}
.ch-board{display:flex;gap:22px;align-items:flex-start;width:max-content}
.ch-axis,.ch-sec{display:flex;flex-direction:column;gap:6px}
.ch-axis{gap:6px;position:sticky;left:0;background:var(--panel);z-index:1;padding-right:4px}
.ch-sh{height:28px;display:flex;align-items:flex-end;gap:6px;white-space:nowrap;font-size:13px;padding-bottom:4px}
.ch-fl{display:flex;align-items:center;justify-content:flex-end;width:22px;color:var(--ink-3);font-size:12px}
.ch-row{display:flex;gap:6px}
.ch-grid .ch-fl,.ch-grid .ch-row{height:28px}
.ch-c{width:28px;height:28px;padding:0;border:1px solid var(--line);border-radius:5px;font:600 12px var(--font);color:var(--ink);cursor:pointer;display:grid;place-items:center}
.ch-c:hover,.ch-k:hover{outline:2px solid var(--accent-fill);outline-offset:1px}
.ch-cards .ch-fl,.ch-cards .ch-row{height:88px}
.ch-k{width:156px;height:88px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;text-align:left;font:12px var(--font);color:var(--ink);cursor:pointer;display:grid;grid-template-rows:auto 1fr auto;gap:2px}
.ch-k1{display:flex;justify-content:space-between;font-size:11.5px;opacity:.9}
.ch-k1 span:last-child{font-weight:700}
.ch-k2{font:700 16px var(--font);display:flex;align-items:center;gap:6px;white-space:nowrap}
.ch-k3{font-size:11px;opacity:.85;white-space:nowrap}
.ch-act{display:inline-flex;align-items:center;justify-content:center;flex:none;width:18px;height:18px;border-radius:50%;background:var(--bad);color:#fff;font:700 10.5px/1 var(--font);padding:0;text-indent:0;letter-spacing:0}
.ch-deal{color:var(--bad);font-weight:600}
.ch-st i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.ch-list th.th-sort{cursor:pointer;user-select:none}
.ch-pager{display:flex;align-items:center;gap:12px;justify-content:flex-end;margin-top:10px;flex-wrap:wrap}
@media (max-width:640px){.ch-board{gap:14px}.ch-k{width:136px}}
.ch-pager .qs-sel{width:auto;min-width:0}
.chess-card{min-width:0}
.chess-card .table-wrap{overflow-x:auto;max-width:100%}
.chess-top .seg{max-width:100%;overflow-x:auto}
@media (max-width:640px){.os-header .os-status{min-width:0;flex:1 1 auto;justify-content:flex-end}.os-header .user-menu summary{max-width:46vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.os-header .user-menu-list{right:0;left:auto;max-width:calc(100vw - 24px)}}
.ch-legend{gap:6px 8px}
.ch-lg{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--ink);font:500 12.5px var(--font);cursor:pointer}
.ch-lg i{display:inline-block;width:12px;height:12px;border-radius:3px;margin:0;border:1px solid transparent}
.ch-lg .ch-n{color:var(--ink-3);font-weight:600}
.ch-lg:hover{border-color:var(--accent-fill)}
.ch-lg.on{border-color:var(--accent-fill);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent-fill)}
.ch-c.dim,.ch-k.dim{opacity:.28;filter:saturate(.7)}
.ch-c.hi,.ch-k.hi{box-shadow:0 0 0 2px var(--accent-fill);position:relative;z-index:1}
.qs-sel.on{border-color:var(--accent-fill);box-shadow:0 0 0 1px var(--accent-fill)}
.ch-c{position:relative}
.ch-dot{position:absolute;top:3px;right:3px;width:5px;height:5px;border-radius:50%;background:var(--bad);box-shadow:0 0 0 1px var(--panel)}

/* ------------------------------------------------------------ карточка помещения сбоку (из шахматки) */
.lot-dr-wrap{position:fixed;inset:0;z-index:60}
.lot-dr-shade{position:absolute;inset:0;background:rgba(6,22,52,.18)}
.lot-dr{position:absolute;top:0;right:0;bottom:0;width:min(440px,100vw);background:var(--panel);color:var(--ink);box-shadow:-12px 0 40px rgba(6,22,52,.18);display:flex;flex-direction:column;animation:lotdr .18s ease-out}
@keyframes lotdr{from{transform:translateX(24px);opacity:.4}to{transform:none;opacity:1}}
.lot-dr-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--line)}
.lot-dr-head h2{margin:0;font-size:18px}
.lot-dr-x{display:grid;place-items:center;width:32px;height:32px;border:0;border-radius:8px;background:transparent;color:var(--ink-2);cursor:pointer}
.lot-dr-x:hover{background:var(--panel-2);color:var(--ink)}
.lot-dr-x .ico{width:20px;height:20px}
.lot-dr-body{flex:1;overflow-y:auto;padding:16px 20px 24px}
.lot-dr-body h3{margin:18px 0 6px;font-size:15px}
.lot-dr-st{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.lot-dr-price{display:flex;justify-content:space-between;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line-soft)}
.lot-dr-price span{color:var(--ink-2);font-size:13px;padding-top:3px}
.lot-dr-price div{text-align:right}
.lot-dr-price b{font-size:20px;display:block}
.lot-dr-price small{color:var(--ink-3);font-size:12px}
.lot-dr-price.promo b{color:var(--bad)}
.lot-dr-row{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px solid var(--line-soft);font-size:13.5px}
.lot-dr-row span{color:var(--ink-2)}
.lot-dr-row b{font-weight:500;text-align:right}
.lot-dr-foot{margin-top:18px}
.lot-dr-st .status-word{margin-left:0}

.today-grid.tm5{grid-template-columns:repeat(5,minmax(0,1fr))}
@media (max-width:1300px){.today-grid.tm5{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:640px){.today-grid.tm5{grid-template-columns:1fr}}
.heat-fc{background-image:repeating-linear-gradient(135deg,rgba(15,119,189,.14) 0 3px,transparent 3px 7px);font-style:italic}
/* «Темп»: бронь → ДДУ */
.bf-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 0 12px}
.bf-k{background:var(--panel-2);border-radius:var(--radius-sm);padding:10px 12px}
.bf-v{font-size:20px;font-weight:600;margin:2px 0}
@media (max-width:900px){.bf-row{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* шахматка: сетка без горизонтальной прокрутки — размер клетки из --cs; акция — отдельным отбором */
.ch-grid .ch-c{width:var(--cs,28px);height:var(--cs,28px)}
.ch-grid .ch-fl,.ch-grid .ch-row{height:var(--cs,28px)}
.ch-grid .ch-row,.ch-grid.ch-sec,.ch-grid .ch-sec,.ch-grid .ch-axis{gap:var(--cg,6px)}
.ch-grid.ch-tight{gap:14px}
.ch-grid.ch-tight .ch-c{font-size:11px;border-radius:4px}
.ch-grid.ch-tight .ch-dot{top:2px;right:2px;width:4px;height:4px}
.ch-sep{display:inline-block;width:1px;height:20px;background:var(--line);margin:0 4px;align-self:center}
.tbl tr.muted td{color:var(--ink-3)}
.heat-cur{background-image:repeating-linear-gradient(135deg,rgba(6,22,52,.08) 0 3px,transparent 3px 7px)}

/* тепловые таблицы «Темпа»: месяцы — равной ширины, прогноз не шире остальных */
.sx-heat{table-layout:fixed;width:100%;min-width:900px}
.sx-heat th:first-child,.sx-heat td:first-child{width:96px}
.sx-heat th:last-child,.sx-heat td:last-child{width:120px}
.sx-heat th .sub{display:block;font-weight:400}
.sx-heat th{white-space:normal;vertical-align:bottom}

/* «Цены»: формы оплаты */
.pay-wrap{display:flex;gap:20px;align-items:center;flex-wrap:wrap}
.pay-leg{flex:1;min-width:220px;display:grid;gap:6px}
.pay-li{display:grid;grid-template-columns:12px 1fr auto 44px;gap:8px;align-items:center;font-size:13px}
.pay-li i{width:12px;height:12px;border-radius:3px}
.pay-li b,.pay-li .muted{text-align:right}

.lead-line{font-size:15px;margin:0 0 12px;color:var(--ink)}
.dec-tranche{background:var(--good-soft);color:var(--good)}
.dec-cut{background:var(--warn-soft);color:var(--warn)}
.dec-check{background:var(--warn-soft);color:var(--warn);font-weight:600}

/* комментарий ИИ к сигналу */
.ai-note{margin:8px 0 6px;padding:8px 12px;border-left:3px solid var(--accent);background:var(--accent-soft);border-radius:0 var(--radius-sm) var(--radius-sm) 0}
.ai-note-h{display:flex;gap:8px;align-items:center;font-size:12.5px}
.ai-note-h .linkbtn{margin-left:auto}
.ai-note-t p{margin:6px 0 0;font-size:13.5px;line-height:1.45;color:var(--ink)}
.ai-badge{display:inline-block;font-size:10.5px;font-weight:700;letter-spacing:.04em;padding:1px 6px;border-radius:4px;background:var(--accent);color:var(--on-accent,#fff)}
.ai-note-btn{display:inline-flex;gap:6px;align-items:center;font-size:13px}
.ai-note:has(> .ai-note-btn){background:none;border-left:none;padding:0}

/* «Решения по группам»: 8 карточек — 4 × 2; статусы «Назначить цену», «Смотреть эффект» */
.today-grid.tm4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1100px){.today-grid.tm4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.today-grid.tm4{grid-template-columns:1fr}}
.dec-price{background:var(--warn-soft);color:var(--warn);font-weight:600}
.dec-watch{background:var(--accent-soft);color:var(--accent);font-style:italic}
.today-grid.tm3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:900px){.today-grid.tm3{grid-template-columns:1fr}}

/* «Система → Пороги»: ровная сетка 4 колонки, подписи — две строки высотой, поля на одной линии в каждом ряду */
.fields.th-fields{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px 20px;max-width:1280px}
.fields.th-fields .field{display:flex;flex-direction:column;justify-content:flex-end}
.fields.th-fields .field>span{min-height:2.7em;display:flex;align-items:flex-end;line-height:1.35}
.fields.th-fields input{max-width:200px}
.fields.th-sizes{grid-template-columns:repeat(6,minmax(0,1fr));max-width:1280px}
@media (max-width:1100px){.fields.th-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.fields.th-sizes{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:640px){.fields.th-fields,.fields.th-sizes{grid-template-columns:1fr}}

/* Линейный график */
.lc{margin-top:4px}
.lc-leg{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12.5px;color:var(--ink-2);margin:2px 0 6px}
.lc-leg span{display:inline-flex;align-items:center;gap:6px}
.lc-leg i{display:inline-block;width:14px;height:3px;border-radius:2px}
.lc-leg i.bar{width:10px;height:10px;border-radius:2px}
.lc-leg i.dash{height:0;border-top:2px dashed;background:none}
.lc-svg{width:100%;height:auto;display:block;overflow:visible}
.lc-grid{stroke:var(--line-soft);stroke-width:1}
.lc-ax{font-size:10px;fill:var(--ink-3)}
.lc-end{font-size:10.5px;fill:var(--ink-2)}
.lc-end-v{font-weight:600;fill:var(--ink)}
.lc-cross{stroke:var(--ink-3);stroke-width:1;stroke-dasharray:3 3;opacity:0}
.lc-col:hover .lc-cross{opacity:.8}
.lc-col:hover rect{fill:var(--accent-soft);fill-opacity:.35}
.lc-bar-part{opacity:.55}
.lc-leg-f button{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--panel);color:var(--ink-2);border-radius:999px;padding:3px 10px;font:inherit;font-size:12.5px;cursor:pointer}
.lc-leg-f button:hover{border-color:var(--accent-line);color:var(--ink)}
.lc-leg-f button.off{opacity:.45}
.lc-leg-f button.on{border-color:var(--accent);background:var(--accent-soft);color:var(--ink);font-weight:600}
.lc-leg-f button.lc-all{border-style:dashed;color:var(--accent)}

/* Шапка приложений «Метод Цифры» (вариант 2, 29.10): знак 33 × 38, над названием продукта — фирменная надпись компании 11 px */
.os-brand{gap:12px}
.os-brand .os-mark{width:33px;height:38px}
.os-brand-text{display:flex;flex-direction:column;align-items:flex-start;gap:7px;line-height:1}
.os-brand-co{height:11px;width:auto;display:block}
.os-brand-name{font-size:20px;font-weight:700;letter-spacing:-.02em;line-height:1}
@media (max-width:560px){.os-brand-co{height:9px}.os-brand-name{font-size:17px}}
.ai-focus{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:8px 0 4px;padding:8px 10px;border-radius:10px;background:var(--accent-soft);font-size:12.5px;color:var(--ink)}
.ai-focus .linkbtn{margin-left:auto}
.login .b24-login{display:flex;align-items:center;justify-content:center;text-decoration:none;min-height:40px}
.login-brand{gap:12px;margin-bottom:10px}
.login-brand .os-mark{width:33px;height:38px}
/* шрифты по ролям: Montserrat — заголовки, названия карточек и крупные цифры; остальное — Golos Text (body) */
h1,h2,.sec-title,.kc-l,.hc-l,.metric .l,.kpi .l,.hc-v,.kc-v,.kpi .v,.metric .v,.fc-v,.bf-v,.os-brand-name,.lot-dr-price b{font-family:var(--font-head)}
b,strong{font-weight:700}   /* у Golos Text есть 800–900: «bolder» внутри полужирного давал чёрное начертание */
