/* Кульман — стиль в духе Резерва (акцент #255FC3, чернила #16181B, Golos Text) */
@font-face{font-family:"Golos Text";font-style:normal;font-weight:400;font-display:swap;src:url(/static/fonts/golos-400-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:400;font-display:swap;src:url(/static/fonts/golos-400-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:500;font-display:swap;src:url(/static/fonts/golos-500-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:500;font-display:swap;src:url(/static/fonts/golos-500-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:600;font-display:swap;src:url(/static/fonts/golos-600-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:600;font-display:swap;src:url(/static/fonts/golos-600-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:800;font-display:swap;src:url(/static/fonts/golos-800-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:800;font-display:swap;src:url(/static/fonts/golos-800-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{--ink:#16181b;--muted:#5b6470;--line:#dfe3ea;--bg:#f4f6f9;--acc:#255fc3;--acc-deep:#1f4fa3;--acc-soft:rgba(37,95,195,.10);--auto:#16a34a;--rev:#d97706;--blind:#7c3aed;--conf:#dc2626;--done:#2563eb}
*{box-sizing:border-box}body{margin:0;font:14px/1.45 "Golos Text",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:var(--ink);background:var(--bg);height:100vh;display:flex;flex-direction:column}
::selection{background:var(--acc-soft)}
header{display:flex;align-items:center;gap:16px;padding:9px 14px;background:#16181b;color:#f4f6f9;border-bottom:1px solid #2b333e;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:15px;letter-spacing:.12em;color:#fff}
.brand svg{display:block}
.brand span{font-weight:500;color:#82afff;font-size:11.5px;letter-spacing:.02em;margin-left:2px;text-transform:none}
.metrics{flex:1;color:#8a93a3;font-size:12px;min-width:200px}
.actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.btn{border:1px solid #39414d;background:transparent;border-radius:6px;padding:6px 10px;cursor:pointer;font:inherit;font-weight:500;color:#f4f6f9;display:inline-block;transition:border-color .15s,background .15s}
header .btn:hover{border-color:#82afff;background:rgba(130,175,255,.08)}
.btn.primary{background:var(--acc);border-color:var(--acc);color:#fff}
header .btn.primary:hover{background:var(--acc-deep);border-color:var(--acc-deep)}
.btn.small{padding:3px 8px;font-size:12px}
.btn.on{background:var(--acc-soft);border-color:var(--acc);color:var(--acc)}
main .btn{border:1px solid var(--line);background:#fff;color:var(--ink)}
main .btn:hover{border-color:#b9c2cf}
main .btn.primary{background:var(--acc);border-color:var(--acc);color:#fff}
main .btn.primary:hover{background:var(--acc-deep)}
main .btn.on{background:var(--acc-soft);border-color:var(--acc);color:var(--acc)}
.op{border:1px solid #39414d;background:#101216;border-radius:6px;padding:6px 8px;width:110px;font:inherit;color:#f4f6f9}
.op:focus{outline:none;border-color:var(--acc)}
main{flex:1;display:grid;grid-template-columns:220px 1fr 380px;min-height:0}
aside{background:#fff;border-right:1px solid var(--line);overflow:auto;padding:10px}#panel{border-right:0;border-left:1px solid var(--line)}
h3{margin:4px 0 10px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.doc{padding:8px;border:1px solid var(--line);border-radius:8px;margin-bottom:6px;cursor:pointer;transition:border-color .15s,background .15s}
.doc:hover{border-color:#b9c2cf;background:#fafbfd}
.doc.on{border-color:var(--acc);background:rgba(37,95,195,.04)}
.doc b{display:block}.doc small{color:var(--muted);display:block}
.badge{display:inline-block;padding:0 6px;border-radius:9px;font-size:11px;background:var(--line);margin-right:3px}
.badge.REVIEW,.badge.AUDIT{background:#fef3c7}.badge.BLIND,.badge.BLIND2{background:#ede9fe}.badge.CONFLICT{background:#fee2e2}.badge.FINAL{background:#dbeafe}.badge.READY{background:#dcfce7}
#stage{display:flex;flex-direction:column;min-width:0;min-height:0}#toolbar{display:flex;gap:8px;align-items:center;padding:6px 10px;background:#fff;border-bottom:1px solid var(--line);flex-wrap:wrap}
#docTitle{font-weight:600;margin-right:auto}.legend{font-size:12px;color:var(--muted)}.legend i{display:inline-block;width:10px;height:10px;border:2px solid;margin:0 3px 0 8px;vertical-align:-1px;border-radius:2px}
#viewport{flex:1;overflow:auto;position:relative;background:#e7ebf1;cursor:grab}#canvas{position:relative;transform-origin:0 0;display:inline-block}
#viewport::-webkit-scrollbar{width:10px;height:10px}#viewport::-webkit-scrollbar-thumb{background:#c3cad5;border-radius:5px;border:2px solid #e7ebf1}
#page{display:block;user-select:none;-webkit-user-drag:none;box-shadow:0 1px 4px rgba(22,24,27,.12)}#overlay{position:absolute;inset:0;width:100%;height:100%}
#overlay rect{fill:transparent;stroke-width:4;cursor:pointer}#overlay rect.cur{stroke-width:9;fill:rgba(37,95,195,.08)}
.s-AUTO{stroke:var(--auto);border-color:var(--auto)!important}.s-REVIEW,.s-AUDIT{stroke:var(--rev);border-color:var(--rev)!important}
.s-BLIND,.s-BLIND2{stroke:var(--blind);border-color:var(--blind)!important}.s-CONFLICT{stroke:var(--conf);border-color:var(--conf)!important}.s-DONE{stroke:var(--done);border-color:var(--done)!important}
#overlay rect.s-AUTO{stroke-opacity:.45;stroke-width:3}
#overlay rect.dis{stroke-dasharray:10 7;stroke:var(--conf)!important}
#snipRect{fill:rgba(37,95,195,.14);stroke:var(--acc);stroke-width:3;cursor:crosshair}
#overlay line.vec{stroke:#f97316;stroke-width:2.2;pointer-events:none;opacity:.95}
#overlay line.vec-thick{stroke-width:3.4}
#overlay line.vec-axis{stroke-dasharray:14 3 3 3;stroke:#a855f7}
#overlay line.vec-dashed{stroke-dasharray:9 4;stroke:#0ea5e9}
#overlay line.vec-hatch{stroke:#94a3b8;stroke-width:1.4;opacity:.7}
#overlay circle.vec{fill:none;stroke:#f97316;stroke-width:2.2;pointer-events:none;opacity:.95}
#overlay line.vec-dim{stroke:#16a34a;stroke-width:2}
#overlay polygon.vec-dim{fill:#16a34a;pointer-events:none;opacity:.95}
#overlay text.vec-dimtxt{fill:#15803d;font-weight:600;pointer-events:auto;cursor:text}
#overlay text.vec-dimtxt:hover{fill:#0b5f2a;text-decoration:underline}
#overlay text.vec-dimtxt.dim-edited{fill:#b45309}
#overlay text.vec-lbl{fill:#64748b;pointer-events:none;opacity:.9}
.legend .vec-i{border-color:#f97316}
.legend .vec-i.dim{border-color:#16a34a}
#viewport.snipping{cursor:crosshair}
.hidden{display:none!important}.fhead{margin-bottom:6px}.fhead span{color:var(--muted);font-size:12px}
.warn-dis{color:#b91c1c;font-weight:600}
.crop{background:#fafbfd;border:1px solid var(--line);border-radius:8px;padding:6px;text-align:center;margin-bottom:8px}.crop img{max-width:100%;max-height:150px;image-rendering:auto}
.flags{font-size:12px;color:#92400e;margin-bottom:6px}.flags div:before{content:"• "}
.blindnote{background:#f5f3ff;border:1px solid #ddd6fe;color:#4c1d95;border-radius:8px;padding:6px 8px;font-size:12px;margin-bottom:8px}
.snip{margin-bottom:8px}.snipnote{font-size:12px;color:#1e40af;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;padding:5px 8px;margin-bottom:4px}
.cands{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.cand{border:1px solid var(--line);border-radius:8px;padding:5px 8px;cursor:pointer;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px;white-space:pre-wrap;word-break:break-word}
.cand:hover{border-color:var(--acc);background:rgba(37,95,195,.03)}.cand small{color:var(--muted);font-family:"Golos Text",system-ui;margin-left:6px}
.cand mark{background:#fde68a;border-radius:2px;padding:0 1px}.cand s{color:#b91c1c;text-decoration-color:#fca5a5}
.nands{font-size:12px;color:var(--muted);border:1px dashed var(--line);border-radius:8px;padding:6px 8px;margin-bottom:8px;text-align:center}
.syms{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:8px}
.sym{border:1px solid var(--line);background:#fff;border-radius:6px;padding:4px 8px;cursor:pointer;font:13px ui-monospace,Menlo,Consolas,monospace}
.sym:hover{border-color:var(--acc);background:rgba(37,95,195,.05)}
#fInput{width:100%;font:15px ui-monospace,Menlo,Consolas,monospace;padding:8px;border:2px solid var(--acc);border-radius:8px;margin-bottom:8px}
#fInput:focus{outline:2px solid var(--acc-soft)}
.row{display:flex;gap:6px}.msg{margin-top:8px;font-size:12px;color:var(--muted)}#queueInfo{margin-bottom:10px;font-size:13px}
.pbar{height:6px;background:var(--line);border-radius:3px;overflow:hidden;margin-bottom:6px}
.pbar i{display:block;height:100%;background:var(--acc);transition:width .3s}
#chips{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:8px}
.chip{border:1px solid var(--line);background:#fff;border-radius:14px;padding:3px 10px;cursor:pointer;font:12px "Golos Text",system-ui;color:var(--muted);transition:all .15s}
.chip:hover{border-color:var(--acc);color:var(--ink)}.chip.on{background:var(--acc);border-color:var(--acc);color:#fff}
.help{margin-top:16px;font-size:11px;color:var(--muted);border-top:1px solid var(--line);padding-top:8px}
#finalBox{margin-top:12px}#outLinks a{display:block;margin-top:4px;color:var(--acc)}
dialog{max-width:900px;width:90vw;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 32px rgba(22,24,27,.18)}dialog pre{max-height:60vh;overflow:auto;font-size:12px;white-space:pre-wrap}
@media (max-width:1000px){main{grid-template-columns:1fr}#docs{max-height:140px}#panel{border-left:0;border-top:1px solid var(--line)}#viewport{min-height:50vh}}
.grp{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#5b6470;margin:14px 2px 6px;font-weight:600}
#docInfo{font-size:12.5px;color:#3b4350;padding:4px 12px 6px;border-bottom:1px solid var(--line);background:#fafbfd}
#docInfo .warn{margin-top:4px;background:#fff7ed;color:#9a3412;border:1px solid #fed7aa;border-radius:8px;padding:4px 8px}
.toggle{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;margin-left:8px;white-space:nowrap;cursor:pointer}
.toggle input{accent-color:var(--acc)}
#overlay rect.ref-ok{stroke:#16a34a!important;stroke-opacity:1!important;fill:rgba(22,163,74,.10)}
#overlay rect.ref-bad{stroke:#dc2626!important;stroke-opacity:1!important;fill:rgba(220,38,38,.18)}
#overlay rect.ref-none{stroke:#94a3b8!important;stroke-opacity:.5!important}
.ref{margin:6px 0;padding:6px 8px;border-radius:8px;font-size:13px}.ref.ok{background:#ecfdf3;color:#166534}
.ref.bad{background:#fef2f2;color:#991b1b}a.btn{text-decoration:none;display:inline-flex;align-items:center}

/* --- панель подтверждения масштаба штампа --- */
.stgrid{display:grid;grid-template-columns:repeat(6,1fr);gap:4px;margin-bottom:8px}
.stbtn{border:1px solid var(--line);border-radius:6px;background:#fff;padding:5px 0;font-size:12px;cursor:pointer;font-family:ui-monospace,Menlo,Consolas,monospace}
.stbtn:hover{border-color:var(--acc);background:rgba(37,95,195,.06)}
.stcur{font-size:13px;margin-bottom:8px;line-height:1.5}
.st-no_read{color:#b91c1c;font-weight:600}.st-dubious{color:#b45309;font-weight:600}.st-ok{color:#15803d}.st-confirmed{color:#15803d;font-weight:600}
.stcrop img{max-height:190px}
#overlay rect#stampCell{fill:rgba(220,38,38,.10);stroke:#dc2626;stroke-width:6;pointer-events:none}
#stampPanel .row{flex-wrap:wrap}
#btnStamp.on{border-color:#dc2626;color:#dc2626}
