/* «Назорат» — стиль интерфейса. Основа — концепция А «Расмий ҳужжат» (decisions 2026-10-10):
   язык бланка в структуре (реквизиты, графы, линии), а не в украшениях.
   Все цвета, размеры и отступы — переменные ниже; в правилах — только var(...).
   Слова на экранах — docs/lugat.md. Витрина компонентов — /uslub/ (только DEBUG). */

:root{
  /* поверхность и чернила — нейтральные */
  --paper:#FFFFFF;      /* фон экрана */
  --paper-2:#F5F6F8;    /* боковое меню, наведение, шапка таблицы */
  --ink:#1C2230;        /* текст (16:1) */
  --ink-2:#434A58;      /* второстепенный текст (9:1) */
  --ink-3:#5E6573;      /* подписи граф, мета (5,9:1) */
  --navy:#1B2A52;       /* ссылки, главная кнопка, выбранное — цвет надписи знака KADASTR */
  --navy-h:#0F1A38;
  --navy-t:#ECEFF5;     /* подложка выбранного */
  --rule:#E1E4E9;       /* разделитель */
  --rule-2:#C3C8D0;     /* края поля */
  --field-line:#5E6573; /* нижняя линия поля (≥3:1) */
  /* смысл: только состояния и пороги (<50 / 50–79 / ≥80 — tasks.metrics) */
  --red:#9E2A1F;   --red-t:#FBEDEA;   --red-bar:#B03A2E;   /* <50%, кечикди, бажарилмади, ошибка */
  --amber:#7A5300; --amber-t:#FBF3E0; --amber-bar:#B57E0C; /* 50–79%, қайтарилди */
  --green:#2E6B3F; --green-t:#E9F3EA; --green-bar:#3D7D4E; /* ≥80%, бажарилди */
  --demo-bg:#F7F2E4; --demo-ink:#5A4410; --demo-line:#E2D5AC;
  --focus:#FFD200;      /* рамка фокуса: жёлтая с тёмным кольцом — видна на любом фоне */
  --serif:"PT Serif", Georgia, serif;          /* только h1, заголовок карточки, вход, печать */
  --sans:"PT Sans", "Segoe UI", Arial, sans-serif;
  /* шкала кегля — 6 ступеней */
  --f12:12px; --f14:14px; --f16:16px; --f18:18px; --f22:22px; --f28:28px;
  /* числа KPI: 28 на 1366, чуть растут с шириной (1920 → 33, 2560 → 40); крупно — режим показа */
  --f-kpi:max(var(--f28), calc(1vw + 14px));
  /* отступы 4 · 8 · 12 · 16 · 24 · 32 · 48 */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px; --s7:48px;
  --r:2px;              /* один радиус */
  --hit:40px;           /* высота элемента; на сенсоре и телефоне — 44 */
  --side:244px;         /* ширина бокового меню */
}
@media (pointer:coarse){ :root{--hit:44px} }

