/* Порто Миконос — оформление (задача 05). Токены — из макетов (docs/zadachi/mockups):
   светлая тема — как в макетах, тёмная — те же роли цветов с тёмными значениями,
   выбирается настройкой устройства. Шрифт Golos Text — в static/fonts (SIL OFL). */

/* ── шрифт ─────────────────────────────────────────────────────── */
@font-face{font-family:"Golos Text";font-style:normal;font-weight:400;font-display:swap;
  src:url(fonts/golos-text-cyrillic-400-normal.woff2) format("woff2");
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:500;font-display:swap;
  src:url(fonts/golos-text-cyrillic-500-normal.woff2) format("woff2");
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:600;font-display:swap;
  src:url(fonts/golos-text-cyrillic-600-normal.woff2) format("woff2");
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:700;font-display:swap;
  src:url(fonts/golos-text-cyrillic-700-normal.woff2) format("woff2");
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:400;font-display:swap;
  src:url(fonts/golos-text-latin-400-normal.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:500;font-display:swap;
  src:url(fonts/golos-text-latin-500-normal.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:600;font-display:swap;
  src:url(fonts/golos-text-latin-600-normal.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:700;font-display:swap;
  src:url(fonts/golos-text-latin-700-normal.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
/* знак рубля и другие символы — в подмножестве latin-ext */
@font-face{font-family:"Golos Text";font-style:normal;font-weight:400;font-display:swap;
  src:url(fonts/golos-text-latin-ext-400-normal.woff2) format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:500;font-display:swap;
  src:url(fonts/golos-text-latin-ext-500-normal.woff2) format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:600;font-display:swap;
  src:url(fonts/golos-text-latin-ext-600-normal.woff2) format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:700;font-display:swap;
  src:url(fonts/golos-text-latin-ext-700-normal.woff2) format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}

/* ── дизайн-токены ─────────────────────────────────────────────── */
:root{
  --bg:#F4F3EF; --card:#FFFFFF; --ink:#17201C; --ink2:#3B423E; --muted:#5E645F; --faint:#8A8F8A;
  --line:#E4E1D9; --line2:#EFEDE7; --field:#DAD7CF; --seg:#E9E7E1; --track:#EDEBE5;
  --accent:#1F6F5C; --accent-ink:#FFFFFF;
  --side:#14302A; --side-ink:#D6E4DE; --side-muted:#9DB6AC; --side-on:#24493F; --side-line:#2A4A41;
  --ochre:#C58A2B; --ochre-ink:#7A500A; --bad:#C2443B; --bad-ink:#962B24; --blue:#6F8DB8;
  --ok-bg:#E3EFE9; --ok-ink:#1B5A49; --warn-bg:#FAEFD9; --warn-ink:#7A500A;
  --bad-bg:#FAE5E2; --na-bg:#ECEBE6; --na-ink:#545A55; --info-bg:#E5ECF6; --info-ink:#274E86;
  /* серии графиков: 2026 и зал — акцент, план и ланч — охра, 2025 и доставка — синий */
  --c1:#1F6F5C; --c2:#C58A2B; --c3:#6F8DB8; --c4:#8A6A9E; --c5:#7DB5A0; --c6:#E2B866;
  --ok:#1F6F5C; --warn:#C58A2B;
  /* статус к цели и отклонение (задача 15.1): насыщенные, одинаковые в светлой и тёмной теме */
  --st-ok:#17804A; --st-ok-ink:#FFFFFF; --st-warn:#F0A81C; --st-warn-ink:#2A1B00;
  --st-bad:#CF3B31; --st-bad-ink:#FFFFFF;
  --radius:14px; --radius-btn:9px;
  --shadow:0 1px 2px rgba(20,32,28,.05);
}
@media (prefers-color-scheme: dark){
  :root{
    --bg:#111614; --card:#1A201D; --ink:#E6EAE7; --ink2:#C9CFCB; --muted:#9AA39E; --faint:#7C8580;
    --line:#2A322E; --line2:#232A27; --field:#36403B; --seg:#232A27; --track:#2A322E;
    --accent:#4FAE91; --accent-ink:#0E1B17;
    --side:#0D1C18; --side-ink:#C8D8D1; --side-muted:#8BA49A; --side-on:#1E3B33; --side-line:#203A33;
    --ochre:#D8A851; --ochre-ink:#E9C47E; --bad:#E0736A; --bad-ink:#F09A92; --blue:#8FA9CF;
    --ok-bg:rgba(79,174,145,.16); --ok-ink:#86D1B8; --warn-bg:rgba(216,168,81,.17); --warn-ink:#E9C47E;
    --bad-bg:rgba(224,115,106,.17); --na-bg:#262D2A; --na-ink:#A7AFAA;
    --info-bg:rgba(143,169,207,.17); --info-ink:#A9C1E3;
    --c1:#4FAE91; --c2:#D8A851; --c3:#8FA9CF; --c4:#B192C6; --c5:#3D7F6C; --c6:#9C7A3C;
    --ok:#4FAE91; --warn:#D8A851;
    --shadow:none;
  }
}

/* ── основа ────────────────────────────────────────────────────── */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);
  font:14px/1.45 "Golos Text",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  font-feature-settings:"tnum" 1,"lnum" 1;-webkit-font-smoothing:antialiased}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
h1{font-size:26px;font-weight:600;letter-spacing:-.01em;line-height:1.2;margin:0}
h2{font-size:17px;font-weight:600;margin:28px 0 12px;letter-spacing:-.005em}
h3{font-size:15px;font-weight:600;margin:16px 0 10px;line-height:1.3}
h3 small,.ct small{font-weight:400;color:var(--muted);font-size:12.5px}
p.lead{color:var(--muted);margin:0 0 16px;max-width:90ch;font-size:13.5px}
.muted{color:var(--muted)}
.small{font-size:12.5px}
.grow{flex:1 1 auto}

/* ── каркас: боковая панель, основная колонка, нижняя панель ───── */
.app{display:flex;min-height:100vh;background:linear-gradient(to right,var(--side) 232px,var(--bg) 232px)}
.side{flex:0 0 232px;width:232px;background:var(--side);color:var(--side-ink);padding:20px 14px;
  display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100vh;overflow-y:auto}
.side .brand{padding:4px 10px 16px;color:inherit;text-decoration:none}
.side .brand b{display:block;color:#fff;font-size:16px;font-weight:600}
.side .brand span{font-size:12px;color:var(--side-muted)}
.navh{font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--side-muted);padding:14px 10px 6px}
.nav{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;color:var(--side-ink);font-size:14px}
.nav:hover{background:color-mix(in srgb,var(--side-on) 60%,transparent);text-decoration:none}
.nav.on{background:var(--side-on);color:#fff;font-weight:500}
.nav .cnt{margin-left:auto;font-size:11.5px;background:#C2443B;color:#fff;border-radius:999px;padding:1px 7px;font-weight:600}
.side .grow{min-height:24px}
.me{display:flex;align-items:center;gap:10px;padding:12px 10px 4px;border-top:1px solid var(--side-line);margin-top:8px;font-size:13px;line-height:1.3}
.me .av{width:30px;height:30px;border-radius:50%;background:#2F5C50;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;flex:0 0 30px}
.me .nm{color:#fff}
.me .rl{color:var(--side-muted);font-size:12px}
.me .rl a{color:var(--side-ink)}
.main{flex:1 1 560px;min-width:0;padding:22px 28px 48px;max-width:1440px}

/* шапка страницы: заголовок, период, сравнение */
header.top{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px 16px;margin-bottom:16px}
header.top .ttl{min-width:0}
.mbrand{display:none;color:var(--muted);font-size:14px;margin-bottom:2px}
.sub{color:var(--muted);font-size:13.5px;margin-top:3px}
.fresh{order:2;margin-left:auto;align-self:center}
.tools{order:3;display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.tools form.pick{display:contents}
.seg{display:inline-flex;background:var(--seg);border-radius:10px;padding:3px;gap:2px}
.seg a,.seg button{border:0;background:transparent;font:inherit;font-size:13px;padding:7px 12px;border-radius:8px;color:var(--ink2);cursor:pointer;white-space:nowrap;font-weight:400}
.seg a:hover{text-decoration:none;color:var(--ink)}
.seg a.on,.seg button.on{background:var(--card);color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.sel{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--field);background:var(--card);border-radius:10px;padding:7px 11px;font-size:13px;color:var(--ink);cursor:pointer;white-space:nowrap}
.sel select{border:0;background:transparent;padding:0 2px;font:inherit;color:inherit;max-width:210px;cursor:pointer}
.sel select:focus{outline:none}
.sel:focus-within{border-color:var(--accent)}
details.dates{position:relative}
details.dates>summary{list-style:none}
details.dates>summary::-webkit-details-marker{display:none}
details.dates .pop{position:absolute;right:0;top:calc(100% + 6px);z-index:40;background:var(--card);border:1px solid var(--line);
  border-radius:12px;padding:12px;display:flex;gap:8px;align-items:flex-end;box-shadow:0 8px 24px rgba(0,0,0,.12)}

/* вкладки раздела */
/* не помещаются — переносятся во второй ряд (задача 16): без прокрутки вбок, линия — под последним рядом */
.tabs{display:flex;flex-wrap:wrap;gap:4px 2px;border-bottom:1px solid var(--line);margin:0 0 16px;overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs a{padding:9px 12px;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;font-size:13.5px}
.tabs a:hover{color:var(--ink);text-decoration:none}
.tabs a.on{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}

/* нижняя панель телефона */
.tabbar{display:none}
.tabbar .tab{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:11px;
  color:var(--muted);min-width:60px;min-height:44px;flex:1 1 0}
.tabbar .tab:hover{text-decoration:none}
.tabbar .tab.on{color:var(--accent);font-weight:600}
.dot-badge{position:absolute;top:0;right:calc(50% - 22px);font-style:normal;font-size:10px;line-height:16px;min-width:16px;padding:0 4px;
  border-radius:8px;background:var(--bad);color:#fff;font-weight:600;text-align:center}

/* «Ещё» на телефоне */
.card.list{padding:4px 0}
.card.list .row{display:flex;align-items:center;gap:12px;padding:13px 18px;color:var(--ink);border-bottom:1px solid var(--line2)}
.card.list .row:last-child{border-bottom:0}
.card.list .row:hover{text-decoration:none;background:var(--line2)}
.card.list .cnt{font-size:11.5px;background:var(--bad);color:#fff;border-radius:999px;padding:1px 7px;font-weight:600}
.sub-links{display:flex;flex-wrap:wrap;gap:6px 14px;padding:0 18px 12px 48px;font-size:13px;border-bottom:1px solid var(--line2)}

/* без входа */
.guest{max-width:720px;margin:10vh auto;padding:0 20px}

/* ── карточки, плитки, сетки ───────────────────────────────────── */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;margin-bottom:16px;min-width:0;box-shadow:var(--shadow)}
.card>h3:first-child,.card>.ct:first-child{margin-top:0}
.ct{font-size:15px;font-weight:600;margin:0 0 12px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;line-height:1.3}
.ct .right{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.grid{display:grid;gap:14px;margin-bottom:16px}
.grid>*{min-width:0}  /* широкая таблица внутри ячейки сетки прокручивается, а не раздвигает страницу */
.grid>.card,.grid>.kpi{margin-bottom:0}
.g2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.g4{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.g6{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;min-width:0;position:relative}
.kpi .k{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:6px;justify-content:space-between}
.kpi .v{font-size:28px;font-weight:600;letter-spacing:-.015em;margin:6px 0 4px;line-height:1.1;font-variant-numeric:tabular-nums}
.kpi .v.na,.kpi .v.empty{color:var(--faint);font-size:20px;font-weight:500}
.kpi .s{font-size:12.5px;color:var(--muted)}
.kpi .s .tag,.kpi .s .chip{margin-right:4px}
.kpi.small{padding:12px 14px}
.kpi.small .v{font-size:19px;margin:4px 0 2px}
.kpi a.cover{position:absolute;inset:0;border-radius:inherit}
.kpi .row{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.bar{height:6px;background:var(--track);border-radius:99px;overflow:hidden;margin:8px 0 4px}
.bar i{display:block;height:100%;background:var(--accent);border-radius:99px}
.bar i.ok{background:var(--st-ok)} .bar i.warn{background:var(--st-warn)} .bar i.bad{background:var(--st-bad)}

/* метки */
.tag,.chip{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:500;white-space:nowrap;line-height:1.5;
  background:var(--na-bg);color:var(--na-ink)}
.chip{padding:4px 10px;font-size:12.5px}
.tag.ok,.chip.ok{background:var(--st-ok);color:var(--st-ok-ink);font-weight:700}
.tag.warn,.chip.warn{background:var(--st-warn);color:var(--st-warn-ink);font-weight:700}
.tag.bad,.chip.bad{background:var(--st-bad);color:var(--st-bad-ink);font-weight:700}
.tag.na,.chip.na{background:var(--na-bg);color:var(--na-ink)}
.tag.info,.chip.info{background:var(--info-bg);color:var(--info-ink)}
.ok-t{color:var(--ok-ink);font-weight:600}
.bad-t{color:var(--bad-ink);font-weight:600}
.up{color:var(--ok-ink)} .down{color:var(--bad-ink)}

/* предупреждения */
.note{display:block;padding:12px 16px;border-radius:12px;font-size:13.5px;margin:0 0 16px;background:var(--info-bg);color:var(--ink)}
.note.ok{background:var(--ok-bg)}
.note.warn{background:var(--warn-bg)}
.note.bad{background:var(--bad-bg)}
.note h4{margin:0 0 4px;font-size:14px}
.note.banner,.alert{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.alert .txt{flex:1 1 320px}
.alert b{font-weight:600}

/* пустое состояние */
.nodata{border:1px dashed var(--field);border-radius:var(--radius);padding:22px 20px;text-align:left;background:color-mix(in srgb,var(--card) 60%,transparent);margin-bottom:16px}
.nodata .what{font-weight:600;font-size:15px;margin-bottom:4px}
.nodata .how{color:var(--muted);font-size:13.5px;margin-bottom:12px}

/* список «Требует внимания» */
.att{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--line2)}
.att:last-child{border-bottom:0}
.att .dot{width:9px;height:9px;border-radius:50%;margin-top:6px;flex:0 0 9px;background:var(--faint)}
.att .dot.bad{background:var(--st-bad)} .att .dot.warn{background:var(--st-warn)} .att .dot.ok{background:var(--st-ok)} .att .dot.info{background:var(--blue)}
.att .t{font-weight:600}
.att .d{font-size:13px;color:var(--muted);margin-top:2px}
.lnk{color:var(--accent);font-weight:500;font-size:13px;display:inline-flex;align-items:center;gap:4px;margin-top:4px}

/* расшифровка справа */
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(420px,100vw);background:var(--card);border-left:1px solid var(--line);
  box-shadow:-12px 0 32px rgba(0,0,0,.12);padding:18px 20px;overflow-y:auto;z-index:60;transform:translateX(105%);transition:transform .2s}
.drawer.open,.drawer:target{transform:none}
.drawer .head{display:flex;align-items:flex-start;gap:10px;margin-bottom:12px}
.drawer dl{display:grid;grid-template-columns:130px 1fr;gap:8px 12px;margin:0;font-size:13.5px}
.drawer dt{color:var(--muted)} .drawer dd{margin:0}
.drawer.inline{position:static;transform:none;box-shadow:none;width:auto;border:1px solid var(--line);border-radius:var(--radius)}

/* ── таблицы ───────────────────────────────────────────────────── */
table{width:100%;border-collapse:collapse;font-size:13.5px;font-variant-numeric:tabular-nums}
th{text-align:left;font-weight:500;color:var(--muted);font-size:12.5px;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--card)}
td{padding:9px 10px;border-bottom:1px solid var(--line2);vertical-align:middle}
tr:last-child td{border-bottom:none}
td.r,th.r{text-align:right;white-space:nowrap}
td.c,th.c{text-align:center}
tbody tr:hover{background:color-mix(in srgb,var(--accent) 4%,transparent)}
.tw{overflow-x:auto;-webkit-overflow-scrolling:touch}
tfoot td,tfoot th{font-weight:600;border-top:1px solid var(--line);border-bottom:none;color:var(--ink);font-size:13.5px}
/* закреплённые шапка и первая колонка: внутри .tw.fix (своя прокрутка) */
.tw.fix{max-height:72vh;overflow:auto;border-radius:10px}
.tw.fix thead th{position:sticky;top:0;z-index:2}
table.stick th:first-child,table.stick td:first-child{position:sticky;left:0;z-index:1;background:var(--card);box-shadow:1px 0 0 var(--line)}
table.stick thead th:first-child{z-index:3}
/* матрица «позиция × месяц»: колонок много, поэтому первая колонка не уезжает */
.matrix td:first-child,.matrix th:first-child{position:sticky;left:0;background:var(--card);box-shadow:1px 0 0 var(--line)}
.matrix td.tot,.matrix th.tot{background:color-mix(in srgb,var(--accent) 6%,var(--card))}
.matrix td,.matrix th{padding-left:8px;padding-right:8px}
/* группы со свёрнутыми строками */
tbody.grp>tr.gh td{background:var(--line2);font-weight:600;cursor:pointer}
tbody.grp>tr.gh td:first-child::before{content:"▾ ";font-size:11px;color:var(--muted)}
tbody.grp.closed>tr.gh td:first-child::before{content:"▸ "}
tbody.grp.closed>tr:not(.gh){display:none}
tbody.grp>tr.gt td{font-weight:600;color:var(--ink2);border-bottom:1px solid var(--line)}
/* подсветка ячеек по значению — фон задаётся в стиле ячейки */
td.heat{position:relative}
.tbl-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.tbl-tools .search{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--field);border-radius:10px;padding:5px 10px;background:var(--card)}
.tbl-tools .search input{border:0;padding:2px 0;background:transparent;min-width:160px}
.tbl-tools .search input:focus{outline:none}
/* фильтры-кнопки с крестиком */
.fchips{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.fchip{display:inline-flex;align-items:center;gap:6px;padding:5px 6px 5px 11px;border-radius:999px;background:var(--ok-bg);color:var(--ok-ink);font-size:12.5px;font-weight:500}
.fchip a{display:inline-flex;width:18px;height:18px;border-radius:50%;align-items:center;justify-content:center;color:inherit}
.fchip a:hover{background:color-mix(in srgb,var(--accent) 18%,transparent);text-decoration:none}
.fadd{position:relative}
.fadd>summary{list-style:none;cursor:pointer}
.fadd>summary::-webkit-details-marker{display:none}
.fadd .pop{position:absolute;left:0;top:calc(100% + 6px);z-index:40;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px;width:260px;
  box-shadow:0 8px 24px rgba(0,0,0,.12)}
.fadd .pop .opts{max-height:240px;overflow-y:auto;display:flex;flex-direction:column;margin-top:6px}
.fadd .pop .opts a{padding:6px 8px;border-radius:7px;color:var(--ink);font-size:13px}
.fadd .pop .opts a:hover{background:var(--line2);text-decoration:none}
.fadd .pop input{width:100%}

/* сортируемые заголовки */
th a.sort{color:var(--muted);display:inline-flex;gap:4px;align-items:center;white-space:nowrap}
th a.sort:hover{color:var(--accent);text-decoration:none}
th a.sort.on{color:var(--accent)}
th a.sort .arr{font-size:9px;opacity:.65}
th a.sort.on .arr{opacity:1}

/* ── формы и кнопки ────────────────────────────────────────────── */
form.filters,p.filters{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;margin:0 0 16px}
select,input[type=text],input[type=password],input[type=date],input[type=number],input[type=search],input[type=file],textarea{
  font:inherit;padding:7px 10px;border:1px solid var(--field);border-radius:var(--radius-btn);
  background:var(--card);color:var(--ink);max-width:100%}
button,.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;font:inherit;font-size:13px;font-weight:500;padding:8px 14px;border-radius:var(--radius-btn);
  border:1px solid var(--accent);background:var(--accent);color:var(--accent-ink);cursor:pointer;white-space:nowrap;text-decoration:none}
.btn:hover{text-decoration:none}
button.ghost,.btn.ghost{background:var(--card);border-color:var(--accent);color:var(--accent)}
button.plain,.btn.plain{background:transparent;border-color:var(--field);color:var(--ink)}
button:hover,.btn:hover{filter:brightness(1.05)}
label.f{display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:var(--muted)}
select.multi option.all{font-style:italic;color:var(--muted)}
select[multiple]{padding:4px;min-height:88px}
.head-row{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap}
.head-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}

/* вход */
.login{max-width:380px;margin:14vh auto;padding:0 20px}
.login .card{padding:26px}
.login h1{font-size:20px;margin-bottom:4px}
.login form{display:flex;flex-direction:column;gap:13px;margin-top:18px}

ol.steps{padding-left:20px} ol.steps li{margin:9px 0}
code{background:var(--line2);padding:1px 6px;border-radius:5px;font-size:12.5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
pre{background:var(--line2);padding:13px 15px;border-radius:9px;overflow-x:auto;font-size:12.5px;border:1px solid var(--line)}
pre.report{white-space:pre-wrap;word-break:break-word;background:transparent;border:0;padding:0;font-size:12.5px;line-height:1.5}

/* сворачиваемые блоки */
details.card>summary{cursor:pointer;font-size:15px;font-weight:600;list-style:none}
details.card>summary::-webkit-details-marker{display:none}
details.card>summary::before{content:"▾ ";font-size:11px;color:var(--muted)}
details.card:not([open])>summary::before{content:"▸ "}

/* ── графики (app/charts.py) ───────────────────────────────────── */
.chart{width:100%;height:auto;display:block;overflow:visible;font-family:inherit}
.chart .axis{stroke:var(--line);stroke-width:1}
.chart .axis.dash{stroke-dasharray:4 4}
.chart .grid{stroke:var(--line);stroke-width:1;opacity:.7}
.chart .xlab{fill:var(--muted);font-size:12px}
.chart .ylab{fill:var(--muted);font-size:11.5px;font-variant-numeric:tabular-nums}
.chart .vlab{fill:var(--ink2);font-size:11px;font-weight:600;font-variant-numeric:tabular-nums}
.chart .axis-title{fill:var(--muted);font-size:11.5px}
.chart .qlab{fill:var(--muted);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.legend{display:flex;gap:6px 16px;margin-top:8px;font-size:12.5px;color:var(--ink2);flex-wrap:wrap}
.legend .lg{display:inline-flex;align-items:center;gap:6px}
.legend i{width:12px;height:12px;border-radius:3px;display:inline-block}
.legend i.line{height:3px;border-radius:2px}
.legend i.hatched{background:repeating-linear-gradient(45deg,currentColor 0 3px,transparent 3px 6px)}
/* одна картинка на компьютер, другая — на телефон: подписи крупнее, а не сжатые */
.chart-r .narrow{display:none}
.hbars{display:flex;flex-direction:column;gap:7px;margin-top:6px}
.hb{display:grid;grid-template-columns:minmax(120px,1.4fr) 3fr minmax(90px,auto);gap:10px;align-items:center;font-size:13.5px}
.hb-k{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hb-t{background:var(--track);border-radius:4px;height:14px;overflow:hidden}
.hb-t i{display:block;height:100%;border-radius:4px}
.hb-v{text-align:right;font-variant-numeric:tabular-nums;color:var(--muted)}
/* «пуля»: факт и черта нормы */
.bullet{position:relative;height:10px;background:var(--track);border-radius:99px;margin:6px 0}
.bullet .norm{position:absolute;top:-1px;bottom:-1px;background:color-mix(in srgb,var(--accent) 22%,transparent);border-radius:3px}
.bullet .fact{position:absolute;left:0;top:2px;bottom:2px;border-radius:99px;background:var(--accent)}
.bullet .fact.ok{background:var(--st-ok)} .bullet .fact.warn{background:var(--st-warn)} .bullet .fact.bad{background:var(--st-bad)}
.bullet .fact.none{background:color-mix(in srgb,var(--muted) 55%,transparent)}
.bullet .near{position:absolute;top:0;bottom:0;background:color-mix(in srgb,var(--st-warn) 30%,transparent)}
.bullet .tick{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--ink)}
/* лента «куда уходит рубль» */
.ribbon{display:flex;height:22px;border-radius:6px;overflow:hidden;margin:8px 0}
.ribbon i{display:block;height:100%}
.ribbon-rows{display:grid;grid-template-columns:minmax(120px,1.3fr) 2fr auto auto;gap:6px 12px;align-items:center;font-size:13.5px}
.ribbon-rows .t{position:relative;height:12px;background:var(--track);border-radius:3px}
.ribbon-rows .t i{position:absolute;top:0;bottom:0;border-radius:3px}
.ribbon-rows .total{font-weight:600}
.ribbon-rows .r,.ribbon-rows .pc{white-space:nowrap}
.g2w{grid-template-columns:repeat(auto-fit,minmax(min(460px,100%),1fr))}
/* мини-график в строке */
svg.spark{display:inline-block;vertical-align:middle;overflow:visible}

/* тепловая карта */
.heat{border-collapse:separate;border-spacing:2px;font-size:12px}
.heat th{padding:4px 6px;font-size:11px;background:transparent}
.heat td{padding:0;border:none}
.heat .cell{display:flex;min-width:34px;height:26px;border-radius:4px;align-items:center;justify-content:center;font-variant-numeric:tabular-nums;font-size:11px;color:var(--ink)}
.heat .cell.na{background:transparent;color:var(--faint)}

/* дневной дашборд */
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chips a{padding:6px 12px;border:1px solid var(--line);border-radius:20px;font-size:13.5px;color:var(--ink);background:var(--card);white-space:nowrap}
.chips a:hover{text-decoration:none;border-color:var(--accent)}
.chips a.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}

/* сигналы «Требует внимания» (задача 02) */
ul.signals{list-style:none;margin:0;padding:0}
ul.signals li{padding:6px 0;border-bottom:1px solid var(--line2)}
ul.signals li:last-child{border-bottom:0}
ul.signals .tag{min-width:2.2em;justify-content:center;margin-right:6px}

/* ── задача 04: доверие к цифрам ───────────────────────────────── */
button.i{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex:0 0 20px;
  margin-left:4px;padding:0;border-radius:50%;border:1px solid var(--field);background:var(--card);
  color:var(--muted);font:italic 600 11px/1 Georgia,serif;cursor:pointer;vertical-align:1px}
button.i:hover{border-color:var(--accent);color:var(--accent);filter:none}
/* «?» рядом с «i»: зачем показатель и как на него влиять */
button.why{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex:0 0 20px;
  margin-left:4px;padding:0;border-radius:50%;border:1px solid var(--field);background:var(--card);
  color:var(--muted);font:600 11px/1 Georgia,serif;cursor:pointer;vertical-align:1px}
button.why:hover{border-color:var(--accent);color:var(--accent);filter:none}
.kpi .k .qi{display:inline-flex;align-items:center;flex:0 0 auto}
/* кнопки «i» и «?» — поверх ссылки-обложки плитки, иначе клик уводил бы на расшифровку */
.kpi button.i,.kpi button.why{position:relative;z-index:1}
.kpi.dark button.why{background:transparent;color:var(--side-ink);border-color:#3A5E54}
.why-body h4{margin:14px 0 6px;font-size:14px}
.why-body ul{margin:0;padding-left:18px}
.why-body li{margin:4px 0;font-size:14px}
.why-body p{margin:4px 0;font-size:14px}
.why-body .formula-num{font-variant-numeric:tabular-nums;background:var(--line2);border-radius:8px;padding:6px 10px}
.why-body .why-links a{color:var(--accent);font-weight:600}
a.drill{color:inherit;border-bottom:1px dotted var(--faint)}
a.drill:hover{color:var(--accent);text-decoration:none;border-bottom-color:var(--accent)}
.badge{display:inline-block;min-width:18px;padding:0 5px;border-radius:9px;background:var(--bad);color:#fff;font-size:11px;line-height:18px;text-align:center;font-weight:600;margin-left:3px}
.qmark{font-size:12.5px;margin:-4px 0 14px;padding:5px 12px;border-radius:999px;display:inline-block;background:var(--na-bg);color:var(--na-ink)}
.qmark a{color:inherit}
.qmark.ok{background:var(--ok-bg);color:var(--ok-ink)}
.qmark.warn{background:var(--warn-bg);color:var(--warn-ink)}
.qmark.bad{background:var(--bad-bg);color:var(--bad-ink)}
ul.plain{list-style:none;padding:0;margin:0}
ul.plain li{padding:4px 0;border-bottom:1px solid var(--line2)}
ul.check{list-style:none;padding:4px 0 0;margin:0}
ul.check li.ok{color:var(--ok-ink)}
ul.check li.bad{color:var(--bad-ink)}
ul.check li.na,ul.check li.wait{color:var(--muted)}
.grid.g2x{grid-template-columns:2fr 1fr}
@media (max-width:900px){.grid.g2x{grid-template-columns:1fr}}
/* календарь покрытия: клетка — день */
.cal-wrap{overflow-x:auto}
table.cal{border-collapse:separate;border-spacing:3px;width:auto;font-size:11px}
table.cal th{padding:0 2px;border:0;font-weight:500;color:var(--muted);background:transparent}
table.cal th.src{text-align:left;white-space:nowrap;padding-right:10px;color:var(--ink);font-size:13px}
table.cal th.src small{display:block;color:var(--muted);font-size:11px;font-weight:400}
table.cal td.c{width:16px;height:22px;padding:0;border:0;border-radius:3px}
table.cal tbody tr:hover{background:transparent}
.c.ok{background:var(--accent)}
.c.bad{background:var(--bad)}
.c.wait{background:var(--ochre);opacity:.8}
.c.draft{background:var(--accent);opacity:.35}
.c.na{background:var(--line)}
.c.future{background:transparent;border:1px dashed var(--line)}
.legend i.c{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:5px;vertical-align:-1px}
/* паспорт показателя: окно; на телефоне — снизу на весь экран */
dialog.sheet{border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;max-width:560px;width:92vw;
  background:var(--card);color:var(--ink);box-shadow:0 10px 40px rgba(0,0,0,.25)}
dialog.sheet::backdrop{background:rgba(20,20,18,.35)}
dialog.sheet .close{float:right;font-size:20px;line-height:1;padding:2px 10px}
.passport h2{margin:2px 0 10px}
.passport dl{display:grid;grid-template-columns:120px 1fr;gap:8px 14px;margin:0;font-size:13.5px}
.passport dt{color:var(--muted)}
.passport dd{margin:0}
.passport .actions{display:flex;flex-direction:column;gap:8px;margin-top:14px;align-items:flex-start}

/* права ролей */
table.rights td.c,table.rights th.c{text-align:center;min-width:96px;white-space:normal}
table.rights td.changed{background:var(--warn-bg)}

/* служебная страница компонентов */
.kit-sec{margin:26px 0 8px;padding-top:6px;border-top:1px solid var(--line)}
.kit-sec:first-of-type{border-top:0}
.swatch{display:flex;align-items:center;gap:10px;font-size:12.5px}
.swatch i{width:34px;height:34px;border-radius:9px;border:1px solid var(--line);display:inline-block}

/* ── телефон ───────────────────────────────────────────────────── */
@media (max-width:640px){
  body.in{padding-bottom:calc(76px + env(safe-area-inset-bottom))}
  .side{display:none}
  .app{background:var(--bg)}
  .main{padding:16px 16px 28px}
  .mbrand{display:block}
  h1{font-size:24px}
  header.top{gap:10px}
  .fresh{order:1;align-self:flex-start;margin-left:auto}
  .ttl{order:0;flex:1 1 60%}
  .tools{order:3;width:100%}
  .seg{display:flex;width:100%}
  .seg a{flex:1 1 0;text-align:center;padding:8px 4px}
  .sel select{max-width:150px}
  details.dates .pop{left:0;right:auto;flex-wrap:wrap;width:calc(100vw - 32px)}
  .tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:50;background:var(--card);border-top:1px solid var(--line);
    justify-content:space-around;padding:8px 6px calc(8px + env(safe-area-inset-bottom))}
  .card{padding:16px}
  .kpi{padding:14px}
  .kpi .v{font-size:24px}
  .g2,.g3{grid-template-columns:1fr}
  .g4{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .g6{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .g4 .kpi .v{font-size:20px}
  .chart-r .wide{display:none}
  .chart-r .narrow{display:block}
  .hb{grid-template-columns:minmax(90px,1fr) 1.4fr auto;gap:8px;font-size:13px}
  .ribbon-rows{grid-template-columns:minmax(100px,1fr) 1fr auto}
  .ribbon-rows .pc{display:none}
  dialog.sheet{max-width:none;width:100vw;height:100vh;max-height:100vh;margin:0;border-radius:0;inset:0}
  .passport dl,.drawer dl{grid-template-columns:1fr}
  .passport dt,.drawer dt{margin-top:6px}
  .drawer{width:100vw}
  .tw.fix{max-height:none}
}
@media print{
  .side,.tabbar,.tools,.tabs,form.filters,p.filters,.no-print{display:none!important}
  body{background:#fff} .main{padding:0} .card{break-inside:avoid;box-shadow:none}
}

/* «Требует внимания»: действия у сигнала (задача 06) */
.row-actions{display:flex;gap:6px 14px;align-items:center;flex-wrap:wrap;margin-top:4px}
details.inline>summary{list-style:none;cursor:pointer}
details.inline>summary::-webkit-details-marker{display:none}
details.inline[open]>summary{margin-bottom:6px}
.inline-form{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.inline-form input[type=text]{min-width:220px}
/* «Планы и KPI» */
table.plans input.num{width:64px;text-align:right;padding:5px 8px}
table.plans input.tgt{width:86px;text-align:right;padding:5px 8px}
table.plans select{padding:5px 6px;font-size:12.5px}
tr.sec td{background:var(--line2);font-weight:600}
.unit{font-size:12px;color:var(--muted)}

/* ── раздел «Собственник» (задача 07) ─────────────────────────── */
.only-phone{display:none}
@media (min-width:1100px){.grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}
  .grid.six{grid-template-columns:repeat(6,minmax(0,1fr))}}
.grid.g5{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
details.mainblk{background:var(--side);color:#fff;border-radius:var(--radius);margin-bottom:16px}
details.mainblk>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:16px 28px;flex-wrap:wrap;padding:16px 20px}
details.mainblk>summary::-webkit-details-marker{display:none}
.mb-title b{display:block;font-size:15px}
.mb-title span{font-size:12px;color:var(--side-muted)}
.mb-figs{display:flex;flex-wrap:wrap;gap:6px 22px;flex:1 1 400px;font-size:13px;color:var(--side-ink)}
.mb-figs b{font-size:17px;color:#fff;margin:0 3px}
.mb-figs .chip.ok{background:#E3EFE9;color:#1B5A49}
.mb-btn{margin-left:auto;border:1px solid #3A5E54;border-radius:9px;padding:7px 12px;font-size:13px;font-weight:600}
details.mainblk .when-open{display:none}
details.mainblk[open] .when-open{display:inline}
details.mainblk[open] .when-closed{display:none}
.mb-body{background:var(--bg);color:var(--ink);padding:16px 0 0;border-radius:0 0 var(--radius) var(--radius)}
.kpi.dark{background:var(--side);border-color:var(--side);color:#fff}
.kpi.dark .k,.kpi.dark .s{color:var(--side-ink)}
.kpi.dark button.i{background:transparent;color:var(--side-ink);border-color:#3A5E54}
.rib-row{display:grid;grid-template-columns:150px 1fr;gap:12px;align-items:center;margin:10px 0}
.rib-k b{display:block}
.rib-k span{font-size:12px;color:var(--muted)}
.rib{display:flex;height:42px;border-radius:9px;overflow:hidden;gap:2px}
.rib.thin{height:14px;margin:6px 0 12px;border-radius:5px}
.rib i{display:flex;align-items:center;justify-content:center;color:#fff;font-style:normal;font-size:12.5px;font-weight:600;min-width:2px}
.dotc{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:8px;vertical-align:-1px}
table.dyn td a{color:var(--ink)}
table.dyn td a:hover{color:var(--accent)}
.big{font-size:34px;font-weight:600;letter-spacing:-.015em;margin:4px 0 6px;line-height:1.1}
.row-sb{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line2);font-size:14px}
.row-sb:last-child{border-bottom:0}
.grid.mini{grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0}
.grid.mini b{display:block;font-size:20px;font-weight:600}
@media (max-width:640px){
  .only-phone{display:block}
  .only-pc{display:none!important}
  .rib-row{grid-template-columns:1fr}
  .grid.mini{grid-template-columns:repeat(3,1fr)}
}

/* ── Зал (задача 08) ─────────────────────────────────────────────── */
.shift-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:2px 0 14px}
.shift-head h2{margin:0;font-size:20px}
.shift-head .right{margin-left:auto}
.grid.top{align-items:start}
.hrow{display:grid;grid-template-columns:120px 1fr 72px;gap:10px;align-items:center;padding:5px 0;font-size:13.5px}
.hrow .bar{margin:0}
.hrow b{text-align:right;font-weight:500;font-variant-numeric:tabular-nums}
.dev{font-size:11.5px;font-weight:500}
.dev.ok{color:var(--ok-ink)} .dev.bad{color:var(--bad-ink)}
tr.few td{color:var(--muted)}
.stack{display:flex;flex-direction:column;gap:8px}
.row-wrap{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.row-wrap input{min-width:0}
a.kpi{color:inherit;text-decoration:none}
a.kpi:hover{border-color:var(--accent)}
.zrev-card{border-color:var(--accent)}
.zrev-card dl{display:grid;grid-template-columns:150px 1fr;gap:4px 12px;margin:0 0 12px;font-size:13.5px}
.zrev-card dt{color:var(--muted)}
.zrev-card dd{margin:0}
@media (max-width:640px){
  .tabs{gap:6px;border-bottom:0;padding-bottom:2px}
  .tabs a{border:1px solid var(--line);border-radius:999px;padding:6px 12px;margin:0;background:var(--card)}
  .tabs a.on{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}
  .hrow{grid-template-columns:96px 1fr 60px}
  .zrev-card dl{grid-template-columns:110px 1fr}
}

/* ── Кухня и бар (задача 09) ─────────────────────────────────────── */
.stackbar{display:flex;height:10px;border-radius:99px;overflow:hidden;background:var(--track);margin:10px 0 8px}
.stackbar i{display:block;height:100%}
.legend-row{display:flex;gap:12px;flex-wrap:wrap;color:var(--muted)}
.legend-row i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
tr.rest td{font-weight:600;border-top:1px solid var(--line)}
.checks{display:flex;flex-direction:column;gap:6px;max-height:260px;overflow:auto;margin:6px 0 10px}
.checks label{display:flex;gap:8px;align-items:baseline;font-size:14px}
form.stack label{display:flex;flex-direction:column;gap:4px;margin-bottom:10px;font-size:14px}
form.stack .checks label{flex-direction:row}
select[multiple]{min-height:90px}

/* ── Аналитика меню (задача 10) ──────────────────────────────────── */
.subtabs{display:flex;gap:6px;flex-wrap:wrap;margin:-4px 0 14px}
.subtabs a{padding:6px 12px;border-radius:999px;border:1px solid var(--line);color:var(--muted);background:var(--card);font-size:13.5px;white-space:nowrap}
.subtabs a.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}
.menu-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:14px;align-items:start}
@media (max-width:1100px){.menu-layout{grid-template-columns:1fr}}
.side-card{position:sticky;top:12px}
.side-card .mini2{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0}
.side-card .mini2 div{background:var(--bg2,var(--track));border-radius:10px;padding:8px 10px}
.side-card .mini2 b{display:block;font-size:16px}
.sharebar{display:inline-block;width:70px;height:6px;background:var(--track);border-radius:99px;vertical-align:middle;margin-left:6px;overflow:hidden}
.sharebar i{display:block;height:100%;background:var(--accent)}
tr.sub td:first-child{padding-left:28px;color:var(--muted)}
tr.tot td{font-weight:600;background:color-mix(in srgb,var(--accent) 7%,transparent)}
tr.picked td{background:color-mix(in srgb,var(--accent) 9%,transparent)}
.lnkbtn{display:flex;justify-content:space-between;align-items:center;border:1px solid var(--accent);border-radius:10px;padding:8px 12px;margin-top:8px;color:var(--accent)}

/* ── Срезы (задача 11) ───────────────────────────────────────────── */
.slice-layout{display:grid;grid-template-columns:290px minmax(0,1fr);gap:14px;align-items:start}
@media (max-width:1000px){.slice-layout{grid-template-columns:1fr}.slice-side{order:2}}
.slice-side .card{margin-bottom:14px}
.saved-row{display:flex;align-items:center;gap:6px;justify-content:space-between;padding:6px 8px;border-radius:8px}
.saved-row.on{background:color-mix(in srgb,var(--accent) 10%,transparent);font-weight:600}
.saved-row a{flex:1}
.saved-row form{margin:0}
.dim-group{margin:10px 0 4px}
.small-chips a,.small-chips span{padding:4px 10px;font-size:13px}
.chips a.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.dim-off{display:inline-block;padding:4px 10px;border:1px dashed var(--line);border-radius:20px;color:var(--faint);font-size:13px;cursor:help}
.zones .zone{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border:1px dashed var(--line);border-radius:12px;padding:8px 12px;margin-bottom:8px}
.zones .zl{width:80px;color:var(--muted);font-size:13px}
.fchip.dark{background:var(--ink);color:var(--card);border-color:var(--ink)}
.fchip.dark a{color:var(--card)}
.pickvals{border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:8px}
.pick-list{max-height:220px}
.slice-layout>*{min-width:0}
.zones .seg{flex-wrap:wrap}
.menu-layout>*{min-width:0}
#measures.checks{max-height:none}

/* ── маркетинг (задача 12) ─────────────────────────────────────── */
.gpath{display:grid;grid-template-columns:1fr 18px 1fr 18px 1fr 18px 1fr;gap:6px;align-items:stretch}
.gpath .arrow{display:flex;align-items:center;justify-content:center;color:var(--faint);font-size:18px}
.pstep{margin-bottom:0;position:relative}
.pstep.on{background:var(--ok-bg)}
.pstep.off{background:var(--na-bg);box-shadow:none}
.pstep .v{font-size:24px}
.kpi .s.src{color:var(--faint);font-size:12px;margin-top:4px}
.src-tile.off{background:color-mix(in srgb,var(--card) 70%,var(--na-bg))}
.src-tile .chip{margin-top:4px}
.inline-upload{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0}
.inline-upload input[type=file]{max-width:100%}
.budget-bars{display:flex;flex-direction:column;gap:6px}
.budget-bars .row{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(60px,1fr) auto;gap:10px;align-items:center;font-size:13.5px}
.budget-bars .bar{height:8px;border-radius:5px;background:var(--track);overflow:hidden}
.budget-bars .bar i{display:block;height:100%;background:var(--ochre);border-radius:5px}
.mapgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:8px 14px;align-items:center;max-width:720px}
.bk-form{display:flex;flex-wrap:wrap;gap:8px;align-items:end}
.bk-form label{display:flex;flex-direction:column;font-size:12.5px;color:var(--muted);gap:3px;min-width:0;max-width:100%}
@media (max-width:640px){
  .gpath{grid-template-columns:1fr}
  .gpath .arrow{transform:rotate(90deg);height:14px}
  .budget-bars .row{grid-template-columns:minmax(0,1fr) 60px auto}
  .mapgrid{grid-template-columns:1fr}
}

/* ── бухгалтерия (задача 13) ───────────────────────────────────── */
.checks-list{list-style:none;padding:0;margin:0}
.checks-list li{display:flex;gap:10px;padding:9px 0;border-bottom:1px solid var(--line2)}
.checks-list .ic{width:18px;flex:none;font-weight:700;text-align:center}
.checks-list .ok .ic{color:var(--ok)}
.checks-list .bad .ic{color:var(--bad)}
.checks-list .wait .ic{color:var(--warn)}
.checks-list .na .ic{color:var(--faint)}
.err-list{list-style:none;padding:0;margin:0}
.err-list li{position:relative;padding:8px 0 8px 16px;border-bottom:1px solid var(--line2)}
.err-list li::before{content:"";position:absolute;left:0;top:14px;width:8px;height:8px;border-radius:50%;background:var(--faint)}
.err-list li.bad::before{background:var(--bad)}
.err-list li.warn::before{background:var(--warn)}
.err-list li.info::before{background:var(--blue)}
.money-in{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.money-in input{width:110px;text-align:right}
table.entry td{vertical-align:middle}
.acc-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:flex-end;margin-bottom:12px}
.acc-actions>.small{margin-right:auto}
@media (max-width:640px){.money-in input{width:90px}}
.btn[disabled],button[disabled]{opacity:.45;cursor:not-allowed;filter:grayscale(.6)}
@media (max-width:640px){.hide-ph{display:none}
  table.entry .split-note{display:none}}

/* ── Зал → KPI (задача 15.6) ───────────────────────────────────── */
.kpi-sum .sum-row{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.kpi-sum .sum-big{font-size:26px;font-weight:600;letter-spacing:-.01em}
.segbar{display:flex;height:12px;border-radius:6px;overflow:hidden;flex:1;min-width:200px;background:var(--track)}
.segbar span{display:block;height:100%}
.segbar .ok{background:var(--st-ok)} .segbar .warn{background:var(--st-warn)} .segbar .bad{background:var(--st-bad)}
.segbar .info{background:color-mix(in srgb,var(--blue) 45%,var(--card))} .segbar .na{background:var(--field)}
.kpi-sum .legend{display:flex;gap:12px;flex-wrap:wrap;font-size:13px;color:var(--muted);margin-top:10px}
.card.hero{background:var(--side);border-color:var(--side);color:#fff}
.card.hero .k,.card.hero .ct{color:#fff}
.card.hero small,.card.hero .of,.card.hero .scale{color:var(--side-muted)}
.card.hero button.i,.card.hero button.why{background:transparent;color:var(--side-ink);border-color:#3A5E54}
.hero .hv{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin-top:4px}
.hero .hv .v{font-size:36px;font-weight:600;letter-spacing:-.01em;line-height:1.1}
.hero .track{position:relative;height:16px;background:#2B4A41;border-radius:8px;margin:26px 0 6px}
.hero .track .fill{position:absolute;left:0;top:0;bottom:0;border-radius:8px;background:var(--st-ok)}
.hero .track .fill.warn{background:var(--st-warn)} .hero .track .fill.bad{background:var(--st-bad)}
.hero .track .fill.na{background:var(--side-muted)}
.hero .track .mk{position:absolute;top:-6px;bottom:-6px;width:2px;background:#fff}
.hero .track .mk span{position:absolute;top:-19px;left:50%;transform:translateX(-50%);font-size:11px;color:var(--side-muted);white-space:nowrap}
.hero .track .mk.end span{left:auto;right:0;transform:none}
.hero .scale{display:flex;justify-content:space-between;font-size:11.5px}
.hero .need{margin-top:14px;padding:12px 14px;border-radius:10px;background:#1F3F36;font-size:14px;color:#E6EEEA}
.hero .need b{color:#fff}
.kpi .dv{font-size:24px;font-weight:600;margin:4px 0 2px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.kpi .mini{height:8px;background:var(--track);border-radius:4px;position:relative;margin:10px 0 6px}
.kpi .mini span{position:absolute;left:0;top:0;bottom:0;border-radius:4px;background:var(--muted)}
.kpi .mini span.ok{background:var(--st-ok)} .kpi .mini span.warn{background:var(--st-warn)} .kpi .mini span.bad{background:var(--st-bad)}
.kpi .mini i{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--ink)}
.formula{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:stretch;gap:10px}
.formula .op{display:grid;place-items:center;font-size:24px;color:var(--muted);font-weight:300}
.formula .fx{border:1px solid var(--line);border-radius:12px;padding:12px 14px;min-width:0}
.formula .fx .k{font-size:13px;color:var(--muted)}
.formula .fx .v{font-size:22px;font-weight:600;margin:2px 0 4px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.formula .fx .s{font-size:12.5px;color:var(--muted)}
.card .hint{margin-top:12px;font-size:13.5px;background:var(--warn-bg);border-radius:10px;padding:10px 12px}
.kcard .k small{font-weight:400;color:var(--faint)}
.kcard .row-v{display:flex;align-items:baseline;gap:10px;margin:6px 0 2px;flex-wrap:wrap}
.kcard .v{font-size:24px;margin:0}
.kcard .bullet{margin:12px 0 6px}
.kcard .foot{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12px;color:var(--muted);margin-top:6px}
.kcard .foot a{color:var(--accent);text-decoration:none;font-weight:600;position:relative;z-index:1}
table.kpi-months{border-collapse:separate;border-spacing:3px}
table.kpi-months td{border-radius:7px;white-space:nowrap;font-weight:600}
table.kpi-months td.st-ok{background:var(--st-ok);color:var(--st-ok-ink)}
table.kpi-months td.st-warn{background:var(--st-warn);color:var(--st-warn-ink)}
table.kpi-months td.st-bad{background:var(--st-bad);color:var(--st-bad-ink)}
table.kpi-months td.st-na{background:var(--na-bg);color:var(--na-ink);font-weight:500}
table.kpi-months td.st-info{background:var(--info-bg);color:var(--info-ink)}
table.kpi-months td.part{background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.35) 0 4px,transparent 4px 8px)}
@media (max-width:640px){
  table.kpi-months td:first-child{white-space:normal;min-width:120px;max-width:140px}
  .formula{grid-template-columns:1fr}
  .formula .op{font-size:18px;height:14px}
  .hero .hv .v{font-size:30px}
  .kpi-sum .sum-big{font-size:22px}
}

/* «Как исправить» у сигнала (задача 15.3) */
details.fixhow{margin-top:4px}
details.fixhow summary{cursor:pointer;display:inline-block;font-size:13px}
details.fixhow .fh{margin:6px 0 4px;padding:10px 12px;border-radius:10px;background:var(--line2);font-size:13px}
details.fixhow .fh p{margin:3px 0}
details.fixhow .fh ol{margin:4px 0;padding-left:20px}
/* «Как заполнять» у справочников */
details.howto{margin:0 0 14px}
details.howto>summary{cursor:pointer;font-weight:600}
details.howto .hw{margin-top:8px;font-size:13.5px}
details.howto dl{display:grid;grid-template-columns:minmax(140px,220px) 1fr;gap:6px 14px;margin:8px 0}
details.howto dt{font-weight:600}
details.howto dd{margin:0}
@media (max-width:640px){details.howto dl{grid-template-columns:1fr}}
button.colq{border:1px solid var(--field);background:transparent;border-radius:50%;width:17px;height:17px;font-size:10.5px;line-height:15px;padding:0;margin-left:4px;color:var(--muted);cursor:pointer;vertical-align:1px}
.lsel{display:inline-flex;gap:4px;align-items:center;flex-wrap:wrap}
.lsel button.plain{font-size:12px;padding:2px 6px}
input.sel-search{display:block;width:100%;max-width:200px;margin-bottom:4px;font-size:12.5px;padding:3px 8px}
.howright ol.steps3{margin:0;padding-left:22px;font-size:14px}
.howright ol.steps3>li{margin:6px 0}
.howright ol.steps3 ul{margin:4px 0;padding-left:18px;font-size:13.5px}

/* Задача 15.5: «i» у измерений и показателей «Срезов», заголовок колонки — ссылка на паспорт */
.chipi{display:inline-flex;align-items:center;gap:0}
.chipi button.i,.checks label button.i,th button.i.sm{width:16px;height:16px;flex:0 0 16px;font-size:10px;margin-left:3px}
.checks label button.i{align-self:center}
button.mlink{display:inline;padding:0;margin:0;border:0;border-radius:0;background:none;font:inherit;color:inherit;
  text-align:inherit;line-height:inherit;cursor:pointer;border-bottom:1px dotted var(--faint);white-space:inherit}
button.mlink:hover{filter:none;color:var(--accent);border-bottom-color:var(--accent)}
th button.mlink{color:var(--muted)}
th button.mlink+a.sort{margin-left:3px}
@media print{button.mlink{border-bottom:0}}

/* Главная: неделя в цифрах, разделы роли, как пользоваться */
.hw-title{margin:4px 0 12px}
.hw-title small{font-size:13px;font-weight:400;color:var(--muted);margin-left:6px}
.home-week .card{margin-top:4px}
.hlinks a{display:flex;align-items:center;gap:12px;padding:10px 4px;border-bottom:1px solid var(--line2);color:var(--ink)}
.hlinks a:last-child{border-bottom:0}
.hlinks a:hover{text-decoration:none;color:var(--accent)}
.hlinks a .grow{display:flex;flex-direction:column;gap:2px;min-width:0}
.hlinks a .h{font-size:13px;color:var(--muted)}
.hlinks a.first b::after{content:"ваш раздел";margin-left:8px;font-size:11px;font-weight:600;color:var(--accent);
  border:1px solid var(--accent);border-radius:10px;padding:1px 7px;vertical-align:1px}
.howto-home h4{margin:0 0 6px}
.legend-list{list-style:none;padding:0;margin:0}
.legend-list li{margin:0 0 8px;line-height:1.5}
.i-demo{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;
  border:1px solid var(--field);background:var(--card);color:var(--muted);font:italic 600 11px/1 Georgia,serif;
  vertical-align:1px}
.dotted{border-bottom:1px dotted var(--faint)}
@media (max-width:700px){.howto-home .g3{grid-template-columns:1fr}}

/* ── Правило добавления (задача 15): метка «новое», синяя вкладка и плашка ── */
:root{--new-bg:#E5ECF6;--new-ink:#1E3F6E;--new-line:#274E86;--new-mark:#274E86;--new-mark-ink:#FFFFFF}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--new-bg:#1B2A40;--new-ink:#C9DAF2;
  --new-line:#6E95CF;--new-mark:#3E68A6;--new-mark-ink:#FFFFFF}}
:root[data-theme="dark"]{--new-bg:#1B2A40;--new-ink:#C9DAF2;--new-line:#6E95CF;--new-mark:#3E68A6;--new-mark-ink:#FFFFFF}
.newmark{display:inline-flex;align-items:center;margin-left:6px;padding:1px 7px;border-radius:9px;font-size:10.5px;
  font-weight:600;line-height:16px;background:var(--new-mark);color:var(--new-mark-ink);vertical-align:1px;
  letter-spacing:.01em;white-space:nowrap}
.tabs a.new{background:var(--new-bg);color:var(--new-ink);border-bottom-color:var(--new-line);border-radius:8px 8px 0 0}
.tabs a.new.on{color:var(--new-ink);border-bottom-color:var(--new-line)}
.nav .newmark{margin-left:auto}
.nav .newmark+.cnt{margin-left:6px}
.newbar{display:flex;gap:10px;align-items:flex-start;background:var(--new-bg);color:var(--new-ink);
  border:1px solid color-mix(in srgb,var(--new-line) 30%,transparent);border-radius:10px;padding:10px 14px;
  margin:0 0 16px;font-size:13.5px;line-height:1.45}
.newbar .newmark{margin-left:0;flex:0 0 auto;margin-top:1px}
@media (max-width:640px){.tabs a.new{border:1px solid var(--new-line);background:var(--new-bg);color:var(--new-ink)}
  .tabs a.new.on{background:var(--new-line);color:#fff}.tabs a.new.on .newmark{background:#fff;color:var(--new-line)}}

/* ── Зал → План-факт ── */
.pf-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:-6px 0 12px}
.pf-sub{color:var(--muted);font-size:13.5px}
.pf-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pf-month select{min-width:150px}
.pf-hero .pf-hero-row{display:flex;gap:28px;flex-wrap:wrap;margin-top:16px}
.pf-hero .pf-hero-row .small{color:var(--side-muted)}
.pf-hero .pv{font-size:22px;font-weight:600;margin-top:2px}
.pf-hero .pf-going{opacity:.85}
.pf-hero .track .mk{position:absolute;top:-4px;bottom:-4px;width:3px;background:#fff;border-radius:2px}
.pf-hero .scale{display:flex;justify-content:space-between;font-size:12px;gap:8px}
.pf-need{margin-top:14px;background:#24423A;border-radius:10px;padding:10px 14px;font-size:14px}
.pf-tiles{margin-bottom:14px}
.pf-tile .v{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pf-tile .v .tag{font-size:12px}
.pf-bar{height:6px;background:var(--track);border-radius:3px;margin:10px 0 6px;overflow:hidden}
.pf-bar i{display:block;height:100%;border-radius:3px;background:var(--faint)}
.pf-bar i.ok{background:var(--st-ok)} .pf-bar i.warn{background:var(--st-warn)} .pf-bar i.bad{background:var(--st-bad)}
.pf-check{line-height:1.5}
.pf-warn div{margin-top:4px}
.pf-t{font-size:13px}
.pf-t th,.pf-t td{white-space:nowrap}
.pf-t .pf-first{position:sticky;left:0;background:var(--card);z-index:1;min-width:150px;white-space:normal}
.pf-t thead .pf-first{z-index:3}
.pf-t tr.pf-total td{font-weight:600}
.pf-t th.we,.pf-t td.we{background:color-mix(in srgb,var(--st-warn) 7%,var(--card))}
.pf-t td.pf-c{line-height:1.25;min-width:58px}
.pf-t td.pf-c .pf-p{font-size:11px;color:var(--muted)}
.pf-t td.pf-c.past.ok{background:color-mix(in srgb,var(--st-ok) 16%,var(--card))}
.pf-t td.pf-c.past.warn{background:color-mix(in srgb,var(--st-warn) 22%,var(--card))}
.pf-t td.pf-c.past.bad{background:color-mix(in srgb,var(--st-bad) 16%,var(--card))}
.pf-t td.pf-c.now.ok,.pf-t td.pf-c.now.warn,.pf-t td.pf-c.now.bad{box-shadow:inset 0 -3px 0 var(--st-warn)}
.pf-t td.pf-c.today,.pf-t th.today,.pf-sw.today{background:repeating-linear-gradient(135deg,var(--line2) 0 5px,transparent 5px 10px)}
.pf-t td.pf-c.future .pf-plan,.pf-t .pf-plan{color:var(--faint)}
.pf-t td.pf-c.off{color:var(--muted)}
.pf-t td.pf-c a.drill{color:inherit}
.pf-sw{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:5px;vertical-align:-1px;border:1px solid var(--line)}
.pf-sw.ok{background:color-mix(in srgb,var(--st-ok) 30%,var(--card))}
.pf-sw.warn{background:color-mix(in srgb,var(--st-warn) 35%,var(--card))}
.pf-sw.bad{background:color-mix(in srgb,var(--st-bad) 30%,var(--card))}
.pf-wd tr.we td{background:color-mix(in srgb,var(--st-warn) 7%,var(--card))}
.pf-form label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--ink2)}
.pf-form h4{margin:14px 0 8px}
.pf-wk{grid-template-columns:repeat(7,minmax(0,1fr))}
.pf-yr{grid-template-columns:repeat(6,minmax(0,1fr))}
.pf-set{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px}
.pf-set label.row-wrap{flex-direction:row;align-items:center;gap:6px}
.pf-cats{max-height:180px;overflow:auto;border:1px solid var(--line);border-radius:8px;padding:6px 10px;margin:6px 0}
.pf-save{position:sticky;bottom:0;padding:10px 0;background:var(--bg);z-index:2}
.pf-tw{overflow-x:auto;overflow-y:visible}
.pf-days.recent .old{display:none}
.pf-t th.pf-day .pf-p{font-weight:400}
.pf-card .ct .right{gap:8px}
@media (max-width:640px){
  .pf-days .old,.pf-days .ph-hide{display:none}
  .pf-t .pf-first{min-width:112px}
  .pf-days.all .old{display:table-cell}
  .pf-hero .pf-hero-row{gap:16px}
  .pf-wk{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pf-yr{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ── Зал → План-факт v2 (задача 16, добавление) ── */
.pf2-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:-6px 0 12px}
.pf2-sub{color:var(--muted);font-size:13.5px}
.pf2-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pf2-month{position:relative}
.pf2-month summary{list-style:none;cursor:pointer}
.pf2-month summary::-webkit-details-marker{display:none}
.pf2-month[open] summary{border-color:var(--accent)}
.pf2-menu{position:absolute;right:0;top:calc(100% + 4px);z-index:20;background:var(--card);border:1px solid var(--line);
  border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.12);padding:6px;min-width:190px;max-height:320px;overflow:auto}
.pf2-menu a{display:block;padding:7px 10px;border-radius:7px;color:var(--ink);font-size:13.5px}
.pf2-menu a:hover{background:var(--line2);text-decoration:none}
.pf2-menu a.on{background:var(--seg);font-weight:600}
.newbar.pf2-bar{align-items:center;padding:7px 10px 7px 14px}
.newbar.pf2-bar>span:not(.newmark){flex:1 1 auto}
.pf2-x{background:transparent;border:0;color:var(--new-ink);font-size:18px;line-height:1;padding:2px 8px;cursor:pointer}
.pf2-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:16px}
.pf2-c{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;min-width:0;
  display:flex;flex-direction:column;gap:10px}
.pf2-c.dark{background:var(--side);border-color:var(--side);color:#fff}
.pf2-c.dark .pf2-cs,.pf2-c.dark dt{color:var(--side-muted)}
.pf2-c.dark .pf2-dl>div{border-color:var(--side-line)}
.pf2-c.dark .pf2-hint{background:#24423A;color:#fff}
.pf2-c.dark button.i,.pf2-c.dark button.why{background:transparent;color:var(--side-ink);border-color:#3A5E54}
.pf2-ch{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:15px}
.pf2-cs{margin-left:auto;font-size:12px;color:var(--muted)}
.pf2-big{font-size:28px;font-weight:700;letter-spacing:-.01em;white-space:nowrap;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pf2-big .tag{font-size:12.5px}
.pf2-dl{margin:0;display:flex;flex-direction:column}
.pf2-dl>div{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-top:1px solid var(--line2);font-size:13px}
.pf2-dl dt{color:var(--ink2)}
.pf2-dl dd{margin:0;text-align:right;font-weight:600;white-space:nowrap}
.pf2-dl dd .tag{font-size:11.5px;padding:1px 6px}
.pf2-hint{background:var(--bg);border-radius:9px;padding:9px 11px;font-size:12.5px;line-height:1.45;color:var(--ink2);margin-top:auto}
.pf2-tip{cursor:help;color:var(--st-warn);font-weight:400}
.pf2-why{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:14px;margin-bottom:16px;align-items:start}
.pf2-why>.card{margin-bottom:0}
.pf2-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;margin-top:14px}
.pf2-colh{font-weight:600;font-size:13.5px}
.pf2-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;padding:9px 0 4px;align-items:start}
.pf2-row .pf2-rl b{font-weight:600;font-size:13.5px}
.pf2-row .pf2-rv{display:flex;align-items:center;gap:6px;white-space:nowrap}
.pf2-row .pf2-rv .tag{font-size:11px;padding:1px 6px}
.pf2-amt.neg{color:var(--st-bad)} .pf2-amt.pos{color:var(--st-ok)}
.pf2-track{grid-column:1/-1;height:6px;background:var(--track);border-radius:3px;overflow:hidden;margin-top:4px}
.pf2-track i{display:block;height:100%;border-radius:3px}
.pf2-track i.neg{background:var(--st-bad)} .pf2-track i.pos{background:var(--st-ok)} .pf2-track i.grey{background:var(--faint)}
.pf2-row.grey .pf2-rl b,.pf2-row.grey .pf2-rv{color:var(--muted)}
.pf2-att .att{padding:10px 0}
.pf2-go{display:inline-block;margin-top:5px;font-size:13px;font-weight:500}
.pf2-tcard .ct .right{gap:8px}
.pf2-tw{overflow:visible}
.pf2-t{width:100%;border-collapse:separate;border-spacing:0;font-size:12.5px}
.pf2-t th,.pf2-t td{padding:6px 7px;border-bottom:1px solid var(--line2);white-space:nowrap;background:var(--card)}
.pf2-t thead{position:sticky;top:0;z-index:3}
.pf2-t thead th{font-size:11.5px;color:var(--muted);font-weight:500;border-bottom:1px solid var(--line)}
.pf2-t thead tr.pf2-g th{text-transform:uppercase;letter-spacing:.05em;font-size:10.5px;padding-bottom:2px;border-bottom:0}
.pf2-t th.pf2-gl{text-align:center;border-left:1px solid var(--line2)}
.pf2-t .pf2-d{text-align:left;min-width:104px;position:sticky;left:0;z-index:1}
.pf2-t thead .pf2-d{z-index:4}
.pf2-t tr.pf2-mrow td{background:color-mix(in srgb,var(--st-ok) 10%,var(--card));font-weight:600;border-bottom:1px solid var(--line)}
.pf2-t tr.pf2-wrow td{background:var(--bg);font-weight:600;cursor:default}
.pf2-t tr[data-pf2-toggle]{cursor:pointer}
.pf2-t tr.pf2-wrow.future td{color:var(--muted);font-weight:500}
.pf2-chev{display:inline-block;transition:transform .15s;color:var(--muted)}
.pf2-t tbody.open .pf2-chev{transform:rotate(90deg)}
.pf2-t tbody.shut tr.pf2-day{display:none}
.pf2-t tr.pf2-day.we td{background:color-mix(in srgb,var(--st-warn) 6%,var(--card))}
.pf2-t tr.pf2-day.today td{background:repeating-linear-gradient(135deg,var(--line2) 0 5px,var(--card) 5px 10px)}
.pf2-t tr.pf2-day.future td,.pf2-t td.plan{color:var(--faint)}
.pf2-t td.muted{color:var(--muted)}
.pf2-t td.pf2-f b{font-weight:600}
.pf2-t td .tag{font-size:11px;padding:1px 6px}
.pf2-t td a.drill{color:inherit}
.pf2-b{font-size:11px;color:var(--muted);font-weight:500;margin-top:1px}
.pf2-b.ok{color:var(--st-ok)} .pf2-b.warn{color:var(--ochre)} .pf2-b.bad{color:var(--st-bad)} .pf2-b.na{color:var(--faint)}
.pf2-t .focus{box-shadow:inset 2px 0 0 var(--new-line),inset -2px 0 0 var(--new-line)}
.pf2-t .ph-only{display:none}
.pf2-two{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:14px;align-items:start}
.pf2-wd{display:grid;grid-template-columns:120px minmax(0,1fr) 92px 56px;gap:10px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line2)}
.pf2-wdb,.pf2-l7b{position:relative;height:12px;background:var(--track);border-radius:4px}
.pf2-wdb i,.pf2-l7b i{display:block;height:100%;border-radius:4px;background:var(--faint)}
.pf2-wdb i.ok,.pf2-l7b i.ok{background:var(--st-ok)} .pf2-wdb i.warn,.pf2-l7b i.warn{background:var(--st-warn)}
.pf2-wdb i.bad,.pf2-l7b i.bad{background:var(--st-bad)}
.pf2-wdb s,.pf2-l7b s{position:absolute;top:-4px;bottom:-4px;width:3px;margin-left:-1px;background:var(--ink);border-radius:2px}
.pf2-wdv{text-align:right}
.pf2-wdp{text-align:right}
.pf2-wdp .tag{font-size:11px}
.pf2-yr td{vertical-align:middle}
.pf2-ybar{width:22%;min-width:140px;position:relative}
.pf2-ybar span{display:block;height:7px;border-radius:3px;margin:2px 0}
.pf2-ybar .f{background:var(--st-ok)}
.pf2-ybar .p{background:repeating-linear-gradient(135deg,var(--st-warn) 0 4px,color-mix(in srgb,var(--st-warn) 35%,transparent) 4px 8px)}
.pf2-ybar .v{height:2px;background:var(--blue)}
.pf2-yr tr.now td{background:color-mix(in srgb,var(--blue) 7%,var(--card))}
.pf2-lg{display:inline-block;width:14px;height:7px;border-radius:2px;vertical-align:1px}
.pf2-lg.fact{background:var(--st-ok)} .pf2-lg.plan{background:var(--st-warn)} .pf2-lg.prev{height:2px;background:var(--blue)}
.pf2-l7{display:grid;grid-template-columns:62px minmax(0,1fr) 78px 50px;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line2)}
.pf2-l7.today{background:repeating-linear-gradient(135deg,var(--line2) 0 5px,transparent 5px 10px);border-radius:6px}
.pf2-l7.today .pf2-l7t{grid-column:2/3;font-size:12.5px;color:var(--muted)}
.pf2-l7v{text-align:right;font-weight:600}
@media (max-width:1180px){.pf2-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pf2-why,.pf2-two{grid-template-columns:1fr}}
@media (max-width:640px){
  .pf2-cards{grid-template-columns:1fr}
  .pf2-why .pf2-gap,.pf2-yr .ph-no{display:none}
  .pf2-t .ph-no{display:none}
  .pf2-t .ph-only{display:table-cell}
  .pf2-tw{overflow-x:auto}
  .pf2-t{width:auto}
  .pf2-t thead{position:static}
  .pf2-wd{grid-template-columns:86px minmax(0,1fr) auto 44px;gap:6px}
  .pf2-wdv{white-space:nowrap}
  .pf2-why{display:flex;flex-direction:column;align-items:stretch;gap:14px}
  .pf2-why>.card{margin-bottom:0}
  .pf2-why .pf2-pgap{order:1} .pf2-why .pf2-p7{order:2} .pf2-why .pf2-att{order:3}
  .pf2-big{font-size:26px}
}
@media print{.pf2-t thead{position:static}.pf2-t .pf2-d{position:static}.pf2-tw{overflow:visible}
  .pf2-t tbody.shut tr.pf2-day{display:table-row}.pf2-menu,.pf2-x{display:none}}

/* ── Зал → Доставка (задача 17, добавление) ── */
.dl-filter{margin:0 0 12px}
.dl-est{font-style:italic;color:var(--ink2)}
.dl-est::after{content:" ≈";font-style:normal;color:var(--muted)}
.pf2-hint .dl-est::after,.dl-sh .dl-est::after{content:""}
.dl-strip{margin:4px 0 16px}
.dl-strip.est .dl-bar{opacity:.85;background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.35) 0 4px,transparent 4px 8px)}
.dl-sh{font-size:13px;color:var(--ink2);margin-bottom:6px}
.dl-bar{display:flex;height:16px;border-radius:6px;overflow:hidden;background:var(--track)}
.dl-bar i{display:block;height:100%}
.dl-bar i.contract,.dl-leg .sw.contract{background:color-mix(in srgb,var(--st-warn) 70%,var(--card))}
.dl-bar i.over,.dl-leg .sw.over{background:var(--st-bad)}
.dl-bar i.cost,.dl-leg .sw.cost{background:var(--faint)}
.dl-bar i.remain,.dl-leg .sw.remain{background:var(--st-ok)}
.dl-strip.est .dl-bar i{background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.4) 0 4px,transparent 4px 8px)}
.dl-leg{display:flex;flex-wrap:wrap;gap:4px 18px;font-size:12.5px;margin-top:6px}
.dl-leg .sw{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}
.dl-reg{margin-top:6px;color:var(--ink2)}
.dl-reg .tag{margin-left:4px}
.dl-mt{font-size:12.5px}
.dl-mt th,.dl-mt td{white-space:nowrap}
.dl-mt tr.muted td{color:var(--muted)}
.dl-noreg{text-align:center}
.dl-h4{margin:14px 0 8px;font-size:14px}
.dl-cols2{grid-template-columns:repeat(2,minmax(0,1fr))}
.dl-t th.dl-ref,.dl-t td.muted{color:var(--muted)}
.dl-t td.dl-p{background:color-mix(in srgb,var(--line2) 45%,var(--card))}
.dl-t tr.pf2-day td.dl-p{background:var(--card)}
.dl-it{font-size:12.5px}
.dl-it td[style]{background:color-mix(in srgb,var(--st-ok) calc(var(--a) * 0.22),var(--card))}
.dl-it tbody.shut tr.dl-dish,.dl-it tbody.shut tr.dl-pos{display:none}
.dl-it tbody.open .pf2-chev{transform:rotate(90deg)}
.dl-it tr.dl-crow{cursor:pointer}
.dl-it tr.dl-dish td:first-child{padding-left:26px}
.dl-it tr.dl-pos td{color:var(--muted);font-size:12px}
.dl-it tr.dl-pos td:first-child{padding-left:42px}
.dl-spark polyline{fill:none;stroke:var(--accent);stroke-width:1.5}
.dl-heat{font-size:12px}
.dl-heat td{min-width:30px;text-align:center;background:color-mix(in srgb,var(--accent) var(--a),var(--card))}
.dl-heat th{font-weight:500;color:var(--muted)}
.dl-top5{display:grid;grid-template-columns:minmax(0,1fr) auto 60px;gap:8px;padding:5px 0;border-bottom:1px solid var(--line2);font-size:13px}
.dl-top5 span:last-child{text-align:right}
@media (max-width:640px){.dl-strip.ph-no{display:none}.dl-cols2{grid-template-columns:1fr}}
.pf2-tw.dl-scroll{overflow-x:auto}
.pf2-tw.dl-scroll .pf2-t thead{position:static}
.pf2-c.dark .dl-est{color:#fff}
.dl-t th,.dl-t td{padding:6px 5px}
.dl-reg .tag{white-space:normal;display:inline}
@media (max-width:1400px){.pf2-tw.dl-days{overflow-x:auto}.pf2-tw.dl-days .pf2-t thead{position:static}}
.dl-heat td.hi{color:#fff}
@media (max-width:640px){.dl-ph-hide{display:none}}

/* ── Кухня и бар → Косты; Закупки, остатки, списания (добавление) ── */
.kc-how .kpi .s{font-size:12.5px;line-height:1.45;margin-top:6px}
.kc-t{font-size:12.5px}
.kc-t th,.kc-t td{white-space:nowrap}
.kc-t tr.kc-g th{text-transform:uppercase;letter-spacing:.05em;font-size:10.5px;color:var(--muted);border-bottom:0}
.kc-t th.kc-gl{text-align:center;border-left:1px solid var(--line2)}
.kc-t tr.on td{background:color-mix(in srgb,var(--accent) 7%,var(--card))}
.kc-p{font-weight:600}
.kc-p.ok{color:var(--st-ok)} .kc-p.warn{color:var(--ochre)} .kc-p.bad{color:var(--st-bad)}
.kc-alloc .kc-p{font-style:italic;font-weight:500}
.kc-base{background:var(--bg);border-radius:9px;padding:9px 12px;font-size:13px;margin-bottom:10px}
.kc-bd td{vertical-align:middle}
.kc-bd tr.kc-rest td{background:color-mix(in srgb,var(--st-warn) 8%,var(--card));font-weight:600}
.kc-barcell{width:22%;min-width:120px}
.kc-barcell i{display:block;height:8px;border-radius:3px;background:var(--accent)}
.kc-barcell i.rest{background:var(--st-warn)} .kc-barcell i.neg{background:var(--st-bad)}
.kc-checks{margin:4px 0 8px 18px;font-size:12.5px;color:var(--ink2)}
.kc-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;align-items:end}
.kc-form label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--ink2)}
.kc-form2{margin-top:12px;padding-top:12px;border-top:1px solid var(--line2)}
.kc-cmd{background:var(--bg);border-radius:9px;padding:10px 12px;font-size:12px;overflow-x:auto;white-space:pre}
.kc-forms>.card{margin-bottom:0}
@media (max-width:640px){.kc-barcell{display:none}}

/* «Лаборатория» (добавление) */
.lab-heat{font-size:12px}
.lab-heat td{min-width:30px;text-align:center;background:color-mix(in srgb,var(--accent) var(--a),var(--card))}
.lab-heat td.hi{color:#fff}
.lab-heat td.off{background:var(--bg)}
.lab-heat th{font-weight:500;color:var(--muted);white-space:nowrap}
.lab-heat tr.lab-avg td{background:none;font-weight:600;border-top:1px solid var(--line2)}
.lab-t{font-size:12.5px}
.lab-t th{white-space:nowrap}
.lab-chips{display:flex;flex-wrap:wrap;gap:6px}
.lab-lo{color:var(--ochre-ink)} .lab-hi{color:var(--st-ok);font-weight:600}
.lab-bad{color:var(--st-bad)} .lab-ok{color:var(--st-ok)}
.lab-ideas-l{display:grid;gap:0}
.lab-idea{display:grid;grid-template-columns:170px 1fr 1fr;gap:4px 16px;padding:9px 0;border-top:1px solid var(--line2);font-size:13px}
@media (max-width:760px){.lab-idea{grid-template-columns:1fr}}
.kc-base .tag{white-space:normal}
.kc-inv{color:var(--ochre-ink);font-weight:600;margin-left:2px}
.kc-t tr.kc-hint td{background:color-mix(in srgb,var(--st-warn) 9%,var(--card))}
.kc-between-f{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin:0 0 12px}
.kc-between-f label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--ink2)}
.kc-bw{margin-bottom:10px}
/* «Лаборатория → Скидки и акции» (добавление) */
.pr-form{margin-top:10px}
.pr-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;align-items:start;margin-bottom:10px}
.pr-grid label,.pr-wd label.pr-h{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--ink2)}
.pr-grid .w2{grid-column:span 2}
.pr-grid textarea,.pr-grid select[multiple]{width:100%;font:inherit;font-size:13px}
.pr-wd{border:1px solid var(--line2);border-radius:9px;padding:8px 12px;margin:0 0 10px;display:flex;flex-wrap:wrap;gap:8px 14px;align-items:end}
.pr-wd legend{font-size:12.5px;color:var(--ink2);padding:0 4px}
.pr-ck{font-size:13px;display:inline-flex;gap:4px;align-items:center}
.pr-wd .pr-h input{width:70px}
.pr-launch{border-top:1px solid var(--line2);padding:9px 0}
.pr-lh{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:4px}
.pr-inline{display:inline;margin-left:auto}
.pr-head{display:grid;grid-template-columns:1fr minmax(220px,34%);gap:14px}
.pr-facts div{font-size:13px;margin:2px 0}
.pr-verdict{border-radius:9px;padding:10px 12px;background:var(--bg);font-size:13.5px}
.pr-verdict.ok{background:color-mix(in srgb,var(--st-ok) 12%,var(--card))}
.pr-verdict.warn{background:color-mix(in srgb,var(--st-warn) 16%,var(--card))}
.pr-verdict.bad{background:color-mix(in srgb,var(--st-bad) 12%,var(--card))}
.pr-wk{display:grid;grid-template-columns:96px 1fr 56px 130px;gap:8px;align-items:center;font-size:12.5px;margin:3px 0}
.pr-wb{height:10px;background:var(--bg);border-radius:4px;overflow:hidden}
.pr-wb i{display:block;height:100%;background:color-mix(in srgb,var(--ink2) 35%,var(--card))}
.pr-wk.run .pr-wb i{background:var(--accent)} .pr-wk.after .pr-wb i{background:var(--blue)}
.pr-wv{text-align:right;font-weight:600}
@media (max-width:760px){.pr-head{grid-template-columns:1fr}.pr-grid .w2{grid-column:span 1}.pr-wk{grid-template-columns:80px 1fr 44px}.pr-wp{display:none}}
.lab-t td.nw{white-space:nowrap}
.lab-t .chip{white-space:nowrap}
.lab-t td.pr-v{white-space:nowrap;width:1%}
.pr-ov{margin-top:4px;line-height:1.6}
