/* Веб-панель бухгалтерии. Без внешних шрифтов и скриптов (CSP: только свои файлы). */
:root{
  --bg:#F3F5F7; --card:#FFFFFF; --line:#DDE2E7; --line2:#EEF0F2; --ink:#16202B; --ink2:#3A4652; --muted:#5B6672;
  --brand:#1D4E89; --brand-soft:#E6EBF1; --link:#1D4E89;
  --ok:#2E7D32; --ok-bg:#E3F2E5; --sent:#8A6D00; --sent-bg:#FFF4C2; --todo:#3A4652; --todo-bg:#EEF1F4;
  --late:#B3261E; --late-bg:#FBE3E1; --rej:#B3261E; --rej-bg:#FBE3E1; --qrt:#5B6672; --qrt-bg:#F3F5F7;
  --glass:rgba(243,245,247,.72); --glass-line:rgba(22,32,43,.10); --sent-bar:#E0B400;
  --glass-card:rgba(255,255,255,.64); --glass-edge:rgba(255,255,255,.75); --chip-bg:rgba(22,32,43,.06); --track:rgba(22,32,43,.09);
  --dshadow:0 10px 30px rgba(28,39,52,.07); --dshadow-hi:0 16px 38px rgba(28,39,52,.13);
  --hero1:#17734A; --hero2:#2FA36B; --violet:#6247D1; --violet-bg:#ECE8FC; --bar-ink:#26323E;
}
@media (prefers-color-scheme: dark){
  :root{ --bg:#0F151B; --card:#17202A; --line:#2A3542; --line2:#212B36; --ink:#E7ECF1; --ink2:#C3CCD5; --muted:#8C99A6;
    --brand:#7FB0E8; --brand-soft:#1F2C3A; --link:#8DBBF0;
    --ok:#7CCB83; --ok-bg:#183222; --sent:#E7C84A; --sent-bg:#332B10; --todo:#C3CCD5; --todo-bg:#202A35;
    --late:#F28B82; --late-bg:#3A1E1C; --rej:#F28B82; --rej-bg:#3A1E1C; --qrt:#8C99A6; --qrt-bg:#1B232C;
    --glass:rgba(15,21,27,.72); --glass-line:rgba(231,236,241,.10); --sent-bar:#C9A227;
    --glass-card:rgba(25,34,44,.62); --glass-edge:rgba(255,255,255,.07); --chip-bg:rgba(231,236,241,.07); --track:rgba(231,236,241,.12);
    --dshadow:0 10px 30px rgba(0,0,0,.35); --dshadow-hi:0 16px 38px rgba(0,0,0,.5);
    --hero1:#13603E; --hero2:#23895A; --violet:#B4A6FF; --violet-bg:#2A2342; --bar-ink:#C3CCD5; }
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font:15px/1.45 "IBM Plex Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a{color:var(--link);text-decoration:none} a:hover{text-decoration:underline}
.num{font-variant-numeric:tabular-nums}
.layout{display:flex;min-height:100vh}
.side{flex:0 0 240px;background:var(--card);border-right:1px solid var(--line);padding:20px 14px;display:flex;flex-direction:column;gap:2px}
.brand{font-weight:700;font-size:16px;padding:4px 10px 18px}
.side a.nav{display:block;padding:9px 10px;border-radius:8px;color:var(--ink2)}
.side a.nav:hover{background:var(--brand-soft);text-decoration:none}
.side a.nav.on{background:var(--brand-soft);color:var(--ink);font-weight:600}
.side .group{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:14px 10px 4px}
.side .me{margin-top:auto;border-top:1px solid var(--line2);padding:12px 10px 0;font-size:13px;color:var(--muted)}
.side .me b{color:var(--ink)}
.linkbtn{background:none;border:0;padding:0;font:inherit;color:var(--link);cursor:pointer}
main{flex:1;min-width:0;padding:28px 32px 48px;display:flex;flex-direction:column;gap:18px}
h1{margin:0;font-size:26px} h2{margin:0 0 10px;font-size:18px} h3{margin:0 0 8px;font-size:15px}
.sub{color:var(--muted)}
.periods{display:flex;flex-wrap:wrap;gap:6px}
.pill{display:inline-block;padding:4px 10px;border:1px solid var(--line);border-radius:999px;font-size:13px;color:var(--ink2);background:var(--card)}
.pill.on{background:var(--brand);border-color:var(--brand);color:#fff} .pill.on .muted{color:inherit;opacity:.75}
.rg-rgm{color:inherit;text-decoration:none;white-space:nowrap} .rg-rgm:hover{text-decoration:underline} .rg-rgm.hint{font-style:italic}
.tk-opt .inp{width:auto;flex:1;min-width:0} .rg-rgf{display:flex;flex-direction:column;gap:10px}
.mn-rg{margin:0 0 12px} .mn-rg summary{cursor:pointer;font-size:14px;color:var(--brand)} .mn-rg form{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px 20px}
.grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.grid2{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.kpi .v{font-size:28px;font-weight:700} .kpi .l{color:var(--muted);font-size:13px}
.kpi.ok .v{color:var(--ok)} .kpi.sent .v{color:var(--sent)} .kpi.late .v{color:var(--late)} .kpi.free .v{color:var(--brand)}
table{border-collapse:collapse;width:100%}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line2);vertical-align:top}
th{font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.03em}
tr:last-child td{border-bottom:0}
.scroll{overflow-x:auto}
.acts th{text-transform:none;letter-spacing:0} .acts th,.acts td{padding:8px 8px}
.bar{display:flex;height:10px;border-radius:6px;overflow:hidden;background:var(--todo-bg);min-width:120px}
.bar span{display:block;height:100%}
.bar .b-ok{background:var(--ok)} .bar .b-sent{background:#E0B400} .bar .b-late{background:var(--late)}
.tag{display:inline-block;padding:1px 8px;border-radius:6px;font-size:12px;font-weight:600;white-space:nowrap}
.s-ok{background:var(--ok-bg);color:var(--ok)} .s-sent{background:var(--sent-bg);color:var(--sent)}
.s-todo{background:var(--todo-bg);color:var(--todo)} .s-late,.s-rej{background:var(--late-bg);color:var(--late)}
.s-qrt{background:var(--qrt-bg);color:var(--qrt)} .s-na{background:transparent;color:var(--muted)}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.tabs a{padding:9px 14px;color:var(--ink2);border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs a.on{color:var(--ink);border-bottom-color:var(--brand);font-weight:600}
.matrix th{white-space:nowrap} .matrix td{padding:4px}
.matrix td.c{min-width:92px;text-align:center}
.matrix .cell{border-radius:6px;padding:4px 4px;font-size:12px;line-height:1.25}
.matrix .cell small{display:block;font-weight:400;opacity:.85}
.matrix td.name{white-space:nowrap;font-weight:600;position:sticky;left:0;background:var(--card)}
.legend{display:flex;flex-wrap:wrap;gap:8px;font-size:13px;color:var(--muted)}
.list{margin:0;padding:0;list-style:none} .list li{padding:7px 0;border-bottom:1px solid var(--line2)} .list li:last-child{border-bottom:0}
.muted{color:var(--muted)} .small{font-size:13px} .reason{font-style:italic;color:var(--ink2)}
.empty{color:var(--muted);padding:6px 0}
.note{background:var(--brand-soft);border-radius:10px;padding:12px 14px;color:var(--ink2);font-size:14px}
.btn{display:inline-block;background:var(--brand);color:#fff;border:0;border-radius:10px;padding:12px 18px;font:inherit;font-weight:600;cursor:pointer}
.center{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px 16px}
.login{max-width:440px;width:100%;display:flex;flex-direction:column;gap:14px}
code{background:var(--brand-soft);padding:1px 6px;border-radius:5px;overflow-wrap:anywhere}
.filters{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}
.filters label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted)}
.filters label.grow{flex:1 1 220px}
.filters input,.filters select{font:inherit;font-size:14px;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px 10px;min-height:40px;box-sizing:border-box}
.filters .actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.filters .btn{padding:9px 16px}
.journal td{font-size:14px}
.jtext{white-space:pre-wrap;word-break:break-word;margin-top:4px;max-width:760px}
.nowrap{white-space:nowrap}
.j-tag-in{background:var(--brand-soft);color:var(--brand)} .j-tag-out{background:var(--todo-bg);color:var(--ink2)}
.j-tag-err{background:var(--late-bg);color:var(--late)} .j-tag-act{background:var(--ok-bg);color:var(--ok)}
.j-tag-panel{background:var(--sent-bg);color:var(--sent)}
.pager{display:flex;gap:10px;align-items:center;justify-content:center;padding-top:12px}
@media (max-width:820px){
  .acts thead{display:none}
  .acts tr{display:block;padding:10px 0;border-bottom:1px solid var(--line2)}
  .acts td{display:flex;justify-content:space-between;gap:12px;border:0;padding:3px 0}
  .acts td::before{content:attr(data-label);color:var(--muted);font-size:13px}
  .acts td:first-child{display:block;font-weight:600;padding-bottom:6px}
  .journal thead{display:none}
  .journal tr{display:block;padding:10px 0;border-bottom:1px solid var(--line2)}
  .journal td{display:block;border:0;padding:2px 0}
  .journal td .muted{display:inline;margin-left:6px}
  .layout{flex-direction:column}
  .side{flex:none;border-right:0;border-bottom:1px solid var(--line);flex-direction:row;flex-wrap:wrap;align-items:center;padding:10px 12px;gap:4px}
  .brand{padding:4px 8px;width:100%}
  .side .group{display:none}
  .side .me{margin:0;border:0;padding:4px 8px;width:100%}
  /* меню — одной строкой с прокруткой: на телефоне сразу видно страницу, а не полэкрана ссылок */
  .side{flex-wrap:nowrap;flex-direction:column;align-items:stretch;padding:8px 12px 6px}
  .side .brand{padding:2px 4px 6px;font-size:15px}
  .side .navs{display:flex;gap:4px;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}
  .side .navs a.nav{white-space:nowrap;padding:7px 10px;background:var(--bg)}
  .side .navs a.nav.on{background:var(--brand-soft)}
  .side .me{padding:4px 4px 0;font-size:12px}
  .side .me br{display:none}
  .side .me form{display:inline;margin-left:8px}
  main{padding:18px 16px 40px}
  h1{font-size:22px}
}
/* ---------- счета клиентам ---------- */
.s-wait{background:var(--brand-soft);color:var(--brand)}
.flash{background:var(--ok-bg);color:var(--ok);border-radius:10px;padding:10px 14px;font-weight:600}
/* Запросы клиентам (request_co.html): письмо как увидит клиент */
.letter{white-space:pre-line;background:var(--bg);border:1px dashed var(--line);border-radius:10px;padding:12px 14px;font-size:14px}
.warn{background:var(--late-bg);color:var(--late);border-radius:10px;padding:10px 14px}
.row-acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.btn.sec{background:var(--brand-soft);color:var(--brand)}
.btn.danger{background:var(--late)}
.btn.sm{padding:8px 14px;font-size:14px}
.inp{font:inherit;font-size:14px;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:6px 8px;min-height:36px;width:100%}
.inp.err{border-color:var(--late)}
.inp-c{min-width:260px} .inp-n{max-width:110px} .inp-m{max-width:140px} .inp-d{max-width:160px}
.form{display:flex;flex-direction:column;gap:14px;max-width:640px}
.form label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted)}
.form select,.form input[type=date],.form input[type=text],.form input[type=tel],.formrow select,.formrow input[type=date],.formrow input[type=text]{font:inherit;font-size:14px;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px 10px;min-height:40px;max-width:320px}
.upload{border:2px dashed var(--line);border-radius:12px;padding:20px;background:var(--bg)}
.upload input{font:inherit;color:var(--ink)}
.issue{color:var(--late);font-size:13px} .okline{color:var(--ok);font-size:13px;font-weight:600}
.choice{display:flex;flex-direction:column;gap:2px;font-size:13px;margin-top:6px}
.choice label{display:flex;gap:6px;align-items:center}
.chk{width:18px;height:18px}
.right{text-align:right}
.facts{display:grid;grid-template-columns:max-content 1fr;gap:6px 18px;margin:0}
.facts dt{color:var(--muted)} .facts dd{margin:0}
.h{display:inline-block;width:18px;height:18px;border-radius:4px;vertical-align:middle}
.h-ok{background:var(--ok)} .h-l5{background:#E0B400} .h-late{background:#E07B00} .h-no{background:var(--late)}
.h-open{background:var(--brand-soft);border:1px solid var(--brand)} .h-none{border:1px dashed var(--line)}
.habits td.c{text-align:center;padding:6px 4px} .habits th.c{text-align:center}
.inline{display:inline}
@media (max-width:820px){
  .facts{grid-template-columns:1fr} .facts dd{margin-bottom:6px}
  .inp-c{min-width:0} .inp-n,.inp-m,.inp-d{max-width:none}
  .acts td > div.cellv{text-align:right;min-width:0}
  .acts.checks td{display:block;padding:4px 0}
  .acts.checks td::before{display:block;margin-bottom:2px}
}
/* ---------- проверка сданных ---------- */
.pick{display:flex;gap:8px;align-items:center;cursor:pointer}
/* ---------- вход, люди и права ---------- */
.steps{display:flex;gap:6px} .steps span{flex:1;height:4px;border-radius:2px;background:var(--line)} .steps span.on{background:var(--brand)}
.login .form{max-width:none} .login input[type=tel],.login input[type=password],.login input[type=text]{font:inherit;font-size:16px;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:10px 12px;min-height:44px;width:100%}
.codein{font:700 22px/1 ui-monospace,Menlo,Consolas,monospace!important;letter-spacing:.3em;text-align:center;max-width:220px}
.form textarea{font:inherit;font-size:14px;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px 10px;min-height:90px;width:100%;max-width:640px;resize:vertical}
.form .check{flex-direction:row;align-items:center;gap:8px;color:var(--ink);font-size:14px}
.form .check input{width:18px;height:18px}
.formrow{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));align-items:end}
.form.wide{max-width:none}
.rgrp{font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:600;margin:14px 0 2px}
.rrow{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--line2);cursor:pointer}
.rrow input{width:18px;height:18px;margin-top:2px;flex:0 0 auto} .rrow .rt{flex:1;min-width:0}
.rrow.locked{cursor:default;color:var(--muted)}
.rpills{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.rpill{display:inline-block;padding:3px 10px;border-radius:999px;background:var(--brand-soft);color:var(--brand);font-size:13px;font-weight:500}
.rpill.extra{background:var(--ok-bg);color:var(--ok)}
.row-acts select{font:inherit;font-size:14px;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:6px 8px;min-height:36px;max-width:220px}
.w0{width:0%}.w1{width:1%}.w2{width:2%}.w3{width:3%}.w4{width:4%}.w5{width:5%}.w6{width:6%}.w7{width:7%}.w8{width:8%}.w9{width:9%}.w10{width:10%}.w11{width:11%}.w12{width:12%}.w13{width:13%}.w14{width:14%}.w15{width:15%}.w16{width:16%}.w17{width:17%}.w18{width:18%}.w19{width:19%}.w20{width:20%}.w21{width:21%}.w22{width:22%}.w23{width:23%}.w24{width:24%}.w25{width:25%}.w26{width:26%}.w27{width:27%}.w28{width:28%}.w29{width:29%}.w30{width:30%}.w31{width:31%}.w32{width:32%}.w33{width:33%}.w34{width:34%}.w35{width:35%}.w36{width:36%}.w37{width:37%}.w38{width:38%}.w39{width:39%}.w40{width:40%}.w41{width:41%}.w42{width:42%}.w43{width:43%}.w44{width:44%}.w45{width:45%}.w46{width:46%}.w47{width:47%}.w48{width:48%}.w49{width:49%}.w50{width:50%}.w51{width:51%}.w52{width:52%}.w53{width:53%}.w54{width:54%}.w55{width:55%}.w56{width:56%}.w57{width:57%}.w58{width:58%}.w59{width:59%}.w60{width:60%}.w61{width:61%}.w62{width:62%}.w63{width:63%}.w64{width:64%}.w65{width:65%}.w66{width:66%}.w67{width:67%}.w68{width:68%}.w69{width:69%}.w70{width:70%}.w71{width:71%}.w72{width:72%}.w73{width:73%}.w74{width:74%}.w75{width:75%}.w76{width:76%}.w77{width:77%}.w78{width:78%}.w79{width:79%}.w80{width:80%}.w81{width:81%}.w82{width:82%}.w83{width:83%}.w84{width:84%}.w85{width:85%}.w86{width:86%}.w87{width:87%}.w88{width:88%}.w89{width:89%}.w90{width:90%}.w91{width:91%}.w92{width:92%}.w93{width:93%}.w94{width:94%}.w95{width:95%}.w96{width:96%}.w97{width:97%}.w98{width:98%}.w99{width:99%}.w100{width:100%}

/* отступы вместо style="…" (CSP запрещает встроенные стили) */
.spread{justify-content:space-between}
.mt6{margin-top:6px}
.mt10{margin-top:10px}
.mt12{margin-top:12px}
.formrow label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted)}