/* ---------- основа ---------- */
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--paper);color:var(--ink);font:var(--f16)/1.5 var(--sans);-webkit-text-size-adjust:100%}
a{color:var(--navy);text-underline-offset:3px}
:focus-visible{outline:3px solid var(--focus);outline-offset:3px;box-shadow:0 0 0 3px var(--ink)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.icon{width:1.15em;height:1.15em;flex:none;stroke-width:1.75;vertical-align:-0.2em}
h1{font:700 var(--f28)/1.25 var(--serif);color:var(--ink);margin:0;overflow-wrap:anywhere}
h2.sec{font:700 var(--f18)/1.3 var(--sans);margin:0 0 10px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
h2.sec .c{font-weight:400;font-size:var(--f14);color:var(--ink-3)}
p{margin:0 0 10px}
.kicker{font-size:var(--f14);color:var(--ink-3);margin:0 0 var(--s1)}
.lede{color:var(--ink-2);margin:var(--s1) 0 0;font-size:var(--f14)}
.muted{color:var(--ink-3)}
.num{font-variant-numeric:tabular-nums;white-space:nowrap}   /* короткие числа и даты */
.tnum{font-variant-numeric:tabular-nums}                      /* дата в строке с текстом — переносится */
.nw{white-space:nowrap}
.prose{max-width:70ch}       /* строки текста не длиннее ~70 знаков — и на больших экранах */
section+section{margin-top:28px}
.phead{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--s4);margin-bottom:20px;flex-wrap:wrap}
.tools-row{display:flex;gap:var(--s2);flex-wrap:wrap}

/* ---------- каркас ---------- */
.demo{display:flex;gap:var(--s2);align-items:center;justify-content:center;min-height:28px;padding:var(--s1) var(--s4);background:var(--demo-bg);color:var(--demo-ink);border-bottom:1px solid var(--demo-line);font-size:var(--f14);line-height:1.3;text-align:center}
.app{display:grid;grid-template-columns:var(--side) minmax(0,1fr);grid-template-rows:auto 1fr;min-height:100vh;min-height:100dvh}
.app>.demo{grid-column:1/-1}
.side{background:var(--paper-2);border-right:1px solid var(--rule);display:flex;flex-direction:column;min-width:0}
.brand{display:flex;gap:10px;align-items:center;padding:var(--s3) var(--s4);border-bottom:1px solid var(--rule);text-decoration:none;color:inherit}
.brand img{width:32px;height:32px}
.brand b{display:block;font:700 var(--f18)/1.1 var(--sans);color:var(--navy)}
/* название «Комплаенс назорат тизими» — две строки, разрыв после «назорат» (решение владельца 2026-10-13, вариант б) */
.brand b{max-width:10em;line-height:1.15;overflow-wrap:normal;hyphens:none}
.brand small{display:block;font-size:var(--f12);line-height:1.3;color:var(--ink-3);margin-top:2px}
.nav{padding:var(--s1) 0 var(--s3);flex:1}
.ng{margin-top:10px}
.ng-t{font-size:var(--f12);color:var(--ink-3);padding:0 var(--s4) 2px;font-weight:700}
.nav ul{list-style:none;margin:0;padding:0}
.nav a{display:flex;align-items:center;gap:10px;min-height:36px;padding:0 var(--s4) 0 13px;border-left:3px solid transparent;color:var(--ink-2);text-decoration:none;font-size:var(--f14)}
.nav a:hover{background:var(--paper);color:var(--ink)}
.nav a[aria-current]{border-left-color:var(--navy);background:var(--paper);color:var(--navy);font-weight:700}
.nav .cnt{margin-left:auto;font-size:var(--f12);font-weight:700;color:var(--navy);border:1px solid var(--rule-2);padding:0 6px;line-height:18px;border-radius:var(--r)}
.side-foot{font-size:var(--f12);color:var(--ink-3);padding:10px var(--s4);border-top:1px solid var(--rule);line-height:1.4}
.main{min-width:0;display:flex;flex-direction:column}
.top{display:flex;align-items:center;gap:var(--s3);min-height:56px;padding:0 var(--s5) 0 var(--s6);border-bottom:1px solid var(--rule);position:relative}
.menu-btn.icon-btn,.brand-mini{display:none}
.crumbs{min-width:0;flex:1}
.crumbs ol{display:flex;align-items:center;gap:6px;list-style:none;margin:0;padding:0;font-size:var(--f14);color:var(--ink-3);white-space:nowrap;overflow:hidden}
.crumbs li{display:flex;align-items:center;gap:6px;min-width:0}
.crumbs li+li::before{content:"/";color:var(--rule-2)}
.crumbs a{color:var(--ink-2);text-decoration:none}
.crumbs a:hover{text-decoration:underline}
.crumbs [aria-current]{color:var(--ink);font-weight:700;overflow:hidden;text-overflow:ellipsis}
.tools{display:flex;align-items:center;gap:var(--s2);margin-left:auto}
.icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:var(--hit);height:var(--hit);padding:0 var(--s2);border:1px solid transparent;background:none;color:var(--ink-2);border-radius:var(--r);cursor:pointer;text-decoration:none;font:inherit}
.icon-btn:hover{border-color:var(--rule);color:var(--ink)}
.bell .count{font-size:var(--f12);font-weight:700;line-height:16px;min-width:18px;padding:0 var(--s1);background:var(--navy);color:#fff;border-radius:var(--r)}
/* меню человека — <details>: открывается касанием и клавиатурой, без наведения и без JS */
.umenu-d{position:relative}
.umenu-d>summary{list-style:none}
.umenu-d>summary::-webkit-details-marker{display:none}
.person{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 var(--s2) 0 var(--s3);border-left:1px solid var(--rule);cursor:pointer;text-align:left}
.person:hover{background:var(--paper-2)}
.person .pn{display:block;font-weight:700;font-size:var(--f14);line-height:1.25}
.person .pp{display:block;font-size:var(--f12);color:var(--ink-3);line-height:1.25}
.umenu{position:absolute;right:0;top:calc(100% + 6px);width:300px;max-width:calc(100vw - 16px);background:var(--paper);border:1px solid var(--rule-2);box-shadow:0 8px 24px rgba(28,34,48,.14);z-index:30}
.umenu .uh{padding:var(--s3) var(--s4);border-bottom:1px solid var(--rule)}
.umenu .uh b{display:block}
.umenu .uh span{display:block;font-size:var(--f14);color:var(--ink-3)}
.umenu a,.umenu button{display:flex;gap:10px;align-items:center;width:100%;min-height:44px;padding:0 var(--s4);color:var(--ink);text-decoration:none;background:none;border:0;font:inherit;cursor:pointer;text-align:left}
.umenu a:hover,.umenu button:hover{background:var(--paper-2)}
.umenu .meta{margin-left:auto;font-size:var(--f14);color:var(--ink-3)}
.umenu .meta.on{color:var(--green)}
.umenu form{margin:0;border-top:1px solid var(--rule)}
/* содержимое не шире ~1400 px (кроме дашборда — .content.full): на 1920 строка не разъезжается */
.content{padding:var(--s5) var(--s6) 40px;flex:1;min-width:0;max-width:calc(1400px + 2 * var(--s6))}
.content.full{max-width:none}
.back,.pfoot,.print-foot{display:none}
.messages{list-style:none;margin:0 0 var(--s4);padding:0}
.messages li{display:flex;gap:var(--s2);align-items:flex-start;padding:10px 14px;border-left:3px solid var(--navy);background:var(--navy-t);margin-bottom:var(--s2);max-width:70ch}
.messages li.success{border-color:var(--green-bar);background:var(--green-t)}
.messages li.error{border-color:var(--red-bar);background:var(--red-t)}
.messages li.warning{border-color:var(--amber-bar);background:var(--amber-t)}
/* «Асосий қисмга ўтиш»: за краем экрана, при фокусе с клавиатуры — поверх шапки слева сверху */
.skip{position:absolute;left:var(--s2);top:-200px;z-index:100;display:inline-flex;align-items:center;min-height:var(--hit);padding:0 var(--s4);background:var(--paper);color:var(--navy);font-weight:700;border:2px solid var(--navy)}
.skip:focus{top:var(--s2)}

/* ---------- кнопки ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);min-height:var(--hit);padding:0 18px;border-radius:var(--r);font:700 var(--f16)/1.2 var(--sans);text-decoration:none;cursor:pointer;border:1px solid transparent;white-space:nowrap}
.btn-primary{background:var(--navy);color:#fff;border-color:var(--navy)}
.btn-primary:hover{background:var(--navy-h)}
.btn-secondary{background:var(--paper);color:var(--navy);border-color:var(--navy)}
.btn-secondary:hover{background:var(--navy-t)}
.btn-danger{background:var(--red);color:#fff;border-color:var(--red)}
.btn-danger:hover{background:#7E1F16}
.btn-danger-o{background:var(--paper);color:var(--red);border-color:var(--red)}
.btn-link{background:none;border:0;color:var(--navy);text-decoration:underline;padding:0 6px;font-weight:400}
.btn[disabled]{background:var(--paper-2);color:var(--ink-3);border-color:var(--rule-2);cursor:not-allowed}
.btn.block{width:100%}
.more{display:inline-flex;align-items:center;gap:var(--s1);min-height:var(--hit)}
/* пояснение рядом с действием: «Ижро муддати етмаса — …» */
.uplink{display:inline-flex;align-items:center;gap:var(--s1);min-height:var(--hit);margin:-8px 0 var(--s1);font-size:var(--f14)}
.act-note{font-size:var(--f14);color:var(--ink-3);margin:6px 0 0;max-width:60ch}

/* ---------- состояние-штамп: рамка + значок + слово (не только цвет) ---------- */
.st{display:inline-flex;align-items:center;gap:5px;font:700 var(--f14)/1 var(--sans);padding:var(--s1) var(--s2) var(--s1) 6px;border:1px solid currentColor;border-radius:var(--r);white-space:nowrap;background:var(--paper)}
.st .icon{width:14px;height:14px;stroke-width:2}
.st-sent{color:var(--ink-2)}
.st-accepted{color:var(--navy)}
.st-submitted{color:var(--navy);border-style:dashed}
.st-returned{color:var(--amber);background:var(--amber-t)}
.st-done{color:var(--green);background:var(--green-t)}
.st-failed{color:var(--red);background:var(--red-t)}
/* срок: «Ижро муддати: 12.10.2026 · 3 кун қолди» — остаток не отрывается от даты */
.dl{font-size:var(--f14);color:var(--ink-2)}
.dl .dlk{color:var(--ink-3)}
.dl .dlv{font-weight:700;color:var(--ink)}
.dl .dlr{white-space:normal}
.dl.late .dlr{color:var(--red);font-weight:700}
.dl.ok .dlr{color:var(--green)}

/* ---------- реквизиты и графы ---------- */
.reqs{display:grid;grid-template-columns:max-content max-content minmax(0,1fr) minmax(0,1fr);margin:14px 0 0;padding:10px 0;border-top:1px solid var(--ink);border-bottom:1px solid var(--rule)}
.reqs>div{padding:0 20px;border-left:1px solid var(--rule);min-width:0}
.reqs>div:first-child{padding-left:0;border-left:0}
.reqs dt{font-size:var(--f14);color:var(--ink-3)}
.reqs dd{margin:2px 0 0;overflow-wrap:anywhere}
.reqs dd.big{font-weight:700;font-size:var(--f18);color:var(--navy)}
/* карточка поручения: пять реквизитов в одну строку */
.reqs.five{grid-template-columns:max-content max-content minmax(0,1.2fr) minmax(0,1fr) minmax(0,1fr)}
.terms{margin:0;border-top:1px solid var(--rule)}
.terms>div{display:grid;grid-template-columns:220px minmax(0,1fr);gap:var(--s4);padding:9px 0;border-bottom:1px solid var(--rule)}
.terms dt{color:var(--ink-3);font-size:var(--f14);padding-top:2px}
.terms dd{margin:0;overflow-wrap:anywhere}
.callout{border-left:3px solid var(--amber-bar);background:var(--amber-t);padding:14px 18px}
/* заголовок выноски — обычным текстом со значком в строке: на телефоне значок не уходит на свою строку */
.callout h2{font:700 var(--f16)/1.3 var(--sans);margin:0 0 6px;color:var(--amber)}
.callout h2 .icon{margin-right:6px}
.callout blockquote{margin:0 0 var(--s2);font-size:var(--f18);line-height:1.45;max-width:70ch}
.callout p{margin:0;font-size:var(--f14)}
.docref{display:flex;gap:var(--s3);align-items:center;padding:var(--s2) var(--s3);border:1px solid var(--rule);margin-top:10px}
.docref>.icon{width:22px;height:22px;color:var(--navy)}
.docref .dn{font-weight:700}
.docref .dm{font-size:var(--f14);color:var(--ink-3)}
.docref .muted{margin-left:auto;white-space:nowrap}
.docref a{margin-left:auto;white-space:nowrap;min-height:44px;min-width:44px;display:inline-flex;align-items:center;justify-content:center}
/* история: журнал; на телефоне — линия с точками */
.log{width:100%;border-collapse:collapse;font-size:var(--f14)}
.log td{padding:7px 10px 7px 0;border-bottom:1px solid var(--rule);vertical-align:top}
.log td:first-child{white-space:nowrap;color:var(--ink-3);width:140px}
.log td:nth-child(2){white-space:nowrap;width:150px}
.log .why{display:block;color:var(--ink-2);max-width:70ch;overflow-wrap:anywhere}
/* ссылка на прежний файл отчёта — цель нажатия --hit, как у других ссылок; длинное имя переносится */
.log .why a{display:inline-flex;align-items:center;min-height:var(--hit)}

/* ---------- таблицы и реестр ---------- */
.tbl{width:100%;border-collapse:collapse;font-size:var(--f14)}
.tbl th{color:var(--ink-2);text-align:left;padding:var(--s2) 10px;border-bottom:1.5px solid var(--ink);font-weight:700;white-space:nowrap;vertical-align:bottom}
.tbl td{padding:var(--s2) 10px;border-bottom:1px solid var(--rule);vertical-align:top}
.tbl tbody tr:hover{background:var(--paper-2)}
.tbl tr[data-href]{cursor:pointer}
.tbl th a{color:var(--ink)}
.tbl td.desc{max-width:320px;overflow-wrap:anywhere}
.tbl td.nw{white-space:nowrap}
.tbl .sub{display:block;font-size:var(--f12);color:var(--ink-3);white-space:nowrap}
/* просроченная строка — красная полоса слева (вместе со словом «кечикди», не вместо) */
.tbl tr.late>td:first-child{box-shadow:inset 3px 0 0 var(--red-bar)}
.reg-head,.reg>li{display:grid;grid-template-columns:118px minmax(0,1fr) 200px 220px 20px;gap:var(--s4);align-items:start}
.reg-head{font-size:var(--f14);color:var(--ink-2);font-weight:700;padding:0 var(--s3) 6px;border-bottom:1.5px solid var(--ink)}
.reg{list-style:none;margin:0 0 6px;padding:0}
.reg>li{position:relative;padding:var(--s3);border-bottom:1px solid var(--rule)}
.reg>li:hover{background:var(--paper-2)}
.reg>li.late{box-shadow:inset 3px 0 0 var(--red-bar)}
.reg .no{display:block;font-weight:700}
.reg .date{display:block;font-size:var(--f14);color:var(--ink-3)}
.reg .ttl{line-height:1.4;color:var(--navy);text-decoration:none;overflow-wrap:anywhere}
.reg .ttl::after{content:"";position:absolute;inset:0}  /* вся строка — цель нажатия */
.reg .ttl:hover{text-decoration:underline}
.reg .by{display:block;font-size:var(--f14);color:var(--ink-3);margin-top:2px}
.reg .reason{font-size:var(--f14);margin:6px 0 0;color:var(--amber)}
.reg .reason span{color:var(--ink)}
.reg .next{display:block;font-size:var(--f14);color:var(--ink-2);margin-top:6px}
.reg .chev{color:var(--ink-3);margin-top:var(--s1)}
/* плитки-счётчики: число и состояние одной строкой, ниже — что нужно от человека и
   «шундан N таси кечикди» (часть своей плитки — числа складываются в число открытых) */
.tally{display:flex;margin:0 0 var(--s5);padding:0;list-style:none;border-top:1px solid var(--ink);border-bottom:1px solid var(--rule)}
.tally li{flex:1;border-left:1px solid var(--rule);min-width:0}
.tally li:first-child{border-left:0}
.tally a{display:flex;flex-direction:column;padding:6px var(--s4) var(--s2);text-decoration:none;color:var(--ink);min-height:44px;height:100%}
.tally a:hover{background:var(--paper-2)}
.tally a[aria-current]{box-shadow:inset 0 -3px 0 var(--navy)}
.tally .tt{display:flex;align-items:baseline;gap:var(--s2)}
.tally .tv{font-weight:700;font-size:var(--f22);line-height:1.2}
.tally .tl{font-weight:700;font-size:var(--f16)}
.tally .th{font-size:var(--f14);color:var(--ink-3);line-height:1.35}
.tally .tsub{font-size:var(--f14);line-height:1.35;display:flex;gap:5px;align-items:center}
.tally .tsub.red{color:var(--red);font-weight:700}
/* плитки без перехода (карточка поручения): тот же вид, что у ссылок */
.tally.static li>div{display:flex;flex-direction:column;padding:6px var(--s4) var(--s2);min-height:44px}
/* ижро поручения: «Ижро муддати:» уже в заголовке графы — в ячейке не повторяем (кроме срока принятия) */
.tbl.pairs .dl:not(.accept) .dlk{display:none}
form.inline{display:inline;margin:0}
/* заголовок раздела и фильтр — одной строкой: список начинается сразу */
.late-line{display:none;gap:6px;align-items:center;color:var(--red);font-weight:700;margin:0 0 var(--s2)}
.sec-h{display:flex;justify-content:space-between;align-items:center;gap:var(--s2) var(--s4);flex-wrap:wrap;margin:0 0 var(--s2)}
.sec-h h2.sec{margin:0}
.filter-d>summary{list-style:none;display:none}
.filter-d>summary::-webkit-details-marker{display:none}
.fbar{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap}
.fbar label{font-size:var(--f14);font-weight:700;color:var(--ink-2)}
.fbar .sel{width:auto;min-width:240px}   /* не уже 240 px — проверка снимков «УЗКОЕ ПОЛЕ» */
.fbar .inp{width:340px}
.filters{display:flex;flex-wrap:wrap;gap:var(--s3) var(--s4);align-items:flex-end;margin:0 0 20px;padding:0 0 var(--s4);border-bottom:1px solid var(--rule)}
.filters .fld{display:flex;flex-direction:column;gap:var(--s1);min-width:0;border:0;padding:0;margin:0}
.filters label,.filters legend{font-size:var(--f14);color:var(--ink-2);font-weight:700;padding:0}
.filters .grow{flex:1;min-width:220px}
.filters .rr{display:flex;align-items:center;gap:6px;font-size:var(--f14);color:var(--ink-2)}
.pager{display:flex;align-items:center;gap:var(--s1);flex-wrap:wrap;margin-top:var(--s4)}
.pager a,.pager span{display:inline-flex;align-items:center;justify-content:center;min-width:36px;height:36px;padding:0 var(--s2);border:1px solid var(--rule);text-decoration:none;color:var(--navy);font-size:var(--f14)}
.pager [aria-current]{background:var(--navy);color:#fff;border-color:var(--navy);font-weight:700}
.pager .off{color:var(--ink-3)}
.pager .gap{border:0;color:var(--ink-3)}
.pager .info{margin-left:auto;border:0;color:var(--ink-3)}
.resbar{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);margin-bottom:6px;font-size:var(--f14);color:var(--ink-2);flex-wrap:wrap}
.resbar b{color:var(--ink)}
.prog{display:flex;align-items:center;gap:10px}
.prog .bar{width:120px;height:8px;background:var(--paper-2);border:1px solid var(--rule-2);position:relative}
.prog .bar i{position:absolute;left:0;top:0;bottom:0;background:var(--navy)}
/* список поручений на телефоне: № и дата, заголовок, ход ижро, «2 кечикди · 1 текширувда» */
.mlist{display:none;list-style:none;margin:0;padding:0}
.mlist li{border-bottom:1px solid var(--rule);padding:var(--s2) 0 var(--s2) var(--s2)}
.mlist li.late{box-shadow:inset 3px 0 0 var(--red-bar)}
.mlist a{display:block;text-decoration:none;color:var(--ink);min-height:44px}
.mlist .mh{font-size:var(--f14);color:var(--ink-3)}
.mlist .mh b{color:var(--ink)}
.mlist .mt{display:block;color:var(--navy);margin:2px 0 4px;overflow-wrap:anywhere}
.mlist .mm{font-size:var(--f14);color:var(--ink-2)}
.mlist .mm .red{color:var(--red);font-weight:700}
.mlist.docs .mt{color:var(--ink)}   /* в архиве заголовок — не ссылка; ссылки — строкой ниже */
.mlist .ma{display:flex;gap:var(--s5);flex-wrap:wrap}
.mlist .ma a{display:inline-flex;align-items:center;min-height:44px;color:var(--navy);text-decoration:underline}
/* карточка поручения (v0.21, № 92): сводка фильтрует таблицу ижро. Плитка — ссылка, «шундан N таси кечикди»
   под ней — не ссылка; выбранная плитка — черта снизу на всю плитку; «Барчаси» — справа от заголовка */
.tally.pick li{display:flex;flex-direction:column}
.tally.pick a{height:auto;flex:1 0 auto}
.tally.pick .tsub{padding:0 var(--s4) var(--s2)}
.tally.pick a[aria-current]{box-shadow:none}
.tally.pick li.cur{box-shadow:inset 0 -3px 0 var(--navy)}
.tally-all{display:inline-flex;align-items:center;min-height:44px;padding:0 var(--s2);color:var(--navy)}
span.tally-all{color:var(--ink);font-weight:700;box-shadow:inset 0 -3px 0 var(--navy)}
@media (max-width:760px){.tally.pick .tsub{padding:0 10px var(--s2)}}
@media print{.tally.pick li.cur .tl{text-decoration:underline}}   /* выбранное состояние видно и на бумаге */
/* по обходу v0.21: раздел не короче экрана — якорь #s-pairs всегда ставит заголовок наверх, плитки после
   нажатия на одном месте; строка, к которой вернули (#a-…), — с подложкой и не у самого края */
@media screen{.pairs-sec{min-height:100vh}}
#s-pairs{scroll-margin-top:var(--s4)}
.tbl.pairs tbody tr{scroll-margin-top:var(--s7)}
.tbl.pairs tbody tr:target{background:var(--navy-t)}
/* наведение и фокус — на всю плитку, вместе с «кечикди» (сама строка «кечикди» — не ссылка) */
.tally.pick li:hover{background:var(--paper-2)}
.tally.pick a:hover{background:none}
/* выбранная плитка: подложка, число и подпись — синие, черта 4 px; при наведении не меняется */
.tally.pick li.cur,.tally.pick li.cur:hover{background:var(--navy-t);box-shadow:inset 0 -4px 0 var(--navy)}
.tally.pick li.cur :is(.tv,.tl){color:var(--navy)}
span.tally-all{box-shadow:inset 0 -4px 0 var(--navy)}
/* фокус — та же жёлто-тёмная рамка, что везде, но внутри плитки (снаружи её режут соседние плитки) */
.tally.pick li:focus-within{outline:3px solid var(--focus);outline-offset:-3px;box-shadow:inset 0 0 0 6px var(--ink)}
.tally.pick a:focus-visible{outline:0;box-shadow:none}
.sec-h.tally-h{align-items:baseline}
/* графы таблицы ижро не пляшут от фильтра: узкие — по ширине, «Ижрочи» и «Ижро муддати» делят остаток */
@media (min-width:761px){
  .tbl.pairs{table-layout:fixed}
  .tbl.pairs th:nth-child(2){width:150px}
  .tbl.pairs th:nth-child(4){width:160px}
  .tbl.pairs th:nth-child(5){width:96px}
  .tbl.pairs td{overflow-wrap:anywhere}
}
/* средняя ширина: шесть плиток в ряд не влезают («Бажарилмади» вылезает) — по три в ряд */
@media (min-width:761px) and (max-width:1250px){
  .tally.static.pick{flex-wrap:wrap}
  .tally.static.pick li{flex:1 1 30%;border-top:1px solid var(--rule)}
  .tally.static.pick li:nth-child(3n+1){border-left:0}
  .tally.static.pick li:nth-child(-n+3){border-top:0}
}
/* телефон: плитки по две в ряд — у левой в ряду черты слева нет, у первого ряда нет серой черты сверху */
@media (max-width:760px){
  .tally.static.pick li:nth-child(odd){border-left:0}
  .tally.static.pick li:nth-child(-n+2){border-top:0}
}

/* ---------- поля ---------- */
.inp,.sel,.ta{display:block;width:100%;min-height:var(--hit);padding:var(--s2) 10px;font:var(--f16)/1.4 var(--sans);color:var(--ink);background:#fff;border:1px solid var(--rule-2);border-bottom:1.5px solid var(--field-line);border-radius:0}
.sel{appearance:none;padding-right:34px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%231C2230' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}
.ta{min-height:110px;resize:vertical}
.inp:focus-visible,.sel:focus-visible,.ta:focus-visible{border-bottom-color:var(--navy)}
.inp.date{width:170px}
.inp.n{width:72px;text-align:center;display:inline-block}
input[type=checkbox],input[type=radio]{width:18px;height:18px;accent-color:var(--navy);margin:0;flex:none}
.field{margin:0 0 var(--s4)}
.field>label,.field>.lbl{display:block;font-weight:700;margin-bottom:5px}
.hint{font-size:var(--f14);color:var(--ink-3);margin-top:5px;line-height:1.4;max-width:70ch}
.req{color:var(--red);font-weight:700}
/* ошибка у поля: черта слева + текст над полем + красная нижняя линия */
.field.has-error{border-left:4px solid var(--red);padding-left:var(--s3)}
.err-msg{display:flex;gap:6px;align-items:flex-start;color:var(--red);font-size:var(--f14);margin:0 0 6px;font-weight:700}
.has-error :is(.inp,.ta,.sel){border-bottom:2px solid var(--red);background:#FFF8F6}
.errsum{border:1px solid var(--red);border-left-width:4px;background:var(--red-t);padding:var(--s3) var(--s4);margin-bottom:var(--s4);max-width:980px}
.errsum h2{font:700 var(--f16)/1.3 var(--sans);color:var(--red);margin:0 0 6px;display:flex;gap:var(--s2);align-items:center}
.errsum ul{margin:0;padding-left:20px;font-size:var(--f14);list-style:disc}
.errsum p{margin:0;font-size:var(--f14)}
.blank{max-width:980px}
.clause{border-top:1px solid var(--ink);padding-top:14px;margin-top:var(--s5)}
.clause>h2{font:700 var(--f18)/1.3 var(--sans);margin:0 0 6px;display:flex;gap:var(--s2);align-items:baseline}
.clause>h2 .cn{color:var(--ink-3);min-width:20px}
.grow-row{display:grid;grid-template-columns:230px minmax(0,1fr);gap:var(--s5);padding:14px 0;border-bottom:1px solid var(--rule)}
.grow-row:last-child{border-bottom:0}
.grow-row>.lbl{font-weight:700;padding-top:9px}
.grow-row>.lbl .hint{font-weight:400;margin-top:var(--s1)}
.radios{display:flex;flex-wrap:wrap;border:1px solid var(--rule-2);width:max-content;max-width:100%}
.radios label{display:flex;align-items:center;gap:var(--s2);min-height:var(--hit);padding:0 14px;border-left:1px solid var(--rule-2);cursor:pointer}
.radios label:first-child{border-left:0}
.radios label:has(input:checked){background:var(--navy-t);font-weight:700;color:var(--navy)}
.checks{border:0;margin:0;padding:0;min-width:0}
.checks .all{display:flex;align-items:center;gap:10px;font-weight:700;border-bottom:1px solid var(--rule);margin-bottom:6px;min-height:var(--hit)}
.checks .grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 var(--s4)}
.checks .grid label{display:flex;gap:10px;align-items:center;min-height:var(--hit)}
.chk{display:flex;gap:10px;align-items:center;min-height:var(--hit)}
.total{margin-top:10px;padding:var(--s2) var(--s3);border-left:3px solid var(--navy);background:var(--navy-t);font-size:var(--f14)}
.total b{font-size:var(--f16)}
.form-actions{display:flex;align-items:center;gap:var(--s4);flex-wrap:wrap;margin-top:var(--s5);padding-top:var(--s4);border-top:3px double var(--ink)}
.form-actions .sum{margin-right:auto;font-size:var(--f14);color:var(--ink-2)}

/* ---------- карточка ---------- */
.doc-head .hrow{display:flex;justify-content:space-between;gap:var(--s4);align-items:flex-start}
.doc-head h1{max-width:900px;font-size:var(--f22)}
.doc-head .hside{display:flex;gap:10px;align-items:center;flex:none}
/* правая панель занимает обе строки; лишняя высота — нижней строке, а не под графами */
.doc-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;grid-template-rows:auto 1fr;grid-template-areas:"call aside" "body aside";gap:0 var(--s6);margin-top:20px}
.doc-grid>.call{grid-area:call;margin-bottom:var(--s5)}
.doc-grid>.body{grid-area:body;min-width:0;max-width:820px}
.doc-grid>.aside{grid-area:aside}
/* экран решения: «Тарих» — отдельный блок; на широком — под отчётом слева, на одной колонке — после формы */
.doc-grid.body-first{grid-template-rows:auto auto 1fr;grid-template-areas:"call aside" "body aside" "hist aside"}
.doc-grid>.hist{grid-area:hist;min-width:0;max-width:820px;margin-top:28px}
.panel{border-top:2px solid var(--ink);padding-top:var(--s3)}
.panel h2{font:700 var(--f18)/1.3 var(--sans);margin:0 0 6px}
.panel .acts{display:flex;flex-direction:column;gap:var(--s2);margin-top:var(--s3)}
.panel .small{font-size:var(--f14);color:var(--ink-3);margin-top:10px}
/* итог закрытого ижро: строкой под штампом; причина «Бажарилмади» — отдельной строкой */
.closing{margin:10px 0 0}
.closing .why{display:block;color:var(--ink-2);margin-top:var(--s1)}
.qa{border-bottom:1px solid var(--rule);padding:10px 0}
.qa .who{font-size:var(--f14);color:var(--ink-3)}
.qa .a{margin:6px 0 0 18px;padding-left:var(--s3);border-left:2px solid var(--rule-2)}
.opt{border:1px solid var(--rule-2);margin-bottom:var(--s2)}
.opt>label{display:flex;gap:10px;align-items:flex-start;padding:var(--s3);cursor:pointer;min-height:44px}
.opt>label input{margin-top:3px}
.opt .ot{font-weight:700;display:block}
.opt .od{font-size:var(--f14);color:var(--ink-2);display:block;margin-top:2px}
.opt .ofields{display:none;padding:0 var(--s3) var(--s3) 40px}
.opt:has(input:checked){border-color:var(--navy);box-shadow:inset 3px 0 0 var(--navy)}
.opt:has(input:checked) .ofields{display:block}
/* решение по отчёту: три варианта равноправно, кнопка одна — та, что выбрана */
.decide fieldset{border:0;padding:0;margin:0}
.decide legend{font:700 var(--f18)/1.3 var(--sans);margin-bottom:var(--s2);padding:0}
.decide .sb{display:none}
.decide .sb.none{display:inline-flex}
.decide:has(input[value=done]:checked) .sb.done,.decide:has(input[value=return]:checked) .sb.return,
.decide:has(input[value=failed]:checked) .sb.failed{display:inline-flex}
.decide:has(input[name=decision]:checked) .sb.none{display:none}
/* ---------- ижрочи (v0.17): карточка ижро и формы «Ҳисобот юбориш», «Муддатни узайтириш», «Савол бериш» ---------- */
.terms .why{display:block;color:var(--ink-2);font-size:var(--f14)}
.aterms,.acall{max-width:820px;margin-bottom:var(--s4)}
.aform{max-width:720px}
.frow{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--s4)}
.inp.file{padding:6px 10px}
/* документ отчёта: длинное имя файла переносится, «Очиш» не уходит за рамку (телефон) */
.docref>div{min-width:0;overflow-wrap:anywhere}
/* поле файла (2026-10-12): своя кнопка «Файлни танлаш» и имя файла (nazorat.js); настоящее поле визуально скрыто,
   его фокус — рамкой на кнопке. Без JS — обычное поле (.inp.file) */
.fpick-in,.inp.fpick-in{position:absolute;width:1px;height:1px;min-height:0;padding:0;margin:0;border:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.fpick{display:flex;align-items:center;gap:var(--s2) var(--s3);flex-wrap:wrap}
.fpick-name{flex:1 1 12rem;min-width:0;overflow-wrap:anywhere;color:var(--ink-3)}
.fpick.chosen .fpick-name{color:var(--ink);font-weight:700}
.fpick-in:focus-visible+.fpick .fpick-btn{outline:3px solid var(--focus);outline-offset:3px;box-shadow:0 0 0 3px var(--ink)}
.has-error .fpick-btn{border-color:var(--red)}
@media (hover:none){.fpick-btn.btn-secondary:hover{background:var(--paper)}}   /* сенсор: серый «наведения» не залипает после касания */
/* ---------- текширувда (v0.17): отчёты, вопросы и запросы продления — три раздела с якорями ---------- */
.rv-jump{display:flex;flex-wrap:wrap;gap:0 var(--s5);list-style:none;margin:-10px 0 var(--s3);padding:0;font-size:var(--f14)}
.rv-jump a{display:inline-flex;align-items:center;gap:6px;min-height:var(--hit)}
.rv-reg .rv-at{display:block;font-size:var(--f14)}
.rv-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--ink)}
/* строка: слева — что спросили / попросили, справа — форма; у якоря (#q-…, #e-…) — синяя черта */
.rv-item{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,440px);gap:var(--s3) var(--s6);padding:var(--s4) 0;border-bottom:1px solid var(--rule)}
.rv-item:target{box-shadow:inset 3px 0 0 var(--navy);padding-left:var(--s3)}
.rv-h{margin:0}
.rv-h a{display:inline-block;padding:10px 0;margin:-10px 0 0;overflow-wrap:anywhere}
.rv-m{margin:2px 0 0;font-size:var(--f14);color:var(--ink-2)}
.rv-q{margin:var(--s2) 0 0;padding:var(--s2) var(--s3);border-left:3px solid var(--rule-2);background:var(--paper-2);max-width:70ch;overflow-wrap:anywhere}
.rv-form{min-width:0}
.rv-form .field{margin-bottom:var(--s3)}
.rv-form .errsum{margin-bottom:var(--s3)}
.rv-acts{display:flex;gap:var(--s2);flex-wrap:wrap}
.opt-l{font-weight:400;color:var(--ink-3)}
/* до 1100 px форма — под вопросом; на широком «Ҳисобот юборилди:» уже в заголовке графы */
@media (max-width:1100px){.rv-item{grid-template-columns:minmax(0,1fr)}.rv-form{max-width:560px}}
@media (min-width:1251px){.rv-reg .rk{display:none}}
/* экран решения: открытый вопрос и запрос продления этого ижро — выносками под сроками */
.call .callout+.callout,.terms+.callout{margin-top:var(--s3)}
/* «Аллақачон юкланган ҳужжат» — у ошибки поля «Файл»: отметить документ вместо повторной загрузки */
.offer{border:1px solid var(--rule-2);background:var(--navy-t);padding:var(--s2) var(--s3) var(--s3);margin:0 0 var(--s3);min-width:0}
.offer legend{font-weight:700;padding:0 var(--s1)}
.offer .orow{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:0 var(--s4)}
.offer .orow .chk{min-width:0;overflow-wrap:anywhere}
.offer .orow a{display:inline-flex;align-items:center;min-height:var(--hit);color:var(--navy);text-decoration:underline}
.offer .fn{display:block;font-size:var(--f14);color:var(--ink-2)}
/* без :has() (Firefox до 121, старый Chrome): те же правила по классу .on и data-choice от nazorat.js;
   отдельными правилами — непонятный :has() в общем списке погасил бы всё правило */
