:root{
  --deep:#0F5050;--teal:#19766D;--aqua:#27928A;--coral:#F47159;--coral-d:#E0583F;--cream:#FFF6EE;--ink:#173B4A;--white:#FFFFFF;
  --muted:#5B7078;--line:#E8DDD2;--line2:#F1E9E1;--teal-pale:#E6F2F0;--coral-pale:#FDE8E3;--amber:#B7791F;--amber-pale:#FDF3DC;
  --red:#B5483F;--red-pale:#F7E2DF;--green:#2E7D5B;--green-pale:#E2F3EA;--off:#9AA7A7;
  --head:"Manrope",Arial,sans-serif;--body:"Inter",Arial,sans-serif;
  --shadow:0 10px 30px rgba(15,80,80,.08);
  color-scheme:light;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--cream);color:var(--ink);font:15px/1.5 var(--body);-webkit-font-smoothing:antialiased;padding-bottom:env(safe-area-inset-bottom,0)}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:var(--teal)}
[hidden]{display:none!important}
:focus-visible{outline:3px solid rgba(25,118,109,.35);outline-offset:2px}
.boot{padding:40px;text-align:center;color:var(--muted)}

/* header */

/* layout */
main{max-width:1180px;margin:0 auto;padding:22px 20px 60px}
h1{font:800 26px/1.2 var(--head);margin:0 0 4px;letter-spacing:-.02em;color:var(--deep)}
.sub{color:var(--muted);margin:0 0 20px}
h2{font:700 18px/1.3 var(--head);margin:28px 0 12px;color:var(--deep)}
.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.spacer{flex:1}
.grid{display:grid;gap:12px}
.g5{grid-template-columns:repeat(5,minmax(0,1fr))}
.card{background:var(--white);border:1px solid var(--line);border-radius:16px;padding:16px 18px;box-shadow:0 1px 0 rgba(0,0,0,.02)}
.card+.card{margin-top:12px}
.grid>.card,.kpis>.card,.lights>.card{margin:0}
.muted{color:var(--muted)}
.small{font-size:13px}
.mono{font-variant-numeric:tabular-nums}
.empty{padding:22px;text-align:center;color:var(--muted);background:var(--white);border:1px dashed var(--line);border-radius:16px}