/* справки, полисы ИП, архив: клетки «компании × разделы / месяцы» */
.cells th.v{writing-mode:vertical-rl;transform:rotate(180deg);height:158px;vertical-align:bottom;text-align:left;padding:6px 4px;font-size:12px;text-transform:none;letter-spacing:0;white-space:nowrap}
.cells td.c,.cells th.c{text-align:center;padding:3px 2px}
.cells form{display:inline;margin:0}
.cells td.co{min-width:190px}
.cell{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:7px;border:1px solid var(--line);background:var(--card);font-weight:700;color:var(--muted);font-size:14px;padding:0}
button.cell{cursor:pointer}
button.cell:focus-visible{outline:2px solid var(--brand);outline-offset:1px}
.cell.y{background:var(--ok-bg);color:var(--ok);border-color:transparent}
.cell.n{background:var(--todo-bg);color:var(--muted);border-color:transparent}
.cell.w{background:var(--late-bg);color:var(--late);border-color:transparent}
.cell.q{background:var(--sent-bg);color:var(--sent);border-color:transparent;font-size:11px}
.legend .cell{width:22px;height:22px;font-size:12px;vertical-align:middle;margin-right:4px}
.minibar{display:inline-block;width:64px;height:8px;border-radius:6px;background:var(--todo-bg);overflow:hidden;vertical-align:middle;margin-right:6px}
.minibar span{display:block;height:100%;background:var(--ok)}
.anchor{scroll-margin-top:16px}
/* ---------- реестр отчётов (/registry): сетка как архив, карточка отчёта справа (на телефоне — снизу) ---------- */
.rg th.v.irr{color:var(--muted);font-style:italic}
/* названия отчётов не уезжают при прокрутке: таблица прокручивается в своей рамке, шапка — sticky
   (у каждой th: в border-collapse:collapse sticky на thead пропускает строки) */