.radios label.on{background:var(--navy-t);font-weight:700;color:var(--navy)}
.opt.on{border-color:var(--navy);box-shadow:inset 3px 0 0 var(--navy)}
.opt.on .ofields{display:block}
.decide[data-choice=done] .sb.done,.decide[data-choice=return] .sb.return,.decide[data-choice=failed] .sb.failed{display:inline-flex}
.decide[data-choice] .sb.none{display:none}

/* ---------- диалог подтверждения — <dialog> ---------- */
dialog.dlg{width:540px;max-width:calc(100vw - 24px);border:0;border-top:4px solid var(--red);padding:20px var(--s5);box-shadow:0 16px 48px rgba(0,0,0,.25);color:var(--ink)}
dialog.dlg.navy{border-top-color:var(--navy)}
dialog.dlg::backdrop{background:rgba(28,34,48,.48)}
.dlg h2{font:700 var(--f22)/1.3 var(--sans);margin:0 0 10px}
.dlg ul{margin:0 0 var(--s3);padding-left:20px}
.dlg li{margin-bottom:var(--s1)}
.dlg .acts{display:flex;gap:var(--s3);justify-content:flex-end;flex-wrap:wrap;margin-top:var(--s4);padding-top:var(--s3);border-top:1px solid var(--rule)}