/* badges */
.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font:600 12px/1.5 var(--head);white-space:nowrap}
.badge::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.b-plan{background:#EEF1F1;color:#6B7B80}
.b-pend{background:var(--amber-pale);color:var(--amber)}
.b-ok{background:var(--green-pale);color:var(--green)}
.b-auto{background:var(--teal-pale);color:var(--teal)}
.b-bad{background:var(--red-pale);color:var(--red)}
.b-off{background:#F2F2F2;color:#8A8A8A}
.tag{display:inline-block;padding:1px 7px;border:1px solid var(--line);border-radius:6px;font-size:11.5px;color:var(--muted);font-weight:600;letter-spacing:.02em}
.due{font-weight:600}
.due.warn{color:var(--amber)}
.due.bad{color:var(--red)}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:6px;min-height:38px;border:1.5px solid transparent;border-radius:999px;padding:7px 16px;font:700 14px/1.2 var(--head);text-decoration:none;transition:background .15s,transform .1s}
.btn:active{transform:scale(.98)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-main{background:var(--coral);color:#fff}
.btn-main:hover{background:var(--coral-d)}
.btn-teal{background:var(--teal);color:#fff}
.btn-teal:hover{background:var(--deep)}
.btn-sec{background:var(--white);color:var(--deep);border-color:#BFD9D5}
.btn-sec:hover{background:var(--teal-pale)}
.btn-ghost{background:none;border:0;color:var(--teal);padding:4px 6px;min-height:0;font-weight:600;text-decoration:underline dotted}
.btn-danger{background:var(--white);color:var(--red);border-color:#E7BDB8}
.btn-sm{min-height:32px;padding:5px 12px;font-size:13px}

/* overview */
.wait{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 16px;align-items:center}
.wait .t{font:700 15px/1.35 var(--head)}
.wait .m{grid-column:1;font-size:13px;color:var(--muted)}
.wait .r{grid-row:1/3;grid-column:2;text-align:right}
.stage{display:flex;flex-direction:column;gap:6px;min-height:150px}
.stage .n{font:800 13px var(--head);color:var(--coral);letter-spacing:.04em;text-transform:uppercase}
.stage .t{font:600 14px/1.35 var(--head)}
.stage .f{margin-top:auto;display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--muted)}
.feed{list-style:none;margin:0;padding:0}
.feed li{display:grid;grid-template-columns:118px minmax(0,1fr);gap:10px;padding:8px 0;border-bottom:1px dashed var(--line2);font-size:14px}
.feed li:last-child{border:0}
.feed time{color:var(--muted);font-size:12.5px}

/* deliverables / acceptance */
.group-h{display:flex;align-items:baseline;gap:10px;margin:26px 0 10px}
.group-h h2{margin:0}
.dl-head{display:flex;gap:12px;align-items:flex-start}
.dl-head .t{font:700 16px/1.35 var(--head);margin:0}
.dl-head .meta{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;margin-top:5px;font-size:13px;color:var(--muted)}
.ver{margin-top:12px;padding:12px 14px;border-radius:12px;background:#FFFCF9;border:1px solid var(--line2)}
.ver .l{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center}
.ver .l b{font-family:var(--head)}
.note{white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0 0;font-size:14px}
.decision{margin-top:8px;padding:8px 10px;border-radius:10px;font-size:14px}
.decision.ok{background:var(--green-pale)}
.decision.bad{background:var(--red-pale)}
.decision.auto{background:var(--teal-pale)}
.actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
details.hist{margin-top:10px}
details.hist summary{cursor:pointer;color:var(--teal);font-size:13px;font-weight:600}
details.hist .ver{background:var(--white)}
.comments{margin-top:10px;border-top:1px dashed var(--line2);padding-top:8px}
.cm{font-size:13.5px;padding:4px 0}
.cm b{font-weight:600}
.cm time{color:var(--muted);font-size:12px;margin-left:6px}
.cform{display:flex;gap:8px;margin-top:6px}
.cform input{flex:1;min-width:0}
.crit{margin:8px 0 0;padding-left:20px}
.crit li{margin:3px 0}
.remarks{margin:8px 0 0;padding-left:20px}
.remarks li{margin:4px 0}
.remarks .c{color:var(--muted);font-size:12.5px;display:block}
.docs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px}
.docs div{padding:10px 12px;border-radius:10px;background:#FAFAF8;border:1px solid var(--line2);font-size:13px}
.docs div b{display:block;font:600 12px var(--head);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:2px}

/* journal */
.verify{padding:12px 14px;border-radius:12px;margin-bottom:14px;font-size:14px}
.verify.ok{background:var(--green-pale);color:var(--green)}
.verify.bad{background:var(--red-pale);color:var(--red)}
table.j{width:100%;border-collapse:collapse;background:var(--white);border:1px solid var(--line);border-radius:14px;overflow:hidden;font-size:13.5px}
table.j th{text-align:left;font:600 12px var(--head);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:10px 12px;background:#FBF7F3;border-bottom:1px solid var(--line)}
table.j td{padding:9px 12px;border-bottom:1px solid var(--line2);vertical-align:top}
table.j tr:last-child td{border:0}
table.j td.time{white-space:nowrap;color:var(--muted)}
table.j details summary{cursor:pointer;color:var(--teal);font-size:12px}
table.j pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:11.5px;background:#FAFAF8;padding:8px;border-radius:8px;margin:6px 0 0;max-width:640px}

/* forms & dialog */
label.f{display:block;margin:0 0 12px}
label.f>span{display:block;font:600 13px var(--head);margin-bottom:5px}
label.f small{display:block;color:var(--muted);margin-top:4px;font-size:12.5px}
input[type=text],input[type=email],input[type=password],input[type=url],input[type=number],input[type=date],select,textarea{width:100%;border:1.5px solid var(--line);border-radius:10px;padding:9px 11px;background:var(--white);outline:none;transition:border-color .15s}
input:focus,select:focus,textarea:focus{border-color:var(--teal);box-shadow:0 0 0 4px var(--teal-pale)}
textarea{min-height:90px;resize:vertical}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.check{display:flex;gap:10px;align-items:flex-start;font-size:14px;margin:10px 0}
.check input{margin-top:3px;width:18px;height:18px;accent-color:var(--teal);flex:none}
.pep{padding:10px 12px;border-radius:10px;background:var(--coral-pale);color:#6E3A2E;font-size:13px;margin-top:6px}
dialog{border:0;border-radius:18px;padding:0;width:min(560px,calc(100vw - 24px));max-height:calc(100vh - 40px);box-shadow:0 20px 60px rgba(15,50,50,.25);color:var(--ink)}
dialog::backdrop{background:rgba(15,40,45,.4)}
dialog form{display:flex;flex-direction:column;max-height:calc(100vh - 40px)}
dialog header{padding:18px 20px 8px;font:800 19px/1.25 var(--head);color:var(--deep)}
dialog .body{padding:6px 20px 8px;overflow:auto}
dialog footer{display:flex;gap:8px;justify-content:flex-end;padding:12px 20px 18px;border-top:1px solid var(--line2);flex-wrap:wrap}
.err{color:var(--red);font-size:13.5px;margin:4px 0 0;min-height:1em}
.rem-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;margin-bottom:8px}
.rem-row select{grid-column:1/-1}
#toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(20px + env(safe-area-inset-bottom,0));z-index:50;background:var(--ink);color:#fff;padding:10px 16px;border-radius:12px;font-size:14px;box-shadow:var(--shadow);max-width:calc(100vw - 32px)}

/* login */
.login{min-height:100vh;display:grid;place-items:center;padding:20px}
.login .box{width:min(400px,100%);background:var(--white);border:1px solid var(--line);border-radius:22px;padding:28px 26px;box-shadow:var(--shadow)}
.login .brand{margin-bottom:8px;justify-content:center}
.login .brand img{height:auto;width:100%;max-width:340px}
.login h1{text-align:center;font-size:20px;margin:6px 0 18px}
.login .btn{width:100%;justify-content:center;margin-top:6px}
.login p.legal{font-size:12px;color:var(--muted);margin:16px 0 0}

/* светофоры и KPI */
.kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.kpis:has(>.kpi-link){grid-template-columns:repeat(4,minmax(0,1fr))}   /* v19.2: четвёртая карточка «Поставки» */
.kpi-link{color:inherit;text-decoration:none;display:block}.kpi .red{color:#B64C4C}.kpi-link:hover{box-shadow:0 0 0 1.5px var(--teal,#19766D)}
.kpi .k{font:600 12px var(--head);color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.kpi .v{font:800 34px/1.1 var(--head);color:var(--deep);margin:6px 0 2px;font-variant-numeric:tabular-nums}
.kpi .v small{font-size:15px;font-weight:700;color:var(--muted);margin-left:4px}
.kpi .s{font-size:13px;color:var(--muted)}
.bar{position:relative;height:10px;border-radius:99px;background:var(--line2);margin:10px 0 6px;overflow:visible}
.bar .fill{position:absolute;left:0;top:0;bottom:0;border-radius:99px;background:linear-gradient(90deg,var(--teal),var(--aqua))}
.bar .fill.acc{background:var(--deep)}
.bar .mark{position:absolute;top:-4px;bottom:-4px;width:3px;border-radius:2px;background:var(--coral)}
.legend2{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:12px;color:var(--muted)}
.legend2 i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.lights{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.light{display:flex;gap:12px;align-items:flex-start}
.light .t{font:700 14px/1.3 var(--head)}
.light .x{font-size:13px;color:var(--muted);margin-top:3px;overflow-wrap:anywhere}
.dot{display:inline-block;flex:none;width:14px;height:14px;border-radius:50%;margin-top:3px;box-shadow:0 0 0 4px rgba(0,0,0,.04)}
.dot.green{background:#2E9D6A;box-shadow:0 0 0 4px #DDF1E7}
.dot.yellow{background:#E0A020;box-shadow:0 0 0 4px #FBEFD0}
.dot.red{background:#D64B3F;box-shadow:0 0 0 4px #F7DCD9}
.dot.grey{background:#B8C2C2;box-shadow:0 0 0 4px #EEF1F1}
.dot.sm{width:10px;height:10px;margin-top:5px;box-shadow:none}
table.pf{width:100%;border-collapse:collapse;font-size:14px}
table.pf th{text-align:left;font:600 12px var(--head);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:8px 10px;border-bottom:1px solid var(--line)}
table.pf td{padding:9px 10px;border-bottom:1px dashed var(--line2);vertical-align:top}
table.pf tr:last-child td{border-bottom:0}
table.pf tr.st td{font-weight:600}
table.pf td.dev{white-space:nowrap;font-variant-numeric:tabular-nums}
table.pf td.dev.bad{color:var(--red);font-weight:700}
table.pf td.dev.ok{color:var(--green)}
.obl{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:4px 12px;align-items:start;padding:10px 0;border-bottom:1px dashed var(--line2)}
.obl:last-child{border:0}
.obl .t{font-weight:600}
.obl .m{font-size:13px;color:var(--muted)}
.obl .a{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
/* пожелания */
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 14px}
.chip{border:1.5px solid var(--line);background:var(--white);border-radius:999px;padding:5px 12px;font:600 13px var(--head);color:var(--muted)}
.chip.on{border-color:var(--deep);color:var(--deep);background:var(--teal-pale)}
.chip b{margin-left:6px;color:var(--ink)}
.res{margin-top:10px;padding:10px 12px;border-radius:10px;font-size:14px}
.res.now{background:var(--green-pale)}.res.next{background:var(--teal-pale)}.res.contract{background:var(--amber-pale)}.res.rejected{background:var(--red-pale)}.res.dup{background:#EEF1F1}
.prio{font:700 11px var(--head);padding:2px 8px;border-radius:6px;text-transform:uppercase;letter-spacing:.04em}
.prio.must{background:var(--coral-pale);color:var(--coral-d)}.prio.should{background:var(--teal-pale);color:var(--teal)}.prio.could{background:#EEF1F1;color:#6B7B80}
.radio{display:flex;gap:10px;align-items:flex-start;padding:9px 10px;border:1.5px solid var(--line);border-radius:10px;margin-bottom:8px;cursor:pointer}
.radio:has(input:checked){border-color:var(--teal);background:var(--teal-pale)}
.radio input{margin-top:3px;accent-color:var(--teal)}
.radio small{display:block;color:var(--muted)}

@media (max-width:1000px){.lights{grid-template-columns:repeat(2,minmax(0,1fr))}.kpis,.kpis:has(>.kpi-link){grid-template-columns:1fr 1fr}.g5{grid-template-columns:repeat(2,minmax(0,1fr))}.docs{grid-template-columns:1fr}}
@media (max-width:640px){
  .kpis,.kpis:has(>.kpi-link),.lights{grid-template-columns:1fr}
  table.pf thead{display:none}
  table.pf,table.pf tbody,table.pf tr,table.pf td{display:block;width:100%}
  table.pf tr{border-bottom:1px solid var(--line);padding:6px 0}
  table.pf td{border:0;padding:2px 4px}
  .obl{grid-template-columns:auto minmax(0,1fr)}
  .obl .a{grid-column:2;justify-content:flex-start}
  main{padding:16px 12px 50px}
  h1{font-size:22px}
  .card{padding:14px}
  .g5{grid-template-columns:1fr}
  .stage{min-height:0}
  .wait{grid-template-columns:1fr}
  .wait .r{grid-row:auto;grid-column:1;text-align:left}
  .feed li{grid-template-columns:1fr;gap:0}
  .two{grid-template-columns:1fr}
  table.j thead{display:none}
  table.j,table.j tbody,table.j tr,table.j td{display:block;width:100%}
  table.j tr{border-bottom:1px solid var(--line)}
  table.j td{border:0;padding:4px 12px}
  table.j td.time{padding-top:10px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
.leg-acc{background:var(--deep)}.leg-del{background:var(--aqua)}.leg-plan{background:var(--coral)}

.row>div:first-child{flex:1 1 420px;min-width:0}
.crno{font:800 13px var(--head);color:var(--coral-d);background:var(--coral-pale);padding:2px 7px;border-radius:6px;margin-right:6px;vertical-align:2px;white-space:nowrap}
.f .lbl{display:block;font:600 13px var(--head);margin-bottom:5px}
details.rules{margin-top:10px}
details.rules summary{cursor:pointer;color:var(--teal);font:600 13px var(--head);margin-bottom:8px}
details.rules td{font-size:13px}
details.rules th .dot{margin:0 4px 0 0;vertical-align:-1px}

/* задачи, встречи, BRD */
dialog.wide{width:min(1000px,calc(100vw - 24px))}
.chips .sep{width:1px;background:var(--line);margin:2px 6px}
.card.task{padding:12px 16px}
.card.task.done,.card.task.cancelled{opacity:.72}
.trow{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:4px 12px;align-items:start}
.tt{font-weight:600;line-height:1.4}
.tact{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;align-items:center}
.meta .due.ok{color:var(--green)}.meta .due.bad{color:var(--red);font-weight:600}
.crno.q{color:#6B4FB0;background:#EEE8FA}
.rq{display:inline-block;font:700 11.5px var(--head);padding:1px 7px;border-radius:6px;background:var(--teal-pale);color:var(--teal);text-decoration:none;margin-right:2px}
.rq:hover{background:var(--teal);color:#fff}
.tag.cr{border-color:var(--coral);color:var(--coral-d)}
.mstat{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:10px;font-size:13.5px;color:var(--muted)}
.mstat b{color:var(--ink);font-size:15px}
.mini>div{padding:5px 0;border-bottom:1px dashed var(--line2);font-size:13.5px}
.crit li .badge{margin-left:6px}
.card.dec.superseded,.card.dec.cancelled{opacity:.7}
label.btn input[type=file]{display:none}
.irow{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:8px;align-items:start;padding:8px 0;border-bottom:1px dashed var(--line2)}
.irow textarea{min-height:56px;font-size:13.5px}
.iside{display:flex;flex-direction:column;gap:5px}
.iside input{padding:6px 9px;font-size:13px}
.skip{font-size:12px;color:var(--muted);display:flex;gap:6px;align-items:center}
h3.ih{font:700 15px var(--head);color:var(--deep);margin:18px 0 4px}
.stg{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-top:8px}
.stg .bar{margin:6px 0 2px}
table.brd td.lnk{max-width:220px}
table.brd td.lnk .tag{margin:0 3px 3px 0}
table.brd tr.focus td{background:var(--amber-pale)}
@media (max-width:640px){.trow{grid-template-columns:auto minmax(0,1fr)}.tact{grid-column:2;justify-content:flex-start}.irow{grid-template-columns:1fr}.stg{grid-template-columns:repeat(2,1fr)}.kpi[style]{grid-column:auto!important}}

/* светофоры — компактно, в одну строку */
.lights{grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}
.lights .card.light{padding:11px 12px;gap:9px;margin:0}
.lights .light .t{font-size:13px;line-height:1.25}
.lights .light .x{font-size:12px;line-height:1.35;margin-top:3px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.lights .dot{width:12px;height:12px;margin-top:2px}
@media (max-width:1100px){.lights{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:640px){.lights{grid-template-columns:repeat(2,minmax(0,1fr))}}

.hbtns{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.row>.btn,.row>a.btn{flex:none}

/* ---------- Справка (wiki) ---------- */
.helpq{float:right;margin:6px 0 0 12px;font:600 13px var(--head);color:var(--teal);text-decoration:none;border:1.5px solid #BFD9D5;border-radius:999px;padding:4px 11px;background:var(--white)}
.helpq:hover{background:var(--teal-pale)}
.wtop{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.wtitle{margin:0}
.wsearch{display:flex;gap:8px;flex:1;min-width:260px;max-width:560px;margin-left:auto}
.wsearch input{flex:1}
.wgrid{display:grid;grid-template-columns:220px minmax(0,1fr) 200px;gap:28px;align-items:start}
.wgrid.notoc{grid-template-columns:220px minmax(0,1fr)}
.wnav,.wtoc{position:sticky;top:86px;max-height:calc(100vh - 100px);overflow:auto;font-size:14px}
.wg{margin-bottom:14px}
.wgt{font:700 11.5px var(--head);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 6px}
.wnav a{display:block;padding:5px 10px;border-radius:8px;color:var(--ink);text-decoration:none;line-height:1.3}
.wnav a:hover{background:var(--teal-pale)}
.wnav a.on{background:var(--deep);color:#fff;font-weight:600}
.wnav .wnew{margin:4px 0 10px}
.wnav .wdoc{font-size:13px;color:var(--teal);padding:5px 10px}
.wtoc a{display:block;padding:3px 0 3px 10px;border-left:2px solid var(--line);color:var(--muted);text-decoration:none;font-size:13px;line-height:1.35}
.wtoc a.l3{padding-left:20px;font-size:12.5px}
.wtoc a:hover{color:var(--teal);border-color:var(--teal)}
.wart{background:var(--white);border:1px solid var(--line);border-radius:18px;padding:26px 32px 22px;min-width:0}
.wcrumbs{font-size:12.5px;color:var(--muted);margin-bottom:6px}.wcrumbs a{color:var(--muted)}
.whead{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap}.whead h1{flex:1;margin:0 0 10px}
.wtools{display:flex;gap:6px;align-items:center}
.wbody{font-size:15.5px;line-height:1.65}
.wbody h2{font:800 21px/1.3 var(--head);color:var(--deep);margin:30px 0 10px;padding-bottom:6px;border-bottom:1px solid var(--line2)}
.wbody h3{font:700 17px/1.35 var(--head);color:var(--deep);margin:22px 0 8px}
.wbody h4{font:700 15px var(--head);margin:16px 0 6px}
.wbody h2 .anchor,.wbody h3 .anchor{float:left;margin-left:-20px;width:20px;color:var(--line);text-decoration:none;opacity:0;transition:opacity .15s}
.wbody h2:hover .anchor,.wbody h3:hover .anchor{opacity:1}
.wbody .flash{animation:flash 1.6s ease}
@keyframes flash{0%{background:var(--amber-pale)}100%{background:transparent}}
.wbody p{margin:0 0 12px}.wbody ul,.wbody ol{margin:0 0 14px;padding-left:24px}.wbody li{margin:4px 0}
.wbody code{background:#F4EFEA;border-radius:5px;padding:1px 5px;font-size:13.5px}
.wbody a.wl{color:var(--teal);text-decoration:none;border-bottom:1px solid #BFD9D5}.wbody a.wl:hover{border-color:var(--teal)}
.wbody a.wl.missing{color:var(--red);border-bottom-style:dashed}
.wbody figure{margin:16px 0 20px;text-align:center}
.wbody figure img{max-width:100%;border:1px solid var(--line);border-radius:12px;box-shadow:0 6px 20px rgba(15,80,80,.08)}
.wbody figcaption{font-size:13px;color:var(--muted);margin-top:6px;font-style:italic}
.wbody .tw{overflow-x:auto;margin:6px 0 16px}
.wbody table{border-collapse:collapse;width:100%;font-size:14px}
.wbody th{background:var(--deep);color:#fff;text-align:left;padding:8px 10px;font:600 13px var(--head)}
.wbody td{border-bottom:1px solid var(--line2);padding:8px 10px;vertical-align:top}
.wbody tr:nth-child(even) td{background:#FCFAF7}
.callout{border-left:4px solid var(--teal);background:var(--teal-pale);border-radius:0 12px 12px 0;padding:12px 16px;margin:14px 0}
.callout.warn{border-color:var(--coral);background:var(--amber-pale)}
.callout.tip{border-color:var(--green);background:var(--green-pale)}
.callout .ct{font:700 15px var(--head);margin-bottom:4px;color:var(--deep)}
.callout.warn .ct{color:var(--coral-d)}
.callout p:last-child,.callout ol:last-child,.callout ul:last-child{margin-bottom:0}
.wback{margin-top:24px;padding-top:12px;border-top:1px dashed var(--line);font-size:13.5px}
.wpn{display:flex;justify-content:space-between;gap:12px;margin-top:18px;font:600 14px var(--head)}
.wpn a{color:var(--teal);text-decoration:none}
.wmeta{margin-top:14px;font-size:12px;color:var(--muted)}
.wres{display:block;padding:12px 0;border-bottom:1px solid var(--line2);text-decoration:none;color:var(--ink)}
.wres b{display:block;color:var(--teal);font-family:var(--head);margin-bottom:3px}.wres span{font-size:14px;color:var(--muted)}
.wres mark{background:var(--amber-pale);color:var(--ink);padding:0 1px;border-radius:3px}
.wedit{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.wedit textarea{min-height:52vh;font:13px/1.5 ui-monospace,Consolas,monospace}
.wprev{border:1px solid var(--line);border-radius:10px;padding:12px 16px;max-height:52vh;overflow:auto;font-size:14px}
.hrow{display:flex;gap:6px;align-items:center;flex-wrap:wrap;padding:6px 0;border-bottom:1px dashed var(--line2);font-size:13.5px}
@media (max-width:1100px){.wgrid,.wgrid.notoc{grid-template-columns:200px minmax(0,1fr)}.wtoc{display:none}}
@media (max-width:760px){.wgrid,.wgrid.notoc{grid-template-columns:1fr}.wnav{position:static;max-height:none;display:flex;gap:6px;overflow-x:auto;padding-bottom:4px}
  .wnav .wg{display:contents}.wnav .wgt{display:none}.wnav a{white-space:nowrap;border:1px solid var(--line);background:var(--white)}.wnav .wdoc,.wnav .wnew{display:none}
  .wart{padding:18px 16px}.wedit{grid-template-columns:1fr}.wsearch{min-width:0;flex-basis:100%;margin-left:0}.wsearch input{min-width:0}.helpq{float:none;display:inline-block;margin:0 0 10px}}

/* ---------- Тестирование (v11) ---------- */
a.chip{text-decoration:none;display:inline-flex;align-items:center}
.report{max-width:760px}
.ok-card{border-left:4px solid var(--green)}
.ok-card h2{margin:0 0 6px;color:var(--green)}
.kv{width:100%;border-collapse:collapse;font-size:13px;margin-top:6px}
.kv th{text-align:left;color:var(--muted);font-weight:600;padding:5px 10px 5px 0;vertical-align:top;white-space:nowrap;width:1%}
.kv td{padding:5px 0;white-space:pre-wrap;word-break:break-word}
.kv tr+tr{border-top:1px solid var(--line2)}
.sevs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.sevs .radio{margin:0}
.lbl{display:block;font:600 13px var(--head);color:var(--muted);margin-bottom:4px}
.imgs{display:flex;flex-wrap:wrap;gap:8px;min-height:24px}
.th{position:relative;width:110px;height:110px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}
.th img{width:100%;height:100%;object-fit:cover;object-position:top;display:block}
.th button{position:absolute;top:4px;right:4px;width:24px;height:24px;border-radius:50%;border:0;background:rgba(23,59,74,.75);color:#fff;font-size:12px;line-height:24px;padding:0}
.dfc{display:block;text-decoration:none;color:inherit;padding:12px 16px}
.dfc:hover{border-color:var(--teal)}
.dfc .meta{margin-top:4px}
.dfh{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dfh .spacer{flex:1}
.tcc.off{opacity:.55}
.tcb{margin-top:8px}
.tcb .note{white-space:pre-wrap}
.tcr{border-left:4px solid var(--line)}
.card.tcr.pass{border-left-color:var(--green)}
.card.tcr.fail{border-left-color:var(--red)}
.card.tcr.blocked{border-left-color:var(--amber)}
.card.tcr.skip{border-left-color:var(--off)}
span.tcr{border:0;font:700 13px var(--head);white-space:nowrap}
.devf{max-width:420px}
.shots{display:flex;flex-wrap:wrap;gap:10px;margin:6px 0 10px}
.shots img{max-width:260px;max-height:420px;border:1px solid var(--line);border-radius:10px;display:block}
.tsum{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;font-size:13.5px;margin:10px 0;padding:8px 12px;background:var(--cream);border:1px solid var(--line2);border-radius:10px}
.tsum b{font-family:var(--head)}
.tsum a.bad{color:var(--red);font-weight:700}
.tsum a.warn{color:var(--amber);font-weight:700}
.dfpick{border:1.5px solid var(--coral-pale);background:#FFFBF9;border-radius:10px;padding:10px 12px;margin:8px 0 12px}
.dfpick>b{display:block;font-family:var(--head)}
.dfpick>small{display:block;color:var(--muted);margin-bottom:6px}
@media (max-width:640px){.sevs{grid-template-columns:1fr}.th{width:84px;height:84px}.shots img{max-width:100%}}
/* v14: версия портала внизу страницы */
.appver{max-width:1180px;margin:-40px auto 0;padding:0 20px 28px;font-size:12px;color:var(--muted);line-height:1.5}
.appver a{color:var(--muted);text-decoration:none;border-bottom:1px dotted var(--line)}
.appver a:hover{color:var(--ink,#1F2D33)}
.appver-warn{color:var(--amber);font-weight:600}
/* v15: сводка задач на «Обзоре» */
.ovsum td,.ovsum th{text-align:center}.ovsum td:first-child,.ovsum th:first-child{text-align:left}
.ovsum a.tsn{display:inline-block;min-width:30px;padding:2px 8px;border-radius:999px;font-weight:700;text-decoration:none;background:var(--teal-pale);color:var(--ink,#1F2D33)}
.ovsum a.tsn.overdue,.ovsum a.tsn.noowner{background:var(--coral-pale)}.ovsum a.tsn.done,.ovsum a.tsn.cancelled{background:var(--line2)}

/* v16: ежедневная выгрузка в «Журнале» и подсказки к терминам (ЗД-061) */
.daily{margin:12px 0 16px;padding:14px 18px}
.daily>summary{cursor:pointer;line-height:1.7}
.daily table{margin-top:8px}
abbr.term{text-decoration:underline dotted 1.5px;text-underline-offset:3px;text-decoration-color:var(--aqua);cursor:help}
.crno{cursor:help}
#termtip{position:fixed;z-index:1000;background:var(--ink);color:#fff;font:400 13px/1.45 var(--body);padding:8px 11px;border-radius:8px;box-shadow:var(--shadow);pointer-events:none}
#termtip b{font-weight:600}
#termtip .tx{margin-top:4px;color:#CFE3E1}

/* v16.2: файлы к задачам, «что нового» на Обзоре */
.flist{list-style:none;margin:8px 0 12px;padding:0}
.flist li{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line)}
.flist li a{font-weight:600;word-break:break-word}
.flist li .btn{margin-left:auto}
.card.news{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;border-left:4px solid var(--aqua);margin-bottom:16px}
.card.news ul{margin:6px 0 6px 18px;padding:0}
@media (max-width:640px){.card.news{flex-direction:column}}
#dlg details{margin:6px 0 14px}

/* v17: заявки на продление и восстановление срока приёмки */
.reqs{margin:10px 0;display:grid;gap:8px}
.req{border-left:3px solid var(--amber);background:var(--amber-pale);padding:8px 12px;border-radius:0 8px 8px 0}
.req .badge{margin-left:6px}
.req .actions{margin-top:6px}
.req.done{border-left-color:var(--green);background:var(--green-pale)}
.req.no{border-left-color:var(--red);background:var(--red-pale)}

/* v17: простая электронная подпись */
.pepsign{border:1px solid #BFD9D5;background:var(--teal-pale);border-radius:10px;padding:10px 12px;margin-top:8px}
.pepsign .f{margin-bottom:6px}
.sigs{margin:8px 0;font-size:13px;color:var(--muted)}
.sigtag{display:inline-block;margin-right:6px;padding:2px 8px;border-radius:6px;background:var(--teal-pale);color:var(--teal);font:700 12px var(--head);text-decoration:none}
.sigtag:hover{background:var(--teal);color:#fff}

/* v18 · Санитария */
.hcard{border-left:4px solid var(--line)}
.hcard.sev3{border-left-color:var(--coral)}
.hcard.sev2{border-left-color:var(--amber)}
.hcard.sev1{border-left-color:#BFD9D5}
.hcard .t{font:700 15px/1.35 var(--head);margin:8px 0 10px;color:var(--ink)}
.hrow{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.hrow .muted{margin-left:auto}
.hpair{display:grid;gap:10px}
.hpair.two-col{grid-template-columns:1fr 1fr}
.hitem{border:1px solid var(--line2);border-radius:12px;padding:10px 12px;background:#FFFCF9;min-width:0}
.hhead{display:flex;align-items:center;gap:6px;margin-bottom:4px}
.htext{font-size:14px;overflow-wrap:anywhere}
.hitem .note{margin-top:6px;white-space:pre-line;max-height:7.5em;overflow:auto}
.hwhy{margin-top:8px}
.hcard .actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.hcard .actions .btn[disabled]{opacity:.45;cursor:not-allowed}
.simbox{margin-top:6px;padding:8px 10px;border-radius:10px;background:var(--amber-pale);font-size:12.5px;line-height:1.45}
.simbox b{display:block;margin-bottom:4px;color:var(--amber);font-family:var(--head)}
.simbox div{margin-top:3px;overflow-wrap:anywhere}
.simbox .crno{font-size:11.5px;padding:1px 6px}
.tag.lnk{border-color:#BFD9D5;color:var(--teal)}
@media (max-width:640px){.hpair.two-col{grid-template-columns:1fr}.hrow .muted{margin-left:0;flex-basis:100%}}
.hitem .meta{display:flex;flex-wrap:wrap;gap:2px 12px;margin-top:6px;font-size:12.5px;color:var(--muted)}
/* v18.6: место под нижнюю панель меню (сами правила меню — в menu.css) */
@media (max-width:640px){main{padding-bottom:calc(84px + env(safe-area-inset-bottom,0px))}.appver{padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}}
@media (min-width:641px) and (max-width:1024px){main{padding-bottom:96px}}

/* v18.12–13: сводка задач и открытых вопросов на «Обзоре». Цвет статуса один и тот же на полосе и на плитке */
.tsum2{--st-ns:#7C5CC4;--st-ns-p:#F0EBFA;--st-wip:#2E6DB4;--st-wip-p:#E6EEF8;--st-done:#2E8B57;--st-done-p:#E2F3EA;--st-cn:#8C969B;--st-cn-p:#EEF0F1;--st-od:#D9503A;--st-od-p:#FCE6E1;--st-no:#C27C0E;--st-no-p:#FCF1DA}
.tsum2 .tk+.tk{margin-top:18px;padding-top:16px;border-top:1px solid var(--line2)}
.tk-h{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 12px;margin-bottom:8px}
.tk-h h3{margin:0;font:800 16px var(--head)}
.tk-all{font-size:13px;color:var(--muted)}.tk-all b{color:var(--ink)}
.tbar{display:flex;height:12px;border-radius:999px;overflow:hidden;background:var(--line2);margin-bottom:12px}
.tbar i{display:block;height:100%}
.tbar i+i{border-left:2px solid var(--white)}
.tbar .notstarted{background:var(--st-ns)}.tbar .wip{background:var(--st-wip)}.tbar .done{background:var(--st-done)}.tbar .cancelled{background:var(--st-cn)}
.tgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.tgrp{display:grid;grid-template-columns:1fr 1fr;gap:6px;align-content:start}
.tgrp em{grid-column:1/-1;font:700 11px var(--head);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-style:normal}
a.tt{--c:var(--st-ns);--p:var(--st-ns-p);display:flex;flex-direction:column;gap:2px;padding:9px 10px 9px 12px;border-radius:12px;background:var(--p);color:var(--ink);text-decoration:none;min-height:64px;border:1.5px solid transparent;box-shadow:inset 5px 0 0 var(--c)}
a.tt:hover{border-color:var(--c)}
a.tt b{font:800 22px/1.1 var(--head);color:var(--c)}
a.tt span{font-size:12.5px;line-height:1.25}
a.tt.notstarted{--c:var(--st-ns);--p:var(--st-ns-p)}a.tt.wip{--c:var(--st-wip);--p:var(--st-wip-p)}a.tt.done{--c:var(--st-done);--p:var(--st-done-p)}a.tt.cancelled{--c:var(--st-cn);--p:var(--st-cn-p)}
a.tt.overdue{--c:var(--st-od);--p:var(--st-od-p)}a.tt.noowner{--c:var(--st-no);--p:var(--st-no-p)}
a.tt.zero{background:transparent;border-color:var(--line2);box-shadow:inset 5px 0 0 color-mix(in srgb,var(--c) 30%,transparent)}a.tt.zero b{color:var(--off)}
@media (max-width:900px){.tgrid{grid-template-columns:1fr}.tgrp{grid-template-columns:1fr 1fr}}
@media (max-width:640px){a.tt{min-height:0;padding:7px 10px 7px 12px}a.tt b{font-size:19px}.tgrid{gap:8px}}
/* v18.13: сворачиваемые разделы «Обзора» */
details.osec>summary{list-style:none;cursor:pointer;display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px;-webkit-tap-highlight-color:transparent}
details.osec>summary::-webkit-details-marker{display:none}
details.osec>summary h2{display:flex;align-items:center;gap:10px}
details.osec>summary h2::before{content:"";flex:none;width:0;height:0;border-left:8px solid var(--teal);border-top:5.5px solid transparent;border-bottom:5.5px solid transparent;transition:transform .15s}
details.osec[open]>summary h2::before{transform:rotate(90deg)}
details.osec>summary:hover h2{color:var(--teal)}
details.osec .smeta{display:none;font-size:13px;color:var(--muted);margin:28px 0 12px}
details.osec:not([open]) .smeta{display:inline}
details.osec:not([open])>summary h2,details.osec:not([open]) .smeta{margin:14px 0 6px}
.smeta b.red{color:var(--red)}
.linkbtn{border:0;background:none;padding:0;color:var(--teal);font:inherit;font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
/* v18.14: решения Заказчика по BRD (Р-коды) */
.rdcell{min-width:220px}
.rdprop{margin-top:6px;padding:6px 8px;border-radius:8px;background:var(--teal-pale);border-left:3px solid var(--teal)}
.rdbtns{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.rdopts{margin:6px 0 10px}
.rdopts .chip{text-align:left;white-space:normal}
/* v18.15: прямые ссылки на решения ВР и поиск по реестру */
.dsearch{display:flex;align-items:center;gap:10px;margin:0 0 12px}
.dsearch input{flex:1;max-width:420px;min-height:38px;padding:6px 12px;border:1px solid var(--line);border-radius:10px;font:inherit;background:#fff}
.card.dec.focus{outline:3px solid var(--teal);outline-offset:2px}
a.drlink{color:var(--teal);font-weight:600;text-decoration:underline dotted;text-underline-offset:2px}
/* v18.16: «Встречи» — сворачиваемые разделы и переходы к записям */
.mtabs{align-items:center;margin:4px 0 6px}
details.msec>summary h2{font-size:17px}
details.msec .card{margin-top:0}
.mstat a{color:inherit;text-decoration:none;border-bottom:1px dotted var(--teal)}
.mstat a:hover{color:var(--teal)}
a.crno{text-decoration:none}
a.crno:hover{filter:brightness(.92)}
a.plain{color:inherit;text-decoration:none}
a.plain:hover{color:var(--teal);text-decoration:underline}
.card.task.focus,.card.focus,details.osec.focus{outline:3px solid var(--teal);outline-offset:3px;border-radius:14px;transition:outline-color .6s}
/* v18.17: виды реестра решений */
.chips.dview{margin:4px 0 10px}
.chips.dorder{align-items:center;margin:0 0 4px}
.drange{font-variant-numeric:tabular-nums;color:var(--coral,#E8705F)}
.tag.area{background:var(--teal-pale);color:var(--teal);border-color:transparent}

/* v18.18, ЗНИ-016: «Встречи» — папки по годам, цвет месяца у протокола */
.ylist{margin-left:6px;padding-left:10px;border-left:2px solid var(--line,#dfe7e7)}
.mon{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:8px;vertical-align:middle;background:#9aa}
.mon.m1{background:#5b8def}.mon.m2{background:#7a6ff0}.mon.m3{background:#3fb37f}.mon.m4{background:#8bc34a}.mon.m5{background:#c0ca33}.mon.m6{background:#f2b632}
.mon.m7{background:#f08a3c}.mon.m8{background:#e8705f}.mon.m9{background:#d65a9a}.mon.m10{background:#1f7a7a}.mon.m11{background:#8d6e63}.mon.m12{background:#607d8b}
details.msec[data-mon="9"]>summary,details.msec[data-mon="11"]>summary,details.msec[data-mon="1"]>summary,details.msec[data-mon="3"]>summary,details.msec[data-mon="5"]>summary,details.msec[data-mon="7"]>summary{background:rgba(31,122,122,.045)}

/* v18.19: внеочередная встреча — заметная метка */
.tag.extra{background:#FDE8E3;border-color:#F4B4A6;color:#B8452F;font-weight:700}
summary .tag.extra{font-size:11px;vertical-align:middle;margin-left:6px}

/* v19.4: ошибка формы — в подвале диалога; незаполненное поле подписи подсвечивается */
dialog footer .err{flex:1 1 100%;margin:0 0 4px;order:-1}
dialog footer .err:empty{display:none}
dialog label.need{outline:2px solid #E25C47;outline-offset:3px;border-radius:8px}
