/* СтройДеск, вариант 16 — основная версия stroydesk.com (развитие 14–15) — сначала телефон (владелец смотрит только с телефона, 14.11.2026).
   Лист 1 = ведомость листов сверху и штамп с контактами снизу, без шапки и вводного текста.
   Листы продуктов компактные: исходные данные и одно действие с анимацией процесса; подробности — в отдельном окне. */
:root{
  --desk:#0b0d11; --sheet:#0f1318; --doc:#12171d; --surf:#141920; --surf2:#1a2028;
  --ink:#eef2f6; --ink2:#c5ced8; --sub:#aab4c0; --ink3:#8f9aa8; --ink4:#6f7987;
  --frame:#66727f; --line:#46505c; --rule:#29313b; --rule2:#1e252d; --edge:#2e3742;
  --cy:#46e0d0; --cy-a:rgba(70,224,208,.6); --cy-l:rgba(70,224,208,.3); --cy-t:rgba(70,224,208,.08); --on-cy:#06201d;
  --red:#ff6b5b; --red-l:rgba(255,107,91,.5); --red-t:rgba(255,107,91,.09);
  --blue:#5aa9ff;
  --grad:linear-gradient(92deg,#46e0d0,#5aa9ff);
  --sans:"Manrope",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --mono:"JetBrains Mono","IBM Plex Mono",Consolas,monospace;
  --ease:cubic-bezier(.2,.7,.2,1);
}
*,*::before,*::after{box-sizing:border-box}
html{color-scheme:dark;background:var(--desk);-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth}
html.lock{overflow:hidden}
body{margin:0;padding:6px 0 18px;color:var(--ink2);font:400 15.5px/1.5 var(--sans);-webkit-font-smoothing:antialiased;
  -webkit-tap-highlight-color:transparent;
  background:var(--desk);
  background-image:linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px);
  background-size:24px 24px}
h1,h2,h3,p,ol,ul,dl,dd,dt,figure,blockquote{margin:0}
ol,ul{padding:0;list-style:none}
a{color:inherit}
button{font:inherit;color:inherit;background:none;border:0;padding:0;margin:0;cursor:pointer;text-align:inherit}
svg.i{width:22px;height:22px;flex:none}
:focus-visible{outline:2px solid var(--cy);outline-offset:2px}
.red{color:var(--red)} .cy{color:var(--cy)}
[hidden]{display:none !important}

/* ============ лист ============ */
.sh{position:relative;display:flex;flex-direction:column;max-width:720px;margin:0 auto 8px;background:var(--sheet);border:1px solid var(--rule);scroll-margin-top:6px}
.fr{flex:1 1 auto;display:flex;flex-direction:column;margin:5px;border:1px solid var(--frame);min-width:0}
.sh--1{min-height:calc(100vh - 12px);min-height:calc(100svh - 12px)}
.hd{display:flex;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid var(--line);font:400 11.5px/1.2 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--ink3)}
.hd .no{border:1px solid var(--frame);padding:4px 7px 3px;color:var(--ink);white-space:nowrap}
.hd .nm{flex:1 1 auto;min-width:0}
.hd .cd{color:var(--ink4)}
.hd .up{text-decoration:none;color:var(--ink3);border:1px solid var(--edge);padding:5px 8px 4px;transition:color .15s,border-color .15s;white-space:nowrap}
.hd .up:active,.hd .up:hover{color:var(--cy);border-color:var(--cy-a)}
.bd{flex:1 1 auto;display:flex;flex-direction:column;padding:12px}
.ttl{font:800 30px/1.1 var(--sans);letter-spacing:-.03em;color:var(--ink);margin:2px 0 12px}
.cap{font:400 11px/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink3)}

/* ============ ведомость листов ============ */
.ved{flex:1 1 auto;display:flex;flex-direction:column;padding:12px 12px 14px}
.ved-t{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}
.ved-box{flex:1 1 auto;display:flex;flex-direction:column;border:1px solid var(--frame);background:var(--sheet)}
.ved-h{display:grid;grid-template-columns:44px 70px minmax(0,1fr);border-bottom:1px solid var(--line);font:400 10.5px/1.2 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink4)}
.ved-h span{padding:7px 8px;border-right:1px solid var(--rule)}
.ved-h span:first-child{text-align:center}
.ved-h span:last-child{border-right:0}
.ved-rows{flex:1 1 auto;display:grid;grid-auto-rows:minmax(58px,1fr)}
.vr{position:relative;display:grid;grid-template-columns:44px 70px minmax(0,1fr);align-items:stretch;text-decoration:none;border-top:1px solid var(--rule);
  transition:background-color .2s,transform .15s var(--ease)}
.vr:first-child{border-top:0}
.vr > span{display:flex;align-items:center;border-right:1px solid var(--rule);min-width:0}
.vr > span:last-child{border-right:0}
.vn{justify-content:center;font:500 15px/1 var(--mono);color:var(--ink3)}
.vth{justify-content:center}
.vth svg{width:52px;height:38px;color:var(--ink3);transition:color .2s}
.vt{padding:0 14px;font:700 18px/1.2 var(--sans);letter-spacing:-.01em;color:var(--ink)}
.vr.cur{background:var(--cy-t);box-shadow:inset 3px 0 0 var(--cy)}
.vr.cur .vn,.vr.cur .vth svg{color:var(--cy)}
a.vr:hover{background:rgba(255,255,255,.025)}
a.vr:hover .vth svg{color:var(--ink2)}
a.vr:active{transform:scale(.985);background:var(--cy-t)}
.vr.tap{animation:tap .45s var(--ease)}
@keyframes tap{0%{background:rgba(70,224,208,.28)}100%{background:transparent}}