/* ---------- пустое состояние ---------- */
/* линия — на всю ширину, как у заголовка и списка; текст — не длиннее 70 знаков */
.empty{border-top:1px solid var(--ink);padding:28px 0 var(--s2)}
.empty p{max-width:70ch}
.empty h2{font:700 var(--f22)/1.3 var(--sans);margin:0 0 var(--s2)}
.empty p{color:var(--ink-2)}

/* ---------- бош саҳифа: блоки «число + список + Барчасини очиш» ---------- */
.hgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--ink);border-bottom:1px solid var(--rule);margin-bottom:28px}
.hb{padding:var(--s3) 18px 14px;border-left:1px solid var(--rule);min-width:0;display:flex;flex-direction:column}
.hb:first-child{border-left:0;padding-left:0}
.hb h3{font:700 var(--f16)/1.3 var(--sans);margin:0;display:flex;gap:6px;align-items:center}
.hb .hv{font-weight:700;font-size:var(--f28);line-height:1.2;margin-top:var(--s1)}
.hb .hs{font-size:var(--f14);color:var(--ink-2)}
.hb.red .hv,.hb.red h3{color:var(--red)}
.hb ul{list-style:none;margin:var(--s2) 0 0;padding:0;font-size:var(--f14)}
.hb li{border-top:1px solid var(--rule)}
.hb li a{display:flex;flex-direction:column;padding:6px 0;text-decoration:none;color:var(--ink);min-height:44px;justify-content:center}
.hb li a:hover .t{text-decoration:underline}
.hb li .t{color:var(--navy)}
.hb li .m{color:var(--ink-3);font-size:var(--f12)}
.hb .go{margin-top:auto;padding-top:6px}
/* пустой блок — «ҳозирча йўқ», числа нет (docs/lugat.md) */
.hb .none{color:var(--ink-3);font-size:var(--f14);margin-top:6px}

/* ---------- дашборд ---------- */
.dhead{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);margin-bottom:var(--s2);flex-wrap:wrap}
.dhead .t{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.dhead h1{font-size:var(--f22)}
.dfil{display:flex;gap:var(--s3);align-items:center;flex-wrap:wrap}
.fg{display:flex;align-items:center;gap:var(--s2)}
.fg .lab{font-size:var(--f14);color:var(--ink-3)}
.seg{display:inline-flex;border:1px solid var(--rule-2)}
.seg a{display:inline-flex;align-items:center;min-height:32px;padding:0 10px;font-size:var(--f14);color:var(--ink-2);text-decoration:none;border-left:1px solid var(--rule-2)}
.seg a:first-child{border-left:0}
.seg a[aria-current]{background:var(--navy);color:#fff;font-weight:700}
.kpis{display:grid;grid-template-columns:1.7fr 2fr .9fr .9fr .9fr;border-top:1.5px solid var(--ink);border-bottom:1px solid var(--rule);margin-bottom:10px}
.kpi{padding:6px 14px var(--s2);border-left:1px solid var(--rule);text-decoration:none;color:var(--ink);display:block;min-width:0}
.kpi:first-child{border-left:0;padding-left:0}
a.kpi:hover{background:var(--paper-2)}
.kpi .kl{font-size:var(--f14);color:var(--ink-2);display:flex;gap:5px;align-items:center;font-weight:700}
.kpi .kv{display:block;font-weight:700;font-size:var(--f-kpi);line-height:1.15;white-space:nowrap}
.kpi .kv small{font-weight:400;font-size:var(--f16);color:var(--ink-2)}
.kpi .kv.wrap{white-space:normal}
.kpi .ks{display:block;font-size:var(--f14);color:var(--ink-2);line-height:1.35}
.kpi.red .kv,.kpi.red .kl{color:var(--red)}
.meter{position:relative;height:8px;background:var(--paper-2);border:1px solid var(--rule-2);margin:var(--s1) 0 3px}
.meter i{position:absolute;left:0;top:0;bottom:0}
.meter .t{position:absolute;top:-3px;bottom:-3px;width:1px;background:var(--ink-2)}
.c-red{color:var(--red)}.c-amber{color:var(--amber)}.c-green{color:var(--green)}
.b-red{background:var(--red-bar)}.b-amber{background:var(--amber-bar)}.b-green{background:var(--green-bar)}
/* «маълумот йўқ» — штриховка, не ноль */
.b-none{background:repeating-linear-gradient(135deg,var(--rule-2) 0 2px,transparent 2px 6px)}
.dgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.45fr) minmax(0,1.05fr);gap:0 var(--s5)}
.content.dash{padding:12px 28px 10px}
.kpis .wide-only{display:none}
/* «Бажарилмади» и «Текширувда» уже 1700 px — рядом, строкой под сеткой (не скрыты: на них ведут KPI) */
.dgrid .wide-only{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--s5);margin-top:var(--s4)}
.dgrid .wide-only>.pnl+.pnl{margin-top:0}
.rt col.c1{width:30%}
/* недельный график: столбик = якунланган ижро недели (муддатида / кечикиб / бажарилмади) */
.wk{display:flex;align-items:flex-end;gap:6px;height:120px;border-bottom:1px solid var(--rule-2);margin-top:var(--s2)}
/* над столбиком — число за неделю (место под него — отступ сверху, столбик не выше 100%) */
.wkc{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;min-width:0;padding-top:calc(var(--f12) * 1.3)}
.wkv{display:block;text-align:center;font-size:var(--f12);line-height:1.3;color:var(--ink-2);font-variant-numeric:tabular-nums}
.wkb{display:block;width:100%}
.wkx{display:flex;gap:6px;font-size:var(--f12);color:var(--ink-3)}
.wkx span{flex:1;text-align:center;min-width:0;font-variant-numeric:tabular-nums}
.wkx small{display:block;font-size:inherit;line-height:1.2}
.wkx span.cur{text-align:right}
.more-n{font-size:var(--f14);color:var(--ink-3);margin:var(--s1) 0 0}
.pnl{min-width:0}
.pnl+.pnl{margin-top:10px}
.pnl h2{font:700 var(--f16)/1.3 var(--sans);margin:0;display:flex;justify-content:space-between;gap:var(--s2);align-items:baseline;flex-wrap:wrap}
.pnl h2 a{font-weight:400;font-size:var(--f14)}
.pnl .cap{font-size:var(--f14);color:var(--ink-3);margin:0 0 var(--s1);line-height:1.35}
.rt{width:100%;border-collapse:collapse;font-size:var(--f14);table-layout:fixed}
.rt th{color:var(--ink-2);font-weight:700;text-align:left;padding:2px 6px;border-bottom:1.5px solid var(--ink)}
.rt th:first-child,.rt td:first-child{padding-left:0}
.rt td{padding:0 6px;border-bottom:1px solid var(--rule);height:24px;white-space:nowrap;line-height:1.3}
.barc{display:flex;align-items:center;gap:var(--s2)}
/* полоса процента с метками порогов 50 и 80 */
.track{position:relative;flex:1;height:10px;min-width:24px;background:linear-gradient(90deg,transparent calc(50% - .5px),var(--rule-2) calc(50% - .5px),var(--rule-2) calc(50% + .5px),transparent calc(50% + .5px),transparent calc(80% - .5px),var(--rule-2) calc(80% - .5px),var(--rule-2) calc(80% + .5px),transparent calc(80% + .5px))}
.track i{position:absolute;left:0;top:1px;bottom:1px}
.track i.zero{width:3px!important}
.bv{flex:none;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.bv.nd{color:var(--ink-3)}
.rank{width:100%;border-collapse:collapse;font-size:var(--f14)}
.rank td{padding:3px 6px 3px 0;border-bottom:1px solid var(--rule);vertical-align:top}
.rank td.n{width:18px;color:var(--ink-3)}
.rank td.v{text-align:right;white-space:nowrap}
.rank a,.lst a{color:var(--ink)}
.lst{list-style:none;margin:0;padding:0;font-size:var(--f14)}
.lst li{display:flex;flex-wrap:wrap;gap:0 var(--s2);justify-content:space-between;padding:3px 0;border-bottom:1px solid var(--rule)}
/* пометка под строкой списка: «кечикиб топширилди» */
.lst .lmark{flex-basis:100%;font-size:var(--f12);color:var(--red);font-weight:700}
.ins{list-style:none;margin:0;padding:0;font-size:var(--f14);line-height:1.4}
.ins li{display:flex;gap:var(--s2);padding:var(--s1) 0;border-bottom:1px solid var(--rule)}
.ins li .icon{margin-top:1px;color:var(--ink-3)}
.ins li.red .icon{color:var(--red)}
.legend{display:flex;gap:var(--s3);flex-wrap:wrap;font-size:var(--f12);color:var(--ink-2);margin-top:3px}
.legend span{display:inline-flex;gap:5px;align-items:center}
.legend i{display:inline-block;width:10px;height:10px}
/* «Яна N та — барчасини очиш»: ссылка открывает список панели целиком (на стойке — просто текст) */
a.more-n{display:inline-flex;align-items:center;gap:var(--s1);min-height:var(--hit);color:var(--navy)}

/* ---------- комплаенс ---------- */
.stamp{display:inline-flex;align-items:center;gap:6px;background:var(--ink);color:#fff;font:700 var(--f14)/1 var(--sans);letter-spacing:.06em;padding:var(--s2) var(--s3);border-radius:var(--r)}
.watch{display:flex;gap:var(--s2);align-items:center;font-size:var(--f14);color:var(--ink-2);padding:var(--s2) 0;border-bottom:1px solid var(--rule)}
.pinfl{font-weight:700;font-size:var(--f18);letter-spacing:.08em;font-variant-numeric:tabular-nums}
.track-st{display:flex;flex-wrap:wrap;list-style:none;margin:0;padding:0;border:1px solid var(--rule)}
.track-st li{flex:1;min-width:150px;padding:10px var(--s3);border-left:1px solid var(--rule);font-size:var(--f14);color:var(--ink-3)}
.track-st li:first-child{border-left:0}
.track-st li b{display:flex;gap:6px;align-items:center}
.track-st li.done b{color:var(--ink)}
.track-st li.cur{background:var(--green-t);box-shadow:inset 0 3px 0 var(--green-bar)}
.track-st li.cur b{color:var(--green)}
.child{border:1px solid var(--rule-2);margin-top:10px}
.child .ch{display:flex;justify-content:space-between;gap:var(--s3);align-items:center;padding:10px 14px;border-bottom:1px solid var(--rule);flex-wrap:wrap}
.child .terms{border-top:0;padding:0 14px}
.child .terms>div:last-child{border-bottom:0}
.child .acts{display:flex;gap:10px;flex-wrap:wrap;padding:var(--s3) 14px;border-top:1px solid var(--rule);background:var(--paper-2)}
/* ---------- комплаенс: ойлик ҳисобот и «Умумий ҳисобот» (komplaens, решение владельца 2026-10-12) ---------- */
/* состояния записи комплаенса: киритилди — серый (ещё у пары), текширувда и қайтарилди — общие с ижро,
   тасдиқланди — зелёный, бекор қилинди — красный */
.st-entered{color:var(--ink-2)}
.st-confirmed{color:var(--green);background:var(--green-t)}
.st-cancelled{color:var(--red);background:var(--red-t)}
.cs-note{max-width:90ch;margin:0 0 var(--s3)}
.cs-returned{display:flex;gap:6px;align-items:center;color:var(--amber);font-weight:700;margin:0 0 var(--s3)}
.cs-why{display:block;font-size:var(--f14);color:var(--ink-2);margin-top:var(--s1);max-width:60ch;overflow-wrap:anywhere}
.tbl td.cs-act{text-align:right;white-space:nowrap;padding-top:2px;padding-bottom:2px}
.cs-tabs{margin:0 0 var(--s3);flex-wrap:wrap}
.cs-tabs a{min-height:var(--hit)}
.cs-tabs .num{margin-left:6px}
.cs-missing{margin-top:var(--s6)}
.cs-miss-l{max-width:90ch;color:var(--ink-2)}
/* форма: группы бланка — рамкой, подписи граф дословно (длинные) — над узким числовым полем, по две в ряд */
.cs-form{max-width:980px}
.cs-group{border:0;border-top:2px solid var(--ink);margin:0 0 var(--s5);padding:var(--s3) 0 0}
.cs-group>legend{font:700 var(--f18)/1.3 var(--sans);padding:0 var(--s2) 0 0;max-width:70ch}
.cs-sub{border:0;border-left:3px solid var(--rule-2);margin:var(--s3) 0;padding:0 0 0 var(--s3)}
.cs-sub>legend{font-weight:700;color:var(--ink-2);padding:0;max-width:70ch}
.cs-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--s5);align-items:end}
.cs-grid .field label{font-weight:400}
.inp.n.cs-num{width:180px;max-width:100%;text-align:right;font-variant-numeric:tabular-nums}
.cs-calc .cs-calc-l{margin:0 0 var(--s1)}
/* карточка: значения — графами .terms, подпись слева; подгруппа — подзаголовком */
.cs-sec{margin-bottom:var(--s5)}
.cs-subh{font:700 var(--f16)/1.35 var(--sans);color:var(--ink-2);margin:var(--s3) 0 var(--s2);max-width:70ch}
.cs-terms>div{grid-template-columns:minmax(0,1fr) 160px}
.cs-terms dd{text-align:right;white-space:nowrap}
/* «Умумий ҳисобот»: таблица на группу; длинные названия граф в шапке переносятся */
.tbl.cs-sum th{white-space:normal;min-width:84px;font-size:var(--f12);line-height:1.3}
.tbl.cs-sum th:first-child{min-width:0}
.tbl.cs-sum th.cs-subh{text-align:center;border-bottom:1px solid var(--rule-2);color:var(--ink);font-size:var(--f12);margin:0}
.tbl.cs-sum td.cs-reg{white-space:nowrap;font-weight:700}
.tbl.cs-sum td.cs-reg .sub{font-weight:400;color:var(--amber)}
.tbl.cs-sum tfoot td{font-weight:700;border-top:1.5px solid var(--ink);border-bottom:0}
/* «РАМ» (решение владельца 12.10): полное название под строкой «Умумий ҳисобот» */
.tbl.cs-sum td.cs-reg .sub.cs-full{color:var(--ink-2);white-space:normal}
.decide[data-choice=confirm] .sb.confirm,.decide[data-choice=return] .sb.return,.decide[data-choice=cancel] .sb.cancel{display:inline-flex}
.decide:has(input[value=confirm]:checked) .sb.confirm,.decide:has(input[value=cancel]:checked) .sb.cancel{display:inline-flex}
@media (max-width:760px){
  .cs-grid{grid-template-columns:1fr}
  .cs-terms>div{grid-template-columns:minmax(0,1fr) auto;gap:var(--s3)}
  .tbl.stack td.cs-act{display:block;text-align:left}
  .tbl.stack td.cs-act .btn{width:100%;margin-top:var(--s1)}
  .tbl.stack.cs-sum td{align-items:baseline}
  /* таблица — блоками: иначе ширина подписи в % от ячейки раздувает таблицу шире экрана */
  .tbl.stack.cs-sum,.tbl.stack.cs-sum tbody,.tbl.stack.cs-sum tfoot{display:block;width:100%}
  .tbl.stack.cs-sum td::before{flex:1 1 0;min-width:0;font-size:var(--f12);white-space:normal}
  .tbl.stack.cs-sum td{justify-content:space-between}
  .tbl.stack.cs-sum td.r{text-align:left}
  .tbl.stack.cs-sum td.cs-reg{display:block;white-space:normal}
  .tbl.stack.cs-sum td.cs-reg::before{display:none}
  .tbl.stack.cs-sum tfoot tr{border-top:1.5px solid var(--ink)}
  .tbl.stack.cs-sum tfoot td{border-top:0}
  .cs-tabs{width:100%}
  /* причина возврата — под состоянием во всю ширину, не узкой колонкой справа от плашки (обход v0.32) */
  .tbl.stack.cs-months td,.tbl.stack.cs-list td{flex-wrap:wrap}
  .tbl.stack .cs-why{flex-basis:100%;max-width:none}
}