.rg-table{max-height:calc(100vh - 16px);overflow:auto;padding-top:0}
table.rg{border-collapse:separate;border-spacing:0}
.rg thead th{position:sticky;top:0;z-index:3;background:var(--card)}
.rg thead tr.rg-due th{top:158px;box-shadow:0 1px 0 var(--line)}
.rg tr.rg-due th{font-weight:500;font-size:11.5px;text-align:center;padding:2px 2px 8px;line-height:1.3;white-space:nowrap;text-transform:none;letter-spacing:0;color:var(--muted)}
.rg tr.rg-due th b{display:block;color:var(--ink2);font-size:12px}
.rg tr.on td{background:var(--brand-soft)}
a.cell{text-decoration:none;color:var(--ink2);position:relative}
a.cell:hover{border-color:var(--brand);text-decoration:none}
a.cell:focus-visible{outline:2px solid var(--brand);outline-offset:1px}
.cell.r-late{border-color:var(--late);color:var(--late)}
.cell.r-sent{background:var(--sent-bg);color:var(--sent);border-color:transparent}
.cell.r-ok{background:var(--ok-bg);color:var(--ok);border-color:transparent}
.cell.r-ver{background:var(--ok-bg);color:var(--ok);border-color:var(--ok);font-size:11px;letter-spacing:-.06em}
.cell.r-rej{background:var(--rej-bg);color:var(--rej);border-color:transparent}
.cell.r-na{background:transparent;border-style:dashed;color:var(--muted);font-weight:500}
.cell.r-qrt{background:var(--qrt-bg);color:var(--qrt);border-color:transparent;font-size:11px}
.cell.r-irr{background:transparent;border-color:transparent;color:var(--muted);font-weight:500} /* «по необходимости» — пусто */
a.cell.r-irr:hover{border-color:var(--line)} .cell.r-legend-irr{border:1px dashed var(--line2)}
.cell.r-nr{border-style:solid;border-color:var(--ok);color:var(--ok);font-size:11px;font-weight:600}
.cell.mine{position:relative}
.cell.mine::after{content:"";position:absolute;right:-4px;top:-4px;width:9px;height:9px;border-radius:50%;background:var(--brand);border:2px solid var(--card)}
.cell.sel{outline:2px solid var(--brand);outline-offset:2px}
.rg-mini{display:inline-flex;width:64px;vertical-align:middle;margin-right:6px}
.rg-late{color:var(--late);font-weight:600;margin-left:6px}
.rg-counts{color:var(--ink2)}
.rg-ecp{display:inline-block;font-size:12px;color:var(--muted);margin-top:2px}
.rg-ecp.e-warn{color:var(--sent);font-weight:600} .rg-ecp.e-late{color:var(--late);font-weight:600} .rg-ecp.e-none{font-style:italic}
.rg-links{display:flex;flex-wrap:wrap;gap:10px 18px;align-items:center}
.rg-links .fg{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.rg-links .fg > span{font-size:12px;color:var(--muted);margin-right:4px}
.rg-cards{display:none}
.navs{display:contents}
.rg-scrim{position:fixed;inset:0;background:rgba(10,16,24,.45);z-index:40}
.rg-drawer{position:fixed;top:0;right:0;bottom:0;width:min(440px,100%);background:var(--card);border-left:1px solid var(--line);box-shadow:0 8px 32px rgba(0,0,0,.25);z-index:41;overflow:auto;padding:16px 20px 28px;display:flex;flex-direction:column;gap:12px}
.rg-drawer h2{margin:2px 0 0;font-size:19px}
.rg-x{align-self:flex-end;width:34px;height:34px;border-radius:50%;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-size:20px;line-height:1;text-decoration:none}
.rg-x:hover{text-decoration:none}
.rg-acts{display:flex;flex-direction:column;gap:8px}
.rg-acts form{margin:0}
.rg-acts form > .btn{width:100%;text-align:left}
.rg-upload{display:flex;flex-direction:column;gap:8px;border:1px dashed var(--line);border-radius:10px;padding:10px 12px}
.rg-upload label{display:flex;flex-direction:column;gap:4px}
.rg-upload input[type=file]{font:inherit;font-size:13px;color:var(--ink)}
.rg-cert{display:flex;flex-direction:column;gap:4px;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.rg-grp{font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:600;margin-top:6px}
.rg-chk{background:var(--ok-bg);color:var(--ok);border-radius:10px;padding:10px 12px;font-size:14px;margin-top:4px}
.rg-chk .issue{color:var(--late)}
.rg-res{background:var(--ok-bg);color:var(--ok);border-radius:10px;padding:10px 12px;font-size:14px;display:flex;flex-direction:column;gap:2px}
.rg-res.bad{background:var(--late-bg);color:var(--late)}
.rg-hist{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--ink2)}
.rg-hist li{display:grid;grid-template-columns:82px 1fr;gap:8px}
@media (max-width:820px){
  .rg-table,.rg-legend{display:none}
  .rg-cards{display:flex;flex-direction:column;gap:8px}
  .rg-co{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:7px}
  .rg-coh{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
  .rg-chips{display:flex;flex-wrap:wrap;gap:5px}
  .rg-chip{border-radius:7px;padding:4px 8px;font-size:12.5px;font-weight:600;background:var(--todo-bg);color:var(--todo);text-decoration:none}
  .rg-chip:hover{text-decoration:none}
  .rg-chip.r-late,.rg-chip.r-rej{background:var(--late-bg);color:var(--late)}
  .rg-chip.r-sent{background:var(--sent-bg);color:var(--sent)}
  .rg-chip.r-ok,.rg-chip.r-ver{background:var(--ok-bg);color:var(--ok)}
  .rg-chip.r-qrt{background:var(--qrt-bg);color:var(--qrt)}
  .rg-chip.r-na{background:transparent;border:1px dashed var(--line);color:var(--muted);font-weight:500}
  .rg-drawer{top:auto;left:0;width:100%;max-height:88vh;border-left:0;border-top:1px solid var(--line);border-radius:18px 18px 0 0}
}
/* Реестр из Telegram (tg_pages.py): страница входа и полоска над реестром вместо меню */
.tg-start{max-width:520px;margin:0 auto;padding:32px 16px;display:flex;flex-direction:column;gap:12px}
/* «📋 Скопировать и открыть группу» (wa_go.html) — открывается на телефоне из Telegram */
.wa-go{max-width:560px;margin:0 auto;padding:20px 16px 32px;display:flex;flex-direction:column;gap:12px}
.wa-go h1{font-size:22px} .wa-go .sub{margin-top:-6px}
.wa-btn{display:block;text-align:center;background:#1FA855;font-size:17px;padding:16px 14px;border-radius:14px}
.wa-btn:hover{text-decoration:none}
.wa-steps{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:4px;color:var(--ink2);font-size:14px}
.wa-text{font:inherit;font-size:14px;color:var(--ink);width:100%;min-height:380px;resize:vertical;white-space:pre-wrap}
.tg-bar{padding:0 0 8px}
.rg-export{gap:6px}
/* «📜 Письма клиенту» на странице компании: письмо раскрывается (details, без скриптов) */
.lt-list{display:flex;flex-direction:column;gap:6px}
.lt{border:1px solid var(--line);border-radius:10px;background:var(--card)}
.lt > summary{cursor:pointer;padding:9px 12px;display:flex;flex-wrap:wrap;gap:4px 8px;align-items:baseline}
.lt[open] > summary{border-bottom:1px solid var(--line2)}
.lt .letter{margin:10px 12px 12px} .lt-del{margin:0 12px 12px}
/* Архив за год (binder.html): названия разделов не уезжают при прокрутке — как в реестре */
.bd-table{max-height:calc(100vh - 16px);overflow:auto;padding-top:0}
table.bd{border-collapse:separate;border-spacing:0}
.bd thead th{position:sticky;top:0;z-index:3;background:var(--card);box-shadow:0 1px 0 var(--line)}
.bd-legend{margin:2px 0 10px}
/* «Налоги к уплате» (taxes.html): компании × месяцы, справа — форма */
.tx th.m,.tx td.m{text-align:right;white-space:nowrap}
.tx-c{display:inline-block;min-width:104px;padding:6px 9px;border-radius:8px;color:var(--ink);border:1px solid var(--line);font-variant-numeric:tabular-nums;text-align:right}
.tx-c:hover{text-decoration:none;border-color:var(--brand)}
.tx-c small{display:block;font-size:11px;color:var(--muted)}
.tx-c.sent{background:var(--ok-bg);border-color:transparent} .tx-c.fix{background:var(--sent-bg);border-color:transparent}
.tx-c.draft{background:var(--brand-soft);border-color:transparent} .tx-c.none{color:var(--muted);border-style:dashed}
.tx-c.sel{outline:2px solid var(--brand);outline-offset:1px}
.tx tfoot td{font-weight:700;border-top:2px solid var(--line)}
.tx-legend{gap:10px}
.tx-form{display:flex;flex-direction:column;gap:8px}
.tx-ln{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,.9fr);gap:6px;align-items:center}
.tx-day{display:flex;align-items:center;gap:6px;flex-wrap:wrap} .tx-day .inp{width:64px}
.tx-pv{white-space:pre-wrap;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:13px}
/* «➕ Новый отчёт» — форма в правой панели */
.nf{display:flex;flex-direction:column;gap:14px}
.nf-l{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted)}
.nf fieldset{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.nf legend{font-size:13px;color:var(--muted);padding:0;margin-bottom:4px}
.nf fieldset label{display:flex;gap:8px;align-items:flex-start;font-size:14px;color:var(--ink)}
.nf input[type=radio]{margin:3px 0 0;accent-color:var(--brand)}
.nf-day{display:flex;gap:8px;align-items:center;font-size:14px;color:var(--ink)}
.nf .inp-day{width:64px;text-align:center}
/* полисы ИП по годам */
.cell.lock{border-color:var(--ok);cursor:default}
.pol th.cur{color:var(--brand)}
.pol td.c form{display:inline;margin:0}
/* проверка сданных: дерево компаний (details без скриптов) и предпросмотр налогового отчёта */
.ck-tools{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;justify-content:flex-end}
.ck-tree{display:flex;flex-direction:column;gap:8px}
.ck-co{background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.ck-co > summary{list-style:none;cursor:pointer;display:flex;flex-wrap:wrap;gap:4px 14px;align-items:center;padding:12px 14px}
.ck-co > summary::-webkit-details-marker{display:none}
.ck-co > summary:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}
.ck-arr{width:14px;color:var(--muted);display:inline-block}
.ck-co[open] .ck-arr{transform:rotate(90deg)}
.ck-co[open] > summary{border-bottom:1px solid var(--line2);background:var(--brand-soft)}
.ck-cnt{font-size:12px;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--brand-soft);color:var(--brand)}
.ck-co[open] .ck-cnt{background:var(--card)}
.ck-warn{color:var(--sent)}
.ck-all{padding:10px 14px 0 42px;margin:0}
.ck-rep{display:grid;grid-template-columns:150px minmax(0,1fr) 140px auto;gap:8px 16px;align-items:center;padding:10px 14px 10px 42px;border-bottom:1px solid var(--line2)}
.ck-rep:last-child{border-bottom:0}
.ck-rep.on{background:var(--brand-soft)}
.ck-nm b{display:block} .ck-nm span{font-size:12px;color:var(--muted)}
.ck-chips{display:flex;flex-wrap:wrap;gap:4px}
.ck-chips span{font-size:12px;background:var(--ok-bg);color:var(--ok);border-radius:6px;padding:1px 7px}
.ck-chips span.w{background:var(--sent-bg);color:var(--sent)}
.ck-who span{display:block}
.ck-acts{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;align-items:center}
.ck-acts form{margin:0}
.pv-drawer{position:fixed;top:0;right:0;bottom:0;width:min(1040px,100%);background:var(--card);z-index:41;display:grid;grid-template-columns:minmax(0,1fr) 320px;box-shadow:0 8px 32px rgba(0,0,0,.25)}
.pv-doc{background:var(--todo-bg);overflow:auto;padding:18px;display:flex;flex-direction:column;align-items:center;gap:14px}
.pv-page{display:block;width:100%;max-width:820px;height:auto;background:#fff;box-shadow:0 2px 12px rgba(0,0,0,.18)}
.pv-side{overflow:auto;padding:16px 18px 28px;display:flex;flex-direction:column;gap:12px;border-left:1px solid var(--line)}
.pv-side h2{margin:2px 0 0;font-size:19px}
.pv-side form{margin:0} .pv-side form > .btn,.pv-side > .btn{width:100%;text-align:left}
@media (max-width:820px){
  .ck-rep{grid-template-columns:1fr;padding-left:14px}
  .ck-all{padding-left:14px}
  .ck-acts{justify-content:flex-start}
  .pv-drawer{grid-template-columns:1fr;grid-template-rows:auto auto;overflow:auto}
  .pv-doc{overflow:visible;padding:10px}
  .pv-side{border-left:0;border-top:1px solid var(--line);overflow:visible}
}
.pv-inline{border-radius:12px}
.rg-drawer .pv-page{max-width:100%}
/* полисы ИП: список ИП и карточка (работники, файлы) */
.iplist{display:grid;gap:8px}
.ipcard{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) minmax(0,1.4fr) auto;gap:6px 16px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:10px 14px;color:var(--ink);text-decoration:none;background:var(--card)}
.ipcard:hover{border-color:var(--brand);text-decoration:none}
.ipcard:focus-visible{outline:2px solid var(--brand);outline-offset:1px}
.ipname{display:flex;flex-direction:column;min-width:0}
.mini{display:inline-flex;gap:3px}
.mini i{width:9px;height:9px;border-radius:3px;background:var(--todo-bg);display:block}
.mini i.y{background:var(--ok)} .mini i.w{background:var(--late)}
.t-ok{color:var(--ok);font-weight:600} .t-late{color:var(--late);font-weight:600} .t-warn{color:var(--sent);font-weight:600}
.pol tr.off td{opacity:.6}
.frow{display:flex;flex-wrap:wrap;gap:6px 12px;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding:8px 0;font-size:14px}
.frow:first-of-type{border-top:0}
@media (max-width:760px){ .ipcard{grid-template-columns:1fr} }
/* ⚡ быстрые команды */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.btn.sec.danger{background:var(--late-bg);color:var(--late)}
.tag.e-none{background:var(--todo-bg);color:var(--muted);font-weight:500}
.qk{display:grid;grid-template-columns:300px minmax(0,1fr);gap:16px;align-items:start}
.qk-find{display:flex;gap:6px}
.qk-find input,.qk-ed input[type=text],.qk-ed select,.qk-secrow input,.qk-ed textarea,.form input[type=text]{font:inherit;font-size:14px;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px 10px;min-height:40px}
.qk-find input{flex:1;min-width:0}
.qk-ed textarea{width:100%;max-width:none;resize:vertical;line-height:1.5}
.qk-ed input[type=text]{max-width:none;width:100%}
.qk-secs,.qk-items{display:flex;flex-direction:column;gap:2px;margin-top:10px}
.qk-secs a,.qk-items a{display:flex;justify-content:space-between;gap:8px;align-items:center;padding:7px 10px;border-radius:8px;color:var(--ink2);text-decoration:none;font-size:14px}
.qk-secs a span{font-size:12px;color:var(--muted)}
.qk-secs a:hover,.qk-items a:hover{background:var(--brand-soft);text-decoration:none}
.qk-secs a.on,.qk-items a.on{background:var(--brand-soft);color:var(--ink);font-weight:600}
.group-l{margin:14px 0 4px;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.qk-title{font-size:20px;margin:4px 0 8px}
.qk-steps{margin:8px 0 0;padding-left:22px;display:flex;flex-direction:column;gap:8px;max-width:75ch}
.qk-shots{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));margin-top:14px}
.qk-shots img{width:100%;border:1px solid var(--line);border-radius:10px;display:block}
.qk-links,.qk-files{display:flex;flex-wrap:wrap;gap:8px}
.qk-links a{border:1px solid var(--line);border-radius:999px;padding:5px 12px;font-size:14px;background:var(--card)}
.qk-file{display:inline-flex;gap:8px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:7px 10px;font-size:14px;color:var(--ink);background:var(--card)}
.qk-file b,.qk-ext{font:700 11px/1 ui-monospace,monospace;background:var(--brand);color:#fff;border-radius:5px;padding:4px 5px}
.qk-thumb{width:56px;height:40px;object-fit:cover;border-radius:6px;border:1px solid var(--line);vertical-align:middle}
.qk-emoji{width:58px;text-align:center}
.qk-secrow form.row-acts{flex:1;min-width:260px}
.qk-secrow form.row-acts input[name=title],form.qk-secrow input[name=title]{flex:1;min-width:160px}
.qk-secrow .small{min-width:64px;text-align:right}
@media (max-width:860px){ .qk{grid-template-columns:1fr} }
/* Таблица реестра (sheet.html) */
.sheet-stats{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:14px;color:var(--ink2)}
.sheet-row{padding:12px 0;border-bottom:1px solid var(--line2);display:flex;flex-direction:column;gap:8px}
.sheet-row:last-child{border-bottom:0}
.sheet-row select,.sheet-row input[type=text]{font:inherit;font-size:14px;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:6px 10px;min-height:38px;max-width:100%}
.sheet-row select{min-width:0;width:min(320px,100%)}

/* ---------- «Сводка» (dashboard.html): прозрачное стекло на тёплом фоне ---------- */
/* Цвета страницы — поверх общих: тёмный коричневый текст, белое полупрозрачное стекло. Фон — отдельным слоем
   (::before, position:fixed): не «едет» при прокрутке и на телефоне не дёргается, как background-attachment:fixed. */
body.dash{--ink:#2A1F17; --ink2:rgba(42,31,23,.82); --muted:rgba(42,31,23,.66); --line2:rgba(255,255,255,.42);
  --glass:rgba(255,255,255,.24); --glass-line:rgba(255,255,255,.42); --glass-card:rgba(255,255,255,.30); --glass-edge:rgba(255,255,255,.5);
  --chip-bg:rgba(255,255,255,.45); --track:rgba(255,255,255,.45); --sheet:rgba(246,236,224,.9); --sheet-card:rgba(255,255,255,.6);
  --dshadow:0 10px 30px rgba(60,35,15,.18); --dshadow-hi:0 16px 38px rgba(60,35,15,.28); background:#8A5A3C}
body.dash::before{content:"";position:fixed;inset:0;z-index:-1;
  background:radial-gradient(60% 45% at 15% 10%,#F3E3CC 0%,transparent 70%),radial-gradient(50% 40% at 90% 20%,#B9875C 0%,transparent 70%),
  radial-gradient(70% 50% at 70% 85%,#7A5136 0%,transparent 70%),radial-gradient(60% 50% at 10% 90%,#D8B48C 0%,transparent 70%),
  linear-gradient(160deg,#E8D4BA,#A77650 55%,#5E3D29)}
@media (prefers-color-scheme: dark){
  body.dash{--ink:#F2E8DE; --ink2:rgba(242,232,222,.85); --muted:rgba(242,232,222,.62); --line2:rgba(255,255,255,.09);
    --glass:rgba(28,20,14,.55); --glass-line:rgba(255,255,255,.08); --glass-card:rgba(255,255,255,.06); --glass-edge:rgba(255,255,255,.1);
    --chip-bg:rgba(255,255,255,.08); --track:rgba(255,255,255,.13); --sheet:rgba(38,27,19,.94); --sheet-card:rgba(255,255,255,.07);
    --dshadow:0 10px 30px rgba(0,0,0,.35); --dshadow-hi:0 16px 38px rgba(0,0,0,.5); background:#1A120C}
  body.dash::before{background:radial-gradient(60% 45% at 15% 10%,#5A4330 0%,transparent 70%),radial-gradient(50% 40% at 90% 20%,#4A3220 0%,transparent 70%),
    radial-gradient(70% 50% at 70% 85%,#2B1B10 0%,transparent 70%),radial-gradient(60% 50% at 10% 90%,#3D2B1C 0%,transparent 70%),
    linear-gradient(160deg,#3A2A1E,#24180F 55%,#140D08)} }
.dash .tg-bar{color:var(--ink2)}
.dash .d-mut{background:var(--muted);opacity:.45}
.dash .tabbar{background:var(--sheet)}
.dash .side{background:var(--glass-card);border-right:1px solid var(--glass-edge);-webkit-backdrop-filter:blur(18px) saturate(1.5);backdrop-filter:blur(18px) saturate(1.5)}
.dash .card,.dkpi,.dal{background:var(--glass-card);border:1px solid var(--glass-edge);box-shadow:var(--dshadow);
  -webkit-backdrop-filter:blur(18px) saturate(1.5);backdrop-filter:blur(18px) saturate(1.5)}
.dhead{position:sticky;top:0;z-index:5;display:flex;flex-wrap:wrap;gap:10px 16px;align-items:flex-end;justify-content:space-between;
  margin:-28px -32px 0;padding:22px 32px 14px;background:var(--glass);border-bottom:1px solid var(--glass-line);
  -webkit-backdrop-filter:blur(16px) saturate(1.4);backdrop-filter:blur(16px) saturate(1.4)}
.dhead h1{font-size:26px;letter-spacing:-.01em}
.dkpis{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(146px,1fr))}
.dkpi{border-radius:22px;padding:16px 18px;display:flex;flex-direction:column;gap:6px;color:var(--ink);min-width:0;transition:transform .15s ease,box-shadow .15s ease}
a.dkpi:hover{text-decoration:none;transform:translateY(-3px);box-shadow:var(--dshadow-hi)}
a.dkpi:focus-visible{outline:2px solid var(--brand);outline-offset:3px}
.dkpi .top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;min-height:54px}
.dkpi .l{font-size:13px;color:var(--muted)}
.dkpi .go{font-size:14px;color:var(--muted);opacity:.7}
.dkpi .v{font-size:32px;font-weight:700;line-height:1.05;letter-spacing:-.02em;white-space:nowrap}
.dkpi .v small{font-size:14px;font-weight:500;color:var(--muted);letter-spacing:0}
.dkpi .d{font-size:12px;color:var(--muted)}
.chip-ic{flex:0 0 auto;width:34px;height:34px;border-radius:11px;display:grid;place-items:center;background:var(--chip-bg);color:var(--ink2)}
.ic{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.dkpi.blue .chip-ic{background:var(--brand-soft);color:var(--brand)} .dkpi.blue .v{color:var(--brand)}
.dkpi.late .chip-ic{background:var(--late-bg);color:var(--late)} .dkpi.late .v{color:var(--late)}
.dkpi.sent .chip-ic{background:var(--sent-bg);color:var(--sent)} .dkpi.sent .v{color:var(--sent)}
.dkpi.violet .chip-ic{background:var(--violet-bg);color:var(--violet)} .dkpi.violet .v{color:var(--violet)}
.dkpi.hero{background:linear-gradient(140deg,var(--hero1),var(--hero2));border-color:transparent;color:#fff}
.dkpi.hero .l,.dkpi.hero .d,.dkpi.hero .go,.dkpi.hero .v small{color:rgba(255,255,255,.82)}
.dkpi.hero .chip-ic{background:rgba(255,255,255,.18);color:#fff}
.ring{width:54px;height:54px;flex:0 0 auto}
.ring-bg{fill:none;stroke:rgba(255,255,255,.22);stroke-width:7}
.ring-fg{fill:none;stroke:#fff;stroke-width:7;stroke-linecap:round}
.ring-t{fill:#fff;font-size:15px;font-weight:700}
.meter,.dbar{display:flex;height:7px;border-radius:99px;overflow:hidden;background:var(--track)}
.dbar{min-width:80px;margin-top:6px}
.meter i,.dbar i{display:block;height:100%}
.m-ok{background:var(--ok)} .m-sent{background:var(--sent-bar)} .m-late{background:var(--late)}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.drow{display:grid;gap:14px;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}
.dash .card.dcard{display:flex;flex-direction:column;gap:12px;min-width:0;border-radius:22px;padding:18px 20px}
.dh{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap}
.dh h2{margin:0;font-size:17px} .dh span{font-size:12px;color:var(--muted)}
.dfeed{display:flex;flex-direction:column}
.dfeed .fi{display:flex;gap:12px;align-items:center;padding:9px 0;border-top:1px solid var(--line2);font-size:14px}
.dfeed .fi:first-child{border-top:0;padding-top:2px}
.dfeed .x{flex:1;min-width:0} .dfeed .x small{display:block;color:var(--muted);font-size:12px}
.dfeed .date{flex:0 0 42px;height:42px;border-radius:13px;background:var(--chip-bg);display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:11px;color:var(--muted);line-height:1.1}
.dfeed .date b{font-size:16px;color:var(--ink)}
.dot{flex:0 0 auto;width:10px;height:10px;border-radius:50%;background:var(--muted)}
.d-ok{background:var(--ok)} .d-sent{background:var(--sent-bar)} .d-late{background:var(--late)} .d-mut{background:var(--track)}
.s-mut{background:var(--chip-bg);color:var(--muted)}
.dalerts{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.dal{display:flex;gap:12px;align-items:center;border-radius:18px;padding:12px 14px;font-size:14px;color:var(--ink2)}
.dal b{font-size:22px;color:var(--ink);min-width:24px}
.dal.warn .chip-ic{background:var(--late-bg);color:var(--late)} .dal.warn b{color:var(--late)}
.people{display:flex;flex-direction:column}
.person{display:flex;gap:12px;align-items:center;padding:10px 0;border-top:1px solid var(--line2)}
.person:first-child{border-top:0;padding-top:2px}
.person .who{flex:1;min-width:0;display:flex;flex-direction:column}
.person .who small{color:var(--muted);font-size:12px}
.person .nm{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px}
.person .pc{font-weight:700;font-size:15px;min-width:42px;text-align:right}
.ava{flex:0 0 auto;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:700;font-size:15px}
.a0{background:#2E9E66} .a1{background:#3B6FD8} .a2{background:#D9822B} .a3{background:#8C5AD8} .a4{background:#D2495B} .a5{background:#2A9DB0}
.dchart{width:100%;height:auto;display:block} .dchart.dm{display:none}
.dchart text{font-family:inherit}
.c-grid{stroke:var(--line2)} .c-ax{font-size:11px;fill:var(--muted)} .c-ax.now{fill:var(--ok);font-weight:700}
.c-bar{fill:var(--bar-ink)} .c-now{fill:var(--ok)} .c-fut{fill:none;stroke:var(--track);stroke-dasharray:2 2}
.c-due{stroke:var(--late);stroke-dasharray:3 3} .c-duet{font-size:11px;fill:var(--late)}
.c-tgt{stroke:var(--brand);stroke-dasharray:4 3} .c-tgtt{font-size:10px;fill:var(--brand)}
.c-area{fill:var(--ok);opacity:.18} .c-line{fill:none;stroke:var(--ok);stroke-width:2.4} .c-dot{fill:var(--ok)}
.tabbar{position:sticky;bottom:12px;z-index:5;display:flex;justify-content:center;gap:6px;margin:10px auto 0;padding:6px;border-radius:20px;
  background:var(--glass);border:1px solid var(--glass-line);-webkit-backdrop-filter:blur(16px) saturate(1.4);backdrop-filter:blur(16px) saturate(1.4);
  box-shadow:0 8px 28px rgba(0,0,0,.14);width:max-content;max-width:100%}
.tabbar .tab{padding:9px 20px;border-radius:14px;color:var(--ink2);font-weight:500}
.tabbar .tab.on{background:var(--brand-soft);color:var(--brand);font-weight:600}
.tabbar .tab:hover{text-decoration:none}
@media (max-width:820px){ .drow{grid-template-columns:1fr} .dhead{margin:-18px -16px 0;padding:14px 16px 12px} .dhead h1{font-size:21px}
  .dkpis{grid-template-columns:1fr 1fr;gap:10px} .dkpi{padding:14px;border-radius:18px} .dkpi .v{font-size:28px}
  .dkpi.hero{grid-column:1 / -1} .dalerts{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px} .dal{padding:10px 12px;font-size:13px;min-width:0} .dal .chip-ic{display:none}
  .rings{grid-template-columns:repeat(3,minmax(0,1fr))} .ringc svg{width:64px;height:64px}
  .dchart.dm{display:block} .dchart:not(.dm){display:none} }
/* месяцы — кнопками; сравнение с тем же днём прошлого месяца */
.pchips{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding:2px;margin:-2px}
.pchips::-webkit-scrollbar{display:none}
.pchips a{padding:8px 15px;border-radius:999px;font-size:13.5px;font-weight:600;white-space:nowrap;color:var(--ink);
  background:var(--glass-card);border:1px solid var(--glass-edge);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.pchips a:hover{text-decoration:none}
.pchips a.on{background:linear-gradient(150deg,#5CC795,#2F9E6E);color:#fff;border-color:transparent}
.pnote{margin:-8px 4px 0;font-size:12.5px;color:var(--muted)}
.cmp{display:inline-flex;font-size:11.5px;font-weight:700;padding:1px 7px;border-radius:99px;margin-right:4px;background:var(--chip-bg);color:var(--ink2)}
.cmp.good{background:rgba(47,158,110,.2);color:var(--ok)} .cmp.bad{background:rgba(229,96,58,.2);color:var(--late)}
.dkpi.hero .cmp{background:rgba(255,255,255,.25);color:#fff}
/* кольца «По видам отчётов» */
.rings{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(118px,1fr))}
.ringc{display:flex;flex-direction:column;align-items:center;text-align:center;padding:12px 6px;border-radius:18px;color:var(--ink);
  background:var(--chip-bg);border:1px solid var(--glass-edge);transition:transform .15s ease}
.ringc:hover{text-decoration:none;transform:translateY(-2px)} .ringc:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.ringc svg{width:72px;height:72px} .ringc b{font-size:13px;margin-top:4px} .ringc span{font-size:11.5px;color:var(--muted)}
.tr-bg{fill:none;stroke:var(--track);stroke-width:7} .tr-fg{fill:none;stroke-width:7;stroke-linecap:round}
.r-good{stroke:#2F9E6E} .r-mid{stroke:#D6A03C} .r-bad{stroke:#E5603A} .tr-t{fill:var(--ink);font-size:15px;font-weight:700}
/* шторка снизу: открывается ссылкой #s-…, закрывается ссылкой #_ — только CSS (:target), без скриптов */
.sheet-wrap{display:none;position:fixed;inset:0;z-index:30} .sheet-wrap:target{display:block}
.sheet-bg{position:absolute;inset:0;background:rgba(40,25,15,.4)}
.sheet{position:absolute;left:0;right:0;bottom:0;max-height:86vh;overflow:auto;max-width:720px;margin:0 auto;
  border-radius:26px 26px 0 0;background:var(--sheet);border-top:1px solid var(--glass-edge);box-shadow:0 -10px 40px rgba(40,25,15,.3);
  -webkit-backdrop-filter:blur(28px) saturate(1.5);backdrop-filter:blur(28px) saturate(1.5);padding:8px 16px calc(env(safe-area-inset-bottom) + 24px)}
.grab{width:40px;height:5px;border-radius:9px;background:var(--track);margin:0 auto 10px}
.sheet-head{display:flex;align-items:center;gap:8px;margin-bottom:12px} .sheet-head h2{flex:1;margin:0;font-size:18px}
.xbtn{flex:0 0 auto;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--sheet-card);color:var(--ink)}
.xbtn:hover{text-decoration:none}
.sh-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.sh-stat{background:var(--sheet-card);border-radius:16px;padding:10px 12px} .sh-stat small{display:block;font-size:12px;color:var(--muted)}
.sh-stat b{font-size:18px}
.sh-box{background:var(--sheet-card);border-radius:18px;padding:2px 14px}
.sh-box .fi{display:flex;align-items:center;gap:10px;padding:11px 0;border-top:1px solid var(--line2);color:var(--ink)}
.sh-box .fi:first-child{border-top:0} .sh-box .fi:hover{text-decoration:none}
.sh-box .x{flex:1;min-width:0} .sh-box small{display:block;font-size:12px;color:var(--muted)} .sh-box .go{color:var(--muted);font-size:20px}
.sheet .small{margin:10px 4px 0}
.sh-more{display:block;text-align:center;margin-top:12px;padding:12px;border-radius:14px;background:var(--sheet-card);font-weight:600;color:var(--ink)}
.sh-more:hover{text-decoration:none}
/* «🎨 Цвета» сводки: кнопка в шапке, кружки палитр (цвета кружков — dash_pages.theme_css), свой цвет */
.thchip{display:inline-flex;align-items:center;gap:6px;margin-top:10px;padding:7px 14px;border-radius:999px;font-weight:600;
  font-size:14px;color:var(--ink);background:var(--chip-bg);border:1px solid var(--glass-edge)}
.thchip:hover{text-decoration:none}
.thgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:12px;margin:4px 0 14px}
button.th{display:flex;flex-direction:column;align-items:center;gap:6px;background:none;border:0;padding:4px 0;font:inherit;
  font-size:13px;font-weight:500;color:var(--ink);cursor:pointer}
.th i{width:56px;height:56px;border-radius:50%;border:2px solid rgba(255,255,255,.85);box-shadow:0 4px 12px rgba(0,0,0,.15)}
.th i.sw-plain{background:#F3F5F7}
.th.on i,.th-own.on input{outline:3px solid var(--ink);outline-offset:2px}
.th-own{display:flex;align-items:center;gap:12px;background:var(--sheet-card);border-radius:16px;padding:10px 12px}
.th-own b{flex:1;font-size:14px}
.th-own input[type=color]{width:52px;height:40px;padding:0;border:2px solid #fff;border-radius:10px;background:none;cursor:pointer;
  box-shadow:0 2px 6px rgba(0,0,0,.2)}
.th-own input[type=color]::-webkit-color-swatch-wrapper{padding:0} .th-own input[type=color]::-webkit-color-swatch{border:0;border-radius:8px}
.th-own input[type=color]::-moz-color-swatch{border:0;border-radius:8px}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .dash .card,.dkpi,.dal,.dash .side{background:var(--card)} }
@media (prefers-reduced-motion: reduce){ .dkpi,.ringc{transition:none} a.dkpi:hover,.ringc:hover{transform:none} }

/* «📝 Мои задания» (tasks.html): задание целиком, справа круглые ✅ ❌ ↪️; окошки снизу — .sheet-wrap:target */
.tk-group{font-size:14px;color:var(--muted);margin:14px 2px 6px}
.tk{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px 10px 10px 12px;display:flex;gap:8px;align-items:center;margin-bottom:8px}
.tk form{margin:0}
.tk-x{flex:1;min-width:0;overflow-wrap:anywhere} .tk-why{color:var(--sent);font-size:13px;margin-top:3px}
.rb{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;font-size:18px;flex:0 0 auto;cursor:pointer;padding:0;font-family:inherit}
.rb:hover{text-decoration:none}
.rb.ok{background:var(--ok-bg);border:1.5px solid var(--ok)} .rb.no{background:var(--late-bg);border:1.5px solid var(--late)}
.rb.fw{background:var(--brand-soft);border:1.5px solid var(--line)}
.tk.done{opacity:.6} .tk.done b{text-decoration:line-through} .tk-undo{white-space:nowrap;font-weight:600}
.tk-sheet{background:var(--card);display:flex;flex-direction:column;gap:10px;padding:8px 16px 24px}
.tk-sheet h2{margin:0} .tk-sheet .sub{margin-top:-6px}
.tk-sheet textarea{font:inherit;font-size:15px;color:var(--ink);background:var(--card);border:1.5px solid var(--line);border-radius:10px;padding:10px;min-height:90px;width:100%;resize:vertical}
.tk-acts{display:flex;gap:8px} .tk-acts .btn{flex:1;text-align:center}
.tk-who{display:flex;flex-direction:column;gap:6px}
.tk-opt{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:12px;padding:11px 12px;font-size:15px}
.tk-opt input{width:18px;height:18px}
/* таблицы «Мои задания» и «Задания сотрудникам» (tasks.html); на телефоне строка — карточкой */
.tk-table td{vertical-align:middle} .tk-table tr.done{opacity:.6} .tk-table tr.done b{text-decoration:line-through}
.tk-name th{text-transform:none;letter-spacing:0;font-size:14px;font-weight:600;color:var(--ink);background:var(--line2)}
.tk-act{white-space:nowrap;text-align:right;width:1%} .tk-act form{display:inline-block;margin:0} .tk-act .rb{display:inline-grid;margin-left:6px}
@media (max-width:640px){
  .tk-table thead{display:none}
  .tk-table,.tk-table tbody,.tk-table tr,.tk-table td,.tk-table th{display:block;width:100%}
  .tk-table tr{border-bottom:1px solid var(--line2);padding:8px 0} .tk-table td{border:0;padding:2px 0}
  .tk-table td[data-l]:not(:first-child)::before{content:attr(data-l) ": ";color:var(--muted);font-size:13px}
  .tk-act{text-align:left;padding-top:8px} .tk-act .rb{margin:0 8px 0 0}
}
.tk-due{flex-direction:row;flex-wrap:wrap} .tk-opt .tk-date{width:auto;height:auto;font:inherit;font-size:14px;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:4px 8px}

/* 📄 письмо на бланке (letter.html): слева поля, справа страницы PDF картинками */
.le{display:grid;gap:18px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;margin-top:12px}
@media (max-width:900px){.le{grid-template-columns:1fr}}
.le-f{display:flex;flex-direction:column;gap:12px}
.le-f label{display:flex;flex-direction:column;gap:4px}
.le-f textarea{resize:vertical}
.le-2{display:grid;grid-template-columns:90px 1fr;gap:8px}
.le-rq{display:flex;flex-direction:column;gap:6px;font-size:14px}
.le-rq label{flex-direction:row;align-items:center;gap:8px}
.le-ck{display:flex;gap:18px;flex-wrap:wrap;font-size:14px}
.le-ck label{flex-direction:row;align-items:center;gap:8px}
.le-pv{display:flex;flex-direction:column;gap:10px}
.le-pv img{width:100%;height:auto;border:1px solid var(--line);border-radius:6px;background:#fff}
.le-go{display:flex;flex-wrap:wrap;gap:8px}
.le-tag{display:inline-block;font-size:12px;background:var(--brand-soft);color:var(--brand);border-radius:6px;padding:1px 6px;margin-left:6px;font-weight:500;text-transform:none;letter-spacing:0}
/* бланк письма и реквизиты (blank.html, requisites.html) */
.bl{display:flex;flex-direction:column;gap:12px;margin-top:12px}
.bl-img{max-width:100%;height:auto;border:1px dashed var(--line);border-radius:6px;background:#fff;align-self:flex-start}
.bl-sign{max-height:90px} .bl-seal{max-height:140px}
.rq{display:flex;flex-direction:column;gap:12px;margin-top:12px;scroll-margin-top:12px}
.rq-k{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin-bottom:10px}
.rq-k fieldset{border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:8px}
.rq-k label{display:flex;flex-direction:column;gap:4px}
.rq-c{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1.5fr) minmax(0,1fr) minmax(0,1.3fr);gap:6px;align-items:center}
@media (max-width:700px){.rq-c{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.rq-h{font-size:12px;color:var(--muted);line-height:1.35}
.rq-help{margin-top:12px;line-height:1.5}

/* ---------- мини-приложение «Отчёты» в Telegram (mini.html, mini_pages.py) ---------- */
.mn{background:var(--bg)}
.mn-main{max-width:560px;margin:0 auto;padding:16px 16px 40px;display:flex;flex-direction:column;gap:12px}
.mn-h h1{margin:0;font-size:24px;line-height:1.2}
.mn-h p{margin:2px 0 0;color:var(--muted);font-size:14px}
.mn-search .inp{width:100%;box-sizing:border-box}
.mn-f{display:flex;flex-wrap:wrap;gap:8px}
.mn-chip{display:inline-flex;align-items:center;min-height:34px;padding:0 14px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--ink2);font-size:13px;font-weight:500;white-space:nowrap}
.mn-chip:hover,.mn-co:hover,.mn-rl:hover,.mn-add:hover,.mn-pick:hover{text-decoration:none}
.mn-chip.on{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}
.mn-chip.late:not(.on){border-color:var(--late);color:var(--late)}
.mn-list{display:flex;flex-direction:column;gap:8px}
.mn-co{display:flex;flex-direction:column;gap:8px;padding:12px 14px;background:var(--card);border-radius:14px;color:var(--ink)}
.mn-co.late{box-shadow:inset 0 0 0 1px var(--late)}
.mn-coh{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.mn-coh>span{font-size:13px;color:var(--muted);text-align:right}
.mn-red{color:var(--late)}
.mn-bar{display:block;height:5px;border-radius:3px;background:var(--track);overflow:hidden}
.mn-bar i{display:block;height:100%;background:var(--ok)}
.mn-tags{display:flex;flex-wrap:wrap;gap:6px}
.mn-ok{font-size:13px;color:var(--ok);font-weight:600}
.mn-back{align-self:flex-start;font-size:15px;font-weight:500;padding:6px 0}
.mn-prog{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--ink2)}
.mn-reps{display:flex;flex-direction:column;background:var(--card);border-radius:14px;overflow:hidden}
.mn-rep{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line2)}
.mn-rep:last-child{border-bottom:0}
.mn-rl{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;color:var(--ink)}
.mn-rl b{font-size:16px}
.mn-rl span{font-size:13px;color:var(--muted)}
.mn-rl .mn-l-late,.mn-rl .mn-l-rej{color:var(--late)}
.mn-rl .mn-l-sent{color:var(--sent)}
.mn-rl .mn-l-ok,.mn-rl .mn-l-ver{color:var(--ok)}
.mn-up{margin:0}
.mn-up label{position:relative;overflow:hidden}
.mn-up label.busy{opacity:.7}
.mn-file{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.mn-hint{margin:0;font-size:13px;color:var(--muted)}
.mn-add{display:flex;align-items:center;justify-content:center;min-height:48px;border-radius:14px;border:1px dashed var(--muted);color:var(--brand);font-weight:600}
.mn-pick{display:block;padding:12px 14px;border-radius:12px;background:var(--brand-soft);color:var(--ink);font-weight:500}
.mn-pick span{color:var(--muted);font-weight:400}