/* ============ штамп (основная надпись) с контактами ============ */
.stp{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border-top:1px solid var(--frame);font-family:var(--mono);background:var(--sheet)}
.stp > *{display:flex;flex-direction:column;justify-content:center;min-width:0;padding:6px 7px;border-right:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.stp > .s-ic:last-child{border-right:0}
.s-code{grid-column:1/-1;align-items:center;padding:8px !important;font-size:14px;letter-spacing:.12em;color:var(--cy);border-right:0 !important;border-bottom-color:var(--line) !important}
.s-obj{grid-column:1/-1;align-items:center;text-align:center;font:600 12.5px/1.35 var(--sans);color:var(--ink2);border-right:0 !important}
.s-name{grid-column:1/4;grid-row:span 2;font:600 13px/1.3 var(--sans);color:var(--ink)}
.s-k{align-items:center;font-size:9.5px;color:var(--ink4);padding:4px 2px !important}
.s-v{align-items:center;font-size:14px;color:var(--ink);padding:5px 2px !important}
.s-k3,.s-v3{border-right:0 !important}
.s-org{grid-column:1/4;align-items:flex-start;border-bottom:0 !important;padding:8px 10px !important}
.s-org img{display:block;height:27px;width:auto}
.s-ic{position:relative;align-items:center;justify-content:center;gap:4px;padding:8px 2px !important;border-bottom:0 !important;text-decoration:none;color:var(--cy);
  overflow:hidden;transition:background-color .2s}
.s-ic small{font:400 9.5px/1 var(--mono);letter-spacing:.04em;color:var(--ink3)}
.s-ic svg.i{width:24px;height:24px}
.s-ic:hover{background:var(--cy-t)}
.s-ic:active{background:rgba(70,224,208,.18)}
.s-ic.on{background:var(--cy);color:var(--on-cy)}
.s-ic.on small{color:var(--on-cy)}
.s-ic::after{content:"";position:absolute;inset:auto 0 0 0;height:2px;background:var(--cy);transform:scaleX(0);transition:transform .25s var(--ease)}
.s-ic:hover::after{transform:scaleX(1)}

/* малый штамп листов 2–5 */
.stp2{display:grid;grid-template-columns:minmax(0,2.2fr) minmax(0,.9fr) repeat(3,minmax(0,1fr));border-top:1px solid var(--frame);font-family:var(--mono);background:var(--sheet);margin-top:auto}
.stp2 > *{display:flex;flex-direction:column;justify-content:center;min-width:0;padding:6px;border-right:1px solid var(--rule)}
.stp2 > :last-child{border-right:0}
.stp2 .s2-code{font-size:12.5px;letter-spacing:.08em;color:var(--ink2);padding-left:12px}
.stp2 .s2-code small{font-size:9.5px;letter-spacing:.04em;color:var(--ink4);margin-top:2px}
.stp2 .s2-ls{align-items:center;text-align:center}
.stp2 .s2-ls i{font-style:normal;font-size:9.5px;color:var(--ink4)}
.stp2 .s2-ls b{font-weight:500;font-size:14px;color:var(--ink)}
.stp2 .s-ic{border-bottom:0}
.stp2 .s-ic svg.i{width:21px;height:21px}

/* ============ исходные данные ============ */
.src{border:1px solid var(--line);background:var(--doc)}
.src .cap{padding:7px 10px;border-bottom:1px solid var(--rule)}
.src > div{display:grid;grid-template-columns:120px minmax(0,1fr);border-top:1px solid var(--rule2)}
.src > div:first-of-type{border-top:0}
.src dt{padding:8px 10px;font:400 10.5px/1.4 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink3);border-right:1px solid var(--rule)}
.src dd{padding:7px 10px;font-size:14px;line-height:1.45;color:var(--ink2)}
.src .get dt{color:var(--cy)}
.src .get dd{color:var(--ink)}

/* ============ большая кнопка действия ============ */
.go{position:relative;text-decoration:none;display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:54px;margin-top:12px;padding:12px 18px;
  border:1px solid var(--cy);border-radius:4px;background:var(--cy);color:var(--on-cy);font:800 16.5px/1.2 var(--sans);letter-spacing:-.005em;overflow:hidden;
  box-shadow:0 10px 30px -16px rgba(70,224,208,.8);transition:transform .15s var(--ease),background-color .2s,opacity .2s}
.go:active{transform:scale(.98)}
.go svg.i{width:20px;height:20px}
.go::before{content:"";position:absolute;top:0;bottom:0;left:-40%;width:30%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent);transform:skewX(-20deg);animation:shine 3.2s ease-in-out infinite}
@keyframes shine{0%,62%{left:-40%}100%{left:130%}}
.go.busy{pointer-events:none;opacity:.75}
.go.busy::before{animation-duration:1s}
.go.ghost{background:transparent;color:var(--cy);box-shadow:none}
.go.ghost::before{display:none}

/* переключатель режимов */
.seg{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);margin-top:12px;background:var(--doc)}
.seg button{padding:10px 8px;font:700 13.5px/1.25 var(--sans);color:var(--ink3);text-align:center;border-right:1px solid var(--line);transition:color .2s,background-color .2s,box-shadow .2s}
.seg button:last-child{border-right:0}
.seg button.on{color:var(--ink);background:var(--cy-t);box-shadow:inset 0 -2px 0 var(--cy)}

/* ============ карусель закупок ============ */
.car-w{margin:12px -12px 0}
.car{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;padding:2px 12px 4px;scrollbar-width:none;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
.car::-webkit-scrollbar{display:none}
.tc{position:relative;flex:0 0 84%;scroll-snap-align:center;border:1px solid var(--line);background:var(--doc);transition:border-color .25s,opacity .25s,transform .25s var(--ease)}
.tc.on{border-color:var(--cy-a)}
.tc-h{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--rule);font:400 11px/1.2 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink3)}
.chip{font:500 10.5px/1 var(--mono);letter-spacing:.05em;padding:4px 6px 3px;border:1px solid var(--edge);color:var(--ink3);white-space:nowrap}
.chip.new{border-color:var(--cy-a);color:var(--cy)}
.chip.yes{background:var(--cy);border-color:var(--cy);color:var(--on-cy)}
.chip.no{border-color:var(--red-l);color:var(--red)}
.tc-t{padding:10px 12px 8px;font:700 17px/1.3 var(--sans);color:var(--ink);min-height:62px}
.tc dl{border-top:1px solid var(--rule2)}
.tc dl div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:6px 12px;border-bottom:1px solid var(--rule2);font-size:13.5px}
.tc dl div:last-child{border-bottom:0}
.tc dt{color:var(--ink3)}
.tc dd{font:500 13px/1.5 var(--mono);color:var(--ink);text-align:right}
.dots{display:flex;justify-content:center;gap:7px;margin-top:10px}
.dots i{width:7px;height:7px;border:1px solid var(--frame);transform:rotate(45deg);transition:background-color .2s,border-color .2s}
.dots i.on{background:var(--cy);border-color:var(--cy)}

/* ============ документ (смета, ведомость) ============ */
.doc{position:relative;margin-top:12px;border:1px solid var(--line);background:var(--doc);overflow:hidden}
.doc-h{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:9px 12px;border-bottom:1px solid var(--line)}
.doc-h b{font-weight:700;font-size:15px;color:var(--ink)}
.doc-c{font:400 11.5px/1.2 var(--mono);color:var(--ink3);white-space:nowrap;transition:color .2s}
.doc-c.red{color:var(--red)}
.erows li{position:relative;display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:2px 8px;padding:9px 12px;border-bottom:1px solid var(--rule2);font-size:14px;line-height:1.35;transition:background-color .3s}
.erows li:last-child{border-bottom:0}
.en{grid-row:span 2;font:400 12px/1.6 var(--mono);color:var(--ink4)}
.et{color:var(--ink)}
.ep{font:500 13px/1.5 var(--mono);color:var(--ink);text-align:right;white-space:nowrap}
.eq{font:400 12px/1.4 var(--mono);color:var(--ink3)}
.etag{grid-column:2/-1;font:400 12px/1.4 var(--mono);color:var(--red);display:flex;align-items:center;justify-content:space-between;gap:8px}
.etag i{font-style:normal;display:inline-grid;place-items:center;width:22px;height:22px;border:1.25px solid var(--red);border-radius:50%;font:600 12px/1 var(--mono)}
.erows li.ok .ep::after{content:" ✓";color:var(--cy)}
.erows li.bad{background:var(--red-t);cursor:pointer}
.erows li.bad .ep,.erows li.bad .eq.miss{color:var(--red)}
.erows li.bad:active{background:rgba(255,107,91,.16)}
.ring{display:inline-block;border:1.25px solid var(--red);border-radius:50%;padding:0 6px;margin:-2px -6px;transform:rotate(-3deg)}
.erows li.pop{animation:pop .5s var(--ease)}
@keyframes pop{0%{transform:translateX(-6px);background:rgba(255,107,91,.25)}100%{transform:none}}
.scan{position:absolute;left:0;right:0;top:0;height:46px;pointer-events:none;opacity:0;
  background:linear-gradient(180deg,transparent,rgba(70,224,208,.18) 70%,rgba(70,224,208,.9) 98%,transparent);transform:translateY(-50px)}