/* ---------- вход ---------- */
.login{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}
.login-body{flex:1;display:flex;align-items:center;justify-content:center;padding:40px var(--s5);background:var(--paper-2)}
.lsheet{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);width:960px;max-width:100%;background:var(--paper);border:1px solid var(--rule)}
.lid{padding:36px 40px;border-right:1px solid var(--rule)}
.lid .lockup{width:230px;height:auto;display:block;margin:0 0 20px -6px}
.lid .org{line-height:1.45;color:var(--ink-2);margin:0 0 var(--s4)}
.lid hr{border:0;border-top:3px double var(--ink);margin:0 0 18px}
.lid h1{color:var(--navy);margin-bottom:10px}
/* в продукте название системы — не заголовок страницы (h1 — «Тизимга кириш», «Саҳифа топилмади»), вид тот же */
.lid .h1{font:700 var(--f28)/1.25 var(--serif);color:var(--navy);margin:0 0 10px;overflow-wrap:anywhere}
.lid .purpose{color:var(--ink-2);margin:0}
.lform{padding:36px 40px;display:flex;flex-direction:column;justify-content:center}
.lform>h2,.lform>h1{font:700 var(--f18)/1.3 var(--sans);margin:0 0 var(--s4);color:var(--ink)}
.lform .acts{display:flex;flex-direction:column;gap:var(--s2);margin-top:var(--s4)}
/* смена пароля: поля не шире 520 px; плашка «вақтинчалик парол» — с отступом от формы */
.pwform{max-width:520px}
.lform .callout{margin-bottom:var(--s4)}
.lform .alt{margin:10px 0 0}
.lform .alt .btn-link{padding:0}
.lform .hint.after{margin-top:14px}
.pw{position:relative}
.pw .inp{padding-right:52px}
.pw .show{position:absolute;right:0;top:0;height:100%;min-width:44px}
.lfoot{display:flex;justify-content:space-between;gap:var(--s4);flex-wrap:wrap;padding:var(--s3) var(--s5);border-top:1px solid var(--rule);font-size:var(--f14);color:var(--ink-3)}

/* ---------- учётная часть (v0.18): «Хабарлар», Telegram, карточка ижрочи, «Киришлар журнали» ---------- */
/* колокольчик на самой странице «Хабарлар» — отмечен, как текущий пункт меню */
.bell[aria-current]{color:var(--navy);border-color:var(--rule-2);background:var(--navy-t)}
/* хабар: дата слева, текст, справа «Очиш»; новый — полоса слева, фон и слово «янги» (не только цвет);
   жирный — только заголовок хабара (.nh), у нового тоже (решение владельца 12.10) */
.ntf{list-style:none;margin:0;padding:0;border-top:1px solid var(--ink);max-width:980px}
.ntf li{display:grid;grid-template-columns:140px minmax(0,1fr) auto;gap:var(--s4);padding:10px var(--s3);border-bottom:1px solid var(--rule)}
.ntf li.new{box-shadow:inset 3px 0 0 var(--navy);background:var(--navy-t)}
.ntf .nd{font-size:var(--f14);color:var(--ink-3);padding-top:1px}
.ntf .nt{overflow-wrap:anywhere;max-width:70ch}
.ntf .nnew{display:inline-block;font:700 var(--f12)/1 var(--sans);color:var(--navy);background:var(--paper);border:1px solid var(--navy);padding:2px 6px;border-radius:var(--r);vertical-align:2px}
.ntf .nerr{display:block;font-weight:400;font-size:var(--f14);color:var(--ink-3);margin-top:2px}
/* Telegram: состояние графой, код — крупно в выноске, кнопки в ряд */
.tg{max-width:720px}
.tg .terms{margin-bottom:var(--s5)}
.tg .terms>div{grid-template-columns:160px minmax(0,1fr)}
.tg .terms .why{margin-top:6px}
.tg-code{border-left:3px solid var(--navy);background:var(--navy-t);padding:14px 18px;margin-bottom:var(--s5)}
.tg-code .tgc code{font:700 var(--f22)/1.3 Consolas,"Courier New",monospace;letter-spacing:.04em;overflow-wrap:anywhere}
.tg-code .hint{margin:0 0 6px}
.tg-code .btn{margin-top:var(--s2)}
.tg-acts{display:flex;gap:var(--s3);flex-wrap:wrap}
/* карточка ижрочи: давр под заголовком, показатели — пять граф (первая — с основанием процента) */
.ufil{margin:var(--s4) 0 var(--s3)}
.kpis.ukpis{grid-template-columns:minmax(0,2fr) repeat(4,minmax(0,1fr));margin-bottom:28px}
.ucnt{max-width:560px}
/* ижро исполнителя: «Ижро муддати:» уже в заголовке графы — в ячейке не повторяем (как в карточке поручения) */
.tbl.uitems .dl:not(.accept) .dlk{display:none}
.ucnt>div{grid-template-columns:260px minmax(0,1fr)}
/* журнал входов: кирмаганлар — в две колонки; браузер — мелко */
.lst.never{columns:2;column-gap:var(--s6);max-width:1100px}
.lst.never li{break-inside:avoid}
.tbl.logins .ua{font-size:var(--f12);color:var(--ink-3);overflow-wrap:anywhere}
/* хабар → страница ижро: «Очиш» — правой колонкой, вровень с первой строкой текста (строку не выше);
   на телефоне — под текстом, своей строкой */
.ntf .nlink{align-self:start;margin-block:calc((24px - var(--hit)) / 2)}
@media (max-width:1260px){
  .kpis.ukpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ukpis .kpi:nth-child(n){grid-column:auto;border-left:1px solid var(--rule);padding-left:14px;border-bottom:1px solid var(--rule)}
  .ukpis .kpi:nth-child(1){grid-column:1/-1;border-left:0;padding-left:0}
  .ukpis .kpi:nth-child(2n){border-left:0;padding-left:0}
}
@media (max-width:760px){
  .ntf li{grid-template-columns:1fr;gap:2px;padding:10px 0 10px var(--s3)}
  .ntf .nlink{display:flex;width:max-content;margin-block:0}
  .tg .terms>div,.ucnt>div{grid-template-columns:1fr}
  .tg-acts .btn{width:100%}
  .lst.never{columns:1}
  .ukpis .kpi:nth-child(n){padding-left:10px}
  .ukpis .kpi:nth-child(1),.ukpis .kpi:nth-child(2n){padding-left:0}
  /* ижро и документы на телефоне — запись без подписей граф: № и дата, заголовок, состояние и срок */
  .tbl.stack.uitems td::before,.tbl.stack.udocs td::before{display:none}
  .tbl.stack.uitems tr,.tbl.stack.udocs tr{display:flex;flex-wrap:wrap;gap:var(--s1) var(--s3);align-items:center}
  .tbl.stack.uitems td,.tbl.stack.udocs td{min-height:0;flex-wrap:wrap}
  .tbl.stack.uitems td.desc,.tbl.stack.udocs td.desc{flex-basis:100%;display:block}
  .tbl.uitems .dl:not(.accept) .dlk{display:inline}
}
/* хабар → нужное место страницы: строка или блок у якоря заметны (синяя черта, как у .rv-item в «Текширувда»)
   и не прижаты к верху окна. Строка ижро в карточке поручения (#a-…), блоки карточки ижро исполнителя
   (#muddatlar, #savollar), выноски и «Тарих» экрана ижро (#open-question, #open-extension, #tarix) */
.hl-target,.tbl.pairs tr[id],.rv-item{scroll-margin-top:var(--s4)}
section.hl-target:target{box-shadow:inset 3px 0 0 var(--navy);padding-left:var(--s3)}
.callout.hl-target:target{outline:2px solid var(--navy);outline-offset:2px}
.tbl.pairs tr:target>td{background:var(--navy-t)}
.tbl.pairs tr:target:not(.late)>td:first-child{box-shadow:inset 3px 0 0 var(--navy)}
@media (max-width:760px){
  section.hl-target:target{padding-left:var(--s2)}
  /* на телефоне строка — запись: черта у всей записи (у просроченной остаётся красная) */
  .tbl.stack.pairs tr:target{background:var(--navy-t)}
  .tbl.stack.pairs tr:target:not(.late){box-shadow:inset 3px 0 0 var(--navy)}
  .tbl.stack.pairs tr:target:not(.late)>td:first-child{box-shadow:none}
}

/* до 1000 px (планшет, окно ≈ половина экрана, вертикальная 720): меню — кнопкой, содержимому вся ширина */
@media (max-width:1000px){
  .app{grid-template-columns:1fr}
  .side{display:none}
  .app.menu-open .side{display:flex;position:fixed;left:0;right:0;top:var(--top-h,84px);bottom:0;z-index:25;border-right:0;box-shadow:0 12px 24px rgba(0,0,0,.18);overflow-y:auto}
  .app.menu-open .nav a{min-height:44px;font-size:var(--f16)}
  .app.menu-open .brand{display:none}
  .menu-btn.icon-btn{display:inline-flex}
  .brand-mini{display:flex;align-items:center;gap:var(--s2);font-weight:700;font-size:var(--f18);color:var(--navy);text-decoration:none;min-height:44px}
  .brand-mini img{width:26px;height:26px}
}
/* до 1100 px таблица поручений (7 граф) не помещается — компактный список */
@media (max-width:1100px){
  .tbl.has-mlist{display:none}
  .mlist{display:block}
}
/* =========================================================
   ТЕЛЕФОН и масштаб браузера 200% на 1366 (окно ≤ 760 px)
   ========================================================= */
