/* app.css — стили по разделам (компонентам). Оглавление (номер раздела — в заголовке «==== N. …»):
   1. Основа: шрифты, переменные, базовые элементы, служебные классы
   2. Шапка: герб, название, пользователь, переходы администратора, «Отменить»
   3. Вкладки кабинета и «Раздел ▾» на телефоне
   4. Раскладка страницы: заголовок, блоки, строка пути, плашки, подвал
   5. Кнопки, ссылки-кнопки, переключатели
   6. Формы и поля: подписи, ошибки, файл, флажки
   7. Таблицы: общий вид, статусы, сортировка, карточный вид строк на телефоне, страницы
   8. Плитки-итоги: «Требует внимания», «На контроле», «Состояние системы»
   9. Списки ППО: панель фильтров, поиск, плитки-итоги, «На контроле», «Показать ещё»
   10. О ППО и коллектив
   11. Проверки: список и карточка
   12. Обращения: карточка
   13. Несчастные случаи: список и карточка
   14. Отчёт 19-ТИ ППО: таблица, правка строки, оглавление, кнопки, загрузка из Excel
   15. Динамика по годам и выбор лет
   16. ГТИ: сводка, «Требует внимания», очередь отчётов
   17. ГТИ: свод 19-ТИ, «По организациям», строка по ППО
   18. ГТИ: журналы МПО
   19. Окна: форма в окне (drawer), подтверждение, сессия
   20. Администратор: учётные записи, ППО, формы, справочники, журнал действий, копии
   21. Вход и смена пароля
   22. Телефон: «Наверх», «Перейти к разделу», поле файла
   23. Сквозные правила для нескольких компонентов (мелкий шрифт, заголовки строк таблиц, цели нажатия)
   24. Печать
   25. Опрос по должностям: страница без входа и вкладка администратора
   ЧАСТЬ 1 — разделы по компонентам; ЧАСТИ 2… — «уточнения»: правила раздела, которые по каскаду должны
   идти после правил других разделов (то же имя раздела с номером «N.2», «N.3»…).
   Внутри раздела: сначала общие правила, затем широкие экраны (min-width), узкие (max-width) до телефона
   (≤ 760 px), сенсорные (pointer:coarse), печать. Правила, которые перекрывают друг друга при равной
   специфичности, стоят в прежнем взаимном порядке (иначе изменился бы вид).
   Новое правило — в свой раздел, в блок своего условия ширины; не в конец файла. */