.scan.run{opacity:1;animation:scan var(--dur,2.4s) linear forwards}
@keyframes scan{from{transform:translateY(-50px)}to{transform:translateY(var(--h,300px))}}
.vrows li{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:3px 8px;padding:9px 12px;border-bottom:1px solid var(--rule2);font-size:14px;line-height:1.35}
.vrows li:last-child{border-bottom:0}
.vq{font:400 12.5px/1.5 var(--mono);color:var(--ink3);text-align:right;white-space:nowrap}
.vc{grid-column:2/-1;min-height:20px;font:500 12.5px/1.5 var(--mono);color:var(--cy)}
.vc .cur{display:inline-block;width:7px;height:13px;background:var(--cy);vertical-align:-2px;animation:blink .7s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.vc.red{color:var(--red)}
.opt2{grid-column:2/-1;display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.opt2 button{font:500 12.5px/1 var(--mono);padding:8px 10px;border:1px solid var(--red-l);color:var(--red);transition:background-color .2s,color .2s}
.opt2 button:active{background:var(--red);color:#1a0905}
.total{display:flex;justify-content:space-between;align-items:baseline;padding:10px 12px;border-top:1px solid var(--line);font-size:14px;color:var(--ink3)}
.total b{font:800 18px/1.2 var(--sans);color:var(--ink)}
.total.pop{animation:fadeup .5s var(--ease)}

/* ============ проект: план и замечания ============ */
.plan-w{margin-top:12px;border:1px solid var(--line);background:var(--doc);padding:6px 4px 2px}
.plan{display:block;width:100%;height:auto}
.plan text{font-family:var(--mono)}
.p-ax{stroke:var(--line);stroke-width:1;stroke-dasharray:16 4 2 4;fill:none}
.p-axc{fill:var(--sheet);stroke:var(--ink3);stroke-width:1}
.p-axt{fill:var(--ink2);font-size:15px;text-anchor:middle;dominant-baseline:central}
.p-wall{fill:url(#hatch14);stroke:var(--ink2);stroke-width:1.4}
.p-hatch{stroke:var(--frame);stroke-width:1}
.p-cut{fill:var(--doc)}
.p-thin{stroke:var(--ink3);stroke-width:1.2;fill:none}
.p-win{stroke:var(--ink3);stroke-width:1;fill:var(--doc)}
.p-step{stroke:var(--ink4);stroke-width:1;fill:none}
.p-room{fill:var(--ink2);font-size:16px;text-anchor:middle}
.p-dim{stroke:var(--ink3);stroke-width:1;fill:none}
.p-dimt{fill:var(--ink3);font-size:15px;text-anchor:middle}
.p-duct{stroke:var(--blue);stroke-width:1.6;stroke-dasharray:8 4;fill:rgba(90,169,255,.08)}
.p-ductt{fill:var(--blue);font-size:14px}
.hl{transition:stroke .25s,fill .25s,stroke-width .25s}
.plan[data-sel="p1"] .hl-p1,.plan[data-sel="p2"] .hl-p2,.plan[data-sel="p3"] .hl-p3,.plan[data-sel="p4"] .hl-p4{stroke:var(--red);stroke-width:3}
.plan[data-sel="p2"] .hl-p2f,.plan[data-sel="p3"] .hl-p3{fill:var(--red-t)}
.mk{cursor:pointer;outline:none;opacity:0;transform-box:fill-box;transform-origin:center;transform:scale(.3);transition:opacity .35s var(--ease),transform .35s var(--ease)}
.mk.show{opacity:1;transform:none}
.mk circle{fill:var(--doc);stroke:var(--red);stroke-width:2}
.mk text{fill:var(--red);font-size:17px;font-weight:600;text-anchor:middle;dominant-baseline:central}
.mk line{stroke:var(--red);stroke-width:1.4}
.mk.on circle{fill:var(--red)}
.mk.on text{fill:#1a0905}
.pscan{opacity:0}
.pscan.run{opacity:1;animation:pscan var(--dur,2s) linear forwards}
@keyframes pscan{from{transform:translateY(0)}to{transform:translateY(430px)}}
.rcar{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;margin:10px -12px 0;padding:2px 12px 4px;scrollbar-width:none}
.rcar::-webkit-scrollbar{display:none}
.rc{flex:0 0 86%;scroll-snap-align:center;display:grid;grid-template-columns:26px minmax(0,1fr);gap:4px 10px;padding:11px 12px;border:1px solid var(--line);background:var(--doc);transition:border-color .25s}
.rc.on{border-color:var(--red-l);box-shadow:inset 3px 0 0 var(--red)}
.pn{display:inline-grid;place-items:center;width:24px;height:24px;border:1.4px solid var(--red);border-radius:50%;font:600 12px/1 var(--mono);color:var(--red)}
.rc .pn{grid-row:span 3}
.rc-m{font:400 11.5px/1.4 var(--mono);color:var(--ink3)}
.rc-t{font-size:14.5px;line-height:1.45;color:var(--ink)}
.where{font:400 12px/1.45 var(--mono);color:var(--cy)}
.where::before{content:"где написано: ";color:var(--ink4)}
.pnote{margin-top:8px;font-size:13px;line-height:1.45;color:var(--ink3)}
.reveal{animation:fadeup .45s var(--ease) both}
@keyframes fadeup{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}

/* техническое задание */
.tzsrc{display:flex;gap:8px;margin-top:12px;overflow-x:auto;scrollbar-width:none}
.tzsrc::-webkit-scrollbar{display:none}
.tzsrc span{flex:0 0 auto;display:flex;align-items:center;gap:7px;padding:8px 10px;border:1px solid var(--line);background:var(--doc);font-size:13px;color:var(--ink2);transition:border-color .3s,color .3s,transform .3s var(--ease)}
.tzsrc span::before{content:"";width:10px;height:13px;border:1px solid currentColor;flex:none}
.tzsrc span.fly{border-color:var(--cy-a);color:var(--cy);transform:translateY(4px)}
.tzl li{display:grid;grid-template-columns:22px minmax(0,1fr);gap:1px 8px;padding:8px 12px;border-bottom:1px solid var(--rule2);font-size:14px;line-height:1.4;color:var(--ink)}
.tzl li b{grid-row:span 2;font:400 12px/1.6 var(--mono);color:var(--ink4)}
.tzl .where{font-size:11.5px}
.tzm{padding:9px 12px 11px;border-top:1px solid var(--line)}
.tzm .cap{color:var(--red)}
.tzm li{display:flex;gap:8px;padding:2px 0;font-size:14px;color:var(--red)}
.tzm li::before{content:"—"}

/* ============ лист 5 ============ */
.about{font-size:15px;line-height:1.6;color:var(--sub)}
.quote{margin-top:14px;padding:12px 14px;border-left:2px solid var(--cy-a);background:var(--cy-t);font:600 17.5px/1.42 var(--sans);color:var(--ink)}
.quote small{display:block;margin-top:8px;font:400 11px/1.3 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink3)}
.dirs{margin-top:14px;border:1px solid var(--line)}
.dirs a,.dirs p{display:block;padding:10px 12px;border-top:1px solid var(--rule);font-size:14px;line-height:1.45;color:var(--ink2);text-decoration:none}
.dirs .cap{padding:7px 12px;border-top:0}
.dirs a b,.dirs p b{color:var(--ink)}
.dirs a:active{background:var(--cy-t)}
.foot{padding:10px 12px 12px;font-size:12px;line-height:1.5;color:var(--ink4)}
.foot a{color:var(--ink3)}

/* ============ окно (анализ закупки, пояснение к смете) ============ */
.scrim{position:fixed;inset:0;z-index:40;background:rgba(5,7,10,.72);opacity:0;pointer-events:none;transition:opacity .3s}
.scrim.on{opacity:1;pointer-events:auto}
.win{position:fixed;inset:0;z-index:50;display:flex;flex-direction:column;background:var(--sheet);transform:translateY(100%);transition:transform .38s var(--ease);visibility:hidden}
.win.on{transform:none;visibility:visible}
.win-fr{flex:1 1 auto;display:flex;flex-direction:column;margin:6px;border:1px solid var(--frame);min-height:0}
.win-hd{display:flex;align-items:center;gap:10px;padding:8px 10px;border-bottom:1px solid var(--line)}
.back{display:inline-flex;align-items:center;gap:6px;padding:8px 10px;border:1px solid var(--edge);font:600 14px/1 var(--sans);color:var(--ink);transition:border-color .2s,color .2s}
.back:active{border-color:var(--cy);color:var(--cy)}
.win-t{flex:1 1 auto;min-width:0;text-align:right;font:400 11px/1.3 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--ink3)}
.win-bd{position:relative;flex:1 1 auto;overflow-y:auto;padding:12px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.win-ttl{font:800 21px/1.25 var(--sans);letter-spacing:-.02em;color:var(--ink)}
.win-sub{margin-top:4px;font:400 12px/1.45 var(--mono);color:var(--ink3)}
.bar{height:3px;background:var(--rule);margin:12px 0 4px;overflow:hidden}
.bar i{display:block;height:100%;width:0;background:var(--grad);transition:width .5s var(--ease)}
.steps{margin-top:6px}
.st{display:grid;grid-template-columns:28px minmax(0,1fr);gap:2px 10px;padding:10px 0;border-bottom:1px solid var(--rule2);opacity:.35;transition:opacity .3s}
.st.run,.st.done,.st.warn,.st.fail{opacity:1}
.st-i{grid-row:span 2;position:relative;width:24px;height:24px;margin-top:1px;border:1.4px solid var(--line);border-radius:50%;display:grid;place-items:center;font:600 12px/1 var(--mono);color:var(--ink4)}
.st.run .st-i{border-color:var(--cy-l);border-top-color:var(--cy);animation:spin .8s linear infinite;color:transparent}
.st.done .st-i{border-color:var(--cy);background:var(--cy);color:var(--on-cy)}
.st.warn .st-i,.st.fail .st-i{border-color:var(--red);background:var(--red);color:#1a0905}
@keyframes spin{to{transform:rotate(360deg)}}
.st-t{font-weight:700;font-size:15px;line-height:1.35;color:var(--ink)}
.st-r{font-size:13.5px;line-height:1.45;color:var(--ink3);min-height:0}
.st.done .st-r{color:var(--cy)}
.st.warn .st-r,.st.fail .st-r{color:var(--red)}
.st-r.reveal{animation-duration:.35s}
.res{margin-top:14px;border:1px solid var(--cy-a);background:var(--doc)}
.res.no{border-color:var(--red-l)}
.res-h{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:11px 12px;border-bottom:1px solid var(--line)}
.res-h .cap{color:var(--ink3)}
.verdict{font:800 16px/1 var(--sans);padding:7px 10px;background:var(--cy);color:var(--on-cy)}
.verdict.no{background:var(--red);color:#1a0905}
.res dl div{display:grid;gap:3px;padding:10px 12px;border-bottom:1px solid var(--rule2)}
.res dt{font:400 10.5px/1.4 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--ink3)}
.res dd{font-size:14.5px;line-height:1.5;color:var(--ink2)}
.res dd b{color:var(--ink)}
.res dd b.red{color:var(--red)}
.big{font:800 22px/1.2 var(--sans);color:var(--ink)}
.watch li{display:grid;grid-template-columns:24px minmax(0,1fr);gap:0 10px;margin-top:6px}
.cost{position:relative;height:10px;margin:8px 0 2px;background:var(--rule)}
.cost i{position:absolute;left:0;top:0;bottom:0;background:var(--cy);width:0;transition:width .8s var(--ease)}
.cost-l{display:flex;justify-content:flex-end;font:400 11.5px/1.4 var(--mono);color:var(--ink3)}
.dec{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px}
.dec .go{margin-top:0}
.dec .go.ghost{border-color:var(--line);color:var(--ink)}
.done-box{margin-top:16px;padding:18px 14px;border:1px solid var(--cy-a);background:var(--cy-t);text-align:center}
.done-box svg{width:56px;height:56px;color:var(--cy)}
.done-box svg path{stroke-dasharray:60;stroke-dashoffset:60;animation:draw .6s .1s var(--ease) forwards}
@keyframes draw{to{stroke-dashoffset:0}}
.done-box b{display:block;margin-top:8px;font:800 19px/1.3 var(--sans);color:var(--ink)}
.done-box p{margin-top:6px;font-size:14.5px;line-height:1.5;color:var(--ink2)}
.win-act{display:grid;gap:8px;margin-top:14px}
.win-act .go{margin-top:0}

/* шкала цены в окне */
.scale{position:relative;height:84px;margin:14px 4px 4px}
.sc-ax{position:absolute;left:0;right:0;top:42px;height:1px;background:var(--line)}
.sc-band{position:absolute;top:36px;height:13px;background:rgba(70,224,208,.22);border:1px solid var(--cy-a);transform-origin:left;animation:grow .6s .2s var(--ease) both}
.sc-bl{position:absolute;top:56px;font:400 11px/1.25 var(--mono);color:var(--cy);white-space:nowrap}
.sc-est{position:absolute;top:22px;width:0;height:34px;border-left:2px solid var(--red);animation:fadein .4s .7s both}
.sc-el{position:absolute;top:2px;transform:translateX(-100%);font:500 11px/1.25 var(--mono);color:var(--red);white-space:nowrap;padding-right:3px;animation:fadein .4s .8s both}
.sc-dim{position:absolute;top:29px;height:1px;background:var(--red-l);transform-origin:left;animation:grow .6s .9s var(--ease) both}
.sc-dl{position:absolute;top:13px;transform:translateX(-50%);font:500 11px/1.2 var(--mono);color:var(--red);white-space:nowrap;background:var(--sheet);padding:0 4px;animation:fadein .4s 1.3s both}
.sc-min,.sc-max{position:absolute;top:70px;font:400 10.5px/1 var(--mono);color:var(--ink4)}
.sc-min{left:0}.sc-max{right:0}
@keyframes grow{from{transform:scaleX(0)}to{transform:none}}
@keyframes fadein{from{opacity:0}to{opacity:1}}
.srcs li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1px 10px;padding:9px 0;border-bottom:1px solid var(--rule2)}
.srcs b{font-weight:700;font-size:14px;color:var(--ink)}
.srcs span{font:500 13px/1.5 var(--mono);color:var(--cy);text-align:right;white-space:nowrap}
.srcs small{grid-column:1/-1;font-size:12.5px;color:var(--ink3)}
.out{margin-top:12px;padding:10px 12px;border:1px solid var(--red-l);background:var(--red-t);font-size:14.5px;line-height:1.5;color:var(--ink)}

/* ============ нижняя шторка контактов ============ */
.bsh{position:fixed;left:0;right:0;bottom:0;z-index:60;max-width:720px;margin:0 auto;background:var(--sheet);border:1px solid var(--frame);border-bottom:0;
  transform:translateY(105%);transition:transform .34s var(--ease);visibility:hidden;padding-bottom:env(safe-area-inset-bottom)}
.bsh.on{transform:none;visibility:visible}
.bsh-hd{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-bottom:1px solid var(--line)}
.bsh-x{width:36px;height:36px;display:grid;place-items:center;border:1px solid var(--edge);color:var(--ink2)}
.bsh-bd{padding:14px 12px 16px}
.mail-a{display:block;text-decoration:none;font:700 22px/1.2 var(--sans);letter-spacing:-.01em;color:var(--ink);word-break:break-all;user-select:all}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}
.row2 .go{margin-top:0;font-size:15px;min-height:50px}
.fld{display:block;width:100%;margin-top:4px;padding:13px 12px;border:1px solid var(--line);background:var(--doc);color:var(--ink);font:600 19px/1.2 var(--mono);letter-spacing:.02em;border-radius:3px;outline:none;transition:border-color .2s}
.fld:focus{border-color:var(--cy)}
.agree{display:flex;gap:10px;align-items:flex-start;margin-top:12px;font-size:13px;line-height:1.45;color:var(--ink3)}
.agree input{width:20px;height:20px;margin:0;accent-color:var(--cy);flex:none}
.agree a{color:var(--ink2)}
.msg{min-height:20px;margin-top:8px;font-size:13.5px;line-height:1.45;color:var(--red)}
.trap{position:absolute;left:-5000px;width:1px;height:1px;opacity:0}

/* ============ компьютер (владелец пока не смотрит; держим аккуратно) ============ */
@media (min-width:760px){
  body{padding:24px 16px 40px}
  .sh{margin-bottom:24px}
  .sh--1{min-height:calc(100vh - 48px)}
  .fr{margin:10px 10px 10px 44px}
  .bind{display:flex !important}
  .win{inset:4vh auto 4vh 50%;width:min(680px,94vw);transform:translate(-50%,110vh);border:1px solid var(--rule)}
  .win.on{transform:translate(-50%,0)}
  .bsh{bottom:24px;border-bottom:1px solid var(--frame)}
}
.bind{display:none;position:absolute;left:14px;bottom:10px;width:30px;flex-direction:column;border:1px solid var(--frame);border-right:0}
.bind div{display:grid;grid-template-columns:12px 18px;border-top:1px solid var(--frame)}
.bind div:first-child{border-top:0}
.bind span{writing-mode:vertical-rl;transform:rotate(180deg);font:400 8.5px/12px var(--mono);color:var(--ink4);text-align:center;border-left:1px solid var(--rule);white-space:nowrap}
.bind i{border-left:1px solid var(--rule)}
.bind .b1{height:110px}.bind .b2{height:140px}.bind .b3{height:110px}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}
  html{scroll-behavior:auto}
}
.srcs .red,.srcs b.red{color:var(--red)}
.mk:focus-visible circle{stroke:var(--cy);stroke-width:3}

/* ================================================================
   ВАРИАНТ 15 — по отзыву владельца на 14 (14.11.2026): живее, заметная навигация между листами,
   карусель на всю ширину и сама крутится, профессиональная смета набирается сама, переходы на страницы продуктов.
   ================================================================ */
/* навигация в шапке листа */
.hnav{display:flex;gap:6px;margin-left:auto}
.hb{display:inline-flex;align-items:center;gap:6px;padding:7px 9px 6px;border:1px solid var(--cy-a);background:var(--cy-t);color:var(--cy);
  font:500 11.5px/1 var(--mono);letter-spacing:.05em;text-transform:uppercase;text-decoration:none;white-space:nowrap;transition:background-color .2s,transform .15s var(--ease)}
.hb svg.i{width:15px;height:15px}
.hb:active{transform:scale(.96);background:rgba(70,224,208,.2)}
.hb.nx{background:transparent;border-color:var(--line);color:var(--ink2)}
.hb.nx svg.i{animation:nudge 2.4s ease-in-out infinite}
@keyframes nudge{0%,60%,100%{transform:none}75%{transform:translateY(3px)}}

/* карусель закупок на всю ширину, сама листается */
.car-w{margin:12px 0 0}
.car{gap:0;padding:0}
.tc{flex:0 0 100%;scroll-snap-align:start}
.tc-t{font-size:19px;min-height:0;padding:12px 12px 10px}
.dots{gap:6px;margin-top:10px}
.dots i{position:relative;width:26px;height:3px;border:0;transform:none;background:var(--rule);overflow:hidden}
.dots i b{position:absolute;left:0;top:0;bottom:0;width:0;background:var(--cy)}
.dots i.on b{animation:fill var(--auto,4.5s) linear forwards}
.dots.paused i.on b{animation:none;width:100%}
@keyframes fill{from{width:0}to{width:100%}}
.chip.new{animation:blinkchip 2s ease-in-out infinite}
@keyframes blinkchip{50%{border-color:rgba(70,224,208,.25);color:rgba(70,224,208,.6)}}
.tc.slide{animation:slidein .45s var(--ease)}
@keyframes slidein{from{opacity:.4}to{opacity:1}}

/* кнопка действия «дышит» */
.go:not(.ghost):not(.busy):not(.more){animation:breathe 2.6s ease-in-out infinite}
@keyframes breathe{0%{box-shadow:0 10px 30px -16px rgba(70,224,208,.8),0 0 0 0 rgba(70,224,208,.45)}70%{box-shadow:0 10px 30px -16px rgba(70,224,208,.8),0 0 0 12px rgba(70,224,208,0)}100%{box-shadow:0 10px 30px -16px rgba(70,224,208,.8),0 0 0 0 rgba(70,224,208,0)}}
.go.more{margin-top:12px}
.go.more::before{display:none}
.go.ghost.more{margin-top:8px;min-height:46px;font-size:15px;border-color:var(--cy-a)}

/* живые значки штампа */
.s-ic svg.i{transform-origin:50% 50%}
.s-ic[href*="t.me"] svg.i{animation:tgfloat 3.6s ease-in-out infinite}
.s-ic[data-open="mail"] svg.i{animation:mailpulse 2.8s ease-in-out infinite .6s}
.s-ic[data-open="call"] svg.i{animation:ring 4.2s ease-in-out infinite 1.4s}
@keyframes tgfloat{0%,100%{transform:none}50%{transform:translate(1px,-3px) rotate(-6deg)}}
@keyframes mailpulse{0%,100%{transform:none;filter:none}45%{transform:scale(1.16);filter:drop-shadow(0 0 6px rgba(70,224,208,.8))}}
@keyframes ring{0%,70%,100%{transform:none}74%{transform:rotate(-14deg)}78%{transform:rotate(12deg)}82%{transform:rotate(-10deg)}86%{transform:rotate(8deg)}90%{transform:none}}
.s-ic[data-open="mail"]::before{content:"";position:absolute;top:9px;right:calc(50% - 16px);width:7px;height:7px;border-radius:50%;background:var(--red);
  box-shadow:0 0 0 0 rgba(255,107,91,.6);animation:dotpulse 2.8s ease-out infinite .6s}
@keyframes dotpulse{0%{box-shadow:0 0 0 0 rgba(255,107,91,.6)}70%{box-shadow:0 0 0 7px rgba(255,107,91,0)}100%{box-shadow:0 0 0 0 rgba(255,107,91,0)}}

/* ведомость: строки появляются по очереди, рисунки листов «прорисовываются» */
.vr{animation:rowin .5s var(--ease) both}
.vr:nth-child(1){animation-delay:.05s}.vr:nth-child(2){animation-delay:.13s}.vr:nth-child(3){animation-delay:.21s}.vr:nth-child(4){animation-delay:.29s}.vr:nth-child(5){animation-delay:.37s}
@keyframes rowin{from{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:none}}
.vth svg *{stroke-dasharray:240;stroke-dashoffset:240;animation:drawln 1.4s ease forwards .4s}
@keyframes drawln{to{stroke-dashoffset:0}}
.vr.cur .vth svg{animation:glowthumb 3s ease-in-out infinite 1.8s}
@keyframes glowthumb{50%{filter:drop-shadow(0 0 5px rgba(70,224,208,.7))}}

/* профессиональная смета */
.est2 .doc-h b{font-size:14px;line-height:1.35}
.er-h{display:flex;justify-content:space-between;padding:6px 12px;border-bottom:1px solid var(--line);font:400 10px/1.2 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink4)}
.er{position:relative;padding:9px 12px 10px;border-bottom:1px solid var(--rule2);transition:background-color .3s}
.er-1{display:flex;align-items:baseline;gap:8px}
.er-n{font:400 12px/1.4 var(--mono);color:var(--ink4);min-width:14px}
.er-c{flex:1 1 auto;font:600 12.5px/1.4 var(--mono);color:var(--cy);letter-spacing:.02em}
.er-s{font:600 13.5px/1.4 var(--mono);color:var(--ink);white-space:nowrap}
.er-t{margin:3px 0 0 22px;font-size:14px;line-height:1.38;color:var(--ink)}
.er-q{margin:3px 0 0 22px;font:400 12px/1.45 var(--mono);color:var(--ink3)}
.er-m{margin:2px 0 0 22px;font-size:12.5px;line-height:1.4;color:var(--ink4)}
.er .tcur{display:inline-block;width:7px;height:13px;background:var(--cy);vertical-align:-2px;animation:blink .7s steps(1) infinite}
.er.wait{opacity:0;max-height:0;padding-top:0;padding-bottom:0;border-bottom-width:0;overflow:hidden}
.er.typing{animation:fadeup .3s var(--ease)}
.er.ok .er-s::after{content:" ✓";color:var(--cy)}
.er.bad{background:var(--red-t);cursor:pointer}
.er.bad .er-c{color:var(--red)}
.er.bad.vol .er-q{color:var(--red)}
.er.bad:active{background:rgba(255,107,91,.16)}
.er.pop{animation:pop .5s var(--ease)}
.er .etag{margin:6px 0 0 22px}
.etot{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 10px;padding:10px 12px;border-top:1px solid var(--line);font-size:13px;color:var(--ink3)}
.etot b{font:700 14px/1.3 var(--mono);color:var(--ink);text-align:right}
.etot b.cy{color:var(--cy);font-size:15.5px}
.etot.wait{display:none}
.etot.in{animation:fadeup .45s var(--ease)}
.cmp li{display:grid;grid-template-columns:minmax(0,1fr);gap:2px;padding:9px 0;border-bottom:1px solid var(--rule2)}
.cmp b{font:400 10.5px/1.4 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--ink3)}
.cmp span{font-size:14.5px;line-height:1.45;color:var(--ink)}
.cmp span.red{color:var(--red)} .cmp span.cy{color:var(--cy)}