@media (max-width:760px){
  :root{--hit:44px}
  .demo{font-size:var(--f12);padding:var(--s1) 10px;gap:6px}
  .top{padding:0 6px 0 var(--s1);gap:var(--s1)}
  .crumbs{display:none}
  .tools{gap:2px}
  .person{border-left:0;padding:0 6px}
  .person .txt{display:none}
  .umenu{position:fixed;left:var(--s2);right:var(--s2);top:auto;width:auto}
  .content{padding:14px var(--s4) 28px}
  .back{display:inline-flex;align-items:center;gap:var(--s1);min-height:44px;margin:-8px 0 var(--s1) -6px;padding:0 6px;color:var(--navy);text-decoration:none}
  .pfoot{display:block;padding:14px var(--s4);border-top:1px solid var(--rule);font-size:var(--f12);color:var(--ink-3)}
  h1{font-size:var(--f22)}
  .phead{margin-bottom:14px}
  .phead .btn{width:100%}
  .reqs,.reqs.five{grid-template-columns:1fr;gap:var(--s2)}
  .reqs>div{padding:0;border-left:0}
  .terms>div{grid-template-columns:1fr;gap:2px}
  .late-line{display:flex}
  /* плитки — одной строкой с прокруткой вбок: первое поручение остаётся на первом экране */
  .tally{overflow-x:auto;scroll-snap-type:x proximity;margin-bottom:var(--s4);margin-right:calc(-1 * var(--s4))}
  .tally li{flex:0 0 auto;width:156px;scroll-snap-align:start}
  .tally a{padding:6px 10px}
  /* фильтр свёрнут в «Фильтр»; открытый — на всю ширину */
  .filter-d{width:100%}
  .filter-d>summary{display:inline-flex;min-height:44px}
  .phead .filter-d>summary{width:auto}   /* «Фильтр» в шапке «Текширувда» — по содержимому, не .phead .btn на всю ширину */
  .filter-d[open]>summary{margin-bottom:var(--s2)}
  .fbar{flex-direction:column;align-items:stretch}
  .fbar .sel,.fbar .inp{width:100%}
  .sec-h{align-items:flex-start}
  .filters .fld,.filters .grow{flex:1 1 100%;min-width:0}
  .filters .btn{flex:1 1 100%}
  .filters .rr .inp.date{width:auto;flex:1;min-width:0}
  .reg-head{display:none}
  .reg>li{grid-template-columns:minmax(0,1fr) 18px;grid-template-areas:"no chev" "t chev" "dl chev" "st chev";gap:6px;padding:var(--s3) 0 var(--s3) var(--s2)}
  .reg>li>:nth-child(1){grid-area:no;display:flex;gap:var(--s2);align-items:baseline}
  .reg>li>:nth-child(2){grid-area:t}
  .reg>li>:nth-child(3){grid-area:dl}
  .reg>li>:nth-child(4){grid-area:st;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
  .reg>li>:nth-child(4) .next{margin:0}
  .reg>li>:nth-child(5){grid-area:chev;align-self:center}
  .pnl h2 a{min-height:44px;min-width:44px;display:inline-flex;align-items:center;justify-content:center}
  .doc-head .hrow{flex-direction:column}
  .doc-grid{grid-template-columns:1fr;grid-template-areas:"call" "aside" "body";margin-top:14px}
  .doc-grid.body-first{grid-template-areas:"call" "body" "aside" "hist";grid-template-rows:auto}
  .doc-grid>.aside{margin-bottom:var(--s5)}
  .doc-grid.body-first>.body{margin-bottom:var(--s5)}
  .doc-grid.body-first>.hist{margin-top:0}
  /* история на телефоне — линия с точками */
  .log,.log tbody{display:block}
  .log tr{display:block;position:relative;padding:0 0 var(--s3) 22px;border-left:2px solid var(--rule-2);margin-left:6px}
  .log tr::before{content:"";position:absolute;left:-7px;top:4px;width:12px;height:12px;border-radius:50%;background:var(--paper);border:2px solid var(--navy)}
  .log tr:last-child{border-left-color:transparent}
  .log td{display:block;border:0;padding:0;width:auto!important;white-space:normal!important}
  .grow-row{grid-template-columns:1fr;gap:6px;padding:var(--s3) 0}
  .grow-row>.lbl{padding-top:0}
  .checks .grid{grid-template-columns:1fr}
  .radios{flex-direction:column;width:100%}
  .radios label{border-left:0;border-top:1px solid var(--rule-2)}
  .radios label:first-child{border-top:0}
  .form-actions{flex-direction:column;align-items:stretch}
  .form-actions .btn{width:100%}
  .dlg .acts{flex-direction:column-reverse}
  .dlg .acts .btn{width:100%}
  .tbl.stack thead{display:none}
  .tbl.stack tr{display:block;padding:var(--s2) 0 var(--s2) var(--s2);border-bottom:1px solid var(--rule)}
  .tbl.stack td{display:flex;gap:10px;border:0;padding:1px 0;align-items:center;min-height:28px}
  .tbl.stack td::before{content:attr(data-l);flex:0 0 116px;font-size:var(--f14);color:var(--ink-3)}
  .tbl.stack tr.late{box-shadow:inset 3px 0 0 var(--red-bar)}
  .tbl.stack tr.late>td:first-child{box-shadow:none}
  /* ижро поручения на телефоне: строка исполнителя, ниже — состояние и срок; подписи граф не нужны */
  .tbl.pairs td::before{display:none}
  .tbl.pairs tr{display:flex;flex-wrap:wrap;gap:var(--s1) var(--s3);align-items:center}
  .tbl.pairs td{min-height:0;flex-wrap:wrap}
  .tbl.pairs td:first-child{flex-basis:100%;display:block}
  .tbl.pairs td:first-child .sub{display:inline;margin-left:var(--s2)}
  .tbl.pairs td.none{display:none}
  /* плитки карточки поручения (их немного) — переносятся, без полосы прокрутки за край */
  .tally.static{overflow:visible;flex-wrap:wrap;margin-right:0}
  .tally.static li{width:auto;flex:1 1 40%;border-top:1px solid var(--rule)}
  .tbl.stack td.desc{max-width:none}
  .tbl.stack td a{display:inline-flex;align-items:center;min-height:44px;min-width:44px}
  .tbl .sub{white-space:normal}
  .pager .info{margin-left:0;width:100%}
  .pager a,.pager span{min-width:44px;height:44px}
  .hgrid{grid-template-columns:1fr}
  .hb{border-left:0;padding:var(--s3) 0;border-top:1px solid var(--rule)}
  .hb:first-child{border-top:0}
  .prog{flex-wrap:wrap;gap:var(--s1) var(--s2)}
  .prog .bar{width:80px}
  .dhead .t{flex-direction:column;gap:2px}
  .dfil{flex-direction:column;align-items:stretch;gap:var(--s2);width:100%}
  .fg{flex-direction:column;align-items:flex-start;gap:var(--s1)}
  .seg{width:100%}
  .seg a{min-height:44px;flex:1;justify-content:center;padding:0 6px}
  .kpis{grid-template-columns:1fr 1fr}
  .kpi{padding:var(--s2) 10px;border-bottom:1px solid var(--rule)}
  .kpi:nth-child(1),.kpi:nth-child(2){grid-column:1/-1;border-left:0;padding-left:0}
  .kpi:nth-child(3),.kpi:nth-child(5){border-left:0;padding-left:0}
  .dgrid{grid-template-columns:1fr}
  .dgrid>div+div{margin-top:14px}
  .dgrid .wide-only{grid-template-columns:1fr}
  .dgrid .wide-only>.pnl+.pnl{margin-top:14px}
  /* таблица по ҳудудам на телефоне — строки-записи: сама таблица тоже блок, иначе строки сжимаются */
  .rt,.rt tbody{display:block}
  .rt colgroup{display:none}
  .rt thead{display:none}
  .rt tr{display:grid;grid-template-columns:1fr;padding:var(--s1) 0;border-bottom:1px solid var(--rule)}
  .rt td{border:0;height:auto;padding:1px 0;white-space:normal;display:flex;gap:var(--s2);align-items:center}
  .rt td:first-child{font-weight:700}
  .rt td[data-l]::before{content:attr(data-l);flex:0 0 72px;font-size:var(--f14);color:var(--ink-3)}
  .rt td .barc{flex:1;min-width:0}
  .rank a,.lst a{display:inline-flex;align-items:center;min-height:44px}
  /* число дней — на одной линии с названием, а не выше его */
  .lst li{align-items:center}
  .lsheet{grid-template-columns:1fr;border:0;background:none}
  .login-body{padding:20px var(--s4);align-items:flex-start;background:var(--paper)}
  .lid{padding:var(--s2) 0 20px;border-right:0}
  /* на телефоне форма — на первом экране: знак и название системы, без длинного названия организации */
  .lid .lockup{width:150px;margin-bottom:12px}
  .lid .org,.lid hr,.lid .purpose{display:none}
  .lid h1,.lid .h1{font-size:var(--f22)}
  .lform{padding:20px 0 0;border-top:1px solid var(--ink)}
  .lfoot{padding-inline:var(--s4)}
  .track-st li{flex:1 1 100%;border-left:0;border-top:1px solid var(--rule)}
  .track-st li:first-child{border-top:0}
  /* ижрочи (v0.17): дата и номер документа — друг под другом */
  .frow{grid-template-columns:1fr}
  /* текширувда (v0.17): кнопки решения — во всю ширину, друг под другом */
  .rv-form .btn{width:100%}
  .rv-item:target{padding-left:var(--s2)}
}

@media (min-width:761px) and (max-width:1250px){
  .reg-head{display:none}
  .reg>li{grid-template-columns:110px minmax(0,1fr) 220px 20px;grid-template-areas:"no t st chev" "no dl st chev";row-gap:6px}
  .reg>li>:nth-child(1){grid-area:no}
  .reg>li>:nth-child(2){grid-area:t}
  .reg>li>:nth-child(3){grid-area:dl}
  .reg>li>:nth-child(4){grid-area:st}
  .reg>li>:nth-child(5){grid-area:chev}
}
/* 761–1250: карточка и решение в одну колонку — слева иначе ~420 px, и графы наезжают на панель */
@media (min-width:761px) and (max-width:1250px){
  .doc-grid{grid-template-columns:1fr;grid-template-areas:"call" "aside" "body";grid-template-rows:auto}
  /* решение по отчёту: отчёт → форма «Қарор» → «Тарих» */
  .doc-grid.body-first{grid-template-areas:"call" "body" "aside" "hist";grid-template-rows:auto}
  .doc-grid>.aside{margin-bottom:var(--s5);max-width:560px}
  .doc-grid.body-first>.body{margin-bottom:var(--s5)}
  .doc-grid.body-first>.hist{margin-top:0}
  .terms>div{grid-template-columns:180px minmax(0,1fr)}
  .reqs,.reqs.five{grid-template-columns:max-content max-content minmax(0,1fr)}
  .reqs>div:nth-child(4){grid-column:1/-1;padding-left:0;border-left:0;margin-top:var(--s2)}
  .reqs.five>div:nth-child(4){grid-column:1/3}
  .reqs.five>div:nth-child(5){grid-column:3/-1;margin-top:var(--s2)}
}
/* реестр с заголовками граф (≥1251): «Ижро муддати:» в ячейке не повторяем, «Қабул қилиш муддати:» — да */
@media (min-width:1251px){
  .reg .dl:not(.accept) .dlk{display:none}
}
/* дашборд на 761–1260: KPI в два ряда, панели в две колонки (неделя и выводы — ниже на всю ширину) */
@media (min-width:761px) and (max-width:1260px){
  .kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  .kpi:nth-child(2){grid-column:span 2}
  .kpi:nth-child(3){border-left:0;padding-left:0}
  .kpi:nth-child(-n+2){border-bottom:1px solid var(--rule)}
  .dgrid{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);row-gap:var(--s4)}
  .dgrid>div:nth-child(3){grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 var(--s5);margin-top:var(--s4)}
}
/* форма-бланк на средних ширинах: области — в две колонки, длинные названия переносятся.
   С 761 px: на телефоне подпись над полем и области в одну колонку (правило выше) */