/* ==== 1. Основа: шрифты, переменные, базовые элементы, служебные классы ==== */
@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(/static/fonts/manrope-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:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(/static/fonts/manrope-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:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(/static/fonts/manrope-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:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(/static/fonts/manrope-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}
@font-face{font-family:Manrope;font-style:normal;font-weight:800;font-display:swap;src:url(/static/fonts/manrope-cyrillic-800-normal.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:Manrope;font-style:normal;font-weight:800;font-display:swap;src:url(/static/fonts/manrope-latin-800-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:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/static/fonts/inter-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:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/static/fonts/inter-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:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/static/fonts/inter-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:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/static/fonts/inter-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:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/static/fonts/inter-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:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/static/fonts/inter-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}
:root{
  --y:#FED105; --y-soft:#FFF6CC; --y-line:#F2C500;
  --k:#111111; --k2:#000;
  --g0:#FFFFFF; --g1:#F6F6F6; --g2:#ECECEC; --g3:#DADADA;
  --line:#8C8C8C; /* рамки полей и контурных кнопок: ≥ 3:1 к белому */
  --t1:#111111; --t2:#4A4A4A; --t3:#6B6B6B;
  --ok:#1E7A3C; --ok-bg:#E5F4EA;
  --warn:#7A5600; --warn-bg:#FFF1C2;
  --bad:#A3241B; --bad-bg:#FBE7E5;
  --r:8px; --r2:12px;
  --sh:0 1px 2px rgba(0,0,0,.06),0 12px 40px rgba(0,0,0,.10);
  --ease:180ms cubic-bezier(.2,.7,.2,1);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{min-height:100vh;display:flex;flex-direction:column}
body{margin:0;background:var(--g0);color:var(--t1);font:400 14px/1.5 Inter,system-ui,sans-serif;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:Manrope,Inter,sans-serif;margin:0;letter-spacing:-.01em}
a{color:inherit}
:focus-visible{outline:3px solid var(--k);outline-offset:2px;border-radius:4px}
#acc-chief,#acc-ppo,#acc-reps{scroll-margin-top:12px}
@media screen and (max-width:760px){
  /* телефон: цели касания ≥ 44 px, поля 16 px (iPhone не увеличивает страницу), текст 15 px */
  body{font-size:15px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
}

/* ==== 2. Шапка: герб, название, пользователь, переходы администратора, «Отменить» ==== */
.hdr{background:var(--y);color:var(--k)}
.hdr-in{display:flex;align-items:center;gap:16px;padding:16px 32px;min-height:88px}
.hdr img{width:112px;height:112px;border-radius:50%;flex:none;box-shadow:0 0 0 2px var(--k)}
.brand{min-width:0}
.yr{font:inherit;font-variant-numeric:tabular-nums;white-space:nowrap}
.brand small{font:600 12px Inter,system-ui,sans-serif;letter-spacing:.02em;opacity:.85}
.brand strong{font:800 20px/1.2 Manrope,Inter,system-ui,sans-serif}
.hdr .sp{flex:1}
.who{display:flex;align-items:center;gap:12px;text-align:right}
.who .nm{font-weight:600;font-size:14px;line-height:1.3}
.who .rl{font-size:12px}
.ava{width:40px;height:40px;border-radius:50%;background:var(--k);color:var(--y);display:grid;place-items:center;font:800 14px Manrope,Inter,system-ui,sans-serif;flex:none}
.btn-ghost-k{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 12px;border:1.5px solid var(--k);border-radius:var(--r);background:transparent;cursor:pointer;font-weight:600;font-size:13px;transition:background var(--ease),color var(--ease)}
.btn-ghost-k:hover{background:var(--k);color:var(--y)}
.who .nm,.who .rl{white-space:nowrap}
a.who:hover .nm{text-decoration:underline}
.viewbar{display:flex;align-items:center;gap:12px 16px;flex-wrap:wrap;margin-bottom:16px;font-size:14px}
.viewbar-org{color:var(--t2);font-weight:600;min-width:0}
/* переходы администратора (шапка), плашка «Вы работаете как администратор», заголовок решения ГТИ */
.hdr-links{display:flex;gap:8px;flex-wrap:nowrap}
.adminbar{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;margin-bottom:16px;padding:10px 14px;border-radius:var(--r);background:var(--k);color:var(--y);font-size:13px;font-weight:600}
.adminbar .i{flex:none}
.adminbar span{flex:1 1 240px;min-width:0}
.b-short,.hdr-org{display:none}
.btn-out .i{display:none}
/* длинное название ППО в шапке — одна строка с многоточием, полное — в подсказке (title) */
.who{min-width:0;flex:0 1 auto}
.who>div:first-child{min-width:0}
.who .rl,.who .nm{max-width:min(360px,28vw);overflow:hidden;text-overflow:ellipsis}
.crumbs{display:flex;align-items:center;gap:8px 16px;flex-wrap:wrap;margin:0 0 16px;font-size:14px}
.crumbs-back{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 14px;border:1px solid var(--line);border-radius:var(--r);background:var(--g0);color:var(--k);font-weight:600;text-decoration:none;flex:none;transition:background var(--ease),border-color var(--ease)}
.crumbs li{display:inline-flex;align-items:center;min-width:0}
.crumbs li+li::before{content:"›";margin:0 8px;color:var(--t3)}
.crumbs li a{color:var(--t2);text-decoration:none;font-weight:500;overflow-wrap:anywhere}
.crumbs li a:hover{color:var(--k);text-decoration:underline}
.crumbs li span[aria-current]{color:var(--k);font-weight:600;overflow-wrap:anywhere}
/* кнопка «Отменить» в шапке (как Ctrl+Z в Word); нечего отменять — неактивна */
.undo-f{margin:0}
.btn-undo:disabled{opacity:.4;cursor:default}
.btn-undo:disabled:hover{background:transparent;color:inherit}
/* длинное название ППО в строке пути — одной строкой с многоточием (полностью — в подсказке) */
.crumbs li a{max-width:min(420px,45vw);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.viewbar-org{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* плашка администратора: одна строка, название ППО обрезается многоточием (полностью — в title) */
.adminbar.q20b-ab{flex-wrap:nowrap;gap:10px;margin-bottom:12px;padding:8px 14px;font-weight:500}
.adminbar.q20b-ab .q20b-abt{flex:0 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.adminbar.q20b-ab .q20b-abt b{font-weight:700}
.adminbar.q20b-ab .q20b-abn{flex:1 1 auto;min-width:0;font-size:12px;color:var(--y-soft);opacity:.85;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.adminbar.q20b-ab .q20b-abn::before{content:"·";margin-right:8px}
.q28b-vrow>.crumbs{margin:0;min-width:0}
.q28b-vrow>.viewbar.q28b-vb{margin:0 0 0 auto;flex-wrap:nowrap;min-width:0}
/* «Вернуться в администрирование» из кабинета уполномоченного — кнопка формы (выключает
   режим), выглядит как ссылка плашки */
.adminbar.q20b-ab .q20b-abx{flex:none;margin:0 0 0 auto}
.adminbar.q20b-ab .q20b-abx button{background:none;border:0;padding:0;font:inherit;font-weight:600;color:var(--y);text-decoration:underline;text-underline-offset:3px;white-space:nowrap;cursor:pointer}
@media print,(min-width:761px){
  .brand{flex:1 1 280px}
}
@media (pointer:coarse) and (min-width:761px){
  .btn-ghost-k{height:44px}
}
@media screen and (max-width:1100px){
  .hdr-links{flex-wrap:wrap}
  /* шапка администратора на планшете — переходы отдельной строкой, без наезда на название */
  .hdr-in{flex-wrap:wrap}
}
@media screen and (max-width:760px){
  .who .nm,.who .rl{display:none}
  .hdr-links{flex-wrap:nowrap}
  .hdr-links .btn-ghost-k{flex:1 1 0;justify-content:center;min-width:0;white-space:normal;text-align:center;height:auto;padding:6px 10px}
  .btn-ghost-k{height:44px}
  /* шапка: эмблема 56, одна строка; краткое название, имя ППО с многоточием */
  .hdr-in{padding:10px 16px;min-height:0}
  .brand{flex:1 1 0;min-width:0}
  .brand strong{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font-size:14px;line-height:1.25}
  .b-long{display:none}
  .b-short{display:inline}
  .hdr-org{display:block;margin-top:2px;font:600 12px/1.3 Inter,system-ui,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .hdr .sp{display:none}
  .who{gap:8px}
  .ava{width:44px;height:44px}
  .btn-out{width:44px;padding:0;justify-content:center}
  .btn-out .out-t{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
  .hdr-links .btn-ghost-k{min-height:44px}
  .crumbs-back{height:44px}
  .crumbs li:not(:nth-last-child(2)){display:none}
  .crumbs li+li::before{content:none}
  .btn-undo{width:44px;padding:0;justify-content:center}
  .btn-undo .undo-t{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
  /* телефон: строка «Режим администратора: ППО…», под ней мелкая пометка и ссылка — с отступом под значок */
  .adminbar.q20b-ab{flex-wrap:wrap;row-gap:0;padding:8px 12px}
  .adminbar.q20b-ab .q20b-abt{flex:1 1 0}
  .adminbar.q20b-ab .q20b-abn{flex:1 1 100%;padding-left:26px;white-space:normal}
  .adminbar.q20b-ab .q20b-abn::before{content:none}
  .q28b-vrow>.viewbar.q28b-vb{margin-left:0}
  .adminbar.q20b-ab .q20b-abx{margin-left:26px}
  .adminbar.q20b-ab .q20b-abt{white-space:normal;overflow:visible;text-overflow:clip}
  .adminbar.q20b-ab .q20b-abo{display:block;font-weight:700;overflow-wrap:anywhere}
  .brand:has(> .hdr-org) strong{display:none}
  .hdr-in{gap:8px}
  .brand>.hdr-org{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;margin:0;overflow:hidden;white-space:normal;overflow-wrap:break-word;font:700 12.5px/1.25 Manrope,Inter,system-ui,sans-serif;color:var(--k)}
  body:has(.q28b-vb) .hdr-org,body:has(.adminbar.q20b-ab) .hdr-org{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;white-space:normal;text-overflow:clip}
  .q28b-vb .viewbar-org{white-space:normal;overflow:visible;text-overflow:clip}
  .hdr-in:has(.hdr-links) .undo-f:has(.btn-undo:disabled),body:has(.adminbar.q20b-ab) .hdr .undo-f:has(.btn-undo:disabled){display:none}
}
@media screen and (max-width:1100px){
  .hdr-links{order:3;flex:1 1 100%;justify-content:flex-end}
}
@media screen and (max-width:360px){
  .hdr-in{gap:6px;padding-left:12px;padding-right:12px}
}

/* ==== 3. Вкладки кабинета и «Раздел ▾» на телефоне ==== */
.tabs{background:#fff;border-bottom:1px solid var(--g3);display:flex;gap:8px;padding:0 32px;overflow-x:auto}
.tabs a{position:relative;display:flex;align-items:center;gap:8px;height:52px;padding:0 12px;text-decoration:none;font-weight:600;font-size:14px;color:var(--t2);white-space:nowrap;cursor:pointer;transition:color var(--ease)}
.tabs a::after{content:"";position:absolute;left:12px;right:12px;bottom:-1px;height:3px;background:transparent;border-radius:3px 3px 0 0;transition:background var(--ease)}
.tabs a:hover{color:var(--k)}
.tabs a:hover::after{background:var(--g3)}
.tabs a.on{color:var(--k)}
.tabs a.on::after{background:var(--k)}
.tabs .cnt{font-weight:700;background:var(--g1);border-radius:999px;padding:1px 8px;color:var(--t2)}
.tabs .cnt.act{background:var(--k);color:var(--y)}
.tabs{overflow-y:hidden}
.rq-chips .cnt{margin-left:6px;font-weight:700;opacity:.75}
/* вкладки: на телефоне — в несколько строк; если строк больше трёх — «Раздел: … ▾» (app.js) */
.tabs-tg{display:none}
/* счётчики во вкладках и чипах — не меньше 12 px */
.tabs .cnt,.rq-chips .cnt{font-size:12px}
@media screen and (min-width:761px) and (max-width:1024px),screen and (min-width:761px) and (max-width:1199px) and (pointer:coarse){
  /* вкладки ГТИ и администратора — в две строки вместо обрезки «Ру…» */
  .tabs:has(> a[href^="/chief/"]),.tabs:has(> a[href^="/admin/"]){flex-wrap:wrap;gap:0 4px;padding:4px 16px;overflow:visible}
  .tabs:has(> a[href^="/chief/"]) a,.tabs:has(> a[href^="/admin/"]) a{height:44px;padding:0 10px}
  .tabs:has(> a[href^="/chief/"]) a::after,.tabs:has(> a[href^="/admin/"]) a::after{left:10px;right:10px;bottom:4px}
}
@media (min-width:1101px){
  .tabs:has(> a[href^="/ppo/"]){flex-wrap:wrap;column-gap:8px;row-gap:0}
}
@media screen and (min-width:761px) and (max-width:1100px){
  /* вкладки ППО шире экрана — без замеров в JS (раньше класс ставился после загрузки и раскладка прыгала):
     761–1100 px — «Раздел: … ▾» со списком в 2 колонки (кнопку .tabs-tg создаёт блок «вкладки на телефоне»;
     без JS кнопки нет — вкладки прокручиваются, как раньше); только у кабинета техинспектора (ссылки /ppo/…, есть «Отчёт 19-ТИ»; вкладки ГТИ /chief/reports не трогаем),
     у уполномоченного две вкладки и так помещаются; шире 1100 px — перенос во вторую строку (только когда
     вкладкам не хватает места) */
  .tabs:has(> .tabs-tg):has(> a[href^="/ppo/"][href*="/report"]){flex-wrap:wrap;gap:4px 8px;padding:0 32px;overflow:visible}
  .tabs:has(> a[href^="/ppo/"][href*="/report"])>.tabs-tg{display:flex;align-items:center;gap:8px;width:100%;min-height:52px;padding:0;border:0;background:none;font:700 15px Manrope,Inter,system-ui,sans-serif;color:var(--k);text-align:left;cursor:pointer}
  .tabs:has(> a[href^="/ppo/"][href*="/report"])>.tabs-tg .tg-v{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .tabs:has(> a[href^="/ppo/"][href*="/report"])>.tabs-tg .tg-c{margin-left:auto;transition:transform var(--ease)}
  .tabs.open:has(> a[href^="/ppo/"][href*="/report"])>.tabs-tg .tg-c{transform:rotate(180deg)}
  .tabs:has(> .tabs-tg):has(> a[href^="/ppo/"][href*="/report"]):not(.open)>a{display:none}
  .tabs:has(> .tabs-tg):has(> a[href^="/ppo/"][href*="/report"])>a{flex:1 1 calc(50% - 4px);height:44px;padding:0 12px;border-radius:6px}
  .tabs:has(> .tabs-tg):has(> a[href^="/ppo/"][href*="/report"])>a::after{display:none}
  .tabs:has(> .tabs-tg):has(> a[href^="/ppo/"][href*="/report"])>a.on{background:var(--y-soft);box-shadow:inset 3px 0 0 var(--k)}
  .tabs.open:has(> .tabs-tg):has(> a[href^="/ppo/"][href*="/report"]){padding-bottom:10px}
}
@media screen and (max-width:760px){
  .tabs{flex-wrap:wrap;gap:0 4px;padding:4px 12px;overflow:visible}
  .tabs a::after{left:10px;right:10px;bottom:4px}
  .tabs.tabs-dd{padding:0 16px}
  .tabs.tabs-dd .tabs-tg{display:flex;align-items:center;gap:8px;width:100%;min-height:48px;padding:0;border:0;background:none;font:700 15px Manrope,Inter,system-ui,sans-serif;color:var(--k);text-align:left;cursor:pointer}
  .tabs-tg .tg-k{color:var(--t2);font-weight:600}
  .tabs-tg .tg-v{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .tabs-tg .tg-c{margin-left:auto;transition:transform var(--ease)}
  .tabs.open .tabs-tg .tg-c{transform:rotate(180deg)}
  .tabs.tabs-dd:not(.open) a{display:none}
  .tabs.tabs-dd a::after{display:none}
  .tabs.tabs-dd a.on{background:var(--y-soft);box-shadow:inset 3px 0 0 var(--k)}
  .tabs.tabs-dd.open{padding-bottom:8px}
}

/* ==== 4. Раскладка страницы: заголовок, блоки, строка пути, плашки, подвал ==== */
main.main{flex:1}
svg.i{width:16px;height:16px;flex:none;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
svg.i.lg{width:20px;height:20px}
.page{padding:32px;display:flex;flex-direction:column;gap:24px}
.ph{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap}
.ph h1{font-size:28px;font-weight:800;line-height:1.2}
.ph .sub{color:var(--t3);font-size:14px;margin-top:4px}
.block{background:var(--g1);border-radius:var(--r2);padding:24px}
.block-h{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.block-h h2{font-size:18px;font-weight:800}
.muted{color:var(--t3)}
.live{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--t2)}
.live i{width:8px;height:8px;border-radius:50%;background:#22A04B;box-shadow:0 0 0 3px #CDEBD6}
.saved{display:inline-flex;gap:6px;border-radius:6px;background:#fff;border:1px solid var(--g3);font-size:12px;font-weight:600;color:var(--ok)}
footer.ft{border-top:1px solid var(--g2);padding:16px 32px;font-size:12px;color:var(--t3);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}
.flash{background:var(--ok-bg);color:var(--ok);border-radius:var(--r);padding:10px 16px;margin:16px 32px 0;font-weight:600}
.errpage{max-width:520px;margin:64px auto;text-align:center}
fieldset.block legend{font-size:16px;font-weight:800;padding:0;margin-bottom:12px}
.badge .i{width:14px;height:14px}
.main{min-width:0}
.mcount .i{width:12px;height:12px}
.vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* отчёт 19-ТИ — размеры иконок классами (CSP), код строки под названием на телефоне,
   карандаш правки в ячейке значения; форма отчёта одной строкой */
svg.i.i12{width:12px;height:12px}
svg.i.i14{width:14px;height:14px}
/* доступность — skip-link, фокус на тёмном, reduced-motion; шапка с кратким
   названием и именем ППО на телефоне; поля правки и пояснений в отчёте */
.skip{position:absolute;left:16px;top:-200px;z-index:100;padding:10px 16px;border-radius:var(--r);background:var(--k);color:var(--y);font-weight:700;text-decoration:none}
.skip:focus{top:8px}
.skip:focus-visible{outline-color:var(--k)}
main.main:focus{outline:0}
/* плашка «Сохранено/Отменено: …» — длинный текст переносится, рамка растёт вместе с ним */
.saved{height:auto;min-height:28px;padding:4px 10px;line-height:1.35;white-space:normal;max-width:100%;align-items:flex-start}
/* доступность (В17)
   .sr-only — текст только для экранного доступа (подписи таблиц <caption>, объявления aria-live):
   визуально скрыт, но читается скринридером; при фокусе (если элемент фокусируемый) — виден. */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}
.pwnag-t{flex:1 1 240px}
.pwnag-a{font-weight:700;color:var(--k);text-decoration:underline;display:inline-flex;align-items:center;min-height:44px;padding:0 8px}
@media screen and (max-width:760px){
  .page{padding:20px 16px}
}

/* ==== 5. Кнопки, ссылки-кнопки, переключатели ==== */
/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border-radius:var(--r);border:1.5px solid transparent;font-weight:600;font-size:14px;cursor:pointer;white-space:nowrap;transition:background var(--ease),border-color var(--ease),color var(--ease),transform var(--ease)}
.btn:active{transform:translateY(1px)}
.btn-k{background:var(--k);color:#fff}
.btn-k:hover{background:#333}
.btn-y{background:var(--y);color:var(--k);border-color:var(--k)}
.btn-y:hover{background:#FFDD3D}
.btn-o{background:#fff;color:var(--k);border-color:var(--line)}
.btn-o:hover{border-color:var(--k)}
.btn-s{height:32px;padding:0 12px;font-size:13px}
/* segmented & selects */
.seg{display:inline-flex;background:#fff;border:1.5px solid var(--line);border-radius:var(--r);padding:2px}
.seg button{height:32px;padding:0 14px;border:0;background:transparent;border-radius:6px;font-weight:600;font-size:13px;cursor:pointer;color:var(--t2);transition:background var(--ease),color var(--ease)}
.seg button:hover{color:var(--k)}
.seg button.on{background:var(--k);color:var(--y)}
.form .btn{height:48px;font-size:15px}
.btn.red{color:var(--bad)}
.btn.red:hover{border-color:var(--bad)}
.is-saving .btn-y{opacity:.6;pointer-events:none}
a.btn{text-decoration:none}
.seg a:hover{color:var(--k)}
.seg a.on{background:var(--k);color:var(--y)}
/* удаление ППО: красная кнопка, неактивна до совпадения логина; перечень удаляемого */
.btn-r{background:var(--bad);color:#fff;border-color:var(--bad)}
.btn-r:hover{background:#7F1C15}
.btn-r:disabled,.btn-r[disabled]{opacity:.45;cursor:not-allowed}
@media screen and (max-width:760px){
  .form-acts .btn{flex:1}
  .ph .seg{flex-wrap:wrap}
  .btn,.btn-s,.form .btn{height:auto;min-height:44px}
  .tcards td.tc-acts .acts>.btn{flex:1 1 140px}
}
@media (prefers-reduced-motion:reduce){
  .btn:active{transform:none}
}

/* ==== 6. Формы и поля: подписи, ошибки, файл, флажки ==== */
button,input,select,textarea{font:inherit;color:inherit}
.ph .sp{flex:1}
.block-h .sp{flex:1}
.lnk{display:inline-flex;align-items:center;gap:6px;background:none;border:0;padding:6px 2px;min-height:32px;font-weight:600;font-size:13px;cursor:pointer;text-decoration:underline;text-decoration-color:var(--g3);text-underline-offset:4px;transition:text-decoration-color var(--ease)}
.lnk:hover{text-decoration-color:var(--k)}
.lnk.red{color:var(--bad)}
.sel{position:relative;display:inline-flex;align-items:center}
.sel select{appearance:none;height:40px;padding:0 36px 0 12px;border-radius:var(--r);border:1.5px solid var(--line);background:#fff;font-weight:600;font-size:13px;cursor:pointer;transition:border-color var(--ease);min-width:0;max-width:100%}
.sel select:hover{border-color:var(--k)}
.sel svg{position:absolute;right:12px;pointer-events:none}
.sel label{font-size:12px;color:var(--t3);margin-right:8px;font-weight:500}
.form{width:100%;max-width:380px;display:flex;flex-direction:column;gap:20px}
.form h2{font-size:24px;font-weight:800}
.hint{font-size:12px;color:var(--t3)}
p.hint{display:flex;gap:8px;align-items:flex-start}
.err{background:var(--bad-bg);color:var(--bad);border-radius:var(--r);padding:10px 12px;font-size:13px;font-weight:600}
/* admin: формы, одноразовый пароль */
.rowform{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px}
.rowform input{height:32px;border-radius:var(--r);border:1.5px solid var(--line);background:#fff;padding:0 10px;font-size:13px;min-width:200px;color:var(--k)}
.rowform input:focus{outline:2px solid var(--k);outline-offset:2px;border-color:var(--k)}
.rowform label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:var(--t2)}
.rowform label input{height:40px;font-size:14px;min-width:260px}
.rowform.block{align-items:flex-end;margin-top:12px}
.rowform input[type=file]{height:auto;padding:6px 8px;max-width:100%}
.rowform .hint{font-size:12px;color:var(--t3)}
details>summary{list-style:none;cursor:pointer}
details>summary::-webkit-details-marker{display:none}
.rec-form{display:flex;flex-direction:column;gap:20px;max-width:820px}
.dgrid{display:grid;grid-template-columns:1fr 1fr;gap:16px 20px}
.f{display:flex;flex-direction:column;gap:6px;min-width:0}
.f.wide{grid-column:1/-1}
.f>label{font-size:13px;font-weight:600}
.f input,.f select,.f textarea{width:100%;min-height:44px;border-radius:var(--r);border:1.5px solid var(--line);background:#fff;padding:0 12px;font-size:15px;transition:border-color var(--ease),box-shadow var(--ease)}
.f textarea{padding:10px 12px;resize:vertical;font-family:inherit}
.f input:hover,.f select:hover,.f textarea:hover{border-color:var(--t2)}
.f input:focus,.f select:focus,.f textarea:focus{outline:2px solid var(--k);outline-offset:2px;border-color:var(--k)}
.f input::placeholder,.f textarea::placeholder{color:var(--t3)}
.ferr{color:var(--bad);font-size:13px;font-weight:600}
label.flag{display:flex;align-items:center;gap:8px;font-weight:600}
label.flag input{width:20px;min-height:20px;height:20px}
.form-acts .sp{flex:1}
.saving{font-size:13px;color:var(--t2);font-weight:600}
.failbar{background:var(--bad-bg);color:var(--bad);border-radius:var(--r);padding:10px 12px;font-size:13px;font-weight:600}
.rec-meta{margin:0;font-size:12px;color:var(--t3)}
.dinp{height:40px;border-radius:var(--r);border:1.5px solid var(--line);background:#fff;padding:0 10px;font-size:13px;font-weight:600}
fieldset.rec-fs{border:0;margin:0;padding:0;min-width:0}
fieldset.rec-fs.block{padding:24px}
.rec-fs>.dgrid{margin-top:12px}
.rowform select{height:32px;border-radius:var(--r);border:1.5px solid var(--line);background:#fff;padding:0 8px;font-size:13px;color:var(--k)}
.fhint{font-size:12px;color:var(--t3)}
/* подтверждения, фильтры, свод, вход, ошибки */
.sel select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23111' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:12px 8px}
.rowform label .ferr{font-weight:600}
.f .hint{font-size:13px}
/* описание нарушения, основание, примечание — поле растёт по тексту */
.rec-form textarea{field-sizing:content;min-height:calc(3lh + 20px);max-height:70vh}
/* флажки и переключатели — в цвет интерфейса, а не системные синие */
input[type=checkbox],input[type=radio]{accent-color:var(--k)}
/* поле файла (все страницы — шаблон _file.html) на телефоне: кнопка «Выбрать файл» на всю ширину и имя файла
   строкой ниже (системное поле резало «Файл не выбран» до «Файл…бран»); само поле — прозрачное поверх кнопки,
   фокус с клавиатуры — у него (рамка рисуется на кнопке) */
.mfa-file .mfa-file-b,.mfa-file .mfa-file-n{display:none}
.pwe-eye:hover{background:var(--g1);color:var(--k)}
.pwe-eye[aria-pressed="true"]{color:var(--k)}
/* простой вход для пользователей 40+ (ADR-018)
   Подсказка под «Неверный логин или пароль» и живые предупреждения «Включён Caps Lock» / «русская раскладка». */
.pwe-errh{display:block;margin-top:4px;font-weight:500}
.pwe-warn{display:flex;align-items:flex-start;gap:6px;font-size:14px;font-weight:600;color:var(--warn);background:var(--warn-bg);border-radius:6px;padding:6px 10px}
.pwe-warn:empty{display:none}
@media (min-width:1400px){
  /* на широком экране длинные формы (обращение, НС, сведения о ППО) — поля в три колонки
     на ширину до 1240 px: форма короче, справа нет пустой половины экрана. Окно по центру не трогаем. */
  main .rec-form{max-width:1240px}
}
@media screen and (max-width:760px){
  .dgrid{grid-template-columns:1fr}
  input,select,textarea{font-size:16px}
  .lnk{min-height:44px}
  label.flag{min-height:44px}
  .rowform input,.rowform select,.rowform label input{height:44px}
  .sel select{height:44px}
  .dinp{height:44px}
  input[type=file]::file-selector-button{min-height:44px;padding:0 14px;margin-right:10px;border:1.5px solid var(--line);border-radius:var(--r);background:#fff;font-weight:600}
  .tcards td.tc-acts .rowform input{flex:1 1 180px;min-width:0}
  /* сильнее .rowform label{display:flex} */
  .mfa-file.mfa-file-js{position:relative;display:flex;flex-direction:column;gap:8px}
  .mfa-file.mfa-file-js input[type=file]{position:absolute;left:0;top:0;width:100%;height:48px;padding:0;margin:0;opacity:0;cursor:pointer;z-index:1}
  .mfa-file-js .mfa-file-b{display:flex;width:100%;height:48px;justify-content:center}
  .mfa-file-js .mfa-file-n{display:block;font-size:14px;color:var(--t2);overflow-wrap:anywhere}
  .mfa-file-js .mfa-file-n.on{color:var(--k);font-weight:600}
  .mfa-file-js input[type=file]:focus-visible+.mfa-file-b{outline:2px solid var(--k);outline-offset:2px}
  .rowform .mfa-file-js label.mfa-file-b{flex-direction:row;align-items:center;gap:8px;font-size:15px;font-weight:700;color:var(--k)}
}
@media screen and (max-width:600px){
  .rowform label{flex:1 1 100%;min-width:0}
  .rowform label input{min-width:0;width:100%}
}
@supports (-webkit-touch-callout:none){
  input[type=date]::-webkit-date-and-time-value,input[type=time]::-webkit-date-and-time-value,input[type=datetime-local]::-webkit-date-and-time-value{text-align:left;margin:0}
}

/* ==== 7. Таблицы: общий вид, статусы, сортировка, карточный вид строк на телефоне, страницы ==== */
.num,table{font-variant-numeric:tabular-nums}
/* tables */
.tw{position:relative;overflow-x:auto;background:#fff;border-radius:var(--r);border:1px solid var(--g2)}
table{width:100%;border-collapse:collapse;font-size:14px}
th{text-align:left;font-weight:600;font-size:12px;color:var(--t3);padding:12px 16px;border-bottom:1px solid var(--g2);white-space:nowrap;background:#fff}
td{padding:14px 16px;border-bottom:1px solid var(--g2);vertical-align:middle}
tbody tr:last-child td{border-bottom:0}
tbody tr{transition:background var(--ease)}
tbody tr:hover{background:#FCFCF7}
th.r,td.r{text-align:right}
td .org{white-space:normal;font-weight:600;color:var(--k);text-decoration:none;cursor:pointer}
td .org:hover{text-decoration:underline}
.sm{font-size:12px;color:var(--t3)}
.bad-n{color:var(--bad);font-weight:600}
.st{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}
.st::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.st.ok{background:var(--ok-bg);color:var(--ok)}
.st.wip{background:var(--warn-bg);color:var(--warn)}
.st.no{background:var(--g1);color:var(--t3);border:1px dashed var(--g3)}
.st.bad{background:var(--bad-bg);color:var(--bad)}
/* «Отправлен» — ждёт решения ГТИ: самый заметный статус */
.st.act{background:var(--k);color:var(--y)}
.prog{display:flex;align-items:center;gap:8px}
.mcount{display:inline-flex;align-items:center;gap:6px;height:24px;min-width:24px;padding:0 8px;border-radius:6px;background:var(--y);color:var(--k);font-weight:700;font-size:12px;border:1px solid var(--y-line)}
.zero{color:#8A8A8A}
.kind{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:6px;font-size:12px;font-weight:600;border:1px solid var(--g3);background:#fff;white-space:nowrap}
.acts{display:flex;gap:8px;justify-content:flex-end}
.acts{flex-wrap:wrap;align-items:flex-start}
.badge.ok{background:var(--ok-bg);color:var(--ok)}
.badge.wip{background:var(--warn-bg);color:var(--warn)}
.badge.bad{background:var(--bad-bg);color:var(--bad)}
.err .badge{margin-right:6px}
a.rowlink:hover{text-decoration:underline}
.st.none{background:transparent;color:var(--t3);padding:0;font-weight:500}
.pager{display:flex;gap:16px;margin:16px 0}
/* карточка НС: ссылки на журнал с фильтром */
/* длинные названия ППО в таблицах — до 2 строк, полностью — в подсказке (п. 10) */
.orgname{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}
/* сортировка таблиц по клику на заголовок */
table[data-sort] th button{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:4px;font:inherit;color:inherit}
table[data-sort] th button:focus-visible{outline:3px solid var(--k);outline-offset:2px;border-radius:4px}
table[data-sort] th button::after{content:"↕";opacity:.35}
table[data-sort] th[aria-sort=ascending] button::after{content:"↑";opacity:1}
table[data-sort] th[aria-sort=descending] button::after{content:"↓";opacity:1}
table tfoot tr.tot td{font-weight:700;background:var(--y-soft);border-top:2px solid var(--g3)}
table tr[hidden]{display:none!important}
/* «Мелко» из отчёта аудита и замечания проверки очереди 1:
   1. Длинные страницы на телефоне (сводка ~13 000 px, журналы и журнал действий 19 000–22 000 px): плавающая
      «↑ Наверх» (общая для всех кабинетов — блок «очередь 3» в конце файла); в журналах
      МПО, ручных правках и журнале действий на телефоне 20 записей на странице (app/web/paging.per_page).
   2. «Сводка» карточками (телефон, планшет): заголовков колонок нет — сортировка списком «Сортировать»
      (app.js, те же колонки, что у заголовков); подпись «по нажатию на заголовок» скрыта.
   3. Названия ППО в карточках — целиком (без обрезки в две строки), чип статуса не рвётся посреди слова.
   4. ППО глазами ГТИ и администратора: название ППО в шапке и «ТИ: …» — в две строки, без многоточия.
   5. Свод: «Показатель» в широкой таблице переносится, а не обрезается; «по организациям» — название ППО
      до 3 строк (полностью — в подсказке), подпись группы столбцов прилипает справа от столбца ППО;
      чипы разделов 40 px на сенсорном экране; окно разбивки строки — длинные слова в названии ППО переносятся, таблица не шире окна («Доля» у края).
   6. «Выгрузить в Excel» на телефоне — со словом «Excel»; выгружать нечего — кнопки нет.
   7. Администратор: неактивная «Отменить» в шапке на телефоне скрыта (название МПО не обрезается);
      «Создать ППО из Excel» в подсказке окна — цель 44 px; поле файла — общее (_file.html, «очередь 2, часть A»);
      «Скачать шаблон» — кнопкой; «Формы 19-ТИ» на планшете — шрифт списка 16 px; журнал действий —
      пустые поля карточки скрыты, «входы и выходы» — во всю строку слева. */
.q2b-sort{display:none}
/* заголовки строк таблиц (th scope="row")
   Первая (именная) ячейка строки — <th scope="row"> (скринридер называет строку при чтении числа).
   Вид прежний: правила ниже — копии правил «td» основной части файла для этих ячеек (td → th:where([scope=row]),
   та же специфичность, тот же порядок). Сначала сброс оформления заголовка столбца (th) до ячейки (td).
   ВНИМАНИЕ: меняя правило «td» таблиц отчёта, свода, сводки, списков ППО/уполномоченных и админки,
   поправьте и его копию здесь (тест tests/test_audit0910_3a_ui.py сверяет копии с оригиналами). */
th:where([scope=row]){text-align:start;font-weight:inherit;font-size:inherit;color:inherit;white-space:inherit;background:transparent;line-height:inherit}
th:where([scope=row]){padding:14px 16px;border-bottom:1px solid var(--g2);vertical-align:middle}
tbody tr:last-child th:where([scope=row]){border-bottom:0}
@media screen and (min-width:761px) and (max-width:1024px),screen and (min-width:761px) and (max-width:1199px) and (pointer:coarse){
  /* 9: планшет — карточки */
  table.tcards.tc-tab,table.tc-tab tbody,table.tc-tab tr,table.tc-tab td{display:block;width:100%}
  table.tc-tab[data-sort] thead{display:none}
  table.tc-tab tbody{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
  table.tc-tab tbody tr:only-child{grid-column:1/-1}
  table.tc-tab tr{display:flex;flex-direction:column;padding:12px 14px;border-bottom:1px solid var(--g2)}
  table.tc-tab tbody tr:nth-child(odd){border-right:1px solid var(--g2)}
  table.tcards.tc-tab td{display:flow-root;padding:4px 0 4px 120px;border:0;text-align:left;white-space:normal;min-width:0;max-width:none;overflow-wrap:anywhere}
  table.tcards.tc-tab td::before{content:attr(data-label);float:left;width:110px;margin:2px 0 0 -120px;font-size:12px;line-height:1.35;font-weight:600;color:var(--t3);overflow-wrap:normal;hyphens:auto}
  table.tcards.tc-tab td.tc-h{order:-1;padding:0 0 6px;font-size:16px}
  table.tcards.tc-tab td.tc-h::before,table.tcards.tc-tab td[colspan]::before,table.tcards.tc-tab td[data-label=""]::before{content:none}
  table.tcards.tc-tab td.r{text-align:left}
  table.tcards.tc-tab td.nw{white-space:normal}
  table.tcards.tc-tab td.tc-x{display:none}
  table.tc-tab tfoot{display:block}
  table.tc-tab tfoot tr.tot{background:var(--y-soft)}
  table.tc-tab th:where([scope=row]){display:block;width:100%}
  table.tcards.tc-tab th:where([scope=row])::before{content:attr(data-label);float:left;width:110px;margin:2px 0 0 -120px;font-size:12px;line-height:1.35;font-weight:600;color:var(--t3);overflow-wrap:normal;hyphens:auto}
  table.tcards.tc-tab th:where([scope=row]).tc-h{order:-1;padding:0 0 6px;font-size:16px}
  table.tcards.tc-tab th:where([scope=row]).tc-h::before{content:none}
}
@media screen and (max-width:1024px),screen and (max-width:1199px) and (pointer:coarse){
  .q2b-sorth{display:none}
  table.tc-tab td.tc-h .orgname{display:block;-webkit-line-clamp:unset;overflow:visible}
}
@media screen and (max-width:760px){
  /* карточный вид строк: на телефоне строка таблицы — карточка «подпись: значение» (data-label),
     действия — отдельной строкой во всю ширину; на десктопе таблица без изменений */
  table.tcards,.tcards tbody,.tcards tr,.tcards td{display:block;width:100%}
  .tcards thead tr{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0)}
  .tcards tr{display:flex;flex-direction:column;padding:12px 14px;border-bottom:1px solid var(--g2)}
  .tcards tbody tr:last-child{border-bottom:0}
  table.tcards td{display:flow-root;padding:4px 0 4px 120px;border:0;text-align:left;white-space:normal;min-width:0;overflow-wrap:anywhere}
  .tcards td::before{content:attr(data-label);float:left;width:110px;margin:2px 0 0 -120px;font-size:12px;line-height:1.35;font-weight:600;color:var(--t3);overflow-wrap:normal;hyphens:auto}
  .tcards td.tc-h{order:-1;padding:0 0 6px;font-size:16px}
  .tcards td.tc-h::before,.tcards td.tc-acts::before,.tcards td[colspan]::before,.tcards td[data-label=""]::before{content:none}
  .tcards td[colspan],.tcards td[data-label=""]{padding-left:0}
  .tcards td.tc-acts{display:block;padding:10px 0 0}
  .tcards td.tc-acts .acts{justify-content:flex-start;flex-wrap:wrap;gap:4px 16px;white-space:normal}
  .tcards td.tc-acts details[open]{flex:1 1 100%}
  .tcards .st{white-space:normal;height:auto;min-height:24px;padding-top:2px;padding-bottom:2px}
  /* таблицы ГТИ на телефоне — карточки; второстепенные колонки (.tc-x) скрыты */
  .tcards td.tc-x{display:none}
  .tcards tfoot{display:block}
  .tcards tfoot tr.tot{background:var(--y-soft)}
  .tcards tfoot tr.tot td{background:transparent;border-top:0}
  table[data-sort] thead{display:none}
  .st{white-space:nowrap}
  table.tcards td.tc-h .orgname{display:block;-webkit-line-clamp:unset;overflow:visible}
  table.tcards td.tc-h .orgname,table.tcards td.tc-h a.org{overflow-wrap:break-word;word-break:normal;hyphens:auto}
  .tcards th:where([scope=row]){display:block;width:100%}
  table.tcards th:where([scope=row]){display:flow-root;padding:4px 0 4px 120px;border:0;text-align:left;white-space:normal;min-width:0;overflow-wrap:anywhere}
  .tcards th:where([scope=row])::before{content:attr(data-label);float:left;width:110px;margin:2px 0 0 -120px;font-size:12px;line-height:1.35;font-weight:600;color:var(--t3);overflow-wrap:normal;hyphens:auto}
  .tcards th:where([scope=row]).tc-h::before{content:none}
}
@media screen and (max-width:1024px),screen and (max-width:1199px) and (pointer:coarse){
  table.tc-tab th:where([scope=row]).tc-h .orgname{display:block;-webkit-line-clamp:unset;overflow:visible}
}
@media screen and (max-width:760px){
  table.tcards th:where([scope=row]).tc-h .orgname{display:block;-webkit-line-clamp:unset;overflow:visible}
  table.tcards th:where([scope=row]).tc-h .orgname,table.tcards th:where([scope=row]).tc-h a.org{overflow-wrap:break-word;word-break:normal;hyphens:auto}
}

/* ==== 8. Плитки-итоги: «Требует внимания», «На контроле», «Состояние системы» ==== */
.nsstats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.nstat{display:flex;flex-direction:column;gap:4px;background:#fff;border:1px solid var(--g2);border-radius:var(--r2);padding:16px 20px;min-width:0}
.nct{font-size:12px;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:.03em}
.nbig{font:800 32px/1.1 Manrope,Inter,system-ui,sans-serif}
.ncy{font-size:13px;color:var(--t2)}
.nct{hyphens:auto;overflow-wrap:break-word}
/* «Требует внимания» у ГТИ — плитки и таблица по организациям */
.q16-tiles{display:flex;flex-wrap:wrap;gap:12px}
.q16-tiles>.q16-tile{flex:1 1 150px}
.q16-tile:hover{box-shadow:0 4px 14px rgba(0,0,0,.08)}
.q16-tile.bad{border-left-color:var(--bad)}
.q16-tile.warn{background:var(--y-soft);border-color:#F7E38A;border-left-color:var(--y)}
.q16-n{font:800 28px/1.1 Manrope,Inter,system-ui,sans-serif}
.q16-tile.bad .q16-n{color:var(--bad)}
.q16-tile.warn .q16-n{color:var(--k)}
.q16-t{font-weight:700;font-size:14px;line-height:1.35;overflow-wrap:anywhere}
.q16-s{font-size:12px;color:var(--t3)}
.q16-info{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:14px}
.q16-c.bad{background:var(--bad-bg);color:var(--bad)}
.q16-c.warn{background:var(--warn-bg);color:var(--warn)}
.q16-c:hover{text-decoration:underline}
.st.q16-soon{box-shadow:inset 0 0 0 1.5px var(--warn)}
.nstat{position:relative}
.nstat:has(a.nbig.q13-tile){cursor:pointer;transition:border-color var(--ease)}
.nstat:has(a.nbig.q13-tile):hover{border-color:var(--k)}
.nstat a.nbig.q13-tile::after{content:"";position:absolute;inset:0}
.nstat a.ncy.q13-tile{position:relative;z-index:1}
/* «На контроле» ППО — плитки из семейства «Требует внимания» (очередь 16)
   Одна сетка на всю ширину: 4 колонки (уже 1000px — 2, и на телефоне тоже 2). Раздел занимает столько колонок,
   сколько у него плиток (не больше колонок сетки), его плитки стоят в колонках общей сетки
   (subgrid) — плитки всех разделов одной ширины и выровнены; dense — короткий раздел занимает
   свободное место в ряду, чтобы справа не оставалось пустоты. */
.q21-allok{display:flex;align-items:center;gap:10px;margin:16px 0 0;padding:12px 16px;border-radius:var(--r2);background:var(--ok-bg);color:var(--ok);font-size:15px}
.q21-allok .i{flex:none}
.q21-wrap{container:q21/inline-size;margin-top:16px}
.q21-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 12px}
.q21-h{grid-column:1/-1;margin:0;font:700 12px/1.3 Manrope,Inter,system-ui,sans-serif;text-transform:uppercase;letter-spacing:.04em;color:var(--t2);overflow-wrap:anywhere}
.q21-n.q21-w{font-size:24px;line-height:1.2}
.q16-tile.act{border-left-color:var(--k)}
.q16-tile.ok{border-left-color:var(--ok)}
.q16-tile.ok .q16-n{color:var(--ok)}
a.q21-tile .q16-t{font-size:15px}
a.q21-tile .q16-s{font-size:13px;color:var(--t2);margin-top:auto}
a.q21-tile:hover .q16-t{text-decoration:underline;text-underline-offset:3px}
.q21-ok{display:flex;align-items:center;gap:10px;padding:14px 16px;border:1px dashed var(--g3);border-radius:var(--r2);color:var(--ok);font-weight:600;font-size:14px;line-height:1.4}
.q21-ok .i{flex:none}
.q21-ok span{color:var(--t2);font-weight:500}
.st3g-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.st3g-tiles>.q16-tile:hover{box-shadow:none}
.st3g-tiles .q16-n{font-size:22px;overflow-wrap:break-word;hyphens:auto}
.st3g-tiles .q16-tile.ok .q16-n{color:var(--ok)}
.st3g-act{margin-top:auto;padding-top:6px}
.st3g-sum.ok{color:var(--ok)}
.st3g-sum.warn{color:var(--k)}
.st3g-sum.bad{color:var(--bad)}
@media print,(min-width:761px){
  .chstats{gap:12px}
  .chstats .nstat{flex-direction:row;align-items:baseline;flex-wrap:wrap;column-gap:10px;row-gap:2px;padding:10px 16px}
  .chstats .nbig{font-size:22px}
  .chstats .ncy::before{content:"· ";color:var(--t3)}
}
@media screen and (min-width:761px) and (max-width:1024px),screen and (min-width:761px) and (max-width:1199px) and (pointer:coarse){
  .q16-t{hyphens:auto;overflow-wrap:break-word;word-break:normal}
}
@media screen and (max-width:900px){
  .nsstats{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* проверки */
.chstats{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:16px}
@media screen and (max-width:900px){
  .chstats{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media screen and (max-width:760px){
  .nct{letter-spacing:0}
  .nstat{padding:14px}
  .chstats{grid-template-columns:1fr}
  /* подписи плиток-итогов — не мельче 12 px */
  .nct{font-size:12px}
  /* на телефоне плитки-итоги компактнее — список начинается раньше */
  .chstats .nstat,.nsstats .nstat{padding:10px 12px}
  .nsstats{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .chstats .nbig,.nsstats .nbig{font-size:24px}
  .chstats .ncy,.nsstats .ncy{font-size:12px}
  .q16-n{font-size:22px}
  .q16-t{hyphens:auto;overflow-wrap:break-word;word-break:normal}
  .q16-tiles>.q16-tile{flex-basis:100%}
  .nct{hyphens:auto;overflow-wrap:break-word;word-break:normal}
  .nsstats:not(.chstats){display:grid;grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(140px,42%);overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;padding-bottom:4px}
  .nsstats:not(.chstats)>.nstat{scroll-snap-align:start}
  /* плитки над списками на телефоне — по одной в строку (подпись, число, уточнение рядом),
     длинные подписи («С неустранёнными») не рвутся посреди слова */
  .nsstats.chstats{grid-template-columns:1fr;gap:8px}
  .nsstats.chstats .nstat{flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:2px 10px;padding:10px 14px}
  .nsstats.chstats .nct{overflow-wrap:normal;word-break:normal}
  .st3g-tiles{grid-template-columns:1fr}
}
.q21-n{font-size:34px;font-variant-numeric:tabular-nums}
@media screen and (max-width:560px){
  .q21-grid{gap:18px 8px}
  .q21-n{font-size:28px}
  .q21-n.q21-w{font-size:19px}
  a.q21-tile .q16-t{font-size:14px;hyphens:auto}
  .q21-ok{grid-column:1/-1}
}
@media screen and (max-width:360px){
  .nsstats{grid-template-columns:1fr}
}
@media (pointer:coarse),screen and (max-width:760px){
  /* плитки сводки — нажимается вся плитка (растянутая ссылка цифры), подпись-ссылка — своя цель
     высотой 44 px без сдвига раскладки; отклик на нажатие */
  .nstat a.ncy.q13-tile{padding:12px 0;margin:-12px 0}
  .nstat:has(a.nbig.q13-tile):active{background:var(--g1)}
}
@container q21 (max-width:499px){
  /* на телефоне одиночная (или последняя нечётная) плитка раздела — на всю ширину */
  .q21-sec>.q21-tile:last-child:nth-child(even){grid-column:1/-1}
}
@container q21 (min-width:500px){
  .q21-sec.n1{grid-column:span 1}
}
@container q21 (min-width:1000px){
  .q21-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .q21-sec.n2{grid-column:span 2}
  .q21-sec.n3{grid-column:span 3}
  .q21-sec.n4{grid-column:span 4}
}
/* порядок разделов «На контроле» задаёт сервер (как на широком экране) — сетка не переставляет */
.q21-grid{grid-auto-flow:row}

/* ==== 9. Списки ППО: панель фильтров, поиск, плитки-итоги, «На контроле», «Показать ещё» ==== */
.filters{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.qinp{min-width:260px;font-weight:500}
.afilters .sel select{max-width:320px;text-overflow:ellipsis}
.afilters{justify-content:flex-start;gap:10px 16px}
.afilters .sel{flex:none}
/* выбранный фильтр заметен: чёрная рамка и жёлтый фон поля */
.filters .sel:has(select option:checked:not([value=""])) select,.filters .sel:has(.dinp[value]:not([value=""])) .dinp{border-color:var(--k);background-color:var(--y-soft)}
.filters .sel:has(select option:checked:not([value=""])) label,.filters .sel:has(.dinp[value]:not([value=""])) label{color:var(--k);font-weight:700}
.found{margin:12px 0;font-size:13px;font-weight:600;color:var(--t2)}
/* длинные тексты: 3 строки; в таблицах — «Показать полностью» (app.js), без JS — текст целиком */
.clamp3{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
.clamp.clamp-on:not(.open){display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
.clamp-more[hidden]{display:none}
.clamp-more{display:inline-flex;align-items:center;margin-top:2px;padding:0;border:0;background:none;font:600 12px Inter,system-ui,sans-serif;color:var(--k);text-decoration:underline;cursor:pointer}
.q13-fbox{margin:0}
.q13-fbox>summary.q13-fsum{display:none;list-style:none}
.q13-fbox>summary::-webkit-details-marker{display:none}
.q13-more{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:16px 0}
.q13-hint{display:flex;gap:8px;align-items:flex-start;margin:8px 0 16px;max-width:900px}
.q13-hint .i{flex:none;margin-top:2px}
.q13-bad{color:var(--bad);font-weight:700}
a.q13-tile:hover{text-decoration:underline}
/* длинное название ППО в фильтре не растягивает страницу */
.filters .sel{max-width:100%}
/* поиск и «только отключённые» над списками администратора */
.tfind{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin:0 0 12px}
.tfind input[type=search]{min-width:260px;height:36px;padding:0 10px;border:1px solid var(--line);border-radius:var(--r);font:inherit}
.tfind-off{display:inline-flex;align-items:center;gap:6px;font-size:13px;cursor:pointer}
.tfind .found{margin:0}
.q13-cards tbody tr:has(a.rowlink),tbody tr:has(a.q16-rowlink){cursor:pointer}
.q13-cards td.tc-h a.rowlink::after,a.q16-rowlink::after{content:"";position:absolute;inset:0}
tbody tr:has(a.q16-rowlink):hover td{background:var(--g1)}
.filters.chfilters{justify-content:flex-start}
/* списки ППО на телефоне: «Выгрузить в Excel» — значком, «Добавить …» и «Фильтры» в одну строку,
   плитки-итоги журнала НС — одной прокручиваемой полосой */
.teamhead>.q13-fbox{flex:1 1 100%;order:9}
/* списки ППО — одна аккуратная панель фильтров и плашка администратора в одну строку
   Панель (form.filters.q20b-fp): подпись над полем, все поля одной высоты (40 px), кнопки «Показать» и
   «Сбросить» — по нижнему краю полей. От 1400 px — одна строка (поиск шире), 761–1399 — сетка колонок
   одной ширины, кнопки в последней строке справа; на телефоне — столбик под кнопкой «Фильтры · год (N)».
   Год выбирается только в панели («Все годы» — первым пунктом), прежний переключатель «За год | Все годы» убран. */
.teamhead>.q13-fbox{margin-top:4px}
form.filters.q20b-fp{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;align-items:end;margin:0;padding:12px 14px 14px;background:#fff;border:1px solid var(--g2);border-radius:var(--r2)}
form.filters.q20b-fp .sel{display:flex;flex-direction:column;align-items:stretch;gap:4px;min-width:0;max-width:none;width:auto;flex:none}
form.filters.q20b-fp .sel label{flex:none;min-width:0;margin:0;font-size:12px;line-height:16px;font-weight:600;color:var(--t3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
form.filters.q20b-fp .sel select,form.filters.q20b-fp .sel .dinp,form.filters.q20b-fp .sel .qinp{display:block;width:100%;min-width:0;max-width:none;height:40px;flex:none}
form.filters.q20b-fp .sel .dinp{padding:0 8px 0 10px}
form.filters.q20b-fp .q20b-w2{grid-column:span 2}
form.filters.q20b-fp .q20b-fa{grid-column:-3/-1;display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0}
form.filters.q20b-fp .q20b-fa .btn{height:40px;padding:0 16px}
.q20b-rs{background:transparent;color:var(--t2);border-color:transparent;text-decoration:underline;text-decoration-color:var(--g3);text-underline-offset:4px;padding:0 10px}
.q20b-rs:hover{color:var(--k);text-decoration-color:var(--k)}
/* «Прочая деятельность»: три поля — колонки не растягиваются на всю ширину */
form.filters.q20b-fp.q20b-few{grid-template-columns:repeat(3,minmax(170px,220px)) auto;justify-content:start}
form.filters.q20b-fp.q20b-few .q20b-fa{grid-column:auto}
.q13-fsum .q20b-fy{font-weight:500;color:var(--t2);white-space:pre}
.q23>.found{margin:0 0 8px}
/* бесшовные списки (заказчик 08.10.2026): блок страницы списка #seam меняется на месте (htmx, app.js)
   Обёртка не меняет раскладку: её дети остаются детьми main.page (flex, gap). Пока идёт запрос, список
   чуть бледнеет — не сразу (быстрый ответ без мигания) и без сдвигов. */
.seam{display:contents}
html[data-seam-busy] #seam>*{opacity:.6;transition:opacity .15s ease .2s}
tbody tr:has(a.q16-rowlink):hover th:where([scope=row]){background:var(--g1)}
@media print,(min-width:761px){
  /* поля переносятся рядами, последний ряд поиск растягивает до кнопок — без пустых ячеек сетки */
  form.filters.q20b-fp.q23-fp{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px}
  form.filters.q20b-fp.q23-fp .q20b-fa{flex:none;justify-content:flex-start}
}
@media (pointer:coarse) and (min-width:761px){
  /* на сенсорных экранах шире телефона — цели нажатия не меньше 44 px (кабинет ГТИ и админ) */
  .afilters .btn-s,.ph .btn-s{height:44px}
}
@media (min-width:1400px){
  /* одна строка: поля делят ширину поровну (не шире 300 px), поиск — вдвое шире, кнопки сразу за полями */
  form.filters.q20b-fp{display:flex;flex-wrap:nowrap;align-items:flex-end;gap:12px}
  form.filters.q20b-fp .sel{flex:1 1 0;max-width:300px}
  form.filters.q20b-fp .q20b-w2{flex:2 1 0;max-width:560px}
  form.filters.q20b-fp .q20b-fa{flex:none;justify-content:flex-start}
  form.filters.q20b-fp.q20b-few .sel{flex:0 1 220px}
  form.filters.q20b-fp.q23-fp{flex-wrap:nowrap}
}
@media screen and (max-width:1000px){
  /* нумерация строк блоков карточки проверки (CSS-счётчик: верна после добавления и удаления) */
  /* списки проверок и уполномоченных — карточки до 1000 px (на планшете таблица не помещалась) */
  table.q13-cards,.q13-cards tbody,.q13-cards tr,.q13-cards td{display:block;width:100%}
  .q13-cards thead tr{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0)}
  .q13-cards tr{display:flex;flex-direction:column;padding:12px 14px;border-bottom:1px solid var(--g2)}
  .q13-cards tbody tr:last-child{border-bottom:0}
  table.q13-cards td{display:flow-root;padding:4px 0 4px 120px;border:0;text-align:left;white-space:normal;min-width:0;overflow-wrap:anywhere}
  .q13-cards td::before{content:attr(data-label);float:left;width:110px;margin:2px 0 0 -120px;font-size:12px;line-height:1.35;font-weight:600;color:var(--t3);overflow-wrap:normal;hyphens:auto}
  .q13-cards td.tc-h{order:-1;padding:0 0 6px;font-size:16px}
  .q13-cards td.tc-h::before,.q13-cards td.tc-acts::before{content:none}
  .q13-cards td.tc-acts{display:block;padding:10px 0 0}
  .q13-cards td.tc-acts .acts{justify-content:flex-start;flex-wrap:wrap;gap:4px 16px;white-space:normal}
  /* вся карточка нажимается (ссылка-заголовок растянута на строку), кнопки — поверх */
  .q13-cards tr{position:relative}
  .q13-cards td.tc-acts,.q13-cards td a:not(.rowlink){position:relative;z-index:1}
  .q13-cards th:where([scope=row]){display:block;width:100%}
  table.q13-cards th:where([scope=row]){display:flow-root;padding:4px 0 4px 120px;border:0;text-align:left;white-space:normal;min-width:0;overflow-wrap:anywhere}
  .q13-cards th:where([scope=row])::before{content:attr(data-label);float:left;width:110px;margin:2px 0 0 -120px;font-size:12px;line-height:1.35;font-weight:600;color:var(--t3);overflow-wrap:normal;hyphens:auto}
  .q13-cards th:where([scope=row]).tc-h::before{content:none}
  .q13-cards th:where([scope=row]).tc-h a.rowlink::after{content:"";position:absolute;inset:0}
}
/* строка таблицы / плитка / пункт нажимаются целиком
   (ссылка растянута на всю строку, остальные ссылки — поверх неё) */
.q13-cards tbody tr,tbody tr:has(a.q16-rowlink){position:relative}
.q13-cards td a:not(.rowlink),.q13-cards td.tc-acts,.q13-cards td form,
tbody tr:has(a.q16-rowlink) td a:not(.q16-rowlink),tbody tr:has(a.q16-rowlink) td button{position:relative;z-index:1}
.q13-cards th:where([scope=row]).tc-h a.rowlink::after{content:"";position:absolute;inset:0}
tbody tr:has(a.q16-rowlink) th:where([scope=row]) a:not(.q16-rowlink){position:relative;z-index:1}
@media screen and (max-width:760px){
  .qinp{min-width:0;width:100%}
  /* фильтры — в столбик */
  .filters{flex-direction:column;align-items:stretch}
  .filters .sel{display:flex;flex:none;width:100%}
  .filters>.btn,.filters>.lnk{align-self:flex-start}
  .clamp-more{min-height:44px}
  /* кнопки Word в строках списка проверок на телефоне не нужны — они есть в карточке */
  .q13-fbox>summary.q13-fsum{display:inline-flex;margin-bottom:12px}
  .q13-fbox[open]>summary.q13-fsum{margin-bottom:12px}
  /* подписи фильтров одной ширины, переносятся — поля начинаются ровно */
  .filters .sel label{flex:0 0 112px;min-width:0;white-space:normal}
  .tfind .sel{flex:1 1 100%}
  .tfind input[type=search]{min-width:0;width:100%;height:44px;font-size:16px}
  .tfind-off{min-height:44px}
  .ph+.teamhead>.q13-fbox{order:5;flex:0 0 auto;margin-top:0}
  .ph+.teamhead>.q13-fbox[open]{flex:1 1 100%;order:9}
  .ph+.teamhead>.q13-fbox>summary.q13-fsum,.ph+.teamhead>.q13-fbox[open]>summary.q13-fsum{margin-bottom:0}
  .ph+.teamhead>.q13-fbox[open]>.filters{margin-top:12px}
  /* телефон: год — мелкой второй строкой на кнопке «Фильтры», чтобы «Добавить …» оставалась в одну строку */
  .q13-fsum{padding:0 12px;gap:6px}
  .q13-fsum .q20b-ft{display:flex;flex-direction:column;align-items:flex-start;line-height:1.15}
  .q13-fsum .q20b-fy{font-size:12px}
  .q13-fsum .q20b-fd{display:none}
  form.filters.q20b-fp{display:flex;flex-direction:column;align-items:stretch;gap:10px;padding:12px}
  form.filters.q20b-fp .sel{width:100%}
  form.filters.q20b-fp .sel label{white-space:normal}
  form.filters.q20b-fp .sel select,form.filters.q20b-fp .sel .dinp,form.filters.q20b-fp .sel .qinp{height:44px}
  form.filters.q20b-fp .q20b-fa{justify-content:flex-start}
  form.filters.q20b-fp .q20b-fa .btn{height:44px;flex:1 1 0}
  .q13-fbox>summary.q13-fsum::after{content:"";width:8px;height:8px;margin-left:4px;border:solid currentColor;border-width:0 2px 2px 0;transform:translateY(-2px) rotate(45deg);transition:transform var(--ease)}
  .q13-fbox[open]>summary.q13-fsum::after{transform:translateY(2px) rotate(-135deg)}
  /* шапка списка: значок лупы у «Фильтры» не нужен — «Добавить …» помещается в одну строку */
  .ph+.teamhead .q13-fsum>.i{display:none}
  /* «Акт» и «Представление» в списке проверок видны и на телефоне */
  .insp-list.q13-cards td.tc-acts{display:block}
}
@media (pointer:coarse){
  /* «Показать полностью» — цель 44 px и на планшете с сенсорным экраном */
  .clamp-more{min-height:44px}
}
@media (prefers-reduced-motion:reduce){
  html[data-seam-busy] #seam>*{transition:none}
}

/* ==== 10. О ППО и коллектив ==== */
.teamhead{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.teamhead .sp{flex:1}
.yhint{color:var(--t3);font-size:13px;font-weight:600}
.scards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.scard{display:flex;flex-direction:column;gap:6px;background:#fff;border:1px solid var(--g2);border-left:4px solid var(--y);border-radius:var(--r2);padding:16px 20px;text-decoration:none;color:inherit;min-width:0;transition:border-color var(--ease),box-shadow var(--ease)}
a.scard:hover{border-color:var(--k);border-left-color:var(--k);box-shadow:var(--sh)}
.spost{font-size:12px;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:.03em}
.sfio{font:800 17px/1.3 Manrope,Inter,system-ui,sans-serif;overflow-wrap:anywhere}
.sline{display:flex;align-items:flex-start;gap:8px;font-size:13px;color:var(--t2);overflow-wrap:anywhere}
.sline svg{margin-top:2px;color:var(--t3)}
.arow{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:4px 20px;padding:10px 0;border-top:1px solid var(--g2)}
.alabel{font-size:13px;font-weight:600;color:var(--t3)}
.aval{font-size:15px;overflow-wrap:anywhere}
.omiss{color:var(--t3)}
/* регистрация НС */
.dsec{font:800 16px/1.3 Manrope,Inter,system-ui,sans-serif;margin-top:4px;padding-bottom:6px;border-bottom:1px solid var(--g2)}
.dsec:not(:first-child){margin-top:20px}
/* прочая деятельность */
.othblock{margin-top:28px}
.othh{font:800 18px/1.3 Manrope,Inter,system-ui,sans-serif;margin:0;min-width:0;overflow-wrap:anywhere}
.oi-sec .othh{display:flex;align-items:center;gap:8px}
/* «С чего начать» у новой ППО */
.q13-start{margin-bottom:24px;border-left:4px solid var(--y)}
.q13-start ol{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:8px}
.q13-start li.done{color:var(--t3)}
.q13-start li.done b::after{content:" ✓";color:var(--ok)}
/* О ППО (заказчик 07.10.2026) — плотная карточка без пустот и окно «Изменить данные»
   «Сведения» во всю ширину: крупное краткое название, ниже ячейки «подпись над значением»
   (телефон, 3 колонки от 1400 px, 2 — от 600, 1 — на телефоне). Под ними две карточки рядом:
   технический инспектор и численность для 19-ТИ (число — плашкой прямо у подписи, без разрыва).
   Прежние .apanels/.arow остаются для предпросмотра импорта, на этой странице не используются. */
.q18g{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;margin-top:16px}
.q18g-hd{display:flex;flex-direction:column;gap:4px;min-width:0}
.q18g-eb{margin:0;font:700 12px/1.3 Manrope,Inter,system-ui,sans-serif;text-transform:uppercase;letter-spacing:.04em;color:var(--t2)}
.q18g-name{font:800 24px/1.25 Manrope,Inter,system-ui,sans-serif;overflow-wrap:anywhere;text-wrap:balance}
.q18g-pn{font-size:20px}
.q18g-post{font-size:14px;color:var(--t2);overflow-wrap:anywhere}
.q18g-lb{font-size:12px;font-weight:600;color:var(--t3)}
.q18g-v{font-size:15px;overflow-wrap:anywhere}
a.q18g-lnk{transition:border-color var(--ease)}
a.q18g-lnk .q18g-v{font-weight:600;text-decoration:underline;text-decoration-color:var(--g3);text-underline-offset:4px}
a.q18g-lnk:hover .q18g-v{text-decoration-color:var(--k)}
a.q18g-lnk:focus-visible{outline:2px solid var(--k);outline-offset:2px}
.q18g-rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.q18g-row{display:flex;align-items:center;gap:14px;min-width:0;background:#fff;border:1px solid var(--g2);border-radius:var(--r);padding:6px 14px 6px 6px}
.q18g-num{flex:none;display:grid;place-items:center;min-width:44px;height:38px;padding:0 8px;border-radius:6px;background:var(--y-soft);border:1px solid var(--y-line);font:800 20px/1 Manrope,Inter,system-ui,sans-serif;font-variant-numeric:tabular-nums}
.q18g-num.omiss{background:var(--g1);border-color:var(--g3);color:var(--t3)}
.q18g-rl{min-width:0;font-size:14px;line-height:1.4;overflow-wrap:anywhere}
.q18g-code{font-family:Inter,system-ui,sans-serif;font-size:12px;font-weight:600;color:var(--t2);background:var(--g1);border-radius:4px;padding:1px 6px;white-space:nowrap}
.q18g-cnts{display:flex;flex-direction:column;margin-top:4px}
.q18g-cnts .f:first-child{border-top:0;padding-top:0}
.q18g-cnts .f>label{font-size:14px;font-weight:500;line-height:1.4}
.q18g-cnts .f .ferr{grid-column:1/-1}
.q18g-cnts .f input{text-align:center;font-weight:700}
/* запасная страница без JS: те же две колонки и на широком экране (не три) */
main .rec-form.q18g-page{max-width:980px;gap:0}
.q18g-page .form-acts{margin-top:24px}
.q18g.q20{grid-template-columns:minmax(0,1fr)}
/* карточка НС (заказчик 07.10.2026) — семейство карточки обращения (очередь 20)
   Шапка: дата и время, плашки (связь с производством, тяжесть, групповой, «мероприятия не внесены»),
   «Изменено» — под ними, «Изменить» справа. От 1100 px: слева «Происшествие» (тексты абзацами),
   справа столбиком «Пострадавший» (ФИО крупно) и «Последствия» (числа крупно) — колонки одной высоты;
   ниже рядом «Расследование» и «Мероприятия». На телефоне — одна колонка. */
.q18g.q22,.q18g.q22b{grid-template-columns:minmax(0,1fr)}
.q22-kpi .omiss{padding:6px 0 4px}
.q18g-cell.q22-on .q18g-v{font-weight:600}
@media (min-width:900px){
  .q18g{grid-template-columns:repeat(2,minmax(0,1fr))}
  .q18g-org{grid-column:1/-1}
}
@media (min-width:1100px){
  .q18g.q20{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}
  .q18g.q22{grid-template-columns:minmax(0,3fr) minmax(0,2fr);grid-template-areas:"inc vic" "inc cons";grid-template-rows:auto 1fr}
  .q18g.q22b{grid-template-columns:repeat(2,minmax(0,1fr))}
  .q28b-vpage .q18g-cells{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (min-width:1400px){
  .q18g-org .q18g-cells{grid-template-columns:repeat(3,minmax(0,1fr))}
  .q18g{grid-template-columns:minmax(0,2fr) minmax(0,3fr)}
  main .rec-form.q18g-page .q18g-fs .dgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (min-width:1600px){
  .q28b-vpage .q18g-cells{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media screen and (max-width:760px){
  .arow{grid-template-columns:1fr}
  .scards{grid-template-columns:1fr}
  /* шапка списка (сразу под заголовком): строка-итог; год и значок Excel; «Добавить …» и «Фильтры»;
       без выбора года значок Excel — в строке с «Добавить …» */
  .ph+.teamhead{gap:8px}
  .ph+.teamhead .yhint{flex:1 1 100%}
  .ph+.teamhead .sp{display:none}
  .ph .q18g-edit{width:100%;height:44px}
  .q18g-name{font-size:20px}
  .q18g-pn{font-size:18px}
}
@media (pointer:coarse),screen and (max-width:760px){
  /* числа-ссылки в строке-итоге списка («рассмотрено 32», «просрочено 3») — цель нажатия выше строки текста
     (поля строчного элемента раскладку не сдвигают) */
  .ph+.teamhead .yhint a{padding:12px 0}
}

/* ==== 11. Проверки: список и карточка ==== */
.insp-list .date{font-weight:700;white-space:nowrap}
.insp-list .acts{white-space:nowrap}
.insp-list td{padding-left:12px;padding-right:12px}
.insp-list .btn-s{padding:0 10px}
.insp-list td.nw{white-space:nowrap}
.insp-list .obj{font-weight:600;overflow-wrap:anywhere;min-width:180px}
.insp-list .chkind{display:block;font-weight:700}
.insp-list .chkind+.sm{display:block;margin-top:2px;max-width:260px}
.insp-list .badge{margin-left:6px}
.insp-list .acts{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.chfilters .sel select{max-width:240px;text-overflow:ellipsis}
.q16-card{max-width:820px}
.q16-dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px 24px;margin:0}
.q16-dl > div{min-width:0}
.q16-dl dt{font-size:12px;font-weight:600;color:var(--t3);margin-bottom:2px}
.q16-dl dd{margin:0;overflow-wrap:anywhere}
.q16-dl .wide{grid-column:1/-1}
.q16-cardhd{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.q16-stats{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.q16-del{max-width:820px;margin-top:32px;padding-top:16px;border-top:1px solid var(--g2);display:flex;justify-content:flex-end}
.q16-stats .badge:not(.ok):not(.wip):not(.bad){background:#fff}
.q16-card .rec-meta{margin-top:14px}
/* сводка — показатели сверху, таблица «По организациям» свёрнута */
/* не нужно целиться в цифру — строка таблицы «По организациям» целиком открывает
   «На контроле» этой ППО (числа и состояние отчёта — свои ссылки поверх); карточка «Несчастных
   случаев» целиком открывает журнал НС (тяжёлые/смертельные/групповые — свои ссылки поверх) */
/* карточка проверки — слева данные, справа нарушения и требования списком */
.q16-check{display:grid;grid-template-columns:minmax(300px,380px) minmax(0,1fr);gap:24px;align-items:start}
.q16-side{position:sticky;top:16px;min-width:0}
.q16-side .q16-card{max-width:none;padding:20px}
.q16-side .q16-dl{grid-template-columns:1fr 1fr;gap:12px 16px}
.q16-docs{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.q16-delrow{margin-top:14px;padding-top:12px;border-top:1px solid var(--g2)}
.q16-delrow .lnk{display:inline-flex;align-items:center;gap:6px;color:var(--bad);font-weight:600;padding:0}
.q16-main{display:flex;flex-direction:column;gap:28px;min-width:0}
.q16-it.is-bad{border-left-color:var(--bad)}
.q16-it.is-wip{border-left-color:var(--warn)}
.q16-it.is-ok{border-left-color:var(--ok)}
.q16-it-n{font:800 15px/1.4 Manrope,Inter,system-ui,sans-serif;color:var(--t3)}
.q16-it-b{min-width:0;display:flex;flex-direction:column;gap:4px}
.q16-it-t{font-weight:700;line-height:1.4;overflow-wrap:anywhere}
.q16-it-x{line-height:1.5;overflow-wrap:anywhere;white-space:pre-line}
.q16-it-m{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;font-size:13px;color:var(--t3);margin-top:2px}
.q16-it-a{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.q16-it-a form{margin:0}
.q16-chk{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:0 12px 0 8px;border-radius:var(--r);border:1.5px solid var(--line);background:#fff;color:var(--k);font:600 14px/1 Inter,system-ui,sans-serif;cursor:pointer;transition:border-color var(--ease),background var(--ease)}
.q16-chk:hover{border-color:var(--k)}
.q16-chk:focus-visible{outline:2px solid var(--k);outline-offset:2px}
.q16-box{display:grid;place-items:center;width:20px;height:20px;border-radius:5px;border:2px solid var(--t3);background:#fff}
.q16-chk.on{border-color:var(--ok);background:var(--ok-bg);color:var(--ok)}
.q16-chk.on .q16-box{border-color:var(--ok);background:var(--ok)}
.q16-chk.on .q16-box .i{opacity:1;color:#fff}
.q16-chk[disabled]{opacity:.6;cursor:progress}
.q16-ti{margin-top:2px}
.q27-no{font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:.01em}
.nsdate .q27-no{font-size:12px;font-weight:700;color:var(--t2);background:var(--g1);border-radius:4px;padding:1px 6px;margin-bottom:4px;align-self:flex-start}
.q27-code{font-family:Inter,system-ui,sans-serif;font-size:13px;font-weight:700;color:var(--t1,inherit);background:var(--g1);border-radius:4px;padding:1px 7px;white-space:nowrap;letter-spacing:.04em}
.q27-codein{text-transform:uppercase;letter-spacing:.06em;max-width:12ch}
/* строка «Итого» сводки ГТИ: подробности бывших карточек — мелко второй строкой */
.q28a-ft { display: block; font-size: 11.5px; font-weight: 400; color: var(--t3); white-space: nowrap; }
.q28a-fa { text-align: left; }
/* свод: база сравнения «по N ППО: было → стало» под изменением */
.q28a-base { display: block; font-size: 11px; color: var(--t3); white-space: nowrap; }
/* «Коллектив»: председатель и ТИ из «О ППО» */
.q28a-about { margin-bottom: 12px; }
.q28a-person { cursor: default; }
.q28a-extra { display: block; margin-top: 4px; overflow-wrap: anywhere; }
.q28a-edit { display: inline-block; margin-top: 6px; font-size: 13px; }
.q28a-hint { margin: -4px 0 8px; }
/* карточка проверки на телефоне: кнопки Word — над свёрткой «Подробнее» (на компьютере — внутри, как было) */
.q16-docs.mfa-docs{display:none}
@media (min-width:1001px){
  /* список проверок — документы в одну строку, объект не съедает ширину */
  .insp-list td.tc-acts .acts{flex-wrap:nowrap}
  .insp-list td.obj{max-width:560px}
  .insp-list .chkind{min-width:200px}
}
@media screen and (max-width:1100px){
  .q16-check{grid-template-columns:1fr}
  .q16-side{position:static}
}
@media screen and (max-width:1000px){
  .insp-list.q13-cards .obj,.insp-list.q13-cards .chkind+.sm{min-width:0;max-width:none}
}
@media screen and (max-width:760px){
  .insp-list .acts{justify-content:flex-start}
  .insp-list .obj,.insp-list .chkind+.sm{min-width:0;max-width:none}
  .q16-it-a{grid-column:1/-1;justify-content:flex-start}
  .q16-chk,.q16-it-a .btn{min-height:44px}
  .q16-side .q16-card{padding:14px 16px}
  .q16-card .q16-cardhd{margin-bottom:4px}
  .q16-card .q16-docs.mfa-docs{display:flex;margin:4px 0 8px}
  .q16-card .q16-docs.mfa-docs-in{display:none}
  .sv-orgs.tcards .q28a-ft{white-space:normal}
}
@media screen and (max-width:700px){
  .nsdate .q27-no{font-size:12px}
}

/* ==== 12. Обращения: карточка ==== */
/* карточка обращения — просмотр (правка в окне по центру), список — текст в 2 строки */
.q16b-hint{margin-bottom:12px;align-items:flex-start}
.q16b-clamp2{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}
/* карточка обращения (заказчик 07.10.2026) — в стиле «О ППО» (очередь 18г)
   Шапка: дата, статус, «ответ до» (просрочка — красным, как в списке), «Изменено» — сразу под ними,
   кнопки справа. От 1100 px первая строка — «Содержание» (тема заголовком, текст абзацем) и
   «Заявитель» (ФИО крупно, как инспектор на «О ППО») одной высоты; под ними во всю ширину
   «Рассмотрение»: дата, итог и результат в одну строку. На телефоне всё в одну колонку. */
.q20-ph{align-items:flex-start}
.q20-hd{display:flex;flex-direction:column;gap:8px;min-width:0}
.q20-st{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px}
.q20-due{font-size:14px;font-weight:600;color:var(--t2)}
.q20-due.q20-late{color:var(--bad)}
.q20-acts{display:flex;flex-wrap:wrap;gap:8px;align-self:center}
.q20-rev{grid-column:1/-1}
.q20-topic{font-size:22px}
.q20-p{margin:0;font-size:16px;line-height:1.55;white-space:pre-line;overflow-wrap:anywhere}
.q20-res{grid-column:1/-1}
.q20-revg .q20-par .q20-p{font-size:15px;line-height:1.5}
@media (min-width:1100px){
  .q20:not(.q20-long) .q20-revg{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,3fr)}
  .q20:not(.q20-long) .q20-res{grid-column:auto}
  .q20-long{grid-template-areas:"txt who" "txt rev";grid-template-rows:auto 1fr;align-items:start}
  .q20-long .q20-txt{grid-area:txt;align-self:stretch}
  .q20-long .q20-who{grid-area:who}
  .q20-long .q20-rev{grid-area:rev;grid-column:auto;align-self:stretch}
  .q20-long .q20-revg{flex:1;grid-template-rows:auto 1fr}
}
@media screen and (max-width:760px){
  .q20-acts{width:100%}
  .q20-topic{font-size:19px}
  .q20-p{font-size:15px}
}

/* ==== 13. Несчастные случаи: список и карточка ==== */
.nscards{display:flex;flex-direction:column;gap:12px}
.nscard{display:grid;grid-template-columns:110px minmax(0,1fr) auto;gap:8px 20px;align-items:start;background:#fff;border:1px solid var(--g2);border-left:4px solid var(--y);border-radius:var(--r2);padding:16px 20px;text-decoration:none;color:inherit;transition:border-color var(--ease),box-shadow var(--ease)}
.nscard:hover{border-color:var(--k);box-shadow:var(--sh)}
.nscard.ns-severe{border-left-color:var(--warn)}
.nscard.ns-fatal{border-left-color:var(--bad)}
.nscard.ns-nonwork{border-left-color:var(--g3)}
.nsdate{display:flex;flex-direction:column;font-weight:800;font-size:15px}
.nstime{font-size:13px;font-weight:600;color:var(--t3)}
.nsmain{display:flex;flex-direction:column;gap:4px;min-width:0;overflow-wrap:anywhere}
.nstopic{font:800 16px/1.3 Manrope,Inter,system-ui,sans-serif}
.nswho{font-size:13px;color:var(--t2)}
.nstext{font-size:14px}
.nsres{font-size:13px;color:var(--t2)}
.nsres.nomeas{color:var(--t3)}
.nstags{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.nscard.ap-in_work{border-left-color:var(--warn)}
.nscard.ap-done{border-left-color:var(--ok)}
.nscard.ap-overdue{border-left-color:var(--bad)}
.q22-nums.q22-one{grid-template-columns:minmax(0,1fr)}
.q22-big{font:800 30px/1.1 Manrope,Inter,system-ui,sans-serif;font-variant-numeric:tabular-nums}
@media (min-width:1100px){
  .q22-inc{grid-area:inc}
  .q22-vic{grid-area:vic}
  .q22-cons{grid-area:cons}
}
@media screen and (max-width:760px){
  .nscard{grid-template-columns:1fr}
  .nstags{flex-direction:row;flex-wrap:wrap;align-items:flex-start}
  .q22-big{font-size:26px}
}

/* ==== 14. Отчёт 19-ТИ ППО: таблица, правка строки, оглавление, кнопки, загрузка из Excel ==== */
/* report */
.rep-top{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.pill-k{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 12px;border-radius:999px;background:var(--k);color:var(--y);font-weight:700;font-size:13px}
.rep th:first-child,.rep td:first-child{width:56px}
.rep .code{font-family:Inter,system-ui,sans-serif;font-size:12px;font-weight:600;color:var(--t2);background:var(--g1);border-radius:4px;padding:2px 6px}
.rep .val{font:800 18px Manrope,Inter,system-ui,sans-serif;text-align:right;width:120px}
.src{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--t2)}
.src .dotv{width:6px;height:6px;border-radius:50%;background:var(--g3)}
.src.auto .dotv{background:var(--ok)}
.sec td{background:var(--g1);font:800 12px Manrope,Inter,system-ui,sans-serif;letter-spacing:.04em;text-transform:uppercase;color:var(--t2);padding:8px 16px}
.rep tbody tr.sec:hover{background:none}
tr.man td{background:var(--y-soft)}
tr.man td:first-child{box-shadow:inset 4px 0 0 var(--k)}
.man-badge{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:6px;background:var(--k);color:var(--y);font-size:12px;font-weight:700;white-space:nowrap}
.was{font:600 13px Inter,system-ui,sans-serif;color:var(--t3);text-decoration:line-through;margin-right:8px}
tr.pop td{padding:0 16px 16px;background:var(--y-soft)}
.popcard{position:relative;background:#fff;border:1.5px solid var(--k);border-radius:var(--r2);padding:16px 20px;display:grid;grid-template-columns:auto 1fr auto;gap:16px 24px;align-items:center;box-shadow:0 8px 24px rgba(0,0,0,.10);margin-left:56px}
.popcard::before{content:"";position:absolute;top:-8px;right:309px;width:14px;height:14px;background:#fff;border-left:1.5px solid var(--k);border-top:1.5px solid var(--k);transform:rotate(45deg)}
.chg{display:flex;align-items:center;gap:8px;font:800 22px Manrope,Inter,system-ui,sans-serif}
.chg .from{color:var(--t3);font-weight:700}
.chg small{display:block;font:600 11px Inter,system-ui,sans-serif;color:var(--t3);text-transform:uppercase;letter-spacing:.06em}
.why q{font-size:15px;font-weight:500;quotes:"«" "»"}
.why .meta{font-size:12px;color:var(--t3);margin-top:4px}
.errpage .code{font:800 72px Manrope,Inter,system-ui,sans-serif}
/* реестр уполномоченных */
.reps-tbl td.nw{white-space:nowrap}
/* Отчёт 19-ТИ */
.repyears{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}
.repyears a{padding:4px 12px;border-radius:999px;background:var(--g1);color:var(--t2);font-weight:600;text-decoration:none}
.repyears a.on{background:var(--k);color:var(--y)}
#rep{display:flex;flex-direction:column;gap:16px}
.repacts{display:flex;gap:8px;flex-wrap:wrap}
.repacts .btn[disabled]{opacity:.5;cursor:not-allowed}
.sendwhy{color:var(--t2)}
.repnote.bad{background:var(--bad-bg);color:var(--bad)}
.controls label{font-size:13px;font-weight:600}
.editions{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.edcard{border:1.5px solid var(--g3);border-radius:var(--r2);padding:16px;display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.edcard p{margin:0;font-size:13px;color:var(--t2)}
.edt{font:700 15px Manrope,Inter,system-ui,sans-serif}
.controls{display:flex;flex-direction:column;gap:8px}
.ctl{background:var(--warn-bg);border-radius:var(--r2);padding:12px 16px;display:flex;flex-direction:column;gap:8px}
.ctl-t{display:flex;gap:8px;flex-wrap:wrap;align-items:center;font-weight:600}
.ctl form{display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.ctl textarea{width:100%}
.rep tr.tot td{font-weight:700}
.rep tbody tr.pop:hover{background:none}
.rep tr.pop td{padding:0 16px 16px;background:#fff}
.rhint{display:inline-block;vertical-align:middle;margin-left:6px}
.rhint summary{cursor:pointer;display:inline-flex;width:20px;height:20px;border-radius:50%;background:var(--g1);align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--t2);list-style:none}
.rhint summary::-webkit-details-marker{display:none}
.rhint div{margin-top:6px;font-size:12px;color:var(--t2);max-width:520px;white-space:normal}
.rowviol{margin-top:4px;display:flex;gap:4px;flex-wrap:wrap}
.rowviol .badge{white-space:normal}
.prevc{white-space:nowrap}
.popcard form{margin:0}
.warnt{color:var(--warn);font-weight:600}
#rep>*{min-width:0}
.rep td:nth-child(2){min-width:180px}
.rep td.srcc{white-space:nowrap}
.fixbtn{display:inline-flex;align-items:center;justify-content:center;margin-left:8px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--k);cursor:pointer;vertical-align:middle;padding:0}
.fixbtn:hover{background:var(--g1)}
.fixbtn .i{width:14px;height:14px}
.rep tr.fixrow td{padding:0 16px 14px;background:var(--g1)}
.fixform{display:flex;gap:12px;flex-wrap:wrap;padding-top:12px}
.fixform .f1{display:flex;flex-direction:column;gap:4px}
.fixform .ferr{flex-basis:100%}
.rep .rhint{display:inline;margin-left:6px}
.rep .rhint summary{vertical-align:middle}
.rep .rhint[open]{display:block;margin-left:0}
.fixbtn{width:24px;height:24px}
.rep td{padding-top:6px;padding-bottom:6px}
.rep tr.pop td{padding-top:0}
/* загрузка 19-ТИ из Excel */
.imp-form{max-width:720px;gap:16px}
.imp-form input[type=file]{padding:10px 12px;height:auto}
.imp-fn{overflow-wrap:anywhere}
.imp-sum{display:flex;gap:16px 32px;flex-wrap:wrap;align-items:flex-end;margin:16px 0}
.imp-big{font:800 40px/1 Manrope,Inter,system-ui,sans-serif}
.imp-big small{display:block;font:600 11px Inter,system-ui,sans-serif;color:var(--t3);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}
.imp-ed{font:700 15px Manrope,Inter,system-ui,sans-serif;min-width:0;flex:1 1 240px}
#imp-errors{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
#imp-errors:empty{display:none}
.imp-warn{background:var(--warn-bg);border-radius:var(--r2);padding:12px 16px;margin-bottom:16px}
.imp-warn ul{margin:8px 0 0;padding-left:20px;display:flex;flex-direction:column;gap:4px;font-size:14px}
.imp-warn li{overflow-wrap:anywhere}
section.controls{margin-bottom:16px}
.imp-diff{margin:8px 0 16px;max-width:480px}
.imp-confirm{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}
.imp-confirm label.flag{font-size:14px;align-items:flex-start}
.imp-confirm label.flag input{flex:none;margin-top:1px}
.imp-tbl td:nth-child(2){min-width:160px}
.admin-eds .edcard{background:#fff}
.rcode{display:none}
.rep td.val{white-space:nowrap}
.rep td.val .fixbtn{margin:0 10px 0 0}
section.editions{display:block}
.edsw>summary,.ed-line{display:block;padding:12px 0;line-height:20px;font-size:14px}
.edsw>summary{cursor:pointer;list-style:none;border-radius:var(--r)}
.edsw>summary::-webkit-details-marker{display:none}
.ed-k{color:var(--t2);font-weight:600}
.ed-ch{font-weight:700;text-decoration:underline;text-underline-offset:3px}
.ed-ch::after{content:" ▾";display:inline-block;text-decoration:none}
.edsw[open] .ed-ch::after{content:" ▴"}
.edsw>summary:hover .ed-ch{color:var(--k)}
.edcards{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:8px}
section.editions>.ferr{margin-top:8px}
.fixform .f{gap:4px}
.ctl .f{width:100%}
.ctl .f textarea{padding:10px 12px;min-height:64px}
.imp-block{margin-bottom:16px}
/* возвращённый отчёт — точка на вкладке, плашка, статус на кнопках годов */
.q13-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--bad);margin-left:2px;flex:none}
.note.q13-ret a{color:var(--bad);font-weight:700}
.repyears a .q13-ys{font-weight:500}
.repyears a.q13-att.q13-ybad{background:var(--bad-bg);color:var(--bad);box-shadow:inset 0 0 0 1.5px var(--bad)}
.repyears a.q13-att.q13-ywip{background:var(--warn-bg);color:var(--warn);box-shadow:inset 0 0 0 1.5px var(--warn)}
.repyears a.on.q13-att{background:var(--k);color:var(--y);box-shadow:none}
/* числа нарушенного контроля, короткая метка в строке */
.q13-ctlnum{display:block;margin-top:2px;font-weight:700}
.q13-ctlmark:hover{text-decoration:underline}
/* ручная правка заметна и без колонки «Источник» (телефон) */
.q13-manmark{display:none;margin-right:6px;font-size:12px;font-weight:700;color:var(--warn)}
/* отчёт: «Ручных правок: 0» — неактивная плашка (п. 21); после решения — «Следующий в очереди» (п. 11) */
.pill-k.off{background:var(--g1);color:var(--t3)}
.q14-rep thead th{position:sticky;top:0;z-index:2;background:#fff;box-shadow:inset 0 -2px 0 var(--k);color:var(--t2)}
.q14-rep td{border-bottom:1px solid var(--g2)}
.q14-rep tbody tr.q14-l1:nth-child(even) td,.q14-rep tbody tr.q14-l2:nth-child(even) td{background:#FBFBFB}
/* раздел формы (1., 2., 3. …) — заметная граница сверху и полужирный текст */
.q14-rep tr.q14-l0 td{border-top:2px solid var(--g3);font-weight:600}
.q14-rep tr.q14-l0 td.num{font-weight:800}
.q14-rep tr.q14-l1 td:nth-child(2){padding-left:28px}
.q14-rep tr.q14-l2 td:nth-child(2){padding-left:44px;color:var(--t2)}
.q14-rep tr.q14-l1 td.num,.q14-rep tr.q14-l2 td.num{color:var(--t3);font-weight:500}
.q14-rep tr.sec td{background:var(--y-soft);border-top:2px solid var(--y-line);color:var(--k);letter-spacing:.03em}
.q14-rep .q14-secn{font-weight:800}
.q14-rep tr.tot td.val{font-size:19px}
/* ручная правка — тонкая метка, без заливки строки */
.q14-rep tr.man td{background:transparent}
.q14-rep tr.man td:first-child{box-shadow:inset 3px 0 0 var(--y-line)}
.q14-rep .q13-manmark{display:inline;color:var(--warn);font-size:13px}
.q14-rep .man-badge{background:transparent;color:var(--warn);height:auto;padding:0;font-weight:600}
.q14-rep .src{color:var(--t3)}
.q14-rep .src a{color:var(--t2)}
.q14-rep tr:hover .fixbtn,.q14-rep .fixbtn:focus-visible{border-color:var(--line);color:var(--k)}
.q14-rep tr.pop td{background:#fff}
.q14-ndraft{color:var(--warn);font-weight:700}
.q16-fix{font-weight:700}
.q16-blk{display:flex;flex-direction:column;gap:10px}
.q16-blk-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-height:40px}
.q16-cnt{display:inline-grid;place-items:center;min-width:26px;height:24px;padding:0 8px;border-radius:999px;background:var(--g1);font-size:13px;font-weight:700}
.q16-empty{margin:0;padding:16px;border:1px dashed var(--g3);border-radius:var(--r2);color:var(--t3)}
/* на телефоне показатели сводки ГТИ — компактной полосой 3×2, «Требует внимания» ближе к началу */
/* отчёт 19-ТИ не растягивается на весь широкий экран — цифры рядом с показателем;
   строка под курсором подсвечивается, чтобы глаз не терял её */
.q14-tw{max-width:1280px}
.q14-rep tbody tr:not(.sec):not(.pop):not(.fixrow):hover td{background:var(--y-soft)}
.q16-dn{display:block;font-weight:500;white-space:nowrap}
/* оглавление отчёта 19-ТИ слева от таблицы (на широком экране), текущий раздел подсвечен */
.q16-repwrap{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;align-items:start}
.q16-repnav{display:none}
.q14-rep tr[id]{scroll-margin-top:60px}
/* ручная правка строки отчёта — подписи и поля на одной линии (подсказка под «Причиной»
   больше не поднимает поле), кнопки — вровень с полями, поле причины шире */
.fixform{align-items:flex-start}
.fixform .f1>label{line-height:20px;min-height:20px}
.fixform>.btn{margin-top:24px;height:40px}
/* телефон и шапка отчёта 19-ТИ — динамика карточками, компактная шапка отчёта,
   шапки списков и карточка проверки на телефоне. Свёртка details[data-q16d-fold] — app.js. */
/* «Динамика по годам» карточками на телефоне — убрана в очереди 18 (динамика теперь в самой таблице отчёта) */
/* отчёт 19-ТИ: годы, статус и срок правки — одной строкой */
.q16d-repbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 20px}
.q16d-repbar .repyears{margin:0}
.q16d-repbar .rep-top{gap:8px 12px}
.q16d-warn .i.lg{margin-top:1px}
.q16d-wl{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;min-width:0}
.q16d-wd>summary{cursor:pointer;font-weight:600;text-decoration:underline;text-underline-offset:2px;width:fit-content}
.q16d-wd[open]{flex-basis:100%}
.q16d-wd p{margin:6px 0 0;color:var(--t2)}
/* кнопки отчёта: второстепенные — маленькие в одну строку, главное действие — рядом */
.q16d-acts{align-items:center}
.q16d-menu{display:block}
.q16d-menu>summary.q16d-msum{display:none;list-style:none}
.q16d-menu>summary::-webkit-details-marker{display:none}
.q16d-mlist{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.q16d-mlist form{margin:0}
.q16d-acts>form{margin:0}
/* карточка проверки: на компьютере данные целиком (строка-сводка скрыта), на телефоне — сводка и «Подробнее» */
.q16d-fold>summary.q16d-csum{display:none;list-style:none}
.q16d-fold>summary::-webkit-details-marker{display:none}
.q16-repnav ol+ol{border-top:1px solid var(--g2);margin-top:6px;padding-top:6px}
.q24-tbl td .q14-permit{margin-top:4px;white-space:normal;height:auto;line-height:1.3;padding-top:2px;padding-bottom:2px}
.svt .code{font-size:12px;font-weight:600;color:var(--t2);background:var(--g1);border-radius:4px;padding:2px 6px}
/* расхождение отчёта с журналами — под цифрой «в журнале N», плашка над таблицей */
.jdiff{display:block;margin-top:2px;font:600 11px Inter,system-ui,sans-serif;color:var(--bad);white-space:nowrap}
.jdiff-note .i{color:var(--bad)}
/* отчёт ППО: панель — над таблицей, в колонке рядом с оглавлением */
.repmain{min-width:0}
/* п. 6 (вкладки ППО шире экрана) — теперь без JS-замеров, чистым CSS: блок «очередь 2, часть A» в конце файла */
.mfa-hc{display:none}
/* «Перейти к разделу ▾» над таблицей отчёта — там, где нет оглавления слева (уже 1280 px) */
.mfa-jump{margin:0;background:#fff;border:1px solid var(--g2);border-radius:var(--r2)}
.mfa-jc{margin-left:auto;transition:transform var(--ease)}
.mfa-jump[open] .mfa-jc{transform:rotate(180deg)}
.mfa-jn{flex:none;display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;border:1.5px solid var(--g3);font-size:12px;font-weight:700;color:var(--t2)}
.rep th:where([scope=row]):nth-child(2){min-width:180px}
.q14-rep th:where([scope=row]){border-bottom:1px solid var(--g2)}
.q14-rep tbody tr.q14-l1:nth-child(even) th:where([scope=row]),.q14-rep tbody tr.q14-l2:nth-child(even) th:where([scope=row]){background:#FBFBFB}
.q14-rep tr.q14-l1 th:where([scope=row]):nth-child(2){padding-left:28px}
.q14-rep tr.q14-l2 th:where([scope=row]):nth-child(2){padding-left:44px;color:var(--t2)}
.q14-rep tbody tr:not(.sec):not(.pop):not(.fixrow):hover th:where([scope=row]){background:var(--y-soft)}
@media (min-width:1100px),screen and (max-width:760px){
  /* таблица отчёта: шапка залипает при прокрутке страницы (контейнер не прокручивается сам) */
  .q14-tw{overflow:clip}
}
@media (min-width:1280px){
  .q16-repnav{display:block;position:sticky;top:12px;max-height:calc(100vh - 24px);overflow:auto;background:#fff;border:1px solid var(--g2);border-radius:var(--r2);padding:8px}
  .q16-repnav ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
  .q16-repnav a:hover{background:var(--g1)}
  .q16-repnav a.on{background:var(--y-soft);font-weight:700}
  .q16-rn{flex:none;display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;border:1.5px solid var(--g3);font-size:12px;font-weight:700;color:var(--t2)}
  .q16-repnav a.on .q16-rn{border-color:var(--k);color:var(--k)}
  .q16-totop{margin-top:6px;border-top:1px solid var(--g2);border-radius:0 !important;font-size:13px !important;color:var(--t2) !important}
  .q16-repwrap .q14-tw{max-width:none}
  .q16-repwrap:has(.q18-on){grid-template-columns:240px minmax(0,1fr)}
  /* отчёт 19-ТИ на широком экране — таблица до правого края, без пустой полосы */
  .q16-repwrap{grid-template-columns:240px minmax(0,1fr)}
  .mfa-jump{display:none}
}
/* отчёт ППО: с динамикой таблица может быть шире 1280 px — ограничение снимается */
.q14-tw.q18-on{max-width:none}
.mfa-jump ol{list-style:none;margin:0;padding:0 8px 8px;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:2px 8px}
@media screen and (min-width:761px) and (max-width:1099px){
  /* отчёт 19-ТИ на 761–1099 px: столбец «Источник» переносится — таблица без прокрутки вбок */
  .q14-rep:not(.q18-on) td.srcc{white-space:normal}
}
@media screen and (max-width:1499px){
  /* до 1500 px — прокрутка в блоке (ревью: на 1400–1450 таблица с 5 годами могла обрезаться справа) */
  .q14-tw.q18-on{overflow-x:auto}
}
@media screen and (max-width:760px){
  .popcard{grid-template-columns:1fr;margin-left:0}
  .popcard::before{right:38px;left:auto}
  .editions{grid-template-columns:1fr}
  .imp-big{font-size:32px}
  .imp-tbl td:nth-child(2){min-width:0}
  /* отчёт: «Код» и «Источник» скрыты, код — мелко под названием, значения крупно */
  .rep .c-code,.rep .c-src{display:none}
  .rep .rcode{display:block;margin-top:2px;font-size:12px;font-weight:600;color:var(--t2)}
  .rep td:nth-child(2){min-width:0}
  .rep th,.rep td{padding-left:8px;padding-right:8px}
  .rep th:first-child,.rep td.num{width:1%;white-space:nowrap;padding-left:8px;padding-right:4px;font-size:13px}
  .rep th{white-space:normal}
  .rep th .prevnote{display:block}
  .rep td.val,.rep td.prevc{font-size:16px}
  .rep .val{width:auto}
  .rep td.val .fixbtn{margin-right:6px}
  .rep tr.pop td,.rep tr.fixrow td{padding-left:8px;padding-right:8px}
  .popcard{max-width:calc(100vw - 32px);padding:12px 14px;gap:10px}
  .popcard .chg{flex-wrap:wrap}
  .fixform .f1{flex:1 1 100%;min-width:0}
  .fixform .f1 input{width:100%;min-width:0}
  .edcards{grid-template-columns:1fr}
  .fixbtn{position:relative}
  .fixbtn::after{content:"";position:absolute;inset:-6px}
  .repyears a{display:inline-flex;align-items:center;min-height:44px;padding:0 16px}
  .rhint summary{position:relative;width:32px;height:32px}
  .rhint summary::after{content:"";position:absolute;inset:-6px}
  .q13-manmark{display:inline}
  .q14-rep tr.q14-l1 td:nth-child(2){padding-left:14px}
  .q14-rep tr.q14-l2 td:nth-child(2){padding-left:22px}
  .fixform>.btn{margin-top:0;height:44px}
  .q16d-repbar{gap:8px 12px}
  .q16d-repbar .repyears a{padding:0 12px}
  .q16d-menu{display:block;position:relative}
  .q16d-menu>summary.q16d-msum{display:inline-flex;gap:6px}
  .q16d-menu[open]>.q16d-mlist{position:absolute;z-index:20;top:calc(100% + 6px);left:0;min-width:260px;flex-direction:column;align-items:stretch;gap:4px;padding:8px;background:#fff;border:1px solid var(--g2);border-radius:var(--r2);box-shadow:0 8px 24px rgba(0,0,0,.14)}
  .q16d-mlist .btn{width:100%;justify-content:flex-start}
  .q16d-acts>form{flex:1 1 0;min-width:0}
  .ph+.teamhead .q16d-xl{order:6;width:44px;padding:0;flex:none}
  .q16d-xl .q16d-xt{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
  .ph+.teamhead .q16d-add{order:4;flex:1 1 0;min-width:0;white-space:normal;text-align:center}
  .q16d-fold>summary.q16d-csum{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;min-height:44px;cursor:pointer}
  .q16d-cs{font-weight:600;overflow-wrap:anywhere}
  .q16d-cm{font-weight:600;color:var(--t2);text-decoration:underline;text-underline-offset:2px}
  .q16d-fold[open] .q16d-cm{display:none}
  .q16d-fold[open]>summary.q16d-csum{margin-bottom:12px}
  .svph-t.q18-on tr.sec td:first-child{background:var(--g1)}
  .ph:has(+.q23-wrap) .q16d-xl{width:44px;height:44px;padding:0;flex:none;justify-content:center}
  /* с динамикой столбец «Показатель» узкий (150 px): «?» 32 px, цель нажатия — 44 px за счёт поля вокруг */
  .q14-rep.q18-on .rhint>summary{position:relative;width:32px;height:32px;background:var(--g1)}
  .q14-rep.q18-on .rhint>summary::after{display:block;content:"";position:absolute;inset:-6px}
  .q14-rep.q18-on tbody tr:not(.sec):not(.pop):not(.fixrow):nth-child(even)>td.num,.q14-rep.q18-on tbody tr:not(.sec):not(.pop):not(.fixrow):nth-child(even)>td:nth-child(2){background:#FBFBFB}
  .q14-rep.q18-on tbody tr:not(.sec):not(.pop):not(.fixrow):hover>td.num,.q14-rep.q18-on tbody tr:not(.sec):not(.pop):not(.fixrow):hover>td:nth-child(2){background:var(--y-soft)}
  .q14-rep.q18-on tr.sec td .mfa-sect{position:sticky;left:8px;display:inline-block;max-width:calc(100vw - 64px)}
  .q14-rep.q18-on tr.fixrow td>form,.q14-rep.q18-on tr.pop td>.popcard{position:sticky;left:8px;max-width:calc(100vw - 64px)}
  .q14-rep:not(.q18-on) tbody tr.man{box-shadow:inset 3px 0 0 var(--y-line)}
  .q14-rep:not(.q18-on) tbody tr.man>td:first-child{box-shadow:none}
  .q14-rep:not(.q18-on) tr.q14-l2{padding-left:24px}
  .q14-rep:not(.q18-on) .rhint~.rcode{display:none}
  .q14-rep:not(.q18-on) .mfa-hc{display:inline}
  .q14-rep:not(.q18-on) .rhint{display:inline;margin:0}
  .q14-rep:not(.q18-on) .rhint>summary{position:absolute;top:0;right:0}
  .q14-rep:not(.q18-on) .rhint[open]>div{margin:6px 0 2px}
  .q14-rep:not(.q18-on) td.val .fixbtn{margin:0}
  .q14-rep:not(.q18-on) td.val .jdiff{flex:1 1 auto}
  .q14-rep:not(.q18-on) tr.sec>td{padding:10px 12px;width:auto}
  .q14-rep:not(.q18-on) tr.pop>td,.q14-rep:not(.q18-on) tr.fixrow>td{padding:0 12px 12px;width:auto}
  .q14-rep:not(.q18-on) tr.fixrow[hidden]{display:none}
  /* «Добавить нарушение/требование» — всегда своей строкой у левого края (под заголовком в 1 или 2 строки) */
  .q16-blk-h{row-gap:4px}
  .q16-blk-h>.sp{flex:0 0 100%;height:0;order:8}
  .q16-blk-h>.btn{order:9}
  /* по словам, а не посреди слова */
  .ph:has(+.q23-wrap) .q16d-xl{width:auto;padding:0 14px;gap:6px}
  .ph:has(+.q23-wrap) .q16d-xl::after{content:"Excel";font-weight:600}
  .ph:has(+.q23-wrap) .q16d-xl.q28b-off{display:none}
  .rep th:where([scope=row]):nth-child(2){min-width:0}
  .q14-rep tr.q14-l1 th:where([scope=row]):nth-child(2){padding-left:14px}
  .q14-rep tr.q14-l2 th:where([scope=row]):nth-child(2){padding-left:22px}
  .q14-rep.q18-on tr:not(.sec):not(.pop):not(.fixrow)>th:where([scope=row]):nth-child(2){position:sticky;left:44px;z-index:1;background:#fff;min-width:150px;max-width:150px;box-shadow:inset -1px 0 0 var(--g2)}
  .q14-rep.q18-on tr:not(.sec):not(.pop):not(.fixrow)>th:where([scope=row]):nth-child(2){left:44px;background:#fff}
  .q14-rep.q18-on tbody tr:not(.sec):not(.pop):not(.fixrow):nth-child(even)>th:where([scope=row]):nth-child(2){background:#FBFBFB}
  .q14-rep.q18-on tbody tr:not(.sec):not(.pop):not(.fixrow):hover>th:where([scope=row]):nth-child(2){background:var(--y-soft)}
}
/* текущий год — главное число, прошлый — вторичное */
.q14-rep td.val{font:800 18px Manrope,Inter,system-ui,sans-serif;font-variant-numeric:tabular-nums;text-align:right;color:var(--k)}
.q14-rep td.prevc{font-variant-numeric:tabular-nums;text-align:right;color:var(--t3);font-size:14px;font-weight:500}
.fixform .f input{height:40px;min-height:40px;box-sizing:border-box}
.fixform input[name=value]{width:140px}
.fixform input[name=reason]{width:min(440px,40vw)}
/* (заказчик: «в отчёте 19-ТИ карандаш прыгает влево-вправо»): кнопка «Исправить» стояла вплотную
   к числу, а числа разной длины — от строки к строке она сдвигалась. Теперь — у левого края ячейки, ровной
   колонкой; число по-прежнему прижато вправо. Телефонная раскладка карточками (flex, ниже 761 px) не меняется. */
.q14-rep td.val .fixbtn{float:left;margin:2px 10px 0 0}
.rep th:where([scope=row]){padding-top:6px;padding-bottom:6px}
@media screen and (max-width:760px){
  .q14-rep td.val{font-size:16px}
  .q14-rep td.prevc{font-size:13px}
  .fixform input[name=value],.fixform input[name=reason]{width:100%}
  .fixform .f input{height:44px}
  .q16d-acts>form>.btn{width:100%;white-space:normal;text-align:center}
  .rep th:where([scope=row]){padding-left:8px;padding-right:8px}
}
@media screen and (max-width:360px){
  .ph+.teamhead .q16d-add{padding:0 8px;gap:6px;font-size:13px;white-space:nowrap}
  .ph+.teamhead .q16d-add>.i{display:none}
}
@media (pointer:coarse){
  /* на сенсорных экранах любой ширины — цели нажатия не меньше 44 px (раньше только ≤760 px) */
  .rhint summary{position:relative;width:32px;height:32px}
  .rhint summary::after{content:"";position:absolute;inset:-6px}
  .repyears a{display:inline-flex;align-items:center;min-height:44px;padding:0 16px}
  .fixbtn{position:relative;width:44px;height:44px}
}
@media screen and (max-width:760px){
  .fixbtn{width:44px;height:44px}
}
@media (pointer:coarse),screen and (max-width:760px){
  .q14-rep .fixbtn::after{display:none}
  .q14-rep .rhint>summary{width:44px;height:44px;background:radial-gradient(circle,var(--g1) 13px,transparent 14px);border-radius:50%}
  .q14-rep .rhint>summary::after{display:none}
}

/* ==== 15. Динамика по годам и выбор лет ==== */
.dlt{display:inline-block;margin-left:4px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--t3)}
.dlt.up{color:var(--bad)}
.dlt.down{color:var(--ok)}
.q14-svkey td.r,.q14-svkey th.r{font-variant-numeric:tabular-nums}
.q18-dyi{display:none}
.q18-on .q18-dyi{display:inline}
.dysel.q18-dyb.q18-on{display:inline-block}
.dysel>summary{list-style:none;cursor:pointer}
.dysel>summary::-webkit-details-marker{display:none}
.dysel>summary b{font-weight:700}
.dysel[open]>summary{border-color:var(--k)}
.dysel-ar{margin-left:2px}
.dymenu{position:absolute;z-index:40;top:calc(100% + 6px);left:0;min-width:220px;max-height:340px;overflow:auto;background:#fff;border:1px solid var(--g2);border-radius:var(--r2);box-shadow:var(--sh);padding:8px;display:flex;flex-direction:column;gap:2px}
.dymh{font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--t3);padding:4px 8px 6px}
.dymenu a:hover,.dymenu label:hover{background:var(--g1)}
.dymenu a.on{background:var(--y-soft)}
.dymenu a.on::after{content:"✓";margin-left:auto}
.dymenu input[type=checkbox]{width:16px;height:16px;accent-color:var(--k)}
.dymenu label:has(input:disabled){opacity:.45;cursor:not-allowed}
.dymf{display:flex;align-items:center;gap:12px;white-space:nowrap;border-top:1px solid var(--g2);margin-top:6px;padding:10px 8px 2px}
.q18-on .q18-nodyn{display:none}
.q18-chg{white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--t2)}
th.q18-chg{white-space:normal;min-width:96px}
.q14-rep th.q18-dy a{color:inherit}
.q14-rep th.q18-dy a:hover{color:var(--k)}
@media screen and (max-width:760px){
  .q14-rep.q18-on td.q18-dy,.q14-rep.q18-on th.q18-dy{white-space:nowrap}
  .q18-phw.q18-on{overflow-x:auto;max-width:100%}
  .svph-t.q18-on td:first-child,.svph-t.q18-on th:first-child{position:sticky;left:0;z-index:1;background:#fff;min-width:150px;max-width:150px;box-shadow:inset -1px 0 0 var(--g2)}
  .q14-svkey.q18-on td:first-child,.q14-svkey.q18-on th:first-child{position:sticky;left:0;z-index:1;background:#fff;min-width:140px;max-width:140px;box-shadow:inset -1px 0 0 var(--g2)}
  .svph-t td.r.q18-dy{font-weight:500;background:#fff;color:var(--t2)}
  .svph-t th.q18-dy{white-space:nowrap}
  /* свод на телефоне: без кнопки «Динамика» столбцы {год−1} и «Изменение» видны сразу (ГТИ-10) —
     таблица прокручивается в своём блоке, как с включённой динамикой */
  .q18-phw{overflow-x:auto;max-width:100%}
  .q14-rep.q18-on tbody tr:nth-child(even) td.num,.q14-rep.q18-on tbody tr:nth-child(even) td:nth-child(2){background:#FBFBFB}
  .q14-rep:not(.q18-on) thead{display:none}
  .q14-rep:not(.q18-on) tbody tr{display:block}
  .q14-rep:not(.q18-on) tbody td{display:block}
  .q14-rep:not(.q18-on) tbody tr[data-y]{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;column-gap:8px;row-gap:6px;align-items:center;padding:10px 8px 10px 12px;border-bottom:1px solid var(--g2);background:#fff}
  .q14-rep:not(.q18-on) tbody tr[data-y]>td{padding:0;border:0;background:transparent;width:auto;min-width:0}
  .q14-rep:not(.q18-on) tbody tr[data-y]:hover>td{background:transparent}
  .q14-rep:not(.q18-on) tbody tr[data-y]::before,.q14-rep:not(.q18-on) tbody tr[data-y]::after{grid-row:2;font:600 12px Inter,system-ui,sans-serif;color:var(--t3)}
  .q14-rep:not(.q18-on) tbody tr[data-y]::before{content:attr(data-y);grid-column:1}
  .q14-rep:not(.q18-on) tbody tr[data-y]::after{content:attr(data-p);grid-column:3;justify-self:end}
  .q14-rep:not(.q18-on) tr[data-y]>td.num{grid-column:1;grid-row:1;align-self:start;padding-top:1px}
  .q14-rep:not(.q18-on) tr[data-y]>td:nth-child(2){grid-column:2/-1;grid-row:1;padding:0 46px 0 0;line-height:1.35}
  .q14-rep:not(.q18-on) tr[data-y]>td.num:empty{display:none}
  .q14-rep:not(.q18-on) tr[data-y]>td.num:empty+td{grid-column:1/-1}
  .svph-t.q18-on th:where([scope=row]):first-child{position:sticky;left:0;z-index:1;background:#fff;min-width:150px;max-width:150px;box-shadow:inset -1px 0 0 var(--g2)}
  .q14-rep.q18-on tbody th:where([scope=row]):nth-child(2):not([colspan]){position:sticky;left:40px;z-index:1;background:#fff;min-width:150px;box-shadow:2px 0 0 var(--g2)}
  .q14-rep.q18-on tbody tr:nth-child(even) th:where([scope=row]):nth-child(2){background:#FBFBFB}
  .q14-rep:not(.q18-on) tbody th:where([scope=row]){display:block}
  .q14-rep:not(.q18-on) tbody tr[data-y]>th:where([scope=row]){padding:0;border:0;background:transparent;width:auto;min-width:0}
  .q14-rep:not(.q18-on) tbody tr[data-y]:hover>th:where([scope=row]){background:transparent}
  .q14-rep:not(.q18-on) tr[data-y]>th:where([scope=row]):nth-child(2){grid-column:2/-1;grid-row:1;padding:0 46px 0 0;line-height:1.35}
  .q14-rep:not(.q18-on) tr[data-y]>td.num:empty+th:where([scope=row]){grid-column:1/-1}
}

/* ==== 16. ГТИ: сводка, «Требует внимания», очередь отчётов ==== */
/* chart */
.split{display:flex;flex-direction:column;gap:24px}
.bars{display:grid!important;grid-template-columns:repeat(3,1fr);gap:20px 32px!important}
.bars{display:flex;flex-direction:column;gap:16px}
.bar-r .top{display:flex;justify-content:space-between;gap:12px;font-size:13px;margin-bottom:6px}
.bar-r .top b{font-variant-numeric:tabular-nums;font-weight:700}
.bar-r .tr{height:12px;background:#fff;border-radius:3px;overflow:hidden}
.bar-r .tr i{display:block;height:100%;background:var(--k);border-radius:0 3px 3px 0}
.legend{font-size:12px;color:var(--t3);margin-top:16px;border-top:1px solid var(--g3);padding-top:12px}
.bar-r .tr .fill{display:block;width:100%;height:100%}
.bar-r .tr .fill rect{fill:var(--k)}
/* ГТИ: очередь отчётов 19-ТИ */
.rq-chips{display:flex;flex-wrap:wrap;width:fit-content;max-width:100%;margin:16px 0}
.rq{margin-top:0}
.rq td.nw{white-space:nowrap}
.rq td.ed{min-width:150px}
.rq td.snt{min-width:140px}
.rq td.snt .nw{white-space:nowrap}
/* «Требует внимания» на «Сводке» */
.att .block-h{margin-bottom:8px}
.att-ok{display:flex;align-items:center;gap:8px;margin:0;font-weight:600;color:var(--ok)}
.att-k{display:inline-flex;align-items:center;min-height:24px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}
.att-k.act{background:var(--k);color:var(--y)}
.att-k.bad{background:var(--bad-bg);color:var(--bad)}
.att-k.warn{background:var(--warn-bg);color:var(--warn)}
.att-k.ok{background:var(--ok-bg);color:var(--ok)}
/* администратор — выбор формы года сохраняется сразу */
.q16-years select{max-width:100%}
.q16-years td{vertical-align:middle}
.q16-warn{color:var(--warn);font-weight:600}
.rq-chips.q23-seg{margin:0}
/* сводка ГТИ — одна таблица «Первичные организации»: слева «За период», справа
   выделенная группа «Требует внимания» (на сегодня); ТИ и ручные правки — второй строкой под названием */
.q24-tbl thead tr.q24-grp th{padding-top:8px;padding-bottom:8px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;border-bottom:1px solid var(--g2)}
.q24-tbl thead th.q24-org{vertical-align:bottom}
.q24-tbl thead th.q24-gp{text-align:center;color:var(--t2)}
.q24-tbl thead th.q24-ga{text-align:center;color:var(--bad);background:var(--bad-bg)}
.q24-tbl thead th{vertical-align:bottom;line-height:1.3}
.q24-tbl thead th .sm{font-weight:500}
/* кнопка сортировки — блоком со строчным переносом: <br> в подписи работает, колонки узкие */
table.q24-tbl[data-sort] th button{display:inline-block;text-align:inherit;white-space:normal}
.q24-tbl th:first-child,.q24-tbl td:first-child{padding-left:14px}
.q24-tbl th.q24-a,.q24-tbl td.q24-a{background:#FDF6F5}
.q24-tbl th.q24-a1,.q24-tbl td.q24-a1{box-shadow:inset 2px 0 0 var(--bad-bg)}
.q24-tbl thead th.q24-ga{box-shadow:inset 2px 0 0 var(--bad-bg)}
.q24-sub{display:block;margin-top:2px;font-size:12px;line-height:1.35;color:var(--t3)}
.q24-sub a.q24-man:hover{color:var(--k);text-decoration-color:currentColor}
.q24-tbl td .q24-debt:hover{text-decoration:underline}
.q24-tbl tfoot td.q24-a{background:transparent}
.acc-jump{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 16px}
.acc-jump .acc-jump-n{font-weight:700;background:var(--g1);border-radius:999px;padding:1px 7px;color:var(--t2)}
.q24-tbl thead tr.q24-grp th{font-size:12px}
.q16-years th:where([scope=row]){vertical-align:middle}
@media screen and (min-width:761px) and (max-width:1024px),screen and (min-width:761px) and (max-width:1199px) and (pointer:coarse){
  /* сводка: «Требует внимания» — выделенным блоком внизу карточки */
  table.tcards.tc-tab.q24-tbl td:first-child{padding-left:0}
  table.tcards.tc-tab.q24-tbl tbody td.q24-a{background:#FDF6F5;box-shadow:none;padding-right:10px;padding-left:130px}
  table.tcards.tc-tab.q24-tbl tbody td.q24-a::before{margin-left:-120px}
  table.tcards.tc-tab.q24-tbl tbody td.q24-a1{margin-top:8px;padding-top:8px;border-radius:6px 6px 0 0;border-top:2px solid var(--bad-bg)}
  table.tcards.tc-tab.q24-tbl tbody td.q24-a:last-child{border-radius:0 0 6px 6px;padding-bottom:8px}
  table.tc-tab.q24-tbl tfoot td.q24-a{box-shadow:none}
  table.tcards.tc-tab.q24-tbl th:where([scope=row]):first-child{padding-left:0}
}
@media screen and (max-width:1200px){
  .split{grid-template-columns:1fr}
}
@media screen and (max-width:900px){
  .bars{grid-template-columns:1fr}
}
@media screen and (max-width:760px){
  .rq-chips.q23-seg{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}
  .q24-tbl td:first-child{padding-left:0}
  .q24-tbl tbody td.q24-a{background:#FDF6F5;box-shadow:none;padding-right:10px;padding-left:130px}
  .q24-tbl tbody td.q24-a::before{margin-left:-120px}
  .q24-tbl tbody td.q24-a1{margin-top:8px;padding-top:8px;border-radius:6px 6px 0 0;border-top:2px solid var(--bad-bg)}
  .q24-tbl tbody td.q24-a:last-child{border-radius:0 0 6px 6px;padding-bottom:8px}
  .q24-tbl tfoot td.q24-a{box-shadow:none}
  /* телефон: три перехода в одну строку (без столбика из трёх кнопок) */
  .acc-jump{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
}
@media screen and (max-width:360px){
  .sv-orgs.tcards tbody td.q24-a:not(.tc-h){padding-left:112px}
  .sv-orgs.tcards tbody td.q24-a:not(.tc-h)::before{margin-left:-102px}
}

/* ==== 17. ГТИ: свод 19-ТИ, «По организациям», строка по ППО ==== */
.sv-split{margin-top:24px}
.sv-split td.nw{white-space:nowrap}
.sv-rep{display:inline-flex;align-items:center;gap:8px;text-decoration:none;white-space:nowrap}
.sv-rep:hover .st{text-decoration:underline}
/* ГТИ: свод 19-ТИ */
.svmiss-l{display:flex;flex-wrap:wrap;gap:4px 16px;margin:8px 0 0;padding:0;list-style:none}
.svblock{margin-top:24px}
.svt{width:auto}
.svt th,.svt td{padding:8px 12px}
.svt .c1,.svt .c2,.svt .c3{position:sticky;background:#fff;z-index:1}
.svt .c1{left:0;width:56px;min-width:56px;max-width:56px;white-space:nowrap}
.svt .c2{left:56px;width:360px;min-width:360px;max-width:360px;white-space:normal}
.svt .c3{left:416px;width:56px;min-width:56px;max-width:56px;border-right:1px solid var(--g2)}
.svt th.svorg{white-space:normal;min-width:96px;max-width:140px;vertical-align:bottom}
.svt .svmpo{font-weight:700;background:var(--y-soft)}
.svt tr.tot td{font-weight:700}
.svt tbody tr:hover td.c1,.svt tbody tr:hover td.c2,.svt tbody tr:hover td.c3{background:#FCFCF7}
/* свод: зебра, заметная подсветка строки; очередь 26: своей вертикальной прокрутки у таблицы нет
   (была max-height — прокрутка в прокрутке); шапка закреплена у верха окна — блок «Очередь 26» */
.svtw{overflow-x:auto}
.svt thead th{position:sticky;top:0;z-index:2;background:#fff}
.svt thead th.c1,.svt thead th.c2,.svt thead th.c3{z-index:3}
.svt thead th.svmpo{background:var(--y-soft)}
.part-m{margin-left:2px;color:var(--bad);font-weight:700}
.svdyn-note{margin:10px 0 0}
.svt th.svorg .svorg-n{-webkit-box-orient:vertical;overflow-wrap:anywhere}
.svt .svprev{color:var(--t2);background:#fff}
.svt .svmpo,.svt .svprev{white-space:nowrap}
.sv-orgs th{padding-left:10px;padding-right:10px}
.sv-orgs td{padding-left:10px;padding-right:10px}
.q14-dl{color:var(--t2)}
.q14-dl b{color:var(--k)}
.q14-note{margin-top:12px}
.q14-note.bad .i{color:var(--bad)}
.q14-rep thead th.q14-cur{color:var(--k);font-weight:800;font-size:13px}
/* свод 19-ТИ на телефоне — итог по МПО и «Скачать в Excel»
   вместо широкой таблицы; «Показать таблицу целиком» (флажок .svfull-cb перед .svph и .svtw) открывает
   таблицу вместо итога.
   Разметка — app/templates/chief/_svod_phone.html. */
.svph,.svfull-cb,.svfull-l{display:none}
/* «Годы ▾» (_dycmp.html) — меню на details */
/* оглавление свода — как в отчёте ППО (q16-repnav); у нескольких форм — подписи групп */
.svmain{min-width:0}
.svnav-h{font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--t3);padding:8px 10px 4px}
.svnav-h:not(:first-child){border-top:1px solid var(--g2);margin-top:6px;padding-top:10px}
/* свод ГТИ — таблица на первом экране, без прокрутки в прокрутке
   Жалоба 07.10: таблица была в блоке со своей вертикальной прокруткой, над ней — пометки и общий итог.
   Теперь: пометки — одной строкой (.q26-note, подробности по ▾), общий итог — после таблиц форм.
   По умолчанию — только МПО (№, показатель, код, МПО, прошлый год, изменение, годы динамики): таблица
   умещается по ширине, прокручивается вместе со страницей, шапка закреплена у верха окна (у блока
   overflow:visible — иначе sticky держится за блок). «По организациям» (q26-org) — столбцы ППО, прокрутка
   вбок внутри блока, слева закреплены №, показатель, код и МПО. На телефоне (≤ 760) — как было (очередь 14в). */
.q26-note{background:var(--g1);border-radius:var(--r2);font-size:13px;color:var(--t2)}
.q26-note.q26-prelim{background:var(--warn-bg)}
.q26-note>summary{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;min-height:36px;padding:6px 14px;cursor:pointer;list-style:none}
.q26-note>summary::-webkit-details-marker{display:none}
.q26-note.q26-prelim>summary .i{color:var(--warn)}
.q26-nt b{color:var(--k)}
.q26-more{color:var(--k);font-weight:600;text-decoration:underline;text-decoration-color:var(--g3)}
.q26-note>summary:hover .q26-more{text-decoration-color:currentColor}
.q26-note>summary:focus-visible{outline:2px solid var(--k);outline-offset:-2px;border-radius:var(--r2)}
.q26-hide,.q26-note[open] .q26-show{display:none}
.q26-note[open] .q26-hide{display:inline}
.q26-nb{padding:0 14px 12px 36px}
.q26-nb p{margin:0 0 4px}
.q26-nb .svmiss-l{margin-top:6px}
.svblock:has(.svtw){padding-top:16px}
.page>.svblock{margin-top:0}
/* длинные названия ППО — целиком, а не обрезанными (Сводка, Свод) */
.sv-orgs .orgname{display:block;-webkit-line-clamp:unset;overflow:visible}
.svt th.svorg .svorg-n{display:block;-webkit-line-clamp:unset;overflow:visible;font-size:12px;hyphens:auto}
/* таблица свода читается как таблица отчёта ППО (q14-rep): уровни строк — раздел 1., 2. …
   с границей сверху и полужирным, подстроки 1.1 и «выявлено…» с отступом; строки-заголовки — жёлтой
   полосой; код — плашкой; МПО {год} — главное число, прошлые годы — вторичные */
.svt td{border-bottom:1px solid var(--g2)}
.svt thead th{box-shadow:inset 0 -2px 0 var(--k);color:var(--t2)}
.svt tbody tr:nth-child(even):not(.sec) td:not(.svmpo){background:#fff}
.svt tbody tr.q14-l1:nth-child(even) td:not(.svmpo),.svt tbody tr.q14-l2:nth-child(even) td:not(.svmpo){background:#FBFBFB}
.svt tr.q14-l0 td.c1{font-weight:800}
.svt tr.q14-l1 td.c2{padding-left:28px}
.svt tr.q14-l2 td.c2{padding-left:44px;color:var(--t2)}
.svt tr.q14-l1 td.c1,.svt tr.q14-l2 td.c1{color:var(--t3);font-weight:500}
.svt tr.tot td.svmpo{font-size:18px}
/* переход из оглавления (отчёт и свод) — строки пункта на пару секунд подсвечены и гаснут:
   видно, где пункт начинается и где кончается */
@keyframes q16flash{0%,45%{box-shadow:inset 0 0 0 9999px rgba(254,209,5,.38)}100%{box-shadow:inset 0 0 0 9999px rgba(254,209,5,0)}}
tr.q16-flash>td,tr.q16-flash>th{animation:q16flash 2.8s ease-out}
.svt tr[data-svrow]{cursor:pointer}
.svt a.svrow-a{color:inherit;text-decoration:none}
.svt a.svrow-a:hover,.svt tr[data-svrow]:hover a.svrow-a{text-decoration:underline;text-decoration-color:var(--g3);text-underline-offset:3px}
.svt a.svrow-a:focus-visible{outline:2px solid var(--k);outline-offset:2px;border-radius:2px}
.svt tr[data-svrow]:hover td.c2::after{content:"по ППО ›";margin-left:8px;font-weight:600;color:var(--t3);white-space:nowrap}
.svpo-h{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 12px;margin:0 0 10px}
.svpo-h .svpo-t1{margin:0;font:800 17px/1.3 Manrope,Inter,system-ui,sans-serif}
.svpo-hs{font-weight:600;color:var(--t3)}
.svpo-secs,.svpo-chips{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px}
.svpo-secs a b{font-weight:800}
/* выбор раздела — оглавление слева */
.svpo-tw{overflow-x:auto;width:fit-content;max-width:100%}
/* таблица — по содержимому (числа рядом с названиями ППО), не уже 960 px и не шире блока */
.svpo-t{width:auto;min-width:min(100%,960px);font-variant-numeric:tabular-nums}
.svpo-t thead th{background:#fff;vertical-align:bottom;white-space:normal;font-size:12px;line-height:1.3;box-shadow:inset 0 -2px 0 var(--g3)}
.svpo-t thead tr+tr th{font-weight:600;color:var(--t2)}
.svpo-t th.svpo-g{text-align:center;color:var(--k);box-shadow:inset 0 -1px 0 var(--g3)}
.svpo-t th.svpo-s{min-width:88px;max-width:180px}
.svpo-t th.svpo-s a{color:inherit;text-decoration:none;display:block}
.svpo-t th.svpo-s a:hover{color:var(--k);text-decoration:underline}
.svpo-t th.svpo-s.on{color:var(--k);background:var(--y-soft)}
.svpo-ar{color:var(--t3);white-space:nowrap}
.svpo-t th.svpo-s.on .svpo-ar{color:var(--k)}
.svpo-t .svpo-o{text-align:left;font-weight:600;min-width:220px;max-width:520px}
.svpo-t td.r{white-space:nowrap}
.svpo-t td.svpo-sc{background:var(--y-soft)}
.svpo-t tbody tr:nth-child(even) td{background:#F8F8F8}
.svpo-t tbody tr:hover td{background:#FFF3B8}
.svpo-nrep{display:block;font-weight:400;color:var(--t3)}
.svpo-bar{display:inline-block;vertical-align:middle;width:56px;height:6px;margin-left:8px;border-radius:3px;overflow:hidden;background:var(--g1)}
.svpo-bar rect{fill:var(--y)}
.svpo-t tfoot td{position:sticky;bottom:0;background:var(--y-soft);font:800 15px Manrope,Inter,system-ui,sans-serif;border-top:2px solid var(--k)}
.svpo-note{margin:8px 0 0}
.svrk-sub{margin:8px 0 10px}
.svrk{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;margin-bottom:16px}
.svrk th,.svrk td{padding:7px 8px;border-bottom:1px solid var(--g2);text-align:left}
.svrk th{font-size:12px;color:var(--t2);font-weight:600;position:sticky;top:0;background:#fff;z-index:1;box-shadow:inset 0 -2px 0 var(--g3)}
.svrk th.r,.svrk td.r{text-align:right;white-space:nowrap}
.svrk .svrk-i{color:var(--t3);width:1%}
.svrk .svrk-o{font-weight:600}
.svrk .svrk-pc{color:var(--t3);font-size:13px;width:1%}
.svrk .svrk-bw{width:26%;min-width:120px}
.svrk-b{display:block;width:100%;height:10px;border-radius:5px;overflow:hidden;background:var(--g1)}
.svrk-b rect{fill:var(--y)}
.svrk tfoot td{font-weight:800;border-top:2px solid var(--k);border-bottom:0;background:var(--y-soft)}
.svrk tbody tr:hover td{background:#FFF8D6}
/* Панель вида свода ГТИ и отчёта ППО (выбрана заказчиком 08.10.2026, «Вариант 2»): одна строка с
   подписями — «Вид [МПО | По организациям]» (только свод) · «Динамика [выкл | вкл]» · «Годы ▾» (с динамикой)
   · «× Сбросить». Сегменты — .seg; на телефоне строка переносится, цели нажатия — 44 px, «Вид» скрыт. */
.vbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;background:#fff;border:1px solid var(--g2);border-radius:var(--r2);padding:8px 12px;margin:-8px 0 0}
.vbar-g{display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px 10px}
.vbar-l{font-size:12px;font-weight:600;color:var(--t3);text-transform:uppercase;letter-spacing:.04em}
.vbar-reset{display:inline-flex;align-items:center;gap:4px;min-height:32px;padding:0 6px;font-weight:600;font-size:13px;color:var(--t2);text-decoration:none;white-space:nowrap;border-radius:var(--r)}
.vbar-reset:hover{color:var(--k);background:var(--g1)}
.vbar-rep{margin:0 0 12px}
/* Свод на телефоне (заказчик 08.10.2026: «не кликабельный, как на ПК»): строка итога по МПО с кодом и строка
      «таблицы целиком» нажимаются целиком (tr[data-svrow], app.js) — то же окно «по ППО», что на компьютере;
      цель не ниже 44 px, отклик на нажатие, «›» — признак перехода. Горизонтальная прокрутка таблицы (с
      «Динамикой») окно не открывает — обработчик на click, а не на касании. В окне на телефоне полоса доли —
      тонкой линией под названием ППО (столбец полосы на узком экране скрыт). */
.svrk-bm{display:none}
/* Свод ГТИ: блок под заголовком (#svbody) меняется htmx-запросом целиком (без смены адреса); сам блок
      в раскладке не участвует — отступы между панелью вида, заметками и таблицами те же, что были */
.svbody{display:contents}
.svt tr.tot th:where([scope=row]){font-weight:700}
.svt tbody tr:hover th:where([scope=row]).c2{background:#FCFCF7}
.svt th:where([scope=row]){border-bottom:1px solid var(--g2)}
.svt tr.q14-l1 th:where([scope=row]).c2{padding-left:28px}
.svt tr.q14-l2 th:where([scope=row]).c2{padding-left:44px;color:var(--t2)}
.svt tr[data-svrow]:hover th:where([scope=row]).c2::after{content:"по ППО ›";margin-left:8px;font-weight:600;color:var(--t3);white-space:nowrap}
.svpo-t tbody tr:nth-child(even) th:where([scope=row]){background:#F8F8F8}
.svpo-t tbody tr:hover th:where([scope=row]){background:#FFF3B8}
.svrk tbody tr:hover th:where([scope=row]){background:#FFF8D6}
.svt tr[data-svrow]:hover th:where([scope=row]).c2::after{font-size:12px}
@media print,(min-width:761px){
  .svtw:not(.q26-org){overflow:visible}
  /* таблица — на всю ширину блока: лишнее место забирает «Показатель», столбцы чисел узкие (width:1%) */
  .svt:not(.q26-org){width:100%}
  .svt:not(.q26-org) th.r,.svt:not(.q26-org) td.r{width:1%}
  .svt:not(.q26-org) .svorg{display:none}
  .svt:not(.q26-org) .c1,.svt:not(.q26-org) .c2,.svt:not(.q26-org) .c3{left:auto}
  .svt:not(.q26-org) tbody .c1,.svt:not(.q26-org) tbody .c2,.svt:not(.q26-org) tbody .c3{position:static}
  .svt:not(.q26-org) .c2{width:auto;min-width:280px;max-width:none}
  .svt.q26-org .svmpo{position:sticky;left:472px;z-index:1;box-shadow:inset -1px 0 0 var(--g3)}
  .svt.q26-org thead th.svmpo{z-index:3;box-shadow:inset -1px 0 0 var(--g3),inset 0 -2px 0 var(--g3)}
  .vbar-org:not([hidden])+.vbar-g{border-left:1px solid var(--g3);padding-left:14px;margin-left:4px}
}
@media (min-width:1280px){
  .svpo-secs{display:none}
}
@media screen and (min-width:761px) and (max-width:1024px),screen and (min-width:761px) and (max-width:1199px) and (pointer:coarse){
  .sv-orgs .orgname{overflow-wrap:normal}
}
@media screen and (min-width:761px) and (max-width:1366px){
  .q24-tbl td .sv-rep .sm{display:block}
}
@media screen and (max-width:1024px),screen and (max-width:1199px) and (pointer:coarse){
  .sv-orgs.tcards tbody td a.bad-n{background:var(--bad-bg);color:var(--bad)}
  .sv-orgs.tcards tbody td a.num:hover,.sv-orgs.tcards tbody td a.bad-n:hover{border-color:var(--k)}
  .sv-orgs.tcards tbody td:not(.tc-h){padding-top:3px;padding-bottom:3px}
  .sv-orgs.tcards tbody td:not(.tc-h)::before{margin-top:12px}
}
@media screen and (max-width:760px){
  .svblock{padding:16px 12px}
  .svt th,.svt td{padding:6px 8px;font-size:12px}
  .svt .c1{width:40px;min-width:40px;max-width:40px}
  .svt .c2{left:40px;width:136px;min-width:136px;max-width:136px;hyphens:auto}
  .svt .c3{left:176px;width:40px;min-width:40px;max-width:40px}
  .svtw{max-height:75vh}
  .q14-dl{flex-basis:100%}
  .svph{display:block}
  .svph-dl{width:100%;justify-content:center;height:44px;margin-bottom:12px}
  .svph-t{width:100%}
  .svph-t th,.svph-t td{padding:8px 6px;font-size:13px;vertical-align:top}
  .svph-t td.r{white-space:nowrap;font-weight:700;background:var(--y-soft)}
  .svph-n{color:var(--t2);font-size:12px}
  .svfull-cb{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);display:block;opacity:0}
  .svfull-l{display:inline-flex;align-items:center;min-height:44px;margin-bottom:8px;cursor:pointer}
  .svfull-cb:focus-visible ~ .svph .svfull-l{outline:2px solid var(--k,#111);outline-offset:2px}
  .svfull-hide{display:none}
  .svfull-cb:checked ~ .svph .svfull-show,.svfull-cb:checked ~ .svph .svph-t{display:none}
  .svfull-cb:checked ~ .svph .svfull-hide{display:inline}
  .svblock .svtw{display:none}
  .svfull-cb:checked ~ .svtw{display:block;margin-top:8px}
  .svblock > .block-h a[download]{display:none}
  .q16d-repbar .rep-top .q14-dl{flex-basis:auto}
  .svph-t.q18-on{width:auto;min-width:100%}
  .q26-note>summary{flex-wrap:nowrap;align-items:flex-start;padding:8px 12px}
  .q26-note>summary .i{margin-top:2px}
  .q26-nt{flex:1 1 0;min-width:0}
  .q26-more{flex:none}
  .q26-nb{padding-left:14px}
  .svfull-cb:checked ~ .svpo{display:block;margin-top:12px}
  .svpo-bar{display:none}
  .svrk .svrk-bw{display:none}
  .svrk th,.svrk td{padding:6px 4px;font-size:13px}
  .vbar{padding:8px;gap:8px}
  .vbar-org{display:none}
  /* 1–2. Свод «По организациям» на телефоне: ссылки разделов, подгрупп и сортировки несут full=<форма> (сервер,
          chief._po_tables) — таблица остаётся развёрнутой; столбец ППО закреплён слева (непрозрачный фон
          у шапки, строк, полосатых строк и «Итого»), чтобы при прокрутке вбок числа не теряли подпись.
     3.   Плашка «Режим администратора» на телефоне: чей кабинет открыт — целиком, второй строкой (2–3 строки),
          без многоточия; на компьютере — по-прежнему одна строка.
     4.   «Учётные записи»: переходы к частям страницы (Главный инспектор · Первичные организации · Уполномоченные).
     5.   Итог свода с «Динамикой» на телефоне: шапку закрепить нельзя (блок прокручивается вбок — sticky top
          считается от него, а не от страницы; прокрутку внутри прокрутки заказчик не хочет) — у каждого числа
          мелкая подпись года (data-y).
     6.   «Сводка»: числа-ссылки в карточке ППО — «чипы» не меньше 44×40 (раньше 9–27×17 поверх ссылки карточки).
     7.   «Формы 19-ТИ»: список формы — во всю ширину карточки, без обрезки; шрифт 16 px (iOS не увеличивает).
     8.   Окно учётной записи: шапка — не больше двух строк (название ППО целиком — первой строкой окна).
     9.   Планшет: таблицы «Сводки», «Отчётов 19-ТИ» и «Журналов МПО» (table.tc-tab) — карточками, как на телефоне,
          в две колонки: до 1024 px всегда (при 1024 таблицы прокручивались вбок на 210–440 px), до 1199 px — на
          сенсорных экранах (iPad Air/Pro горизонтально). Вкладки ГТИ и администратора — переносятся. */
  /* ширина закреплённого столбца ППО — --svpo-o-w (вместе с полями ячейки); от неё же отступ подписи группы
       столбцов (.svpo-gt) — поменяли ширину, подпись осталась вровень */
  .svpo-t{--svpo-o-w:150px;--svpo-pad:8px}
  .svpo-t .svpo-o{position:sticky;left:0;z-index:1;background:#fff;width:calc(var(--svpo-o-w) + 2 * var(--svpo-pad));min-width:calc(var(--svpo-o-w) + 2 * var(--svpo-pad));max-width:calc(var(--svpo-o-w) + 2 * var(--svpo-pad));padding-left:var(--svpo-pad);padding-right:var(--svpo-pad);white-space:normal;overflow-wrap:break-word;hyphens:auto;box-shadow:inset -1px 0 0 var(--g3)}
  .svpo-t thead th.svpo-o{z-index:3;box-shadow:inset -1px 0 0 var(--g3),inset 0 -2px 0 var(--g3)}
  .sv-orgs.tcards .st{white-space:nowrap}
  .svt td.c2,.svt th.c2{overflow-wrap:anywhere}
  .svpo-t .svpo-on{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
  .svpo-t th.svpo-g{text-align:left}
  /* подпись группы не шире видимой части справа от столбца ППО (72 px — поля страницы, блока и ячейки):
       иначе в конце прокрутки её прижимает к правому краю группы и она заходит под столбец ППО */
  /* название ППО — ровно ширины столбца: длинное слово переносится (break-word), а не раздвигает столбец, и
       подпись группы встаёт вровень с его правым краем */
  .svpo-t td.svpo-o .svpo-on{width:var(--svpo-o-w);overflow-wrap:break-word}
  .svpo-t th.svpo-g .svpo-gt{position:sticky;left:calc(var(--svpo-o-w) + 2 * var(--svpo-pad));display:inline-block;max-width:calc(100vw - var(--svpo-o-w) - 2 * var(--svpo-pad) - 72px)}
  .svrk .svrk-o{overflow-wrap:break-word;hyphens:auto}
  .svph-t tr[data-svrow],.svt tr[data-svrow]{cursor:pointer;-webkit-tap-highlight-color:transparent}
  .svph-t tr[data-svrow] td,.svt tr[data-svrow] td{height:44px}
  .svph-t a.svrow-a{color:inherit;text-decoration:none}
  .svph-t a.svrow-a::after{content:" ›";color:var(--t3);font-weight:700}
  .svph-t a.svrow-a:focus-visible{outline:2px solid var(--k);outline-offset:2px;border-radius:2px}
  .svrk .svrk-bm{display:block;width:100%;max-width:180px;height:6px;margin-top:5px}
  .svph-t tr.tot th:where([scope=row]){font-weight:700}
  .svt th:where([scope=row]).c2{overflow-wrap:anywhere}
  .svpo-t th:where([scope=row]).svpo-o .svpo-on{width:var(--svpo-o-w);overflow-wrap:break-word}
  .svph-t tr[data-svrow] th:where([scope=row]),.svt tr[data-svrow] th:where([scope=row]){height:44px}
  .svph-t tr[data-svrow]:active th:where([scope=row]),.svt tr[data-svrow]:active th:where([scope=row]){background:#FFF3B8}
}
.svt td.svmpo{font:800 17px Manrope,Inter,system-ui,sans-serif;font-variant-numeric:tabular-nums;color:var(--k)}
.svt td.svprev{color:var(--t3);font-weight:500}
.svpo-t th,.svpo-t td{padding:8px 12px}
.svrk th:where([scope=row]){position:static;top:auto;z-index:auto;box-shadow:none;background:transparent;font-size:inherit;color:inherit;font-weight:inherit}
.svrk th:where([scope=row]){padding:7px 8px;border-bottom:1px solid var(--g2);text-align:left}
@media screen and (max-width:760px){
  .svpo-t th,.svpo-t td{padding:6px 8px;font-size:12px}
  .svrk th:where([scope=row]){padding:6px 4px;font-size:13px}
}
.svt th:where([scope=row]){padding:8px 12px}
@media screen and (max-width:760px){
  .svt th:where([scope=row]){padding:6px 8px;font-size:12px}
  .svph-t th:where([scope=row]){padding:8px 6px;font-size:13px;vertical-align:top}
}
.svpo-t th:where([scope=row]){padding:8px 12px}
@media screen and (max-width:760px){
  .svpo-t th:where([scope=row]){padding:6px 8px;font-size:12px}
}
@media screen and (max-width:360px){
  /* 320–360 px: колонка подписей карточки «Сводки» уже — «Заполняется» и числа помещаются без вылета */
  .sv-orgs.tcards tbody td:not(.tc-h){padding-left:104px}
  .sv-orgs.tcards tbody td:not(.tc-h)::before{width:99px;margin-left:-104px}
}
@media (prefers-reduced-motion:reduce){
  tr.q16-flash>td,tr.q16-flash>th{animation:none;box-shadow:inset 0 0 0 9999px rgba(254,209,5,.3)}
}

/* ==== 18. ГТИ: журналы МПО ==== */
/* ГТИ: журналы МПО */
.mj-err{margin:0 0 16px}
.mj td.nw{white-space:nowrap}
/* журналы МПО: смертельные НС выделены; номера страниц */
.mj tr.bad td{background:var(--bad-bg)}
.mj tr.bad td:first-child{box-shadow:inset 3px 0 0 var(--bad)}
.pgn{flex-wrap:wrap;align-items:center;gap:6px 10px}
.pgn .pgn-cur{background:var(--k);color:var(--y);font-weight:700}
.pgn a:hover{background:var(--g1)}
.pgn-gap{color:var(--t3)}
/* «Журналы МПО» ГТИ — то же семейство, что списки ППО очереди 20б
   Вкладки журналов — сегмент с числами; под ними одна панель фильтров (form.filters.q20b-fp.q23-fp):
   «Год» и «Период» узкие, поиск забирает остаток строки — на широком экране справа нет пустоты.
   «Найдено: N» — вплотную над таблицей, таблица без второй серой рамки (.block убран).
   Ячейки: короткие значения — плашками, даты/ФИО/номера — в одну строку, ППО и тексты — до двух строк
   (полностью — в подсказке). На телефоне — карточки (таблица-карточки), фильтры под кнопкой «Фильтры». */
.q23-wrap{display:flex;flex-direction:column;gap:12px;min-width:0}
.q23-wrap>.pager{margin:4px 0 0}
.q23 .tw{border-radius:var(--r2)}
.q23-t th{padding:10px 12px;vertical-align:bottom}
.q23-t td{padding:10px 12px;vertical-align:top;line-height:1.4}
.q23-t th.q23-thn{white-space:normal;min-width:72px;max-width:110px;line-height:1.3}
.q23-c2{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}
.q23-t td.tc-h a.org{white-space:nowrap}
@media print,(min-width:761px){
  form.filters.q20b-fp.q23-fp .sel{flex:1 1 170px;max-width:340px}
  form.filters.q20b-fp.q23-fp .sel.q23-sm{flex:0 0 116px}
}
@media (min-width:1400px){
  form.filters.q20b-fp.q23-fp .sel.q23-sm{flex:0 0 130px}
}
@media screen and (min-width:761px) and (max-width:1024px),screen and (min-width:761px) and (max-width:1199px) and (pointer:coarse){
  /* журналы: дата (или ФИО) ссылкой, под ней ППО — как на телефоне */
  table.tcards.tc-tab.q23-t td.tc-h{order:-2}
  table.tcards.tc-tab.q23-t td.tc-h::before{content:attr(data-label);display:block;float:none;width:auto;margin:0 0 2px;font-size:12px;font-weight:600;color:var(--t3)}
  table.tcards.tc-tab.q23-t td.q23-org{order:-1;padding:0 0 8px;color:var(--t2)}
  table.tcards.tc-tab.q23-t td.q23-org::before{content:none}
  table.tcards.tc-tab.q23-t td.tc-h a.org,table.tcards.tc-tab.q23-t td.q23-n{white-space:normal}
  table.tc-tab .q23-c2{-webkit-line-clamp:3}
}
@media screen and (min-width:761px) and (max-width:1399px){
  .rq-chips.q23-seg a{padding:0 8px}
}
@media screen and (max-width:760px){
  .ph .orgs-q{flex:1 1 100%}
  /* шапка: «Выгрузить в Excel» — значок справа от заголовка */
  .ph:has(+.q23-wrap){flex-wrap:nowrap;align-items:flex-start;gap:12px}
  .ph:has(+.q23-wrap) h1{font-size:22px}
  .ph:has(+.q23-wrap) .sp{display:none}
  /* карточка: дата (или ФИО) ссылкой, под ней ППО без подписи — как «кто» в карточках списков ППО */
  .q23-t td.tc-h{order:-2}
  .q23-t td.tc-h::before{content:attr(data-label);display:block;float:none;width:auto;margin:0 0 2px;font-size:12px;font-weight:600;color:var(--t3)}
  .q23-t td.q23-org{order:-1;padding:0 0 8px;color:var(--t2)}
  .q23-t td.q23-org::before{content:none}
  .q23-t td.tc-h a.org{white-space:normal}
  .q23-c2{-webkit-line-clamp:3}
}

/* ==== 19. Окна: форма в окне (drawer), подтверждение, сессия ==== */
/* окно формы (drawer; с очереди 15 — по центру экрана, как модальное окно) — <dialog class="drawer"> создаёт app.js по ссылке data-drawer.
   По центру, до 680 px, высота по содержимому; на телефоне — почти во весь экран. Появление — opacity и transform; prefers-reduced-motion — без анимации.
   Прокручивается тело панели, кнопки формы (.drawer-ft) прилипают к низу. */
html.drawer-lock{overflow:hidden}
dialog.drawer{position:fixed;inset:0;margin:auto;padding:0;border:0;border-radius:var(--r);width:min(680px,calc(100vw - 32px));max-width:calc(100vw - 32px);height:fit-content;max-height:calc(100dvh - 48px);background:#fff;color:var(--t1);box-shadow:0 24px 64px rgba(0,0,0,.28);display:flex;flex-direction:column;overflow:hidden;opacity:0;transform:translateY(12px) scale(.97);transition:opacity 200ms ease,transform 200ms cubic-bezier(.2,.7,.2,1)}
dialog.drawer:not([open]){display:none}
dialog.drawer.in{opacity:1;transform:none}
dialog.drawer::backdrop{background:rgba(17,17,17,.45)}
.drawer-hd{display:flex;align-items:center;gap:12px;padding:16px 24px;border-bottom:1px solid var(--g2);flex:none}
.drawer-x{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:var(--r);border:1.5px solid var(--line);background:#fff;color:var(--k);cursor:pointer;transition:border-color var(--ease)}
.drawer-bd{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;padding:8px 24px 0}
.drawer-load{color:var(--t3);padding:16px 0}
.drawer-bd .rec-form{max-width:none;gap:0}
.drawer-bd .err{margin-top:12px}
.drawer-ft{display:flex;flex-direction:column;gap:8px;margin-top:24px}
.drawer-ft .form-acts{display:flex;gap:10px;flex-wrap:wrap}
.drawer-bd .drawer-ft .form-acts{border-top:0;padding-top:0}
/* окно подтверждения опасного действия (удаление ППО) */
.q16-dlg .drawer-bd{padding:12px 24px 24px}
.q16-cf .drawer-bd{padding:4px 24px 0}
.q16-cf-q{margin:0;line-height:1.5;white-space:pre-line;overflow-wrap:anywhere;color:var(--t1)}
.q16-cf-ft{display:flex;gap:10px;flex-wrap:wrap;padding:20px 24px 24px}
.q16-cf-ft .btn{min-height:44px}
.q16-cf-danger .drawer-hd h2{color:var(--bad)}
.q28c-acc .q28c-sub{gap:12px}
.q28c-acc .q28c-sub+.q28c-sub{margin-top:20px;padding-top:16px;border-top:1px solid var(--g2)}
dialog.q3e-ses .q16-cf-ft a.btn{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
@media print,(min-width:761px){
  /* окно «Изменить данные организации»: шире обычного, поля в две колонки на одной высоте */
  dialog.drawer:has(.q18g-frag){width:min(880px,calc(100vw - 32px))}
  /* Г: окно строки по ППО */
  dialog.drawer:has(.svrk-frag){width:min(760px,calc(100vw - 32px))}
}
@media screen and (max-width:760px){
  dialog.drawer{width:calc(100vw - 16px);max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}
  .drawer-hd{padding:12px 16px}
  .drawer-bd{padding:4px 16px 0}
  .q16-cf .drawer-bd{padding:4px 16px 0}
  .q16-cf-ft{padding:16px}
  dialog.drawer:has(.q28c-acc) .drawer-hd h2{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font-size:18px}
  :not(.drawer-ft)>.form-acts>.btn{flex:1 1 0;justify-content:center}
  :not(.drawer-ft)>.form-acts>.btn-y[type=submit]{order:-1}
  :not(.drawer-ft)>.form-acts>.btn.red{order:5;flex:1 1 100%}
  form:has(> .mfa-del) .drawer-ft .form-acts>.btn.red,form:has(> .mfa-del) .drawer-ft .form-acts>.sp{display:none}
}
/* карточка НС — просмотр по разделам формы, правка в окне по центру */
/* окно подтверждения (window.mtiConfirm в app.js) — как окно формы по центру
   (dialog.drawer), но узкое: вопрос, кнопка с глаголом действия (красная — опасное) и «Отмена» */
dialog.q16-cf{width:min(480px,calc(100vw - 32px))}
/* окно удаления ППО: шире, текст во всю ширину, слово для ввода — отдельной строкой целиком */
dialog.q16-dlg{width:min(760px,calc(100vw - 32px))}
@media screen and (max-width:760px){
  dialog.q16-cf{width:calc(100vw - 16px)}
}
@media (prefers-reduced-motion:reduce){
  dialog.drawer{transition:none}
}

/* ==== 20. Администратор: учётные записи, ППО, формы, справочники, журнал действий, копии ==== */
/* admin */
.aside{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:16px}
.chief{display:grid!important;grid-template-columns:1fr auto;align-items:center;gap:12px 32px!important}
.chief .tag,.chief h2{grid-column:1}
.chief .tag{justify-self:start}
.aside{align-items:start}
.chief dl{grid-column:1}
.chief .btn{grid-column:2;grid-row:1/4}
tr.off td{color:var(--t3)}
.chief{background:var(--k);color:#fff;border-radius:var(--r2);padding:24px;display:flex;flex-direction:column;gap:16px}
.chief .tag{display:inline-flex;align-self:flex-start;font-size:12px;font-weight:700;background:var(--y);color:var(--k);padding:2px 8px;border-radius:4px}
.chief h2{font-size:20px;font-weight:800;line-height:1.25}
.chief dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:8px 16px;font-size:13px}
.chief dt{color:#BDBDBD}
.chief dd{margin:0;font-weight:600}
.pw-once{display:flex;gap:16px;align-items:flex-start;background:var(--y-soft);border:1.5px solid var(--k);border-radius:var(--r2);padding:20px 24px}
.pw-once .pw-title{font-weight:800;font-size:16px;margin-bottom:6px}
.pw-once .pw-row{display:flex;gap:12px;flex-wrap:wrap;align-items:center;font-weight:600}
.pw-once .pw-hint{font-size:12px;color:var(--t2);margin-top:8px}
.f .req{color:var(--bad)}
.reps-tbl tr.off .org{color:var(--t2)}
/* админ: формы 19-ТИ */
.admin-forms{display:flex;flex-direction:column;gap:16px}
.admin-eds{grid-template-columns:repeat(3,1fr)}
/* создание ППО из Excel (очередь 9) */
.oi-bad{color:var(--bad)}
.oi-errs{background:var(--bad-bg);color:var(--bad);border-radius:var(--r2);padding:12px 16px;margin-bottom:16px}
.oi-errs ul{margin:8px 0 0;padding-left:20px;display:flex;flex-direction:column;gap:4px;font-size:14px;font-weight:600}
.oi-errs li{overflow-wrap:anywhere}
.oi-confirm .f{max-width:420px}
.oi-confirm .f input[disabled]{background:var(--g1);cursor:not-allowed}
.oi-sec{margin:24px 0;display:flex;flex-direction:column;gap:12px}
.oi-about{padding-top:8px;padding-bottom:8px}
.oi-subh{font-weight:800;font-size:14px;padding:16px 0 6px}
.oi-tbl td{vertical-align:top;overflow-wrap:break-word;min-width:90px}
.oi-tbl td.num{min-width:0}
.oi-links{margin-top:16px}
.oi-bad .oi-badv,td.oi-bad .oi-badv{color:var(--bad);font-weight:700;text-decoration:underline wavy var(--bad);text-underline-offset:3px}
td.oi-bad{background:var(--bad-bg)}
.oi-badrow td.num{color:var(--bad);font-weight:700}
.delform{flex-direction:column;align-items:flex-start;max-width:520px;white-space:normal}
.delwhat{font-size:13px}
.delwhat ul{margin:4px 0 6px 18px;padding:0}
.delform label{font-size:13px}
.chief .rowform{align-items:flex-end}
.chief .rowform label{color:#E6E6E6}
.reqnote{font-size:12px;color:var(--t3);margin:0 0 8px}
.reqnote .req{color:var(--bad);font-weight:700}
.errwhy{color:var(--t2);margin:8px 0 24px;font-size:15px}
.erracts{margin:0}
.delform label input{flex:none}
/* форма «Новая первичная организация» (в панели и на странице /admin/orgs/new): разделы как в макете,
   пары полей в 2 колонки, строки 1.1–1.4 — в ряд по 4; на телефоне — в одну колонку */
.org-new,.org-new-page{max-width:820px;min-width:0}
.rec-form.org-new{gap:0}
.fsec{min-width:0}
.fsec-h{margin:22px 0 10px;padding-top:14px;border-top:1px solid var(--g2);font:700 13px/1.3 Manrope,Inter,system-ui,sans-serif;text-transform:uppercase;letter-spacing:.04em;color:var(--t2)}
.reqnote+.fsec .fsec-h{border-top:0;padding-top:0;margin-top:12px}
.dgrid.dgrid4{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 10px}
.cnt-legend{list-style:none;margin:10px 0 0;padding:0;font-size:12px;line-height:1.4;color:var(--t3);display:flex;flex-direction:column;gap:2px}
.org-new-page .note{background:#fff}
/* «Есть заполненный шаблон Excel?» — вверху формы «Новая первичная организация» (переход на импорт — обычной страницей) */
.xls-alt{display:flex;align-items:center;flex-wrap:wrap;gap:4px 6px;margin:12px 0 4px;padding:8px;white-space:nowrap;background:var(--g1);border-radius:var(--r);font-size:13px;font-weight:600;color:var(--t2)}
.xls-alt .lnk{font-size:13px}
.org-new-page .xls-alt{background:#fff}
/* журнал действий (A3, A8, М7) и предупреждение о ночной копии (A5) */
.audit-t td{vertical-align:top}
.audit-ch summary{cursor:pointer;list-style:none}
.audit-ch summary::-webkit-details-marker{display:none}
.audit-ch[open] summary .lnk{display:none}
.audit-ch .lnk{padding:0;font-size:12px}
.flash.bkwarn{background:var(--bad-bg);color:var(--bad);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.flash.bkwarn a{color:var(--bad);font-weight:700}
.q16-dlg .delform{display:flex;flex-direction:column;gap:14px;align-items:stretch}
.q16-dlg .delform label{display:flex;flex-direction:column;gap:8px}
.q16-dlg .delform input{width:100%}
.q16-dlg .delform .btn{align-self:flex-start}
/* отдельный блок
   Карточка-просмотр сотрудника, уполномоченного, «Прочей» (окно и страница), смена пароля, мелочи
   списков, отчёта и «На контроле». Правила выше не меняются — только дописываются. */
/* карточка-просмотр (ППО-14, ГТИ-7): как у обращения — подпись над значением */
.q28b-vkind{font:700 12px/1.3 Manrope,Inter,system-ui,sans-serif;text-transform:uppercase;letter-spacing:.04em;color:var(--t2)}
.q28b-vhd{display:flex;flex-direction:column;gap:6px;margin:4px 0 14px}
.q28b-vsub{font-size:15px;color:var(--t2);overflow-wrap:anywhere}
.q28b-view .q28b-vcells{margin-bottom:4px}
.q28b-view .rec-meta{margin:12px 0 0}
.q28b-vnote{margin:0 0 12px}
.q28b-vpage{padding:20px 24px;display:flex;flex-direction:column;gap:12px}
/* зритель (ГТИ-19): одной строкой — общий «Назад» с путём слева, «Режим просмотра · ТИ» справа */
.q28b-vrow{display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px;margin:0 0 16px}
/* «Выгрузить в Excel», когда выгружать нечего */
.btn.q28b-off{opacity:.45;cursor:not-allowed;pointer-events:none}
/* смена пароля — карточка по центру, вкладки кабинета на месте */
.q28b-pwcard{width:min(460px,100%);padding:28px 28px 24px;display:flex;flex-direction:column;gap:14px}
.q28b-pwcard h1{margin:0 0 4px;font-size:24px}
.q28b-pwacts{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}
/* страницы администратора (аудит 25)
   Списки «Первичные организации» и «Учётные записи» — компактные строки, действия в одну строку,
   строка нажимается целиком; карточка ГТИ — полосой без пустоты справа; окна правки (учётная запись,
   описание формы, подпись справочника); окно удаления ППО шире, слово для ввода не рвётся;
   журнал — панель фильтров 20б, ППО полностью; «Справочники» — выровненные колонки; «Смена пароля» — по центру. */
.q28c-acts{flex-wrap:nowrap;white-space:nowrap;gap:4px 16px;align-items:center}
.q28c-acts form{display:contents}
.q28c-orgs,.q28c-accs{width:100%}
.q28c-orgs td,.q28c-accs td{vertical-align:middle}
.q28c-orgs th:nth-child(2),.q28c-orgs th:nth-child(3){width:1%}
.q28c-accs th:nth-child(2),.q28c-accs th:nth-child(3),.q28c-accs th:nth-child(4){width:1%;white-space:nowrap}
.q28c-orgs td.tc-acts,.q28c-accs td.tc-acts{width:1%}
tbody tr:has(a.q28c-org):hover a.q28c-org{text-decoration:underline}
tr.q28c-none td{color:var(--t3);padding:18px 16px}
/* карточка ГТИ: заголовок, сведения и кнопка в одну полосу; заметка — строкой под ней */
.chief.q28c-chief{display:flex!important;flex-direction:row;flex-wrap:wrap;align-items:center;gap:12px 32px!important;padding:18px 24px}
.q28c-chief .q28c-chief-h{display:flex;flex-direction:column;gap:6px;flex:0 0 auto}
.q28c-chief dl{display:flex;flex-wrap:wrap;gap:8px 32px;flex:1 1 420px;margin:0}
.q28c-chief dl>div{display:flex;flex-direction:column;gap:2px}
.q28c-note{display:flex;gap:8px;align-items:flex-start;margin:10px 0 20px;font-size:13px;color:var(--t3)}
/* окна правки */
.q28c-dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px 20px;margin:0 0 16px;padding:12px 14px;background:var(--g1);border-radius:var(--r)}
.q28c-dl dt{font-size:12px;font-weight:600;color:var(--t3)}
.q28c-dl dd{margin:2px 0 0;font-weight:600;overflow-wrap:anywhere}
.q28c-h3{margin:0;font:800 16px/1.3 Manrope,Inter,system-ui,sans-serif}
.q16-dlg .delform{max-width:none}
.q16-dlg .delwhat ul{columns:2 260px;column-gap:28px}
.q16-dlg .delwhat li{break-inside:avoid}
.q28c-word{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px}
/* журнал действий */
.q28c-afbox{margin:0 0 4px}
.q28c-af .q28c-sess{align-self:end;height:40px;display:flex;align-items:center;gap:6px;white-space:nowrap}
.audit-t td.q28c-aorg{min-width:160px;max-width:260px;white-space:normal;overflow-wrap:anywhere}
.audit-t td.audit-who{min-width:140px}
/* «Формы 19-ТИ» */
.q28c-lead{margin:0 0 10px;max-width:90ch}
.q28c-yearf{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap}
.q28c-yearf select{max-width:420px}
.q28c-desc{width:100%;margin-top:6px}
.q28c-desc-l{display:block;font-size:12px;font-weight:600;color:var(--t3);margin-bottom:2px}
.q28c-desc p{margin:0;white-space:pre-line;font-size:13px;line-height:1.5;color:var(--t2)}
/* «Справочники»: одинаковые колонки во всех трёх таблицах */
table.q28c-refs{table-layout:fixed;width:100%}
.q28c-refs .q28c-c1{width:auto}
.q28c-refs .q28c-c2{width:130px}
.q28c-refs .q28c-c3{width:150px}
.q28c-refs .q28c-c4{width:300px}
.q28c-refs td.tc-h{overflow-wrap:anywhere}
.q28c-dl .q28c-dlo{grid-column:1/-1}
.q2b-tpl{margin:0 0 16px}
/* Поле файла в строке формы («Шаблоны Word»): подпись над полем, как было; на телефоне — во всю ширину,
      кнопка «Выбрать файл» — в одну строку (правило .rowform label ставило её содержимое столбиком) */
.m3-tplf{display:flex;flex-direction:column;gap:4px;min-width:0;max-width:100%}
.rowform .m3-tplf>label{font-size:12px;font-weight:600;color:var(--t2)}
.q28c-orgs th:where([scope=row]),.q28c-accs th:where([scope=row]){vertical-align:middle}
.q28c-refs th:where([scope=row]).tc-h{overflow-wrap:anywhere}
@media (min-width:1400px){
  main .rec-form .dgrid:not(.dgrid4){grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media screen and (max-width:1100px){
  .q28c-acts{flex-wrap:wrap;white-space:normal;justify-content:flex-end}
}
@media screen and (max-width:1000px){
  .admin-eds{grid-template-columns:1fr}
}
@media screen and (max-width:900px){
  .aside{grid-template-columns:1fr}
  .chief{grid-template-columns:1fr}
  .chief .btn{grid-column:1;grid-row:auto}
}
@media screen and (max-width:760px){
  .oi-links .btn{flex:1 1 100%}
  .tcards td.tc-acts .delform label input{flex:none;width:100%;height:44px}
  .dgrid.dgrid4{grid-template-columns:1fr}
  .xls-alt>span:first-child{flex:1 1 100%}
  .xls-alt .lnk{min-height:44px}
  .q28b-vpage{padding:16px}
  .q28b-pwcard{padding:20px 16px}
  .q28c-acts{justify-content:flex-start;flex-wrap:wrap}
  .q28c-orgs td.tc-acts,.q28c-accs td.tc-acts{width:100%}
  .chief.q28c-chief{flex-direction:column;align-items:stretch;padding:16px}
  .q28c-chief dl{flex:none}
  table.q28c-refs{table-layout:auto}
  .q16-dlg .delwhat ul{columns:1}
  .q28c-af .q28c-sess{height:auto}
  .audit-t td.q28c-aorg{max-width:none}
  .q28c-years td{min-width:0}
  .q28c-years td[data-label="Форма"]{padding-left:0}
  .q28c-years td[data-label="Форма"]::before{content:none}
  .q28c-years .q28c-yearf{min-width:0}
  .q28c-years .q28c-yearf select{flex:1 1 100%;width:100%;min-width:0;max-width:100%;height:44px;font-size:16px;text-overflow:ellipsis}
  .audit-t.tcards tbody td:empty{display:none}
  .q28c-af .q28c-sess{order:-1;justify-content:flex-start;gap:10px;width:100%;min-height:44px;font-size:15px;white-space:normal}
  .q28c-af .q28c-sess input{width:20px;height:20px;margin:0;flex:none}
  .rowform>.m3-tplf{flex:1 1 100%}
  .q28c-years th:where([scope=row]){min-width:0}
}
@media (pointer:coarse),screen and (max-width:760px){
  .org-new .note a[href="/admin/orgs/import"]{display:inline-flex;align-items:center;min-height:44px}
}

/* ==== 21. Вход и смена пароля ==== */
/* login */
.login{background:var(--g1);min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr}
.login-l{background:var(--y);padding:56px;display:flex;flex-direction:column;gap:24px;justify-content:center;position:relative;overflow:hidden}
.login-l img{width:272px;height:272px;border-radius:50%;box-shadow:0 0 0 3px var(--k)}
.login-l small{font:600 14px Inter,system-ui,sans-serif}
.login-l h1{font-size:34px;font-weight:800;line-height:1.15;margin:0}
.login-l p{margin:0;max-width:420px;font-size:15px}
.login-l .stripe{position:absolute;right:-80px;bottom:-80px;width:320px;height:320px;border:40px solid rgba(0,0,0,.06);border-radius:50%}
.login-r{display:flex;align-items:center;justify-content:center;padding:48px 24px;background:#fff}
.fld{display:flex;flex-direction:column;gap:8px}
.fld label{font-size:13px;font-weight:600}
.inp{position:relative;display:flex;align-items:center}
.inp>svg{position:absolute;left:14px;color:var(--t3)}
.inp input{width:100%;height:48px;border-radius:var(--r);border:1.5px solid var(--line);background:#fff;padding:0 48px 0 42px;font-size:15px;transition:border-color var(--ease),box-shadow var(--ease)}
.inp input:hover{border-color:var(--t2)}
.inp input:focus{outline:2px solid var(--k);outline-offset:2px;border-color:var(--k)}
.login-hint{display:flex;gap:8px;align-items:flex-start;font-size:12px;color:var(--t3);border-top:1px solid var(--g2);padding-top:16px}
.login-code{font-family:ui-monospace,Consolas,monospace;font-size:13px;background:var(--g1);padding:2px 8px;border-radius:4px}
.chief .login-code{background:#2A2A2A;color:var(--y)}
.pw-once .login-code.pw{font-size:20px;font-weight:700;background:var(--k);color:var(--y);padding:4px 12px;user-select:all}
.login-r:focus{outline:0}
.pw-copy{height:32px}
.q28c-word .login-code{display:inline-block;white-space:normal;overflow-wrap:normal;word-break:normal;line-height:1.4;padding:2px 8px}
/* «Смена пароля»: по центру, сверху — чья учётная запись */
.q28c-pw{max-width:440px;margin:8px auto 0;display:flex;flex-direction:column;gap:16px}
.q28c-pw .form{max-width:none;padding:24px;background:#fff;border:1px solid var(--g2);border-radius:var(--r2)}
.q28c-prof{display:flex;gap:14px;align-items:flex-start;padding:16px;background:var(--g1);border-radius:var(--r2)}
.q28c-prof dl{margin:0;display:flex;flex-direction:column;gap:6px;min-width:0}
.q28c-prof dt{font-size:12px;font-weight:600;color:var(--t3)}
.q28c-prof dd{margin:0;font-weight:600;overflow-wrap:anywhere}
/* смена пароля: логин в карточке — белой плашкой (на сером фоне плашка того же цвета читалась как сдвиг) */
.q28c-prof .login-code{background:#fff}
/* запомнить меня и предупреждение о сессии */
.q3e-rem{display:flex;flex-direction:column;gap:4px;font-size:14px}
.q3e-rem-h{font-size:12px;color:var(--t3);padding-left:26px}
.inp input.pwe-in{padding-right:52px}
.login .inp input,.inp input.pwe-in{font-size:16px}
/* заявка 21.10.2026: «Пройти опрос» под формой входа — карточка нажимается целиком */
.login-opros{display:flex;flex-direction:column;gap:2px;padding:14px 16px;border:1.5px solid var(--k);border-radius:var(--r);background:var(--y);color:var(--k);text-decoration:none;transition:background var(--ease)}
.login-opros:hover{background:#FFDD3D}
.login-opros-t{font:800 16px/1.3 Manrope,Inter,system-ui,sans-serif}
.login-opros-s{font-size:13px;line-height:1.4}
@media screen and (max-width:760px){
  .login{grid-template-columns:1fr}
  .f input,.f select,.f textarea,.inp input,.rowform input,.rowform select,.rowform label input,.sel select,.dinp{font-size:16px}
  .pw-copy{min-height:44px}
  /* вход на телефоне: герб и название в одну строку (было ~420 px шапки — «Войти» уходила под клавиатуру
     и за край при сообщении об ошибке) */
  .login{grid-template-rows:auto 1fr;min-height:100dvh}
  .login-l{flex-direction:row;align-items:center;gap:14px;padding:16px 20px}
  .login-l h1{font-size:17px;line-height:1.25}
  .login-l .stripe{width:160px;height:160px;border-width:24px;right:-50px;bottom:-60px}
  .login-r{align-items:flex-start;padding:24px 20px 32px}
  .login-r .form{gap:16px}
}

/* ==== 22. Телефон: «Наверх», «Перейти к разделу», поле файла ==== */
/* окна правки на телефоне: «Удалить»/«Отозвать жалобу» — в конце тела окна (кнопка-двойник, app.js),
   низ окна — одна строка «Сохранить | Отмена» */
.mfa-del{display:none}
/* шапки списков на телефоне: «Добавить» вместо «Добавить уполномоченного/обращение», «Новый случай» вместо
   «Зарегистрировать случай» — кнопка в одну строку рядом с «Фильтры» */
.q16d-add .mfa-st{display:none}
/* «↑ Наверх» — одна кнопка во всех кабинетах (app.js, «очередь 3»): телефон и сенсорный планшет, страница
      длиннее трёх экранов, прокручена больше чем на полтора. Нейтральная (белая, тёмная рамка): жёлтый —
      только у главного действия страницы, чёрно-жёлтая плашка спорила бы с ним. 44 px, справа внизу,
      z-index 30 — под окнами (<dialog> в верхнем слое) и раскрывающимися списками (40); низ окна правки
      (липкий .drawer-ft) — внутри окна, кнопка его не закрывает.
   6. Длинное название ППО в карточке (растянутая ссылка) на 320 px — перенос по словам, а не посреди слова:
      break-word не уменьшает минимальную ширину ячейки (anywhere сжимал её до одной буквы), длинное слово —
      с дефисом (lang="ru"). */
.m3-top{position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:30;display:inline-flex;align-items:center;gap:6px;height:44px;min-width:44px;padding:0 16px;border:1.5px solid var(--k);border-radius:999px;background:#fff;color:var(--k);font:700 14px Inter,system-ui,sans-serif;box-shadow:0 6px 18px rgba(0,0,0,.18);cursor:pointer}
.m3-top[hidden]{display:none}
.m3-top:active{background:var(--g1)}
@media screen and (max-width:760px){
  .mfa-del{display:block;margin-top:20px}
  .q16d-add .mfa-xt{display:none}
  .q16d-add .mfa-st{display:inline}
}

/* ==== 23. Сквозные правила для нескольких компонентов (мелкий шрифт, заголовки строк таблиц, цели нажатия) ==== */
.othblock .nscards,.othblock .note{margin-top:12px}
/* название ППО переносится; первый столбец не шире 340 px — статус и правки видны на 1440 */
.sv-split td:first-child,.rq:not(.mj) td:first-child,.mn td:first-child{min-width:220px;max-width:340px}
.chief .rowform input:focus,.chief .rowform select:focus,.chief .f input:focus,.chief .f select:focus,.chief .f textarea:focus,.adminbar input:focus,.adminbar select:focus{outline-color:var(--y)}
.chief :focus-visible,.adminbar :focus-visible,.pill-k:focus-visible,.pill-k :focus-visible,.seg .on:focus-visible{outline-color:var(--y)}
.org-new .note,.drawer-bd .note{margin-top:20px;padding:12px 14px}
.q23-t td .ntag,.q23-t td .st{vertical-align:middle}
/* наведение на строку свода — вся строка одним цветом: td:not(.svmpo) сильнее зебры чётных строк
   (.svt tbody tr…:nth-child(even) td:not(.svmpo)), иначе столбцы лет («Динамика») оставались серыми */
.svt tbody tr:not(.sec):hover td,.svt tbody tr:not(.sec):hover td:not(.svmpo){background:#FFF3B8}
/* мелкий шрифт (В17) — не меньше 12 px
   Подписи над числами, пометки изменений, заголовки меню, стрелки сортировки и счётчики были 10–11 px.
   Правила те же селекторы, ниже по файлу — перебивают прежний размер без правки старых блоков. */
.chg small,.imp-big small,.dlt,.svnav-h,.dymh,.jdiff,.svpo-nrep,.acc-jump .acc-jump-n{font-size:12px}
table[data-sort] th button::after,.dysel-ar,.svpo-ar,.svt tr[data-svrow]:hover td.c2::after{font-size:12px}
.sv-split th:where([scope=row]):first-child,.rq:not(.mj) th:where([scope=row]):first-child{min-width:220px;max-width:340px}
@media screen and (min-width:761px) and (max-width:1024px),screen and (min-width:761px) and (max-width:1199px) and (pointer:coarse){
  .sv-split table.tc-tab td:first-child,.rq table.tc-tab td:first-child{min-width:0;max-width:none}
  .sv-split table.tc-tab th:where([scope=row]):first-child,.rq table.tc-tab th:where([scope=row]):first-child{min-width:0;max-width:none}
}
@media screen and (max-width:1024px),screen and (max-width:1199px) and (pointer:coarse){
  /* 6: чипы-числа в карточках «Сводки» (телефон и планшет — где строки таблицы карточками) */
  .sv-orgs.tcards tbody td a.num,.sv-orgs.tcards tbody td a.bad-n,.sv-orgs.tcards tbody td a.q16-c{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:40px;padding:0 10px;border-radius:999px;vertical-align:middle;text-decoration:none;font-weight:700}
}
@media screen and (max-width:760px){
  /* телефон: таблица с годами прокручивается внутри своего блока, № и показатель закреплены */
  .q14-rep.q18-on tr:not(.sec):not(.pop):not(.fixrow)>td:nth-child(2),.q14-rep.q18-on thead th:nth-child(2){position:sticky;z-index:1;min-width:150px;max-width:150px;box-shadow:inset -1px 0 0 var(--g2)}
  /* отчёт без динамики на телефоне — строка карточкой: № и показатель на всю ширину, «?» в углу,
     ниже подпись года (tr::before, data-y) и значение с карандашом, подпись прошлого года (tr::after, data-p)
     и его значение; код строки — в подсказке «?» (у строк без подсказки — под названием) */
  .q14-rep:not(.q18-on),.q14-rep:not(.q18-on) tbody{display:block;width:100%}
  .q14-rep:not(.q18-on) tr>td.c-code,.q14-rep:not(.q18-on) tr>td.c-src,.q14-rep:not(.q18-on) tr>td.q18-dy{display:none}
  .svph-t.q18-on td[data-y]::before,.svph-t.svph-yl td[data-y]::before{content:attr(data-y);display:block;margin-bottom:1px;line-height:1.2;font-weight:600;color:var(--t3);white-space:nowrap}
  /* телефон: счётчики вкладок и перехода по разделам — 13 px, подписи годов в ячейках свода — 12 px */
  .tabs .cnt,.rq-chips .cnt,.acc-jump .acc-jump-n{font-size:13px}
  .svph-t.q18-on td[data-y]::before,.svph-t.svph-yl td[data-y]::before{font-size:12px}
  .sv-split th:where([scope=row]):first-child,.rq:not(.mj) th:where([scope=row]):first-child{min-width:0;max-width:none}
}

/* ==== 24. Печать ==== */
.q28c-more{margin-top:6px}
.q28c-more>summary{cursor:pointer;display:inline-flex;font-size:13px}
.q28c-more p{max-width:90ch;margin:6px 0 0}
/* печать (В17)
   Узкие раскладки (все запросы с max-width: телефон, планшет, карточки строк) — только для экрана
   (screen and …): лист A4 уже 760 px, и без «screen» таблицы печатались карточками. Компьютерные
   правила (min-width:761px) действуют и при печати (print, …).
   На листе: только содержимое — заголовок страницы и название ППО (из шапки), данные, таблицы во всю
   ширину; без вкладок, кнопок, фильтров, оглавлений, «Наверх», подвала и окон. Шапка таблицы
   повторяется на каждой странице, строка не рвётся между листами. Широкие таблицы (свод, сводка,
   журналы МПО) — на альбомном листе (именованная страница; где не поддерживается — как выберут
   в окне печати). Свёрнутые блоки (details) при печати раскрыты. */
.mti-pr{display:none}
@page{size:A4;margin:12mm 10mm}
@page wide{size:A4 landscape;margin:10mm}
@media print{
  html{scroll-behavior:auto}
  body{display:block;min-height:0;background:#fff;color:#000;font-size:10.5pt;line-height:1.35}
  body:has(#svbody),body:has(table.sv-orgs),body:has(table.q23-t){page:wide}
  *,*::before,*::after{box-shadow:none!important;text-shadow:none!important;transition:none!important;animation:none!important}
  .hdr-in{display:block;padding:0 0 4pt;min-height:0}
  .hdr-in>:not(.brand){display:none!important}
  .brand strong{font:700 10pt/1.3 Inter,system-ui,sans-serif}
  .brand .b-short{display:none}
  .brand .b-long{display:inline}
  .hdr-org{display:block;font-weight:700;font-size:12pt;margin-top:2pt;white-space:normal;overflow:visible}
  main.main,.page{padding:0!important;margin:0!important;max-width:none!important;width:auto!important;gap:8pt}
  .ph h1,h1{font-size:16pt}
  h2{font-size:13pt}
  h1,h2,h3,.block-h{break-after:avoid;page-break-after:avoid}
  a{color:inherit;text-decoration:none}
  /* карточка проверки: данные и журналы — одной колонкой */
  .q16-check{display:block}
  .q16-side{position:static}
  table{width:100%!important;font-size:10pt;border-collapse:collapse}
  thead{display:table-header-group}
  tfoot{display:table-row-group}
  tr,th,td{break-inside:avoid;page-break-inside:avoid}
  thead,thead tr,th,td{position:static!important}
  th,td{background:none!important;padding:3pt 5pt!important;border-bottom:.5pt solid #9a9a9a;color:#000;height:auto!important}
  thead th{font-size:9pt;font-weight:700;white-space:normal;vertical-align:bottom;border-bottom:1pt solid #000}
  th>button{display:none!important}
  /* выделение итогов — тонкой рамкой, не фоном */
  tbody tr>td,tbody tr>th{border-top:0!important;border-bottom:.5pt solid #9a9a9a!important}
  tr.tot>td,tr.tot>th{font-weight:700;border-top:.75pt solid #000!important;border-bottom:.75pt solid #000!important}
  tr.sec>td{font-weight:700;border-top:.75pt solid #000!important;padding-top:5pt!important}
  tfoot td,tfoot th{font-weight:700;border-top:1pt solid #000}
  .zero{color:#555}
  /* свёрнутые блоки — раскрыты на листе (Chrome 131+; в остальных — app.js, beforeprint) */
  details::details-content{content-visibility:visible!important;display:block!important;height:auto!important}
}


/* ==== 25. Опрос по должностям: страница без входа и вкладка администратора ==== */
/* заявка 21.10.2026: колонка по центру, крупный шрифт (пользователи 40+), карточки и варианты ответа
   нажимаются целиком; на телефоне — без горизонтальной прокрутки */
.op{width:100%;max-width:880px;margin:0 auto;display:flex;flex-direction:column;gap:24px;font-size:17px;line-height:1.55}
.op .crumbs{margin:0}
.op-head{display:flex;flex-direction:column;gap:10px}
.op-head h1{font-size:30px;font-weight:800;line-height:1.2}
.op-lead{margin:0;color:var(--t1)}
.op-sub{margin:0;color:var(--t2);font-weight:600}
.op-facts{list-style:none;margin:0;padding:20px 24px;display:flex;flex-direction:column;gap:14px;background:var(--y-soft);border:1px solid var(--y-line);border-radius:var(--r2)}
.op-facts li{display:flex;gap:12px;align-items:flex-start}
.op-facts svg.i{margin-top:3px}
.op-pick{font-size:24px;font-weight:800;margin-top:8px}
.op-group{display:flex;flex-direction:column;gap:12px}
.op-group .op-gh{font-size:19px;font-weight:800}
.op-cards{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.op-cards li{display:flex}
.op-card{flex:1;display:flex;flex-direction:column;gap:6px;padding:18px 20px;border:1.5px solid var(--g3);border-radius:var(--r2);background:#fff;color:var(--k);text-decoration:none;transition:border-color var(--ease),background var(--ease),box-shadow var(--ease)}
.op-card:hover{border-color:var(--k);background:var(--y-soft);box-shadow:0 4px 14px rgba(0,0,0,.08)}
.op-card-t{flex:1;font:800 18px/1.3 Manrope,Inter,system-ui,sans-serif}
.op-card-n{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:14px;font-weight:600;color:var(--t2)}
.op-card-n svg.i{transform:rotate(180deg);color:var(--k)}
.op-note{margin:0;color:var(--t2);font-size:15px}
.op-err{font-size:16px;padding:14px 16px}
.op-draft:not([hidden]){display:flex;align-items:center;gap:12px 16px;flex-wrap:wrap;padding:12px 16px;border-radius:var(--r);background:var(--y-soft);border:1px solid var(--y-line);font-size:15px}
.op-draft span{flex:1 1 260px}
.op-form{display:flex;flex-direction:column;gap:24px}
.op-hp{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}
.op-sec{display:flex;flex-direction:column;gap:22px;padding:24px;background:var(--g1);border-radius:var(--r2)}
.op-sec h2{font-size:21px;font-weight:800}
.op-q{display:flex;flex-direction:column;gap:8px;min-width:0;margin:0;padding:0;border:0}
.op-org{padding:20px 24px;border:1px solid var(--g3);border-radius:var(--r2)}
.op-ql{font-weight:600;font-size:17px;line-height:1.5;padding:0}
.op-n{font-weight:800}
.op-opt{font-weight:400;color:var(--t3)}
.op-qh{margin:0;font-size:15px;color:var(--t2)}
.op-q textarea,.op-q input[type=text]{width:100%;border-radius:var(--r);border:1.5px solid var(--line);background:#fff;padding:10px 12px;font-size:17px;line-height:1.5;transition:border-color var(--ease)}
.op-q input[type=text]{min-height:48px}
.op-q textarea{min-height:120px;resize:vertical}
.op-q textarea:hover,.op-q input[type=text]:hover{border-color:var(--t2)}
.op-q textarea:focus,.op-q input[type=text]:focus{outline:2px solid var(--k);outline-offset:2px;border-color:var(--k)}
.op-q [aria-invalid=true],.op-doc[aria-invalid=true] .op-opt-l{border-color:var(--bad)}
.op-fe{margin:0;color:var(--bad);font-weight:600;font-size:15px}
.op-opts{display:flex;flex-wrap:wrap;gap:8px}
.op-opt-l{flex:1 1 90px;display:flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:8px 14px;border:1.5px solid var(--line);border-radius:var(--r);background:#fff;font-weight:600;cursor:pointer;transition:background var(--ease),border-color var(--ease)}
.op-opt-l:hover{border-color:var(--k)}
.op-opt-l input{width:20px;height:20px;margin:0;accent-color:var(--k)}
.op-opt-l:has(input:checked){background:var(--y);border-color:var(--k)}
.op-opt-l:has(input:focus-visible){outline:3px solid var(--k);outline-offset:2px}
/* вопрос с вариантами (single / multi): вариант нажимается целиком, крупно; на телефоне — столбиком,
   на широком экране — в две колонки */
.op-ch{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:8px}
.op-ch-l{display:flex;align-items:flex-start;gap:12px;min-height:52px;padding:13px 14px;border:1.5px solid var(--line);border-radius:var(--r);background:#fff;font-size:17px;line-height:1.4;cursor:pointer;transition:background var(--ease),border-color var(--ease)}
.op-ch-l:hover{border-color:var(--k)}
.op-ch-l input{flex:none;width:22px;height:22px;margin:1px 0 0;accent-color:var(--k);cursor:pointer}
.op-ch-l:has(input:checked){background:var(--y);border-color:var(--k);font-weight:600}
.op-ch-l:has(input:focus-visible){outline:3px solid var(--k);outline-offset:2px}
.op-ch-o{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px}
.op-ch-o .op-ch-l{flex:0 0 auto}
.op-q .op-ch-o input.op-ch-t{flex:1 1 220px;width:auto;min-height:52px}
.op-vq[aria-invalid=true] .op-ch-l{border-color:var(--bad)}
.op-note-f{display:flex;flex-direction:column;gap:6px;margin-top:4px}
.op-note-f label{font-size:15px;font-weight:600;color:var(--t2)}
.op-q .op-note-f textarea{min-height:64px}
.op-ql2{margin-top:10px}
.op-ans dd.op-ans-pick{white-space:normal}
.op-ans-pick ul{margin:0;padding-left:20px}
.op-ans-pick p{margin:4px 0 0;white-space:pre-wrap}
.op-send{display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.btn.op-btn{height:56px;padding:0 32px;font-size:18px}
.op-done{align-items:center;text-align:center;max-width:640px;margin-top:24px}
.op-done h1{font-size:30px;font-weight:800}
.op-done-ic{width:72px;height:72px;border-radius:50%;background:var(--y);border:2px solid var(--k);display:grid;place-items:center}
.op-done-ic svg.i{width:36px;height:36px;stroke-width:2.5}
.op-acts{margin:8px 0 0}
/* кабинет администратора: ответ — вопрос и ответ с переводами строк */
.op-ans dl{margin:0;display:flex;flex-direction:column}
.op-ans dt{font-weight:600}
.op-ans dd{margin:4px 0 18px;white-space:pre-wrap;overflow-wrap:anywhere}
.op-ans dd:last-child{margin-bottom:0}
@media screen and (max-width:760px){
  .op{font-size:16px;gap:20px}
  .op-head h1,.op-done h1{font-size:24px}
  .op-pick{font-size:21px}
  .op-cards{grid-template-columns:1fr}
  .op-facts{padding:16px}
  .op-sec{padding:18px 16px}
  .op-org{padding:16px}
  .op-opt-l{padding:8px 6px;gap:6px;white-space:nowrap}
  .op-q textarea,.op-q input[type=text]{font-size:16px}
  .op-send{align-items:stretch}
  .btn.op-btn{width:100%;padding:10px 16px;line-height:1.3;white-space:normal}
}

/* ######################################################################
   ЧАСТЬ 2. УТОЧНЕНИЯ КАСКАДА (уровень 2): правила, которые перекрывают правила разделов выше с той же
   специфичностью и потому обязаны стоять ПОСЛЕ них. Разделы — в том же порядке, что в части 1.
   ###################################################################### */

/* ==== 1.2. Основа — уточнения ==== */
/* журналы ППО: формы, карточки, фильтры (очередь 2) */
[hidden]{display:none!important}

/* ==== 2.2. Шапка — уточнения ==== */
a.who{color:inherit;text-decoration:none}
.viewbar a{margin-left:auto;font-weight:600}
.hdr-links .i{width:16px;height:16px}
.crumbs ol{display:flex;flex-wrap:wrap;align-items:center;gap:4px 0;list-style:none;margin:0;padding:0;min-width:0;color:var(--t3)}
@media screen and (max-width:760px){
  .btn-out .i{display:block;width:20px;height:20px}
  /* шапка на телефоне: вместо «МПО ПАО «НК «Роснеф…» + «ППО ООО «РН-…» — название своей ППО целиком, до 3 строк */
  .hdr img{width:48px;height:48px}
}
@media screen and (max-width:360px){
  .hdr img{width:40px;height:40px}
}
@media (pointer:coarse){
  .viewbar a,.ph .sub>a{display:inline-flex;align-items:center;min-height:44px}
}

/* ==== 3.2. Вкладки кабинета и «Раздел ▾» на телефоне — уточнения ==== */
@media screen and (min-width:761px) and (max-width:1100px){
  .tabs:has(> a[href^="/ppo/"][href*="/report"])>.tabs-tg .tg-k{color:var(--t2);font-weight:600}
}
@media screen and (max-width:760px){
  .tabs.tabs-dd a{flex:1 1 100%;height:44px;padding:0 12px;border-radius:6px}
}

/* ==== 4.2. Раскладка страницы — уточнения ==== */
.note{background:var(--g1);border-radius:var(--r2);padding:20px;font-size:13px;color:var(--t2);display:flex;gap:12px}
.saved>.i{flex:none;margin-top:1px}
.pwnag>svg{flex:none;color:var(--warn)}
.pwnag-f button{min-height:44px;padding:0 12px;border:0;background:transparent;color:var(--t2);font:inherit;text-decoration:underline;cursor:pointer;border-radius:6px}
.pwnag-f button:hover{background:rgba(0,0,0,.05);color:var(--k)}

/* ==== 5.2. Кнопки, ссылки-кнопки, переключатели — уточнения ==== */
/* ГТИ: сводка по МПО */
.seg a{display:inline-flex;align-items:center;height:32px;padding:0 12px;border-radius:6px;font-weight:600;font-size:13px;color:var(--t2);text-decoration:none;white-space:nowrap;transition:background var(--ease),color var(--ease)}
.seg .on:focus-visible{outline-offset:-4px}
@media (pointer:coarse){
  .btn-s{height:auto;min-height:44px}
}

/* ==== 6.2. Формы и поля — уточнения ==== */
.f [aria-invalid="true"]{border-color:var(--bad)}
.form-acts{align-items:center;border-top:1px solid var(--g3);padding-top:16px}
.pwe-eye:focus-visible{outline:2px solid var(--k);outline-offset:-2px}
@media screen and (max-width:760px){
  /* на телефоне годы и кварталы «Сводки» — с одного (левого) края */
  .ph>.sp:has(+.seg){display:none}
}

/* ==== 7.2. Таблицы — уточнения ==== */
/* узкий телефон: подпись «НЕТРУДОСПОСОБНОСТИ» целиком, без разрыва посреди слова */
/* обращения */
.badge{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;padding:2px 8px;border-radius:4px;white-space:nowrap;background:var(--g1);color:var(--t2)}
a.rowlink{color:var(--k);text-decoration:none;font-weight:700}
.pager a{color:var(--k);font-weight:600}
@media screen and (min-width:761px) and (max-width:1024px),screen and (min-width:761px) and (max-width:1199px) and (pointer:coarse){
  table.tc-tab thead tr{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0)}
  table.tcards.tc-tab td[colspan],table.tcards.tc-tab td[data-label=""]{padding-left:0}
  table.tc-tab tfoot tr.tot td{background:transparent;border-top:0}
  table.tcards.tc-tab th:where([scope=row]){display:flow-root;padding:4px 0 4px 120px;border:0;text-align:left;white-space:normal;min-width:0;max-width:none;overflow-wrap:anywhere}
}
@media screen and (max-width:1024px),screen and (max-width:1199px) and (pointer:coarse){
  .q2b-sort select{flex:1 1 auto;min-width:0;max-width:420px;height:44px;padding:0 8px;border:1.5px solid var(--line);border-radius:var(--r);background:#fff;font-size:16px;font-weight:600;color:var(--k);text-overflow:ellipsis}
}
@media screen and (max-width:760px){
  .pager a{display:inline-flex;align-items:center;min-height:44px}
  .tcards td.r{text-align:left}
  .tcards td.nw{white-space:normal}
  .tcards th:where([scope=row]).tc-h{order:-1;padding:0 0 6px;font-size:16px}
  .tcards th:where([scope=row]).nw{white-space:normal}
}
@media screen and (max-width:420px){
  .q2b-sort select{flex:1 1 100%;max-width:none}
}

/* ==== 8.2. Плитки-итоги — уточнения ==== */
.q16-tile{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border-radius:var(--r2);background:#fff;border:1px solid var(--g2);border-left:4px solid var(--g2);color:var(--k);text-decoration:none;min-width:0;transition:border-color var(--ease),box-shadow var(--ease)}
.q16-tile:focus-visible{outline:2px solid var(--k);outline-offset:2px}
.q16-c{display:inline-block;min-width:28px;padding:1px 8px;border-radius:999px;font-weight:700;text-align:center;text-decoration:none}
.q21-tile{margin:0;min-height:112px}
.q24-tbl a.q16-c{padding:2px 9px;min-width:30px}
@media screen and (max-width:560px){
  .q21-tile{min-height:0}
}

/* ==== 9.2. Списки ППО — уточнения ==== */
@media print,(min-width:761px){
  form.filters.q20b-fp.q23-fp .q20b-w2{flex:2 1 220px;max-width:none}
}
@media screen and (max-width:1000px){
  .q13-cards td.r{text-align:left}
  .q13-cards td.nw{white-space:normal}
  .q13-cards .st{white-space:normal;height:auto;min-height:24px;padding-top:2px;padding-bottom:2px}
  .q13-cards th:where([scope=row]).tc-h{order:-1;padding:0 0 6px;font-size:16px}
}
@media screen and (max-width:760px){
  .filters .sel select,.filters .sel .dinp,.filters .qinp{flex:1 1 auto;width:auto;min-width:0;max-width:none}
}
/* поиск, «Показать ещё», свёрнутые на телефоне фильтры */
.filters .q13-q .qinp{min-width:300px}
@media screen and (max-width:760px){
  .filters .q13-q .qinp{min-width:0}
}

/* ==== 10.2. О ППО и коллектив — уточнения ==== */
.q18g>.block{min-width:0;display:flex;flex-direction:column;gap:14px;padding:20px 24px}
.q18g-cnts .f{display:grid;grid-template-columns:minmax(0,1fr) 112px;column-gap:16px;row-gap:4px;align-items:center;padding:10px 0;border-top:1px solid var(--g2)}
.q18g-cell.q22-on{background:var(--y-soft);border-color:var(--y-line)}
/* короткие значения пострадавшего (год, пол, стаж, член профсоюза) — по два в ряд и на телефоне */
.q22-vic .q18g-cells{grid-template-columns:repeat(2,minmax(0,1fr))}
@media screen and (max-width:760px){
  .q18g>.block{padding:16px}
  .q18g-cnts .f{grid-template-columns:minmax(0,1fr) 84px;column-gap:12px}
}

/* ==== 11.2. Проверки — уточнения ==== */
.q16-it{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:6px 16px;align-items:start;padding:14px 16px;background:#fff;border:1px solid var(--g2);border-left:4px solid var(--g3);border-radius:var(--r2)}
.q28a-person .badge { margin-left: 6px; font-size: 11px; vertical-align: 1px; }
@media screen and (max-width:760px){
  .chfilters .sel select{max-width:none}
  .q16-it{grid-template-columns:22px minmax(0,1fr)}
}

/* ==== 12.2. Обращения — уточнения ==== */
.q20-st .badge{font-size:13px;padding:4px 10px}
/* «Результат рассмотрения» на одной линии с соседними ячейками */
.q20-revg .q20-par{padding:8px 14px;gap:2px}

/* ==== 13.2. Несчастные случаи — уточнения ==== */
.ntag{display:inline-flex;font-size:12px;font-weight:700;padding:2px 8px;border-radius:4px;white-space:nowrap}
.n-work{background:var(--ok-bg);color:var(--ok)}
.n-non,.n-light{background:var(--g1);color:var(--t2)}
.n-severe{background:var(--warn-bg);color:var(--warn)}
.n-fatal{background:var(--bad-bg);color:var(--bad)}
.n-group,.n-extra{background:var(--k);color:var(--y)}
.q22-st .ntag{font-size:13px;padding:4px 10px}
@media (min-width:600px){
  /* «Ответственный» — длинное значение: до 1600 px на всю ширину под сроком и отметкой */
  .q22-mea .q22-resp{grid-column:1/-1;order:3}
}

/* ==== 14.2. Отчёт 19-ТИ ППО — уточнения ==== */
.edcard.sel{border-color:var(--k);background:var(--y-soft)}
.imp-year{margin-bottom:16px;font-size:14px}
.imp-badge{white-space:normal;overflow-wrap:anywhere}
.note.q13-ret{background:var(--bad-bg);color:var(--bad);margin-bottom:16px;align-items:flex-start}
.note.q13-warn{background:var(--warn-bg);color:var(--warn);margin-bottom:16px;align-items:flex-start}
.q13-ctlmark{text-decoration:none}
.q14-rep .fixbtn{border-color:var(--g3);color:var(--t3);width:26px;height:26px}
/* предупреждение об уполномоченных — одной строкой, пояснение под «Подробнее» */
#rep .note.q16d-warn,.note.q16d-warn{margin:0;padding:10px 14px;align-items:flex-start}
.jdiff-note{background:var(--bad-bg);color:var(--k)}
.mfa-jump>summary{display:flex;align-items:center;gap:8px;min-height:48px;padding:0 16px;cursor:pointer;list-style:none;font:700 15px Manrope,Inter,system-ui,sans-serif;color:var(--k)}
.mfa-jump>summary::-webkit-details-marker{display:none}
.mfa-jump a:hover,.mfa-jump a:active{background:var(--g1)}
.rep tr.tot th:where([scope=row]){font-weight:700}
.q14-rep tr.q14-l0 th:where([scope=row]){border-top:2px solid var(--g3);font-weight:600}
.svt tr.q14-l0 th:where([scope=row]){border-top:2px solid var(--g3);font-weight:600}
@media screen and (max-width:760px){
  .svph-t tr.sec td{font-size:12px;color:var(--t2);font-weight:600;background:var(--g1)}
  .q14-rep:not(.q18-on) tbody tr.q14-l0{border-top:2px solid var(--g3)}
  .q14-rep:not(.q18-on) tr.q14-l1>td:nth-child(2),.q14-rep:not(.q18-on) tr.q14-l2>td:nth-child(2){padding-left:0}
  .q14-rep:not(.q18-on) tr[data-y]>td.prevc{grid-column:4;grid-row:2;text-align:right}
  .q14-rep:not(.q18-on) tr.q14-l1>th:where([scope=row]):nth-child(2),.q14-rep:not(.q18-on) tr.q14-l2>th:where([scope=row]):nth-child(2){padding-left:0}
}
@media (pointer:coarse),screen and (max-width:760px){
  /* карандаш правки и «?» в строках отчёта — цель 44×44 на сенсорном экране и телефоне */
  .q14-rep .fixbtn{width:44px;height:44px;border-radius:8px}
}

/* ==== 15.2. Динамика по годам и выбор лет — уточнения ==== */
/* «О профсоюзной организации» — на всю ширину, без пустот
   «Сведения» сверху во всю ширину (от 1400 px — поля в два столбца), под ними две карточки
   инспекторов рядом одинаковой высоты. Отменяет прежнюю сетку 1240 px с «дырой» справа. */
/* «Динамика по годам» — столбцы более ранних лет и «Изменение к {год−1}» прямо в таблице
   отчёта ППО и в таблицах свода ГТИ. Разметка есть всегда; видна, пока на таблице класс q18-on
   (переключатель — app.js, блок «Очередь 18»; ?dyn=1 — сразу с сервера). Без JS столбцы скрыты. */
.q18-dy{display:none}
.q18-on .q18-dy{display:table-cell}
.q18-dyb{display:none}
.q18-dyb.q18-on{display:block}
.dysel{position:relative;display:inline-block}
.dysel.q18-dyb{display:none}
@media screen and (max-width:760px){
  /* отчёт на телефоне с динамикой — № и «Показатель» закреплены слева, годы прокручиваются */
  .q14-rep.q18-on td.num,.q14-rep.q18-on thead th:first-child{position:sticky;left:0;z-index:1;background:#fff}
  .q14-rep.q18-on tbody td:nth-child(2):not([colspan]),.q14-rep.q18-on thead th:nth-child(2){position:sticky;left:40px;z-index:1;background:#fff;min-width:150px;box-shadow:2px 0 0 var(--g2)}
  .q14-rep.q18-on thead th:first-child,.q14-rep.q18-on thead th:nth-child(2){z-index:3}
  /* «Динамика по годам» на телефоне — № ровно 44 px, «Показатель» прилегает к нему без зазора,
     у закреплённых ячеек непрозрачный фон во всех состояниях; подпись раздела и раскрытые под строкой
     блоки (правка, ручное значение) остаются у левого края при прокрутке */
  .q14-rep.q18-on td.num,.q14-rep.q18-on thead th:first-child{box-sizing:border-box;min-width:44px;max-width:44px;width:44px;overflow:hidden;text-overflow:clip}
  .q14-svkey.q18-on th:where([scope=row]):first-child{position:sticky;left:0;z-index:1;background:#fff;min-width:140px;max-width:140px;box-shadow:inset -1px 0 0 var(--g2)}
}

/* ==== 16.2. ГТИ — уточнения ==== */
.mn td.mn-why{min-width:280px}
.mn td.mn-by{min-width:150px}
.q24-tbl th,.q24-tbl td{padding-left:8px;padding-right:8px}
.acc-jump a:hover{border-color:var(--k);color:var(--k)}
.q24-tbl th:where([scope=row]):first-child{padding-left:14px}
.q24-tbl th:where([scope=row]).tc-h{min-width:200px;max-width:300px}
@media screen and (min-width:761px) and (max-width:1366px){
  .q24-tbl th:where([scope=row]).tc-h{min-width:160px}
}
@media screen and (max-width:760px){
  .q24-tbl th:where([scope=row]).tc-h{min-width:0;max-width:none}
  .q24-tbl th:where([scope=row]):first-child{padding-left:0}
}

/* ==== 17.2. ГТИ — уточнения ==== */
.q14-note.bad{background:var(--bad-bg);border-color:var(--bad)}
.q26-note>summary .i{flex:none;color:var(--k)}
/* свод «По организациям» (вариант Б) и строка по ППО (вариант Г)
   Б: в режиме «По организациям» (q26-org) вместо таблицы МПО — повёрнутая таблица раздела (.svpo):
   строки — ППО, столбцы — показатели раздела, внизу «Итого МПО»; умещается по ширине блока.
   Г: строка таблицы МПО целиком открывает окно «по ППО» (dialog.drawer). */
.svpo{display:none}
.svrow-hint{display:flex;align-items:center;gap:6px;margin:0 0 8px;font-size:13px;color:var(--t3)}
.svrow-hint.q26-org{display:none}
.svpo-secs a:hover,.svpo-chips a:hover{border-color:var(--k);color:var(--k)}
.svpo-secs a.on,.svpo-chips a.on{background:var(--k);border-color:var(--k);color:var(--y)}
.svpo-t tbody tr:nth-child(even) td.svpo-sc{background:#FFF0B3}
.sv-orgs th:where([scope=row]){padding-left:10px;padding-right:10px}
.svt tbody tr:nth-child(even):not(.sec) th:where([scope=row]):not(.svmpo){background:#fff}
.svt tbody tr.q14-l1:nth-child(even) th:where([scope=row]):not(.svmpo),.svt tbody tr.q14-l2:nth-child(even) th:where([scope=row]):not(.svmpo){background:#FBFBFB}
@media print,(min-width:761px){
  .svtw.q26-org{display:none}
  .svpo.q26-org{display:block}
}
@media screen and (max-width:1024px),screen and (max-width:1199px) and (pointer:coarse){
  .sv-orgs.tcards tbody td a.num{background:#fff;border:1.5px solid var(--line);color:var(--k)}
}
@media screen and (max-width:760px){
  .svph .sm{margin:0 0 12px}
  .svph-t tr.tot td{font-weight:700}
  .svrow-hint{display:none}
  .svpo-t tbody tr:nth-child(even) td.svpo-o{background:#F8F8F8}
  .svpo-t tbody tr:hover td.svpo-o{background:#FFF3B8}
}

/* ==== 18.2. ГТИ — уточнения ==== */
.mj-q input{min-width:220px;height:32px;padding:0 10px;border:1px solid var(--line);border-radius:var(--r);font:inherit}
.orgs-q input{min-width:260px;height:36px;padding:0 10px;border:1px solid var(--line);border-radius:var(--r);font:inherit}
.q23-wrap>*{margin:0}
.q23-t td.nw{white-space:nowrap}
.q23-t td.q23-n{font-variant-numeric:tabular-nums;white-space:nowrap}
@media screen and (max-width:760px){
  .mj-q input,.orgs-q input{min-width:0;width:100%;height:44px;font-size:16px}
  .q23-t td.q23-n{white-space:normal}
  .q23-t td.nw{white-space:normal}
}

/* ==== 19.2. Окна — уточнения ==== */
.drawer-hd h2{flex:1;min-width:0;margin:0;font:800 20px/1.3 Manrope,Inter,system-ui,sans-serif;overflow-wrap:anywhere}
.drawer-x:hover{border-color:var(--k)}
.drawer-x:focus-visible{outline:2px solid var(--k);outline-offset:2px}
.drawer-x .i{width:20px;height:20px}
.drawer-bd .drawer-ft{position:sticky;bottom:0;z-index:1;margin:24px -24px 0;padding:14px 24px;background:#fff;border-top:1px solid var(--g2)}
.q16-cf .drawer-hd{border-bottom:0;padding-bottom:4px}
.q28c-winpage{max-width:760px}
@media screen and (max-width:760px){
  .drawer-bd .drawer-ft{margin:24px -16px 0;padding:12px 16px}
  .q16-cf .drawer-hd{padding:12px 16px 4px}
  .q16-cf-ft .btn{flex:1 1 auto}
  /* отдельные страницы форм (без JS, прямые ссылки) на телефоне — как в окнах: «Добавить | Отмена» поровну
     на всю ширину, «Удалить» — своей строкой ниже */
  :not(.drawer-ft)>.form-acts>.sp{display:none}
}

/* ==== 20.2. Администратор — уточнения ==== */
.q28b-vpage .q28b-vnote{margin:0}
.q28c-orgs td.nw,.q28c-accs td.nw{white-space:nowrap}
.q28c-chief .btn{flex:none;margin-left:auto}
.q28c-acc .form-acts{border-top:0;padding-top:0;display:flex;gap:10px;flex-wrap:wrap}
@media screen and (max-width:760px){
  .q28b-pwacts .btn{flex:1 1 auto;height:44px;justify-content:center}
  .q28c-chief .btn{margin-left:0}
}
@media (pointer:coarse){
  .q28c-years select{height:44px;font-size:16px}
}

/* ==== 21.2. Вход и смена пароля — уточнения ==== */
.q3e-rem input{width:18px;height:18px;margin:0;flex:none}
@media screen and (max-width:760px){
  .login-l img{flex:none;width:72px;height:72px;box-shadow:0 0 0 2px var(--k)}
}

/* ==== 22.2. Телефон — уточнения ==== */
.m3-top:focus-visible{outline:2px solid var(--k);outline-offset:2px}

/* ==== 23.2. Сквозные правила для нескольких компонентов — уточнения ==== */
.svt tbody tr:not(.sec):hover th:where([scope=row]),.svt tbody tr:not(.sec):hover th:where([scope=row]).c2{background:#FFF3B8}
@media screen and (max-width:760px){
  .sv-split td:first-child,.rq:not(.mj) td:first-child,.mn td:first-child{min-width:0;max-width:none}
  .q14-rep.q18-on tr:not(.sec):not(.pop):not(.fixrow)>td:nth-child(2),.q14-rep.q18-on thead th:nth-child(2){left:44px;background:#fff}
}

/* ==== 24.2. Печать — уточнения ==== */
@media print{
  /* обвязка интерфейса */
  .skip,nav.tabs,.ft,.m3-top,.adminbar,.crumbs,.flash,dialog,.drawer,.undo-f,.btn,.fixbtn,.filters,
    details[data-q13-fbox],.vbar,.q16-repnav,.repyears,.pager,.pgn,.q13-more,.q26-more,.q28c-more,.seg,.rq-chips,
    .svpo-secs,.svpo-chips,.repacts,.acts,.rhint,.xls-alt,.svph,.svfull-cb,.svfull-l,.mfa-file-js,
    .mfa-jump,.svrow-hint,.acc-jump,.q2b-sort,.q16-delrow,.q16-docs,.clamp-more,input,select,textarea,noscript{display:none!important}
  /* шапка: только название организации (ППО у первички) — строкой над заголовком страницы */
  .hdr{background:none;color:#000;border-bottom:.75pt solid #000;margin:0 0 8pt}
  .block,.svsec,.rq,.q23{background:none;border:0;padding:0;border-radius:0}
  .q16-check>*+*{margin-top:12pt}
  /* длинный текст, свёрнутый до 3 строк, — целиком */
  .clamp-on,.clamp3,.svpo-on,.orgname{display:block!important;-webkit-line-clamp:unset!important;overflow:visible!important}
  /* таблицы */
  .tw,.svtw,.svpo-tw,.q14-tw,.q18-phw{overflow:visible!important;border:0;border-radius:0;background:none;max-width:none!important}
  th button::after,.svpo-ar{display:none!important}
  td.svmpo,th.svmpo,.q14-rep .q14-cur,.q14-rep td.val{border-left:.75pt solid #000;border-right:.75pt solid #000}
  .st,.badge,.ntag,.code{background:none!important;border:.5pt solid #777;color:#000!important}
}


/* ######################################################################
   ЧАСТЬ 3. УТОЧНЕНИЯ КАСКАДА (уровень 3): правила, которые перекрывают правила разделов выше с той же
   специфичностью и потому обязаны стоять ПОСЛЕ них. Разделы — в том же порядке, что в части 1.
   ###################################################################### */

/* ==== 2.3. Шапка — уточнения ==== */
.hdr-links a{text-decoration:none;white-space:nowrap}
.adminbar a{color:var(--y);text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
.crumbs-back:hover{background:var(--y-soft);border-color:var(--y-line)}
.viewbar>a:hover{border-color:var(--k)}
.btn-undo .i{width:16px;height:16px}
.adminbar.q20b-ab a{flex:none;margin-left:auto;font-weight:600}
@media screen and (max-width:760px){
  .hdr-links a{white-space:normal}
  .btn-undo .i{width:20px;height:20px}
  .adminbar.q20b-ab a{margin-left:26px}
}

/* ==== 3.3. Вкладки кабинета и «Раздел ▾» на телефоне — уточнения ==== */
@media screen and (max-width:760px){
  .tabs a{height:44px;padding:0 10px;white-space:nowrap}
}

/* ==== 4.3. Раскладка страницы — уточнения ==== */
/* простой вход для пользователей 40+ (ADR-018)
   Плашка «Рекомендуем задать свой пароль» (base.html): пароль выдал администратор; «Задать» — /password,
   «Скрыть» — до следующего входа. Ненавязчивая: светло-жёлтая полоса под вкладками, на телефоне переносится. */
.pwnag{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin:16px 32px 0;padding:8px 8px 8px 16px;border-radius:var(--r);background:var(--y-soft);border:1px solid var(--y-line);color:var(--k);font-size:14px}
.pwnag-f{margin:0}
@media screen and (max-width:760px){
  .pwnag{margin:12px 16px 0}
}

/* ==== 5.3. Кнопки, ссылки-кнопки, переключатели — уточнения ==== */
@media screen and (max-width:760px){
  .seg button,.seg a{height:44px}
}

/* ==== 6.3. Формы и поля — уточнения ==== */
/* простой вход для пользователей 40+ (ADR-018)
   Кнопка «Показать пароль» в поле пароля (app.js): внутри поля справа, цель нажатия 44×44 на любом экране.
   Поля входа и пароля — 16 px везде (крупнее для чтения; iPhone не увеличивает страницу). */
.pwe-box{position:relative}
.pwe-eye{position:absolute;right:2px;top:50%;transform:translateY(-50%);width:44px;height:44px;padding:0;border:0;background:transparent;border-radius:6px;display:grid;place-items:center;cursor:pointer;color:var(--t2);transition:background var(--ease)}
@supports (-webkit-touch-callout:none){
  /* (заказчик, снимок с iPhone: «Срок устранения» вылезает за правый край окна): у поля даты в Safari на
     iPhone своя минимальная ширина больше места в окне, width:100% её не перебивает. Только для iOS
     (-webkit-touch-callout есть лишь там): своё оформление поля снято, ширина — по колонке, дата — слева. */
  input[type=date],input[type=time],input[type=datetime-local]{-webkit-appearance:none;appearance:none;display:block;min-width:0;max-width:100%}
}

/* ==== 7.3. Таблицы — уточнения ==== */
a.num{color:inherit;text-decoration:underline;text-decoration-color:var(--g3);text-underline-offset:3px}
@media screen and (max-width:1024px),screen and (max-width:1199px) and (pointer:coarse){
  .q2b-sort{display:flex;align-items:center;gap:8px;margin:0 0 10px}
}
@media screen and (max-width:420px){
  .q2b-sort{flex-wrap:wrap;gap:4px 8px}
}

/* ==== 8.3. Плитки-итоги — уточнения ==== */
.q16-info a{color:var(--k);font-weight:600}
a.q21-tile:hover{border-color:var(--k)}
.st3g-sum{display:flex;align-items:center;gap:8px;margin:0 0 12px;font-weight:700}

/* ==== 9.3. Списки ППО — уточнения ==== */
a.q13-tile{color:inherit;text-decoration:none;width:fit-content}
.filters .sel select{max-width:min(320px,100%);text-overflow:ellipsis}
.q20b-rs .i{width:14px;height:14px}

/* ==== 10.3. О ППО и коллектив — уточнения ==== */
.q13-start h2{font-size:18px;margin-bottom:8px}
.q18g-cells{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}
.q18g-cell{display:flex;flex-direction:column;gap:2px;min-width:0;background:#fff;border:1px solid var(--g2);border-radius:var(--r);padding:8px 14px;color:inherit;text-decoration:none}
a.q18g-lnk:hover{border-color:var(--k)}
.ph .q18g-edit{flex:none}
@media (min-width:600px){
  .q18g-cells{grid-template-columns:repeat(2,minmax(0,1fr))}
}
.q18g-full{grid-column:1/-1}
@media (min-width:900px){
  /* карточки рядом: у инспектора контакты столбиком, у 19-ТИ ширина под длинные подписи — высоты близки */
  .q18g-c2{grid-template-columns:minmax(0,1fr)}
}

/* ==== 11.3. Проверки — уточнения ==== */
.q16-cardhd h2{margin:0;flex:1;min-width:0}
.q16-box .i{width:14px;height:14px;opacity:0}
.q27-hint{margin:0 0 8px}
.q28a-ft a { color: inherit; }
.q28a-src, .q28a-on, .q28a-nojr { margin-bottom: 12px; }

/* ==== 12.3. Обращения — уточнения ==== */
.q20-par{gap:6px;padding:10px 14px}
.q20-grow{flex:1}
@media (min-width:1100px){
  .q20-c2{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}
}
@media screen and (max-width:760px){
  .q20-acts .btn{flex:1 1 auto;height:44px;justify-content:center}
}

/* ==== 13.3. Несчастные случаи — уточнения ==== */
.q22-nums{grid-template-columns:repeat(2,minmax(0,1fr))}
.q22-kpi{gap:4px;padding:10px 14px}
@media (min-width:1600px){
  .q22-mea{grid-template-columns:minmax(0,1fr) minmax(0,2fr) minmax(0,1fr)}
}

/* ==== 14.3. Отчёт 19-ТИ ППО — уточнения ==== */
.q16-fix input{width:22px;height:22px}
.svt tr.q14-l0 td{border-top:2px solid var(--g3);font-weight:600}
@media (min-width:1280px){
  .q16-repnav a{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:var(--r);color:var(--k);text-decoration:none;font-size:14px;line-height:1.3}
}
.q16d-wl>a{color:inherit;font-weight:600}
@media screen and (max-width:760px){
  .q14-rep:not(.q18-on) tr[data-y]>td.val{grid-column:2;grid-row:2;display:flex;align-items:center;gap:8px;min-height:44px;text-align:left;white-space:normal}
}

/* ==== 15.3. Динамика по годам и выбор лет — уточнения ==== */
.dymenu a,.dymenu label{display:flex;align-items:center;gap:8px;min-height:34px;padding:0 10px;border-radius:var(--r);color:var(--k);text-decoration:none;font-weight:600;font-size:14px;cursor:pointer}
@media screen and (max-width:760px){
  .dymenu a,.dymenu label{min-height:44px}
}

/* ==== 16.3. ГТИ — уточнения ==== */
.q24-tbl td.tc-h{min-width:200px;max-width:300px}
.q24-sub a.q24-man{color:var(--t2);font-weight:600;text-decoration:underline;text-decoration-color:var(--g3)}
.q24-tbl td .q24-debt{display:inline-flex;margin-top:4px;text-decoration:none;white-space:nowrap}
.q24-tbl th:where([scope=row]){padding-left:8px;padding-right:8px}
@media screen and (min-width:761px) and (max-width:1366px){
  .q24-tbl td.tc-h{min-width:160px}
}
@media screen and (max-width:760px){
  /* карточка: обе группы; «Требует внимания» — отдельным выделенным блоком внизу карточки */
  .q24-tbl td.tc-h{min-width:0;max-width:none}
}

/* ==== 17.3. ГТИ — уточнения ==== */
.q24-tbl td .sv-rep{white-space:normal;flex-wrap:wrap;gap:4px 8px}
.q26-nb a{color:var(--k);font-weight:600}
.svrow-hint .i{width:16px;height:16px;flex:none}
.svpo-secs a,.svpo-chips a{display:inline-flex;align-items:center;gap:4px;min-height:32px;padding:0 12px;border:1.5px solid var(--line);border-radius:999px;background:#fff;color:var(--t2);font-size:13px;font-weight:600;text-decoration:none;transition:border-color var(--ease)}
@media screen and (max-width:760px){
  .svpo-secs a,.svpo-chips a{min-height:40px}
  .svpo-t tbody tr:nth-child(even) th:where([scope=row]).svpo-o{background:#F8F8F8}
  .svpo-t tbody tr:hover th:where([scope=row]).svpo-o{background:#FFF3B8}
}
@media (pointer:coarse){
  .svpo-secs a,.svpo-chips a{min-height:40px}
}

/* ==== 18.3. ГТИ — уточнения ==== */
.pgn a,.pgn .pgn-cur{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 8px;border-radius:var(--r)}
.q23-t td.q23-org{min-width:180px;max-width:300px;font-weight:600}
.q23-t td.q23-tx{min-width:140px}
@media screen and (max-width:760px){
  .pgn a,.pgn .pgn-cur{min-width:44px;height:44px}
  .rq-chips.q23-seg a{height:auto;min-height:44px;padding:6px 10px;white-space:normal;line-height:1.25}
  .q23-t td.q23-org,.q23-t td.q23-tx{min-width:0;max-width:none}
}

/* ==== 19.3. Окна — уточнения ==== */
dialog.q3e-ses .q16-cf-q{white-space:normal}

/* ==== 20.3. Администратор — уточнения ==== */
a.q28c-org{color:var(--k);font-weight:700;text-decoration:none}

/* ==== 22.3. Телефон — уточнения ==== */
@media screen and (max-width:760px){
  .mfa-del .btn{width:100%;height:44px;justify-content:center}
}

/* ==== 23.3. Сквозные правила для нескольких компонентов — уточнения ==== */
.svt tr.sec td,.svt tr.sec td.c1,.svt tr.sec td.c2,.svt tr.sec td.c3{background:var(--y-soft);border-top:2px solid var(--y-line);color:var(--k);font-size:12px;font-weight:700;letter-spacing:.03em;text-transform:uppercase}
@media (min-width:1600px){
  /* от 1600 px «Расследование» и «Мероприятия» одинаково устроены: ряд из трёх ячеек и абзац —
     высоты близки, без пустот */
  .q22-inc>.q18g-cells,.q22-inv{grid-template-columns:repeat(3,minmax(0,1fr))}
}


/* ######################################################################
   ЧАСТЬ 4. УТОЧНЕНИЯ КАСКАДА (уровень 4): правила, которые перекрывают правила разделов выше с той же
   специфичностью и потому обязаны стоять ПОСЛЕ них. Разделы — в том же порядке, что в части 1.
   ###################################################################### */

/* ==== 2.4. Шапка — уточнения ==== */
/* возврат из режима просмотра ППО — заметной кнопкой слева */
.viewbar>a{order:-1;margin-left:0;display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 14px;border:1.5px solid var(--line);border-radius:var(--r);background:#fff;color:var(--k);text-decoration:none}
@media screen and (max-width:760px){
  .adminbar.q20b-ab .q20b-abx button,.adminbar.q20b-ab a{display:inline-flex;align-items:center;min-height:44px}
}

/* ==== 4.4. Раскладка страницы — уточнения ==== */
.pwe-eye .i{width:20px;height:20px}

/* ==== 5.4. Кнопки, ссылки-кнопки, переключатели — уточнения ==== */
@media (pointer:coarse) and (min-width:761px){
  .seg a{height:44px}
}

/* ==== 7.4. Таблицы — уточнения ==== */
th:where([scope=row]) .org{white-space:normal;font-weight:600;color:var(--k);text-decoration:none;cursor:pointer}
th:where([scope=row]) .org:hover{text-decoration:underline}
@media screen and (min-width:761px) and (max-width:1024px),screen and (min-width:761px) and (max-width:1199px) and (pointer:coarse){
  table.tc-tab .st{white-space:normal;height:auto;min-height:24px;padding-top:2px;padding-bottom:2px}
}
@media screen and (max-width:1024px),screen and (max-width:1199px) and (pointer:coarse){
  .q2b-sort label{flex:none;font-size:13px;font-weight:600;color:var(--t2)}
}

/* ==== 8.4. Плитки-итоги — уточнения ==== */
.q21-sec{display:grid;grid-template-columns:subgrid;grid-template-rows:auto;grid-auto-rows:1fr;gap:8px 12px;grid-column:1/-1;min-width:0;align-content:start}
a.q21-tile{gap:6px;padding:14px 16px 14px 18px}
@media screen and (max-width:560px){
  .q21-sec{grid-auto-rows:auto}
  a.q21-tile{padding:12px 12px 12px 14px}
}

/* ==== 10.4. О ППО и коллектив — уточнения ==== */
@media (min-width:1600px){
  .q22-inc>.q18g-cells .q18g-full,.q22-inv .q18g-full{grid-column:auto}
}

/* ==== 11.4. Проверки — уточнения ==== */
td .q27-no,.q23-t td .q27-no{font-weight:700}
h1 .q27-no{font-weight:800}

/* ==== 13.4. Несчастные случаи — уточнения ==== */
@media (min-width:1600px){
  .q22-mea .q22-resp{grid-column:auto;order:0}
}

/* ==== 16.4. ГТИ — уточнения ==== */
.acc-jump a{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 12px;border:1.5px solid var(--line);border-radius:999px;background:#fff;color:var(--t2);font-size:13px;font-weight:600;text-decoration:none}
@media (pointer:coarse){
  .acc-jump a{min-height:44px}
}
@media screen and (max-width:760px){
  .acc-jump a{flex-wrap:wrap;justify-content:center;gap:2px 4px;min-height:48px;padding:4px 3px;border-radius:var(--r);font-size:12.5px;line-height:1.2;text-align:center}
}

/* ==== 17.4. ГТИ — уточнения ==== */
.vbar-seg a,.vbar-seg button{height:28px;padding:0 12px}
@media (pointer:coarse) and (min-width:761px){
  .vbar-seg a,.vbar-seg button,.vbar-reset{height:44px}
}
@media screen and (max-width:760px){
  .vbar-seg a,.vbar-seg button,.vbar-reset{height:44px}
  .svpo-t tfoot td.svpo-o{z-index:2;background:var(--y-soft)}
  .svph-t tr[data-svrow]:active td,.svt tr[data-svrow]:active td{background:#FFF3B8}
}

/* ==== 18.4. ГТИ — уточнения ==== */
@media (pointer:coarse) and (min-width:761px){
  .pgn a,.pgn .pgn-cur{min-width:44px;height:44px}
}

/* ==== 21.4. Вход и смена пароля — уточнения ==== */
.q3e-rem label{display:flex;align-items:center;gap:8px;cursor:pointer;font-weight:500}


/* ######################################################################
   ЧАСТЬ 5. УТОЧНЕНИЯ КАСКАДА (уровень 5): правила, которые перекрывают правила разделов выше с той же
   специфичностью и потому обязаны стоять ПОСЛЕ них. Разделы — в том же порядке, что в части 1.
   ###################################################################### */

/* ==== 10.5. О ППО и коллектив — уточнения ==== */
@media (min-width:1600px){
  /* четыре коротких значения пострадавшего — в один ряд: правая колонка не выше левой */
  .q22-vic .q18g-cells{grid-template-columns:repeat(4,minmax(0,1fr))}
}

/* ==== 14.5. Отчёт 19-ТИ ППО — уточнения ==== */
.mfa-jump a{display:flex;align-items:center;gap:10px;min-height:44px;padding:4px 8px;border-radius:var(--r);color:var(--k);text-decoration:none;font-size:14px;line-height:1.3}

/* ==== 24.5. Печать — уточнения ==== */
@media print{
  th>.mti-pr{display:inline}
}