/* карточки других направлений */
.dirs-cap{margin-top:16px}
.dcard{position:relative;display:grid;gap:4px;margin-top:8px;padding:14px 14px 13px;border:1px solid var(--line);background:var(--doc);text-decoration:none;overflow:hidden;
  transition:transform .15s var(--ease),border-color .2s}
.dcard:active{transform:scale(.985)}
.dcard.rud{grid-template-columns:minmax(0,1fr) 92px;border:1px solid transparent;
  background:linear-gradient(var(--doc),var(--doc)) padding-box,linear-gradient(120deg,#46e0d0,#5aa9ff 60%,rgba(90,169,255,.2)) border-box}
.dcard.rud > span{grid-column:1}
.dc-art{grid-column:2;grid-row:1 / span 3;width:92px;height:auto;color:var(--ink2);align-self:center}
.dc-w{opacity:.15;animation:wave 2.4s ease-in-out infinite}
.dc-w.w2{animation-delay:.3s}.dc-w.w3{animation-delay:.6s}
@keyframes wave{0%,100%{opacity:.12}40%{opacity:1}}
.dc-t{font:800 17px/1.25 var(--sans);color:var(--ink)}
.dc-d{font-size:13.5px;line-height:1.45;color:var(--sub)}
.dc-go{margin-top:6px;font:500 12px/1.3 var(--mono);color:var(--cy)}
.dc-ics{display:flex;gap:8px;color:var(--cy);margin-bottom:4px}
.dc-ics svg{width:22px;height:22px}

/* окно проверки своего ТЗ */
.upbox{margin-top:14px}
.upbox .go{margin-top:12px}
.upbox input[type=file]{position:absolute;width:1px;height:1px;opacity:0}
.answer{margin-top:14px;padding:12px;border:1px solid var(--cy-a);background:var(--doc);font-size:14.5px;line-height:1.55;color:var(--ink2);white-space:pre-wrap}
.answer .cap{display:block;margin-bottom:6px;color:var(--cy)}
.fname{margin-top:10px;font:500 13px/1.4 var(--mono);color:var(--ink);word-break:break-all}
.vr:nth-child(6){animation-delay:.45s}.vr:nth-child(7){animation-delay:.53s}.vr:nth-child(8){animation-delay:.61s}

/* ================================================================
   ВАРИАНТ 16 (14.11.2026): основная версия сайта. Штамп — значки контактов слева, логотип справа (так принято),
   стадия «Р» — рабочая документация.
   ================================================================ */
.stp > .s-ic:last-child{border-right:1px solid var(--rule)}
.stp > .s-ic:nth-of-type(3){border-right:1px solid var(--rule)}
.s-org{grid-column:4/7;align-items:flex-end;border-right:0 !important}
.stp2{grid-template-columns:repeat(3,minmax(0,1fr)) minmax(0,.9fr) minmax(0,2.2fr)}
.stp2 > :last-child{border-right:0}
.stp2 .s2-code{align-items:flex-end;text-align:right;padding-left:6px;padding-right:12px}
.stp2 .s2-code img{display:block;height:18px;width:auto;margin-bottom:4px}
.stp2 .s2-code small{margin-top:1px}

/* 14.11.2026, вечер: позыв к действию в конце показа (SD.leadInto) и смета без сдвигов */
.close-deal{margin-top:14px;padding:14px 12px;border:1px solid var(--cy-a);background:linear-gradient(160deg,rgba(70,224,208,.10),rgba(15,19,24,.6) 70%)}
.cd-t{font:800 18px/1.3 var(--sans);color:var(--ink)}
.cd-d{margin-top:6px;font-size:14.5px;line-height:1.5;color:var(--ink2)}
.close-deal .upbox{margin-top:10px}
.er.wait{opacity:0;max-height:none;padding-top:9px;padding-bottom:10px;border-bottom-width:1px;overflow:visible}
.etot.wait{display:grid;visibility:hidden}
.er-m.etag{margin:2px 0 0 22px;display:flex;justify-content:space-between;align-items:center;gap:8px}

/* 14.11.2026, ночь: заявка — только телефон; согласие строкой (нажатие кнопки = согласие) */
.cd-f{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:10px}
.cd-f .fld{margin-top:0;font-size:17px;padding:12px 11px}
.cd-go{margin-top:0 !important;min-height:48px;padding:10px 14px;font-size:15px;white-space:nowrap}
.cd-go::before{display:none}
.cd-msg{grid-column:1/-1;min-height:0;margin-top:0}
.cd-msg:empty{display:none}
.cd-legal{grid-column:1/-1;font-size:11.5px;line-height:1.4;color:var(--ink4)}
.cd-legal a{color:var(--ink3)}
.upbox .cd-legal{margin-top:8px}
.close-deal{padding:12px}
.cd-t{font-size:16.5px}
.cd-d{font-size:13.5px;margin-top:4px}

/* каждый лист — ровно экран телефона (класс fit); длинное содержимое листается внутри своего окошка (.scrollbox) */
.sh.fit{height:calc(100vh - 12px);height:calc(100svh - 12px);min-height:0}
.sh.fit > .fr{min-height:0}
.sh.fit .bd{flex:1 1 auto;min-height:0;overflow:hidden;display:flex;flex-direction:column}
.scrollbox{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:auto;scrollbar-width:thin;scrollbar-color:var(--line) transparent;
  -webkit-mask-image:linear-gradient(#000 calc(100% - 22px),transparent);mask-image:linear-gradient(#000 calc(100% - 22px),transparent)}
.scrollbox.end{-webkit-mask-image:none;mask-image:none}
.src.slim > div{grid-template-columns:110px minmax(0,1fr)}
.src.slim dt{padding:6px 9px}
.src.slim dd{padding:5px 9px;font-size:13.5px;line-height:1.35}
.src.slim .cap{padding:5px 9px}
.src.gone{display:none}
html.snap{scroll-snap-type:y proximity}
html.snap .sh{scroll-snap-align:start}
@media (min-width:760px){ .sh.fit{height:calc(100vh - 48px)} }
.fit [data-pane]:not([hidden]){display:flex;flex-direction:column;flex:1 1 auto;min-height:0}
.fit .doc{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}
.fit .doc > .doc-h,.fit .doc > .er-h,.fit .doc > .etot,.fit .doc > .total,.fit .doc > .tzm{flex:none}
.fit .scrollbox{position:relative}
.fit .plan-w{flex:1 1 auto;min-height:120px;display:flex;align-items:center;justify-content:center}
.fit .plan{width:100%;height:100%;max-height:100%}
.fit .rcar{flex:none}
.fit .go,.fit .seg,.fit .src,.fit .car-w,.fit .tzsrc,.fit .ttl,.fit .pnote{flex:none}
.fit .ttl{margin-bottom:10px}
.fit .stp2{flex:none}
.fit .doc-h{flex-wrap:nowrap}
.fit .doc-h b{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fit .etot{padding:8px 12px;gap:2px 10px}
.er-m.etag{color:var(--red)}
/* низкие экраны (iPhone с панелями Safari): строки ведомости ниже, чтобы лист 1 с 6–7 строками помещался в экран */
@media (max-height:700px){
  .ved-rows{grid-auto-rows:minmax(46px,1fr)}
  .vth svg{width:44px;height:30px}
  .vt{font-size:16.5px}
  .ved{padding-top:9px;padding-bottom:10px}
  .s-org{padding:6px 10px !important}
  .s-ic{padding:6px 2px !important}
}
/* уведомление о cookie */
.ck{position:fixed;left:8px;right:8px;bottom:8px;z-index:70;max-width:704px;margin:0 auto;display:flex;align-items:center;gap:10px;padding:10px 10px 10px 14px;
  border:1px solid var(--frame);background:rgba(15,19,24,.97);box-shadow:0 10px 30px -10px #000;animation:fadeup .4s var(--ease) both}
.ck p{flex:1 1 auto;font-size:12.5px;line-height:1.45;color:var(--ink2)}
.ck a{color:var(--ink)}
.ck button{flex:none;padding:9px 14px;border:1px solid var(--cy);background:var(--cy);color:var(--on-cy);font:700 13.5px/1 var(--sans)}

/* ================================================================
   КОМПЬЮТЕР — «лист = экран» (решение владельца 14.11.2026: «то же самое для десктопной версии … вертикальная»).
   На компьютере каждый лист — вертикальный лист пропорций А4 (515 × 728, как лист телефона высотой 740),
   увеличенный под высоту окна: s16.js ставит --z = (высота окна − 48) / 728. Поэтому лист всегда целиком на экране
   вместе со штампом, а разметка внутри та же, что проверена на телефоне. Телефон (уже 760 px) этих правил не видит.
   ================================================================ */
@media (min-width:760px) and (min-height:560px){
  body{padding:24px 16px}
  .sh,.sh.fit,.sh--1{width:515px;max-width:none;height:728px;min-height:0;margin:0 auto calc(24px / var(--z,1));zoom:var(--z,1);
    scroll-margin-top:calc(24px / var(--z,1));box-shadow:0 30px 60px -30px rgba(0,0,0,.9)}
  html.snap{scroll-snap-type:y mandatory}
  /* окна (анализ закупки, загрузка, пояснения) — ровно на месте листа, а не на всю ширину экрана */
  .win{zoom:var(--z,1);inset:0;margin:auto;width:515px;height:728px;border:1px solid var(--rule);transform:translateY(110%)}
  .win.on{transform:none}
  /* шторка контактов — у нижнего края листа, шириной с лист */
  .bsh{zoom:var(--z,1);width:515px;max-width:none;left:0;right:0;bottom:calc(24px / var(--z,1))}
  /* лист без увеличения всегда высотой 728 — правила для низких экранов телефона здесь не нужны */
  .ved-rows{grid-auto-rows:minmax(58px,1fr)}
  .vth svg{width:52px;height:38px}
  .vt{font-size:18px}
  .ved{padding-top:12px;padding-bottom:14px}
  .s-org{padding:8px 10px !important}
  .s-ic{padding:8px 2px !important}
  /* мышь: обычный указатель на всём, что нажимается */
  .tc,.vr,[data-ev],[role="button"],label.go{cursor:pointer}
}
@media (min-width:760px) and (min-height:560px) and (hover:hover){
  .go:not(.ghost):hover{filter:brightness(1.08)}
  .go.ghost:hover{background:var(--cy-t)}
  .hb:hover{background:rgba(70,224,208,.18)}
  .hb.nx:hover{border-color:var(--cy-a);color:var(--cy)}
  .tc:hover{border-color:var(--cy-a)}
  .bsh-x:hover,.win-hd button:hover{border-color:var(--cy-a);color:var(--cy)}
}

/* ================================================================
   Переключатели языка и темы в шапке листа 1 главной (14.11.2026, по слову владельца) и светлая тема —
   «чертёж на белом листе». Тема по умолчанию тёмная; выбор посетителя ставит html[data-theme] ещё до показа страницы
   (скрипт в <head> каждой страницы), здесь только цвета.
   ================================================================ */
.hd .sw{display:flex;align-items:stretch;gap:6px;flex:none}
.sw-l{display:flex;border:1px solid var(--edge)}
.sw-l button{padding:4px 6px 3px;font:500 11px/1.2 var(--mono);letter-spacing:.06em;color:var(--ink4);transition:color .15s,background-color .15s}
.sw-l button[aria-pressed="true"]{background:var(--surf2);color:var(--ink);cursor:default}
.sw-t{display:grid;place-items:center;width:26px;border:1px solid var(--edge);color:var(--ink3);transition:color .15s,border-color .15s}
.sw-t svg{width:15px;height:15px}
.sw-l button:not([aria-pressed="true"]):active,.sw-t:active{color:var(--cy)}
/* узкий телефон: чтобы шапка осталась в одну строку, код «СД-2026» рядом с переключателями прячется */
@media (max-width:374px){ .hd .sw ~ .cd{display:none} }
@media (hover:hover){ .sw-l button:not([aria-pressed="true"]):hover,.sw-t:hover{color:var(--cy);border-color:var(--cy-a)} }
/* уведомление о выбранном языке: на 5 секунд, над уведомлением о cookie, ничего не сдвигает; по центру без transform —
   его занимает анимация появления fadeup */
.lt{position:fixed;left:0;right:0;bottom:8px;z-index:71;width:max-content;max-width:calc(100% - 16px);margin:0 auto;display:flex;gap:8px;align-items:center;white-space:nowrap;
  padding:8px 12px;border:1px solid var(--frame);background:var(--sheet);color:var(--ink2);font:500 12.5px/1.2 var(--mono);
  box-shadow:0 10px 30px -12px rgba(0,0,0,.6);animation:fadeup .35s var(--ease) both;transition:opacity .4s}
.lt a{color:var(--cy)}
.lt.out{opacity:0}

html[data-theme="light"]{
  --desk:#e7eaee; --sheet:#ffffff; --doc:#f6f7f9; --surf:#f0f2f5; --surf2:#e5e9ee;
  --ink:#10151b; --ink2:#29313b; --sub:#46505c; --ink3:#55606c; --ink4:#66707c;
  --frame:#8792a0; --line:#b4bcc6; --rule:#d6dbe1; --rule2:#e4e8ec; --edge:#c9d0d8;
  --cy:#0b766c; --cy-a:rgba(11,118,108,.6); --cy-l:rgba(11,118,108,.3); --cy-t:rgba(11,118,108,.08); --on-cy:#ffffff;
  --red:#c63a2c; --red-l:rgba(198,58,44,.45); --red-t:rgba(198,58,44,.08);
  --blue:#1e62c4;
  --grad:linear-gradient(92deg,#0b766c,#1e62c4);
  color-scheme:light}
html[data-theme="light"] body{background-image:linear-gradient(rgba(16,21,27,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(16,21,27,.05) 1px,transparent 1px)}
html[data-theme="light"] a.vr:hover{background:rgba(16,21,27,.03)}
html[data-theme="light"] .opt2 button:active,html[data-theme="light"] .st.warn .st-i,html[data-theme="light"] .st.fail .st-i,
html[data-theme="light"] .verdict.no{color:#fff}
html[data-theme="light"] .mk.on text{fill:#fff}
html[data-theme="light"] .close-deal{background:linear-gradient(160deg,rgba(11,118,108,.08),rgba(255,255,255,.6) 70%)}
html[data-theme="light"] .ck{background:rgba(255,255,255,.97);box-shadow:0 10px 30px -12px rgba(16,21,27,.35)}
html[data-theme="light"] .lt{box-shadow:0 10px 30px -12px rgba(16,21,27,.35)}
html[data-theme="light"] .scrim{background:rgba(16,21,27,.45)}
/* логотип — картинка со светлыми линиями: на белом листе показываем её тёмной, сохраняя цвет акцента */
html[data-theme="light"] img[src*="logo-full"]{filter:invert(1) hue-rotate(180deg) saturate(1.4)}
/* цвета, вписанные прямо в рисунки страниц (SVG и разметка из скриптов), — на цвета светлой темы */
html[data-theme="light"] [stroke="#46e0d0"]{stroke:var(--cy)}
html[data-theme="light"] [fill="#46e0d0"]{fill:var(--cy)}
html[data-theme="light"] [stop-color="#46e0d0"]{stop-color:var(--cy)}
html[data-theme="light"] [stroke="#ff6b5b"]{stroke:var(--red)}
html[data-theme="light"] [fill="#ff6b5b"]{fill:var(--red)}
html[data-theme="light"] [stroke="#5aa9ff"]{stroke:var(--blue)}
html[data-theme="light"] [fill="#0f1318"]{fill:var(--sheet)}
html[data-theme="light"] [fill="#12171d"]{fill:var(--doc)}
html[data-theme="light"] [stroke="#29313b"]{stroke:var(--rule)}
html[data-theme="light"] [stroke="#66727f"]{stroke:var(--frame)}
html[data-theme="light"] [fill="#6f7987"]{fill:var(--ink4)}
html[data-theme="light"] [fill="#8f9aa8"]{fill:var(--ink3)}
html[data-theme="light"] [stroke="#8f9aa8"]{stroke:var(--ink3)}
html[data-theme="light"] [fill="#c5ced8"]{fill:var(--ink2)}
html[data-theme="light"] [stroke="rgba(70,224,208,.55)"]{stroke:var(--cy-a)}
html[data-theme="light"] [fill="rgba(255,107,91,.07)"]{fill:var(--red-t)}
@media (min-width:760px) and (min-height:560px){
  html[data-theme="light"] .sh,html[data-theme="light"] .sh.fit,html[data-theme="light"] .sh--1{box-shadow:0 30px 60px -30px rgba(16,21,27,.35)}
}