@media (min-width:761px) and (max-width:1100px){
  .checks .grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .grow-row{grid-template-columns:180px minmax(0,1fr)}
}
.checks .grid label{overflow-wrap:anywhere}
/* широкое окно (1536+): дашборд свободнее */
@media (min-width:1500px){
  .rt td{height:28px}
  .pnl+.pnl{margin-top:14px}
  .rank td{padding:5px 6px 5px 0}
  .lst li{padding:5px 0}
}
/* 1920 и стойки: шире поля, строки и графики выше; текст — не длиннее 70 знаков (.prose) */
@media (min-width:1700px){
  .content{padding:var(--s5) var(--s7) var(--s7);max-width:calc(1400px + 2 * var(--s7))}
  .content.full{max-width:none}
  .content.dash{padding:18px 32px 14px}
  .dgrid{grid-template-columns:minmax(0,1fr) minmax(0,1.6fr) minmax(0,1.1fr) minmax(0,1fr)}
  .dgrid .wide-only,.kpis .wide-only{display:block}
  .dgrid .wide-only{grid-column:auto;margin-top:0}
  .dgrid .wide-only>.pnl+.pnl{margin-top:22px}
  .kpis{grid-template-columns:1.2fr 1.6fr 1fr 1fr 1fr 1fr}
  .wk{height:180px}
  .kpis{margin-bottom:18px}
  .kpi{padding:10px 18px 12px}
  .rt td{height:38px}
  .track{height:12px}
  .pnl+.pnl{margin-top:22px}
  .rank td{padding:var(--s2) 6px var(--s2) 0}
  .lst li,.ins li{padding:var(--s2) 0}
}
/* вертикальная стойка (1080×1920, 720×1280): боковое меню остаётся, панели — друг под другом */
@media (orientation:portrait) and (min-width:700px){
  .dgrid{grid-template-columns:1fr}
  .dgrid>div+div{margin-top:var(--s5)}
  .kpis{grid-template-columns:1fr 1fr 1fr}
  .kpi:nth-child(1),.kpi:nth-child(2){grid-column:span 3/span 3;border-left:0;padding-left:0;border-bottom:1px solid var(--rule)}
  .kpi:nth-child(3){border-left:0;padding-left:0}
  .hgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .hb:nth-child(3){border-left:0;padding-left:0}
  .hb:nth-child(n+3){border-top:1px solid var(--rule)}
}

/* ---------- режим показа «кўргазма» (стойка): без меню, всё в один экран, тихое обновление ----------
   Размеры — от экрана: --k = 1px на 1920×1080 (на вертикальной — 1080×1920). Один и тот же экран
   при масштабе Windows 100%, 150% и 200% выглядит одинаково; 2560×1440 — крупнее в той же раскладке.
   Прокрутки нет: не помещается — проверка снимков (tools/snapshots.py) пишет «НЕ В ОДИН ЭКРАН». */
html.korgazma{
  --k:min(100vw / 1920, 100vh / 1080);
  --f12:calc(15 * var(--k)); --f14:calc(17 * var(--k)); --f16:calc(19 * var(--k)); --f18:calc(22 * var(--k));
  --f22:calc(28 * var(--k)); --f28:calc(34 * var(--k)); --f-kpi:calc(60 * var(--k));
  --s1:calc(4 * var(--k)); --s2:calc(8 * var(--k)); --s3:calc(12 * var(--k)); --s4:calc(16 * var(--k));
  --s5:calc(24 * var(--k)); --s6:calc(32 * var(--k));
}
html.korgazma a{text-decoration:none}
html.korgazma .app{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr);height:100vh;min-height:0}
html.korgazma .main{min-height:0}
html.korgazma .pfoot{display:none}
html.korgazma .demo{min-height:calc(30 * var(--k));padding:var(--s1) var(--s4)}
html.korgazma .side,html.korgazma .crumbs,html.korgazma .tools,html.korgazma .menu-btn,html.korgazma .dfil .icon-btn{display:none}
html.korgazma .top{min-height:calc(56 * var(--k));padding:0 var(--s6)}
html.korgazma .brand-mini{display:flex;align-items:center;gap:var(--s2);font-weight:700;font-size:var(--f22);color:var(--navy);min-height:calc(56 * var(--k))}
html.korgazma .brand-mini img{width:calc(36 * var(--k));height:calc(36 * var(--k))}
html.korgazma .content.dash{display:flex;flex-direction:column;min-height:0;padding:var(--s3) var(--s6) var(--s4)}
html.korgazma .seg a{min-height:max(44px, calc(36 * var(--k)));padding:0 var(--s3)}
/* KPI: шесть в ряд; «19 топшириқ» и «438 ижро» — две строки без точки */
html.korgazma .kpis{grid-template-columns:1.2fr 1.6fr 1fr 1fr 1fr 1fr;margin-bottom:var(--s4)}
html.korgazma .kpis .wide-only{display:block}
html.korgazma .kpi{padding:var(--s2) var(--s4) var(--s3)}
html.korgazma .kpi:first-child{padding-left:0}
html.korgazma .kpi .kv small{font-size:var(--f18)}
html.korgazma .kpi .kv .sep{display:none}
html.korgazma .kpi .kv .nw{display:block}
html.korgazma .meter{height:calc(10 * var(--k))}
/* панели — по местам сетки (обёртки колонок прозрачны); строки таблицы и график тянутся на свободную высоту */
html.korgazma .dgrid{flex:1;min-height:0;gap:var(--s4) var(--s6);
  grid-template-columns:minmax(0,1fr) minmax(0,1.8fr) minmax(0,1.1fr) minmax(0,1fr);
  grid-template-rows:auto 1fr;grid-template-areas:"weak reg week failed" "over reg ins review"}
html.korgazma .dgrid>div{display:contents}
html.korgazma .pnl+.pnl{margin-top:0}
html.korgazma .a-weak{grid-area:weak}  html.korgazma .a-over{grid-area:over}
html.korgazma .a-reg{grid-area:reg;display:flex;flex-direction:column}
html.korgazma .a-week{grid-area:week;display:flex;flex-direction:column}
html.korgazma .a-ins{grid-area:ins}  html.korgazma .a-failed{grid-area:failed}  html.korgazma .a-review{grid-area:review}
html.korgazma .a-reg .rt{flex:1}
html.korgazma .rt td{height:auto;padding:var(--s1) 6px}
html.korgazma .rt td:first-child{padding-left:0}
html.korgazma .track{height:calc(12 * var(--k))}
html.korgazma .bv{min-width:calc(130 * var(--k))}
html.korgazma .wk{flex:1;height:auto;min-height:calc(110 * var(--k));gap:var(--s2)}
html.korgazma .wkx{gap:var(--s2)}
html.korgazma .legend i{width:calc(12 * var(--k));height:calc(12 * var(--k))}
html.korgazma .rank td{padding:var(--s1) var(--s2) var(--s1) 0}
html.korgazma .rank td.n{width:calc(24 * var(--k))}
html.korgazma .lst li,html.korgazma .ins li{padding:var(--s1) 0}
/* вертикальная стойка (1080×1920, 720×1280): KPI 3×2, слабые · кечикди · бажарилмади в ряд,
   таблица ҳудудов на всю ширину, ниже — график и выводы */
@media (orientation:portrait){
  html.korgazma{--k:min(100vw / 1080, 100vh / 1920)}
  html.korgazma .kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  html.korgazma .kpi:nth-child(n){grid-column:auto;border-left:1px solid var(--rule);padding-left:var(--s4);border-bottom:0}
  html.korgazma .kpi:nth-child(-n+3){border-bottom:1px solid var(--rule)}
  html.korgazma .kpi:nth-child(3n+1){border-left:0;padding-left:0}
  html.korgazma .dgrid{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:auto 1fr auto auto;
    grid-template-areas:"weak over failed" "reg reg reg" "week week ins" "week week review"}
}
/* стойка 720×1280 не шире 760 px: телефонные правила (таблица записями, фильтр столбиком) — не для неё */
@media (max-width:760px){
  html.korgazma .dhead .t{flex-direction:row;gap:var(--s4)}
  html.korgazma .dfil{flex-direction:row;align-items:center;width:auto;gap:var(--s3)}
  html.korgazma .fg{flex-direction:row;align-items:center;gap:var(--s2)}
  html.korgazma .seg{width:auto}
  html.korgazma .seg a{flex:none}
  html.korgazma .rt{display:table}
  html.korgazma .rt colgroup{display:table-column-group}
  html.korgazma .rt thead{display:table-header-group}
  html.korgazma .rt tbody{display:table-row-group}
  html.korgazma .rt tr{display:table-row;padding:0}
  html.korgazma .rt td{display:table-cell;border-bottom:1px solid var(--rule);white-space:nowrap}
  html.korgazma .rt td:first-child{font-weight:400}
  html.korgazma .rt td[data-l]::before{content:none}
  html.korgazma .rank a,html.korgazma .lst a{display:inline;min-height:0}
}
/* учётка стойки (право tasks.korgazma, класс stand): в шапке справа — только личное меню с «Чиқиш» */
html.korgazma.stand .tools{display:flex}
html.korgazma.stand .person{min-height:max(44px, calc(56 * var(--k)))}
/* стойка: меню «Кўргазма» растёт вместе с шапкой (1440p, 4K); без выделения текста, выноски долгого
   тапа и масштаба щипком — только учётка стойки, обычный ?korgazma=1 — как все страницы */
html.korgazma.stand .umenu{width:max(300px, calc(300 * var(--k)))}
@media (min-width:761px){html.korgazma.stand .umenu{top:calc(100% + var(--s1))}}   /* узкий экран: меню — fixed по мобильному правилу, «100%» там — вся высота окна */
html.korgazma.stand .umenu a,html.korgazma.stand .umenu button{min-height:max(44px, calc(56 * var(--k)));gap:var(--s2)}
html.korgazma.stand,html.korgazma.stand body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:pan-x pan-y}
/* вход при живой сессии стойки («назад» на стойке): над формой — «Дашбордга қайтиш» */
.lform .stand-back{margin:0 0 var(--s5)}

/* ---------- выравнивание: дизайн-аудит 2026-10-11 ---------- */
/* итог ошибок в панели «Қарор» — того же кегля, что везде (иначе .panel h2 делает его 18 px) */
.panel .errsum h2{font:700 var(--f16)/1.3 var(--sans)}
/* счётчики в таблице (Кечикди, Текширувда) — вправо, как числа на дашборде */
.tbl th.r,.tbl td.r{text-align:right}
/* дашборд: «14% · 2 / 14» — табличные цифры и правый край вровень со списком «Кечикди» под ним */
.rank td.v{font-variant-numeric:tabular-nums}
.rank td:last-child{padding-right:0}
/* ҳудудлар: подпись процента одной ширины — полосы во всех строках одной длины, метки 50 и 80 на одной линии
   («кўргазма» задаёт свою ширину — html.korgazma .bv) */
.bv{min-width:6.5em}
/* дашборд 761–1260: график и «Хулосалар» стоят рядом — заголовки на одной линии (без отступа «панель под панелью») */
@media (min-width:761px) and (max-width:1260px){
  .dgrid>div:nth-child(3)>.pnl+.pnl{margin-top:0}
}
/* карточка поручения: «Топшириқ матни» не прижат к линии реквизитов — тот же отступ, что у .doc-grid */
.doc-head+section{margin-top:20px}
/* экран решения: сроки — той же ширины, что отчёт и «Тарих» под ними (правый край одной линией) */
.doc-grid.body-first>.call{max-width:820px}
/* дашборд на телефоне: кнопки «Давр» и «Йўналиш» — ширина по слову, «Иккала йўналиш» в одну строку;
   если перенос всё же нужен — по центру, как у соседей */
@media (max-width:760px){
  .seg a{flex:1 1 auto;text-align:center}
}
/* «кўргазма» на стойке ≥1700: «Текширувда» — на одной линии с «Кечикди» и «Хулосалар» (правило 1700+ давало 22 px сверху) */
html.korgazma .dgrid .wide-only>.pnl+.pnl{margin-top:0}

/* ---------- выравнивание: дизайн-аудит 2026-10-11, второй проход (экраны v0.17) ---------- */
/* карточка ижро без выноски «Қайтарилди»: графы сроков начинаются на линии панели справа, как на экране решения
   (пустая .call давала 24 px сверху) */
.doc-grid>.call:empty{margin-bottom:0}
/* выноска «Қайтарилди» в карточке ижро — не шире граф и «Тарих» под ней (820 px): на 1920 правый край одной линией */
.doc-grid>.call{max-width:820px}
/* срок в графах — того же кегля, что соседние значения («Қабул қилиш муддати», «Қайтарилган»), как на экране решения */
.terms dd .dl{font-size:inherit}
/* формы исполнителя: графы сроков и выноска «Қайтарилди» — той же ширины, что форма под ними (720 px) */
.aterms,.acall{max-width:720px}
/* «Топшириқларим»: после «Топилмади» / «Очиқ топшириқ йўқ» раздел «Якунланган» — с тем же отступом, что между разделами */
.empty+section{margin-top:28px}
/* подзаголовок страницы (в формах исполнителя — сарлавҳа топшириқа) — строки не длиннее ~70 знаков, как .prose */
.phead .lede{max-width:70ch}
/* карточка поручения: «Эслатма юбориш» в ячейке — от левого края графы, под заголовком «Эслатма» (было на 6 px правее) */
.tbl td .btn-link{padding:0}
.tbl td .num+form.inline .btn-link{margin-left:var(--s2)}   /* «1 марта» и ссылка рядом — не вплотную */
/* и по высоте — на строке текста соседних граф (цель нажатия остаётся --hit, лишняя высота уходит в отступы) */
@media (min-width:761px){.tbl td form.inline .btn-link{margin-block:calc((21px - var(--hit)) / 2)}}

/* ---------- выравнивание: дизайн-аудит 2026-10-11, третий проход (экраны v0.17–v0.18) ---------- */
/* страницы на телефоне — одной строкой: «Олдинги · текущая · Кейинги», номера других страниц скрыты
   (было 8 кнопок в два ряда, «Кейинги» отрывался на вторую строку); «Саҳифа 3 / 6» — ниже */
@media (max-width:760px){
  .pager .pn{display:none}
  .pager>:first-child,.pager>:nth-last-child(2){flex:1}
  /* «Кирмаганлар»: логин — всегда строкой под Ф.И.Ш. (было то справа, то под ним — по длине имени) */
  .lst.never li{flex-direction:column;align-items:flex-start}
}
/* поле даты: Chrome ставит фокус в части даты внутри поля — :focus-visible у самого поля не срабатывает, рамки
   фокуса с клавиатуры не было (архив, «Ҳужжат юклаш», формы исполнителя); рамка — та же, что у всех */
input[type=date]:is(:focus,:focus-within){outline:3px solid var(--focus);outline-offset:3px;box-shadow:0 0 0 3px var(--ink)}
/* архив: «Ҳудуд · йўналиш» в одну строку (было «Фарғона ·» / «Агентлик»); до 1250 px таблице тесно — там перенос
   остаётся, иначе графа «Изоҳ» сжимается до 2–3 слов в строке */
@media (min-width:1251px){.tbl td.rb{white-space:nowrap}}

/* ---------- решения владельца 2026-10-12 по дизайн-аудиту (ветка keyingi-dizayn) ---------- */
/* «Янги топшириқ»: строка бланка с ошибкой — черта слева, как у .field.has-error (итог ошибок один на все формы) */
.grow-row.has-error{border-left:4px solid var(--red);padding-left:var(--s3)}
/* заголовки h1 — два кегля: страница-раздел (списки, формы, дашборд) — 28; документ (карточка, решение) и
   лист без меню (вход, 403/404, разовый пароль) — 22; на телефоне — 22 везде. «кўргазма» — свой масштаб */
@media (min-width:761px){html:not(.korgazma) .dhead h1{font-size:var(--f28)}}
.lform>h1{font:700 var(--f22)/1.25 var(--serif)}
/* карточка ижро и решение: панель «Қарор» — сразу за колонкой (820 px), без пустой полосы между ними на 1920;
   шапка документа — той же ширины, что колонка и панель */
@media (min-width:1251px){
  .doc-grid{grid-template-columns:minmax(0,820px) 320px;justify-content:start}
  article.dcol{max-width:calc(820px + var(--s6) + 320px)}
}
/* дашборд 1261–1499: таблице ҳудудов — больше ширины, полосы читаются (было ~37 px при подписи «100% · 14 / 14») */
@media (min-width:1261px) and (max-width:1499px){
  html:not(.korgazma) .dgrid{grid-template-columns:minmax(0,.95fr) minmax(0,1.75fr) minmax(0,1fr)}
  html:not(.korgazma) .rt col.c1{width:26%}
}
/* график недель: «жорий ҳафта» — одной строкой под датой, прижата к правому краю (не рвётся в узкой колонке) */
.wkx{position:relative;padding-bottom:calc(var(--f12) * 1.2)}
.wkx span.cur small{position:absolute;right:0;bottom:0;white-space:nowrap}
/* Telegram: состояние привязки — текст графы со значком, а не штамп (штампы — только состояниям ижро) */
.tg-st{display:inline-flex;align-items:center;gap:6px;color:var(--ink-2)}
.tg-st.on{color:var(--green);font-weight:700}
/* архив до 1250 px — записями, как на телефоне: в таблице из 7–8 граф «Изоҳ» сжималась до 2–3 слов в строке */
@media (max-width:1250px){
  .tbl.has-mlist.ar-tbl{display:none}
  .mlist.docs{display:block}
}
/* фильтр с выбранными условиями: на телефоне свёрнут, у кнопки «Фильтр» — число условий */
.filter-d>summary .fn{min-width:22px;padding:0 6px;line-height:20px;border-radius:var(--r);background:var(--navy);color:#fff;font-size:var(--f12);text-align:center}
.filter-d.on>summary{background:var(--navy-t)}
/* путь из «Текширувда»: «Текширувда / № … / ижрочи» — в шапке; на телефоне (шапки пути нет) — тот же путь над заголовком */
.pcrumbs{display:none}
@media (max-width:760px){
  .pcrumbs{display:block;margin:-8px 0 var(--s1)}
  .pcrumbs ol{display:flex;flex-wrap:wrap;align-items:center;gap:0 6px;list-style:none;margin:0;padding:0;font-size:var(--f14);color:var(--ink-3)}
  .pcrumbs li{display:flex;align-items:center;gap:6px}
  .pcrumbs li+li::before{content:"/";color:var(--rule-2)}
  .pcrumbs a{display:inline-flex;align-items:center;min-height:44px}
}
/* печать: путь — как «‹ назад», не на бланке (ширина листа A4 < 760 px — иначе правило выше его показывает) */
@media print{.pcrumbs{display:none!important}}

/* ---------- рецензия дизайнера 2026-10-12 по keyingi-dizayn: дашборд 1700+ ---------- */
/* 1700–1919 (стойка 2560×1440 при 150%) и 1920: полосы ҳудудов были 47–73 px, первая плитка
   «22 топшириқ · 446 ижро» переносилась на 1707 — колонке ҳудудов и первой плитке больше ширины.
   «кўргазма» — своя раскладка (не трогаем); печать — уже 1700, правило не действует */
@media (min-width:1700px){
  html:not(.korgazma) .dgrid{grid-template-columns:minmax(0,.95fr) minmax(0,1.8fr) minmax(0,1fr) minmax(0,.9fr)}
  html:not(.korgazma) .rt col.c1{width:24%}
  html:not(.korgazma) .kpis{grid-template-columns:1.5fr 1.6fr 1fr 1fr 1fr 1fr}
}

/* ---------- обход «пользователя» 2026-10-12 по keyingi-dizayn ---------- */
/* ссылка итога ошибок: на экране — вся обёртка поля (подпись, текст ошибки, поле), не поле у самого верха
   (nazorat.js прокручивает к обёртке; без JS браузер ведёт к полю — запас сверху под подпись и ошибку) */
.field,.grow-row,.filters .fld{scroll-margin-top:var(--s4)}
:is(.field,.grow-row) :is(input,select,textarea,fieldset,.radios){scroll-margin-top:96px}
/* поиск архива: подсказка длиннее поля — до 1250 поле на всю строку; на телефоне подсказка — текстом под полем
   с переносом (в поле обрезалась «…ёки изо»), в поле не дублируется */
.ph-text{display:none}
@media (max-width:1250px){.filters .fld.grow{flex-basis:100%}}
@media (max-width:760px){
  .ph-text{display:block;margin:0}
  .inp.ph-long::placeholder{color:transparent}
}
/* карточка и решение в одну колонку: под реквизитами — одна линия (у граф сроков своей верхней нет), не две
   через пустой промежуток */
@media (max-width:1250px){.doc-head+.doc-grid>.call>.terms:first-child{border-top:0}}

/* ---------- решения владельца по docs/ochiq.md 2026-10-12 (keyingi-dizayn) ---------- */
/* «Янги топшириқ»: «Кутилаётган ҳужжат тури» скрыт, пока не отмечен «ҳужжат талаб қилинади» (№ 98; nazorat.js,
   data-show-if); display:grid у .grow-row иначе перебивает hidden */
.grow-row[hidden]{display:none}

/* ---------- ходимлар (решение владельца 2026-10-12): «Ходимлар», карточка ходима, формы, «Ходимлар статистикаси» ---------- */
/* список: пять граф помещаются и на планшете — записями только на телефоне */
.mlist.st-list .mt{font-weight:700}
.st-terms{max-width:720px;margin:var(--s4) 0 28px}
.st-terms>div{grid-template-columns:160px minmax(0,1fr)}
.tbl.st-events td.st-act{text-align:right;white-space:nowrap;padding-top:2px;padding-bottom:2px}
.st-dup{margin-bottom:var(--s4)}
.st-dup ul{margin:0;padding-left:20px;font-size:var(--f14)}
.st-desc{color:var(--ink-2);margin-bottom:var(--s4)}
/* статистика: месяц и йўналиш — одной строкой; названия ҳодиса турлари в шапке переносятся */
.st-fil{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--s3) var(--s6);margin:0 0 var(--s3);padding:0 0 var(--s4);border-bottom:1px solid var(--rule)}
.st-fil .filters{margin:0;padding:0;border:0}
.st-fil .fg{min-height:var(--hit)}
.st-fil .seg a{min-height:var(--hit)}
.inp.n.st-year{width:96px}
.tbl.st-stats th{white-space:normal;min-width:80px}
.tbl.st-stats th:first-child{min-width:0}
.tbl.st-stats tfoot td{font-weight:700;border-top:1.5px solid var(--ink);border-bottom:0}
.tbl.st-stats td.st-reg{white-space:nowrap}
@media (max-width:760px){
  .tbl.st-tbl{display:none}
  .mlist.st-list{display:block}
  .tbl.stack.st-events td.st-act{display:block;text-align:left}
  .tbl.stack.st-events td.st-act:empty{display:none}
  .tbl.stack.st-events td.st-act .btn{width:100%;margin-top:var(--s1)}
  .st-fil{flex-direction:column;align-items:stretch;gap:var(--s3)}
  .st-fil .filters .btn{flex:1 1 100%}
  .st-fil .fg{flex-direction:column;align-items:stretch}
  .tbl.stack.st-stats td::before{flex-basis:180px}
  .tbl.stack.st-stats td.r{text-align:left}
  .tbl.stack.st-stats td.st-reg{font-weight:700;white-space:normal}
  .tbl.stack.st-stats td.st-reg::before{display:none}
  .tbl.stack.st-stats tfoot tr{border-top:1.5px solid var(--ink)}
  .tbl.stack.st-stats tfoot td{border-top:0}
}
/* ходимлар: находки дизайнера и обхода 2026-10-12 */
/* ссылки итога ошибок — цель не ниже 24 px (WCAG 2.5.8); vertical-align:top — маркер «•» у первой строки
   многострочного пункта, а не у последней (телефон 360, ночная проверка 2026-10-12) */
.errsum li a{display:inline-block;padding:3px 0;vertical-align:top}
@media (max-width:760px){
  /* реквизиты карточки ходима — в одну колонку, как .terms на телефоне */
  .st-terms>div{grid-template-columns:1fr;gap:2px}
  /* подпись — по первой строке многострочного значения, не по середине */
  .tbl.stack.st-events td,.tbl.stack.st-stats td{align-items:baseline}
}
/* ходимлар: «давом этмоқда» (решение владельца 2026-10-12) */
@media (max-width:760px){
  /* у разового ҳодиса состояния нет — на телефоне без пустой строки «Ҳолат» */
  .tbl.stack.st-events td.st-state:empty{display:none}
}
/* ходимлар статистикаси: «1 / 0» — одной группой (обход v0.31). Ячейка .tbl.stack — flex, и ссылка шириной 44 px
   отрывала « / 0» на ширину цели. Группа — один элемент ячейки. «якунланган» стоит последним — ширина 44 px
   остаётся (пустое место справа от числа); «давом этмоқда» — по ширине числа, цель 44 px — невидимой подложкой
   влево от числа (две цели не перекрываются) */
@media (max-width:760px){
  .tbl.stack.st-stats .st-pair{white-space:nowrap}
  .tbl.stack.st-stats .st-pair a.st-o{position:relative;min-width:0}
  .tbl.stack.st-stats .st-pair a.st-o::after{content:"";position:absolute;top:0;bottom:0;right:0;width:100%;min-width:44px}
}

/* ---------- v0.35: «Умумий ҳисобот» — подсветка граф по переходу с «Комплаенс дашборди» (?g=H,I,J#hl) ---------- */
.cs-sum th.cs-hl,.cs-sum td.cs-hl{background:var(--navy-t);box-shadow:inset 0 -2px 0 var(--navy)}
.cs-hl-sec{scroll-margin-top:var(--s4)}

/* ---------- печать: без меню и кнопок, бланк A4 ---------- */
@media print{
  @page{size:A4;margin:16mm 14mm}
  :root{--f12:9pt;--f14:10pt;--f16:11pt;--f18:12pt;--f22:15pt;--f28:18pt}
  .side,.top,.demo,.back,.btn,.no-print,.messages,dialog{display:none!important}
  .app{display:block}
  .content{padding:0}
  .pfoot{display:none!important}
  /* реквизиты печати: кто, что, когда напечатано — двойная линия бланка */
  .print-foot{display:block;border-top:3px double var(--ink);margin-top:var(--s5);padding-top:var(--s2);font-size:var(--f12)}
  .doc-grid{display:block}
  .doc-grid>.call{margin-bottom:var(--s4)}
  a{color:inherit;text-decoration:none}
  .reg>li,.tbl tr{break-inside:avoid}
  .docref a{display:none}
  .print-foot{display:none!important}
}
