/* единицы высоты экрана через переменные: старые браузеры берут vh (05.10.2026) */
:root{--svh:1vh;--dvh:1vh;--lvh:1vh}
@supports (height:1svh){:root{--svh:1svh;--dvh:1dvh;--lvh:1lvh}}
/* КПД-Эксперт · витрина, направление D «Разрез». Модуль u = 8 px, палитра «Колонны», два голоса шрифта.
   Доводка круг 3 (25.09): рисовальщик чертежа в отдельном потоке, шаги сцены своими композициями, выноска куратора от поста к заголовку,
   люди строками с вырезкой корпуса, цепь по времени, табличка на телефоне в две строки, согласие подписью.
   Доводка круг 2 (25.09): камера по снимку на холсте, выноски с точкой и полкой, табличка в свободном углу,
   паспорта продуктов на своей странице, отметки уровней на высоту биографии, нижняя панель на телефоне. */
@font-face{font-family:"Golos";src:url(fonts/golos-var.woff2) format("woff2");font-weight:400 900;font-display:swap}
@font-face{font-family:"KPD Serif";src:url(fonts/serif-text.woff2) format("woff2");font-weight:400 600;font-display:swap}
@font-face{font-family:"KPD Serif Display";src:url(fonts/serif-disp.woff2) format("woff2");font-weight:420;font-display:swap}

:root{
  --bg:#F4F3F0;--bg-2:#ECEAE3;--bg-3:#FBFAF7;
  --ink:#2B2F33;--ink-2:#464C52;--muted:#5A6066;
  --petrol:#0C4A46;--petrol-2:#083733;--petrol-tx:#0C4A46;
  --copper:#B06A3A;--copper-tx:#8A4E26;
  --rule:rgba(43,47,51,.2);--rule-2:rgba(43,47,51,.42);
  --ln:#2B2F33;--ln-2:rgba(43,47,51,.5);
  --f-top:#FBFAF7;--f-l:#ECEAE3;--f-r:#E1DED5;--f-floor:#F0EEE8;--f-belt:#D6D2C7;--f-water:#E6E4DC;
  --pe-fill:#F1E7DE;--pe-side:#E7D5C6;
  --theirs:#454B51;--theirs-2:#2B2F33;--their-f:#FBFAF7;
  --btn:#2B2F33;--btn-tx:#F4F3F0;--btn-h:#0C4A46;
  --sel:rgba(12,74,70,.07);
  --m:48px;--head:72px;--dock:0px;
  --serif:"KPD Serif","Source Serif 4",Georgia,serif;
  --serif-d:"KPD Serif Display","KPD Serif","Source Serif 4",Georgia,serif;
  --sans:"Golos","Golos Text",system-ui,-apple-system,"Segoe UI",Arial,sans-serif;
  --ease:cubic-bezier(.65,0,.35,1);
  --ease-o:cubic-bezier(.22,1,.36,1);
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#1F2326;--bg-2:#262A2E;--bg-3:#2B2F33;
  --ink:#ECE9E1;--ink-2:#CFCBC1;--muted:#ABA79D;
  --petrol:#4F9A90;--petrol-2:#2F6E66;--petrol-tx:#7DBDB3;
  --copper:#D08A55;--copper-tx:#E3A274;
  --rule:rgba(236,233,225,.18);--rule-2:rgba(236,233,225,.4);
  --ln:#D7D3C8;--ln-2:rgba(215,211,200,.45);
  --f-top:#2B2F33;--f-l:#25292C;--f-r:#212427;--f-floor:#23272A;--f-belt:#3A3F43;--f-water:#263133;
  --pe-fill:#352C26;--pe-side:#40332A;
  --theirs:#C9C5BA;--theirs-2:#9F9B91;--their-f:#33373B;
  --btn:#ECE9E1;--btn-tx:#1F2326;--btn-h:#7DBDB3;
  --sel:rgba(125,189,179,.10);
  color-scheme:dark;
}}
:root[data-theme="dark"]{
  --bg:#1F2326;--bg-2:#262A2E;--bg-3:#2B2F33;
  --ink:#ECE9E1;--ink-2:#CFCBC1;--muted:#ABA79D;
  --petrol:#4F9A90;--petrol-2:#2F6E66;--petrol-tx:#7DBDB3;
  --copper:#D08A55;--copper-tx:#E3A274;
  --rule:rgba(236,233,225,.18);--rule-2:rgba(236,233,225,.4);
  --ln:#D7D3C8;--ln-2:rgba(215,211,200,.45);
  --f-top:#2B2F33;--f-l:#25292C;--f-r:#212427;--f-floor:#23272A;--f-belt:#3A3F43;--f-water:#263133;
  --pe-fill:#352C26;--pe-side:#40332A;
  --theirs:#C9C5BA;--theirs-2:#9F9B91;--their-f:#33373B;
  --btn:#ECE9E1;--btn-tx:#1F2326;--btn-h:#7DBDB3;
  --sel:rgba(125,189,179,.10);
  color-scheme:dark;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--head) + 16px)}
body{margin:0;background:var(--bg);color:var(--ink);font:400 18px/1.55 var(--serif);font-optical-sizing:auto;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip}
h1,h2,h3,p,ul,ol,dl,dd,figure{margin:0}
ul,ol{padding:0;list-style:none}
a{color:inherit}
img,svg{display:block}
button,input,textarea{font:inherit;color:inherit}
::selection{background:var(--petrol);color:var(--bg)}
:focus-visible{outline:2px solid var(--petrol);outline-offset:3px}
.defs{position:absolute;width:0;height:0;overflow:hidden}
.vh{position:absolute!important;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;padding:0}
.skip{position:absolute;left:8px;top:-60px;z-index:50;background:var(--ink);color:var(--bg);padding:8px 12px;font:500 15px/1.2 var(--sans);text-decoration:none}
.skip:focus{top:8px}
.nw{white-space:nowrap}

/* ---------- голоса ---------- */
h1,h2,h3,.btn,.link,.nav,.head,.tag,.plate,.prog,.qt,.opt,.sit-h,.res-k,.res-h,.hint,.tz,.chain h3,.spec dt,.psw,label,.err,.org,.org-s,.q-nav,.picked,.foot,.chap,.qa h3,.lv,.at,.dock,.ppn .k,.roles,.pair-c,.for,.cr-b,.c-docs,.crumbs,.toc{font-family:var(--sans)}
/* заголовок первого экрана: самое крупное слово сайта, разрыв с абзацем в шесть раз */
h1{font-weight:700;font-size:clamp(40px,min(7.2vw,11.6vh),150px);line-height:.9;letter-spacing:-.05em;font-feature-settings:"kern" 1}
h2{font-weight:800;font-size:clamp(30px,3.1vw,60px);line-height:1;letter-spacing:-.032em;text-wrap:balance}
h2.display{font-size:clamp(40px,4.6vw,88px);line-height:.94;letter-spacing:-.04em}
h3{font-weight:650;font-size:20px;line-height:1.2;letter-spacing:-.012em}
.intro{font-family:var(--serif-d);font-weight:420;font-size:clamp(20px,1.55vw,26px);line-height:1.34;letter-spacing:-.006em;color:var(--ink)}
p{text-wrap:pretty}
.runin b{font-family:var(--sans);font-weight:650;font-size:.92em;letter-spacing:-.005em}

/* ---------- кнопки и ссылки ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:0 24px;background:var(--btn);color:var(--btn-tx);font-weight:600;font-size:16px;letter-spacing:-.005em;text-decoration:none;border:0;cursor:pointer;transition:background-color .2s}
.btn:hover{background:var(--btn-h)}
.btn:active{transform:translateY(1px)}
.link{font-weight:550;font-size:16px;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px;text-decoration-color:var(--rule-2);transition:text-decoration-color .2s,color .2s}
.link:hover{text-decoration-color:currentColor;color:var(--petrol-tx)}
.link-btn{background:none;border:0;padding:0;cursor:pointer;font:inherit;text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--rule-2)}
.link-btn:hover{text-decoration-color:currentColor}
.btn-line{min-height:44px;padding:0 18px;background:transparent;border:1px solid var(--rule-2);font:600 15px/1 var(--sans);cursor:pointer;transition:border-color .2s,background-color .2s}
.btn-line:hover{border-color:var(--ink)}
.btn-line:disabled{opacity:.4;cursor:default}

/* ---------- шапка ---------- */
.head{position:sticky;top:0;z-index:30;height:var(--head);display:flex;align-items:center;gap:32px;padding:0 var(--m);background:var(--bg)}
.brand{display:block;color:var(--ink);flex:none}
.brand svg{height:34px;width:auto}
.nav{display:flex;gap:28px;margin-left:auto;font-weight:500;font-size:15px}
.nav a{text-decoration:none;padding:6px 0;background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;transition:background-size .25s var(--ease)}
.nav a:hover{background-size:100% 1px}
.nav a,.btn-head{white-space:nowrap}
.head-tel{display:inline-flex;align-items:center;min-height:44px;font:600 15px/1 var(--sans);text-decoration:none;font-variant-numeric:tabular-nums;white-space:nowrap}
@media (min-width:1200px) and (max-width:1439px){.head-tel{display:none}.nav{gap:20px;font-size:14px}}
.head-tel .tel-short{display:none}
.btn-head{min-height:44px;padding:0 18px;font-size:15px;transition:opacity .3s,visibility .3s,background-color .2s}
/* пока на экране первый экран с той же кнопкой, в шапке её нет */
.in-hero .btn-head{opacity:0;visibility:hidden}
.menu{display:none}
.dock{display:none}

/* ---------- сцена ---------- */
.scene{position:relative;display:grid;grid-template-columns:100%}
.flow,.stage{grid-area:1/1}
.stage{position:sticky;top:var(--head);height:calc(100vh - var(--head));height:calc(calc(100*var(--svh)) - var(--head));overflow:hidden;z-index:0;align-self:start;background:var(--bg)}
.flow{position:relative;z-index:2;pointer-events:none}
.flow>*{pointer-events:auto}
.view{position:absolute;inset:0}
/* чертёж не ловит курсор сам: корпус под точкой ищет провал по полям из plant-meta, курсор-рука только над полем корпуса или его подписью */
.plant{pointer-events:none}
.drill-hot,.drill-hot *{cursor:pointer}
/* подсветка корпуса во всех фазах сцены, от крупного плана до ухода сцены (провал везде, 26.09.2026) */
/* свой класс у слоя: .hl занят панелью рекомендованного продукта в самопроверке (.ppn.hl) и штриховкой чертежа */
.drill-hl{position:absolute;left:0;top:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.stage.moving .drill-hl{opacity:0;transition:opacity .12s}
/* чертёж на холсте под векторным слоем движения. Векторный чертёж остаётся для наведения и нажатия, но не рисуется */
.snap{position:absolute;left:0;top:0;visibility:hidden;pointer-events:none}
.snap.on{visibility:visible}
.stage.rst #plant{visibility:hidden}
/* под холстом векторный чертёж не рисуется совсем, остаются только поля наведения корпусов: камера не перерисовывает тысячу узлов */
.stage.rst #plant .corp{visibility:visible}
.stage.rst #plant .corp>*{visibility:hidden}
.stage.rst #plant .corp>.hit{visibility:visible}
/* шторка под текстом: закрывает чертёж слева от линии среза, двигается только transform */
.curtain{position:absolute;top:0;bottom:0;left:0;width:100%;background:var(--bg);transform:translateX(-100%);pointer-events:none;will-change:transform}
.cam{position:absolute;left:0;top:0;transform-origin:0 0;will-change:opacity}
.cam.tr{transition:transform 1.15s var(--ease)}
.js .cam{opacity:0}
#plant-fx,#plant-roof{position:absolute;left:0;top:0;pointer-events:none;transform:translateZ(0)}
.plant-roof.opened{display:none}
html:not(.js) .cam{inset:0}
@media (min-width:1200px){html:not(.js) .cam{left:58%}}
html:not(.js) .plant{width:100%;height:100%}
html:not(.js) #plant-fx,html:not(.js) #plant-roof,html:not(.js) .close,html:not(.js) .cutln{display:none}
.stage.moving .tags,.stage.moving .leader,.stage.moving .plate{opacity:0;transition:opacity .12s}

/* крупный план поста: тот же мир того же чертежа в векторе, пока камера стоит */
.close{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;--pe-w:3px}
.close svg{width:100%;height:100%;overflow:hidden}
/* линия среза крупного плана по ГОСТ 2.305 разомкнутая: два коротких утолщённых штриха у верхнего и нижнего края сцены
   со стрелками направления взгляда. Сплошной вертикали между текстом и чертежом нет (добивка круг 2) */
.cutln{position:absolute;top:0;bottom:0;left:0;width:0;transform:translateX(var(--cut,0px));pointer-events:none}
.cutln svg{position:absolute;left:-1.3px;width:30px;height:30px;overflow:visible}
.cutln .ct{top:12px}.cutln .cb{bottom:12px}
.cutln .s{fill:none;stroke:var(--ink);stroke-width:2.6}
.cutln .a{fill:none;stroke:var(--ink);stroke-width:1}
.cutln .h{fill:var(--ink)}
.js .close,.js .cutln{opacity:0}
.js .close.on,.js .cutln.on{opacity:1}

.hero{position:relative;min-height:calc(calc(100*var(--svh)) - var(--head));padding:clamp(18px,3.4vh,44px) var(--m) clamp(20px,3.6vh,44px);display:flex;flex-direction:column;justify-content:space-between;gap:24px;pointer-events:none}
.hero>*{pointer-events:auto}
.hero h1{max-width:max-content}
.hero h1 .ln{display:block}
/* первый экран 05.10.2026: заголовок из четырёх длинных строк и строка под ним, размер ниже прежнего короткого заголовка */
.hero h1.h1-l{font-size:clamp(34px,min(4.4vw,8.2vh),88px);line-height:.98;letter-spacing:-.04em}
.h1-sub{margin-top:.7em;font-family:var(--sans);font-weight:600;font-size:clamp(19px,min(1.7vw,3.2vh),30px);line-height:1.22;letter-spacing:-.015em;color:var(--ink);max-width:26em}
.hero-foot{max-width:33rem}
.lead{font-family:var(--serif);font-weight:400;font-size:clamp(17px,1.2vw,19px);line-height:1.5;color:var(--ink);max-width:31em}
/* кому это: на широком экране подпись сцены под пустым постом, на телефоне строка под заголовком */
.for{margin:0;font-weight:500;font-size:16px;line-height:1.45;color:var(--ink);max-width:46ch}
@media (min-width:1200px){.hero .for{position:absolute;right:var(--m);bottom:clamp(20px,3.6vh,44px);width:min(30ch,26vw);max-width:none}}
.act{margin-top:24px;display:flex;flex-wrap:wrap;align-items:center;gap:16px 28px}
/* строки заголовка проявляются маской, один раз */
.js .hero h1 .ln{clip-path:inset(0 0 100% 0);transform:translateY(.3em);animation:lnIn .9s var(--ease-o) forwards}
.js .hero h1 .ln:nth-child(2){animation-delay:.06s}
.js .hero h1 .ln:nth-child(3){animation-delay:.12s}
.js .hero h1 .ln:nth-child(4){animation-delay:.18s}
.js .hero h1 .ln:nth-child(5){animation-delay:.24s}
@keyframes lnIn{to{clip-path:inset(0 0 -.2em 0);transform:none}}

.step{min-height:36vh;display:flex;flex-direction:column;justify-content:center;gap:20px;padding:32px var(--m);width:min(40%,640px)}
.step h2{max-width:20ch}
.step p{max-width:27em;font-size:clamp(18px,1.25vw,21px);line-height:1.5}
.step-main{min-height:46vh}
.step-main h2{max-width:13ch}
#komanda h2.display{font-size:clamp(38px,3.9vw,76px)}
.step-short{min-height:32vh}
/* проект стоит: утверждение крупно, пояснение тише */
.st-stoit h2{font-size:clamp(40px,4.3vw,82px);line-height:.95;letter-spacing:-.042em;max-width:12ch}
.st-stoit p{color:var(--ink-2)}
/* куратор: одна строка определения, полка под ней, выноска к посту на разрезе */
.st-kur h2.def{font-weight:600;font-size:clamp(28px,2.55vw,46px);line-height:1.08;letter-spacing:-.028em;max-width:17ch;padding-bottom:4px}
.st-kur p{font-size:clamp(16px,1.08vw,18px)!important;color:var(--muted);max-width:30em}
.kld{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:4;overflow:visible;opacity:0;transition:opacity .3s}
.kld.on{opacity:1}
.kld polyline{fill:none;stroke:var(--petrol-tx);stroke-width:1}
.kld circle{fill:var(--petrol-tx)}
.stage.moving .kld{opacity:0;transition:opacity .12s}
/* команда: перечень ролей, связанный с подписями на разрезе */
.roles{display:flex;flex-wrap:wrap;column-gap:22px;row-gap:0;margin-top:2px;max-width:36rem}
.roles li{min-width:0}
.roles button{display:block;background:none;border:0;padding:5px 0;text-align:left;cursor:pointer;font:600 16px/1.3 var(--sans);letter-spacing:-.005em;color:var(--petrol-tx);text-decoration:underline;text-decoration-color:transparent;text-underline-offset:4px;transition:text-decoration-color .2s,color .2s}
.roles button:hover,.roles button.hot{color:var(--ink);text-decoration-color:currentColor}
.tag.hot{color:var(--ink)}
.tag.hot span{font-weight:760}
/* передача поста: было и стало, пара постов из знака и пост у вашего человека */
.pair{display:flex;align-items:flex-end;gap:18px;margin:4px 0 2px}
.step .pair-c{font-weight:500;font-size:13.5px;line-height:1.3;color:var(--muted);margin-bottom:10px;white-space:nowrap;max-width:none}
.pg{height:52px;width:50px;overflow:visible;display:block}
.pair-s:first-child .pg{width:105px}
.pair-s{min-width:0;flex:none}
.pg-o{fill:var(--petrol);stroke:var(--petrol);stroke-width:16}
.pg-t{fill:url(#hatch-g);stroke:var(--theirs-2);stroke-width:30}
.pair-ar{width:64px;height:14px;margin-bottom:19px;overflow:visible}
.pair-ar line,.pair-ar path{fill:none;stroke:var(--ink);stroke-width:1.2}
.step .go-step{display:flex;flex-wrap:wrap;gap:4px 28px}
/* соседние шаги истории тише текущего: глаз держится за тот, который показывает камера */
@media (min-width:1200px) and (prefers-reduced-motion:no-preference){
  .js .st-stoit h2,.js .st-stoit p,.js .st-kur h2,.js .st-kur p,.js .step#komanda h2,.js .step#komanda>p,.js .st-pair h2,.js .st-pair>p{transition:color .35s var(--ease)}
  .js .st-stoit:not(.now) h2,.js .st-stoit:not(.now) p,.js .st-kur:not(.now) h2,.js .st-kur:not(.now) p,.js .step#komanda:not(.now) h2,.js .step#komanda:not(.now)>p,.js .st-pair:not(.now) h2,.js .st-pair:not(.now)>p{color:var(--muted)}
}

/* паспорт продукта: строки «что — значение» без линеек */
.spec{display:grid;grid-template-columns:minmax(8.5em,auto) 1fr;column-gap:24px;row-gap:12px;max-width:40rem}
.spec dt{font-weight:600;font-size:14px;line-height:1.5;color:var(--muted);padding-top:2px}
.spec dd{font-size:17px;line-height:1.5;color:var(--ink-2)}

.self{padding:40px var(--m) 44px;width:min(40%,640px)}
.self .intro{margin-top:20px;max-width:36ch;font-size:clamp(19px,1.35vw,22px)}
.picked{margin-top:20px;font-size:15px;font-weight:500;color:var(--petrol-tx)}
.sits{border:0;margin:32px 0 0;padding:0;min-width:0}
.sit{position:relative}
.sit input,.opt input,.check input{position:absolute;opacity:0;width:1px;height:1px}
.sit label{display:flex;gap:14px;align-items:baseline;padding:9px 0;cursor:pointer}
.sit-h{font-weight:560;font-size:clamp(19px,1.4vw,23px);line-height:1.2;letter-spacing:-.015em;color:var(--ink-2);transition:color .2s}
.sit label:hover .sit-h{color:var(--ink)}
.sit input:checked+label .sit-h{color:var(--petrol-tx);font-weight:720}
/* отметка выбора: место под П есть у каждой строки, сам П стоит только у выбранной */
.mk{flex:none;width:14px;height:15px;position:relative;top:1px}
.sit .mk,.opt .mk{background:transparent;transition:background-color .2s}
/* у вариантов ответа в покое пустой контур П, чтобы строка читалась как выбор. Выбранный вариант залит петролем (добивка круг 2) */
.opt .mk{background:var(--muted);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-36 -36 742 772'%3E%3Cpath d='M0 700V0H670V700H406V212H264V700Z' fill='none' stroke='%23000' stroke-width='64'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-36 -36 742 772'%3E%3Cpath d='M0 700V0H670V700H406V212H264V700Z' fill='none' stroke='%23000' stroke-width='64'/%3E%3C/svg%3E") center/contain no-repeat}
.opt:hover .mk{background:var(--ink)}
.sit input:checked+label .mk,.opt input:checked+.mk{background:var(--petrol);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-36 -36 742 772'%3E%3Cpath d='M0 700V0H670V700H406V212H264V700Z' stroke='%23000' stroke-width='64'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-36 -36 742 772'%3E%3Cpath d='M0 700V0H670V700H406V212H264V700Z' stroke='%23000' stroke-width='64'/%3E%3C/svg%3E") center/contain no-repeat}
.check .mk{width:20px;height:20px;top:0;border:1.5px solid var(--ink);transition:background-color .2s,border-color .2s}
.check input:checked+.mk{background:var(--petrol);border-color:var(--petrol)}
input:focus-visible+label,input:focus-visible+.mk+span,.check input:focus-visible~span:last-child{outline:2px solid var(--petrol);outline-offset:4px}
.sit-b{display:none;padding:4px 0 26px 28px;font-size:17px;line-height:1.5;color:var(--ink-2)}
.sit-b p+p{margin-top:10px}
/* «чего не хватает» медью пустого поста, «с чего начать» петролем нашего поста: подписи на полях, а не вводки в строке */
.sit-b .runin{display:grid;grid-template-columns:7.6em minmax(0,1fr);column-gap:18px;margin-top:14px}
.sit-b .runin b{font-weight:600;font-size:13.5px;line-height:1.35;padding-top:.28em;letter-spacing:0}
.sit-b .runin.need b{color:var(--copper-tx)}
.sit-b .runin.start b{color:var(--petrol-tx)}
.corp-row{display:flex;flex-wrap:wrap;gap:0 18px;margin-top:18px}
.corp-row[hidden],.stamp[hidden]{display:none}
.cr-b{background:none;border:0;padding:0;min-height:44px;cursor:pointer;font:550 15px/1.2 var(--sans);color:var(--ink-2);text-decoration:underline;text-underline-offset:5px;text-decoration-color:var(--rule-2);text-align:left}
.cr-b.on{color:var(--petrol-tx);font-weight:720;text-decoration-color:currentColor}
.sit input:checked~.sit-b{display:block}
.qs{margin-top:40px}
.qs-h{font:600 15px/1.3 var(--sans);color:var(--muted)}
.q{border:0;margin:16px 0 0;padding:0;min-width:0;display:none}
.q.cur{display:block}
.q legend{padding:0;margin-bottom:10px}
.prog{display:block;font-weight:500;font-size:14px;color:var(--muted);font-variant-numeric:tabular-nums}
.qt{display:block;margin-top:6px;font-weight:700;font-size:clamp(22px,1.7vw,28px);line-height:1.15;letter-spacing:-.02em}
.opt{display:flex;gap:14px;align-items:baseline;padding:9px 0;cursor:pointer;font-weight:500;font-size:17px;line-height:1.3;color:var(--ink-2)}
.opt:hover>span:last-child{color:var(--ink)}
.opt input:checked~span:last-child{color:var(--petrol-tx);font-weight:680}
.q-nav{display:flex;gap:12px;margin-top:20px}
.result{margin-top:44px}
.res-k{font-weight:500;font-size:14px;color:var(--muted)}
.res-h{margin-top:4px;font-weight:800;font-size:clamp(30px,2.8vw,48px);line-height:1;letter-spacing:-.035em;color:var(--petrol-tx);max-width:14ch}
.res p:not(.res-k){margin-top:14px;max-width:36ch}
.res .btn{margin-top:22px}
.res-also,.res-unsure{margin-top:16px;font-size:16px}

/* продукты: переключатель крупным текстом, выбранный пункт весом и цветом, чертёж показывает, где продукт живёт */
.prods{width:min(40%,640px);min-height:0;justify-content:flex-start;padding-top:36px;padding-bottom:40px}
.prods .intro{max-width:36ch;font-size:clamp(19px,1.35vw,22px)}
.psw{display:flex;flex-direction:column;align-items:flex-start;margin-top:12px}
.psw[hidden]{display:none}
.psw button{background:none;border:0;padding:4px 0;text-align:left;cursor:pointer;font-weight:600;font-size:clamp(21px,1.6vw,28px);line-height:1.1;letter-spacing:-.025em;color:var(--muted);transition:color .25s}
.psw button:hover{color:var(--ink)}
.psw button[aria-selected="true"]{color:var(--ink);font-weight:780}
.ppn{margin-top:26px;max-width:36em}
.ppn h3{font-size:clamp(22px,1.75vw,30px);font-weight:700;letter-spacing:-.025em;line-height:1.1}
.js .ppn h3{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ppn+.ppn{margin-top:36px}
.js .ppn+.ppn{margin-top:26px}
.ppn .sub{margin:0 0 12px;font:600 16px/1.35 var(--sans);color:var(--petrol-tx)}
.ppn .k{display:block;font-weight:600;font-size:14px;color:var(--muted)}
.ppn>p{font-size:17px;line-height:1.5;color:var(--ink-2)}
.ppn .k+p{margin-top:4px}
.ppn .go{margin-top:16px;display:flex;flex-wrap:wrap;gap:6px 28px}
.ppn.hl .k{color:var(--petrol-tx)}

/* ---------- подписи на чертеже: точка у узла, выноска, полка под текстом (ГОСТ 2.316) ---------- */
.tags{position:absolute;inset:0;pointer-events:none;z-index:2;transition:opacity .2s}
.tag{--L:26px;--dx:0px;position:absolute;left:0;top:0;width:0;height:0;transform:translate(var(--x),var(--y));opacity:0;transition:opacity .2s;white-space:nowrap;font-weight:560;font-size:14px;line-height:1.18;letter-spacing:.002em;color:var(--ink)}
.tag b{position:absolute;left:-3.5px;top:-3.5px;width:7px;height:7px;background:currentColor;clip-path:circle(2.6px at 50% 50%)}
.tag::before{content:"";position:absolute;left:0;bottom:0;width:1px;height:var(--L);background:currentColor}
.tag::after{content:"";position:absolute;left:0;bottom:var(--L);width:calc(8px + var(--dx));height:1px;background:currentColor}
.tag span{position:absolute;left:calc(8px + var(--dx));bottom:var(--L);background:var(--bg);padding:2px 3px 3px;border-bottom:1px solid currentColor;max-width:236px;white-space:normal;width:max-content}
.tag.flip::after{left:calc(-8px - var(--dx))}
.tag.flip span{left:auto;right:calc(8px + var(--dx))}
.tag.dn::before{bottom:auto;top:0}
.tag.dn::after{bottom:auto;top:var(--L)}
.tag.dn span{bottom:auto;top:calc(var(--L) + 1px);transform:translateY(-100%)}
.tag.on{opacity:1;transition:opacity .25s}
.tag.role{color:var(--petrol-tx)}
.tag.role span{font-weight:650}
.tag.their{color:var(--theirs)}
.tag.dimt{color:var(--copper-tx)}
.tag.dimt b,.tag.dimt::before,.tag.dimt::after{display:none}
.tag.dimt span{left:0;top:0;bottom:auto;border:0;background:none;padding:0 4px;transform-origin:0 0;transform:rotate(var(--ang,-30deg)) translate(-50%,-100%);font-weight:650;font-size:15px;white-space:nowrap}
/* выноска продукта: та же выноска, крупнее, упирается в свой узел */
.tag.prod{color:var(--ink)}
.tag.prod span{font-weight:720;font-size:17px;letter-spacing:-.01em;max-width:260px;padding:3px 4px 4px}
/* табличка корпуса одна на все экземпляры чертежа: название на полке, к полке выноска от корпуса, кто там нужен, «Отметить для заявки»,
   «Подробнее», «Закрыть». Мышь, клавиатура и широкий сенсорный экран: в рамке своего чертежа мимо текста. Палец на узкой сцене: полосой в сцене */
.plate{position:absolute;left:0;top:0;z-index:5;width:300px;padding:12px 16px 4px;background:var(--bg);font-size:14px;line-height:1.4;overflow:hidden}
/* листается только раскрытое «Подробнее», а не вся табличка: шапка и строка кнопок остаются на виду, системной полосы прокрутки нет
   (техконтроль 28.09.2026, ширина 960) */
.plate .pl-more{overflow:auto;overscroll-behavior:contain;scrollbar-width:none}
.plate .pl-more::-webkit-scrollbar{display:none}
.plate h3{font-size:17px;font-weight:700;padding:0 0 4px}
.plate .pr{margin-top:10px;font-weight:650;font-size:15px;line-height:1.3;color:var(--petrol-tx)}
.plate .pw{margin-top:3px;font:500 13px/1.4 var(--sans);color:var(--muted)}
.plate .pd{margin-top:5px;font-family:var(--serif);font-size:15px;line-height:1.45;color:var(--ink-2)}
.plate .pc{display:flex;flex-wrap:wrap;gap:0 24px;margin-top:2px}
.plate .pl-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px;border-bottom:1px solid var(--ink)}
.plate.strip{width:auto;padding:6px var(--m) 2px}
.plate.strip h3{font-size:16px}
.plate.strip .pr{margin-top:6px;font-size:14.5px}
.pl-b{background:none;border:0;padding:0;cursor:pointer;min-height:44px;font:600 15px/1 var(--sans);color:var(--petrol-tx);text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--rule-2)}
.pl-x{color:var(--ink);flex:none}
.plate .pl-s{margin-top:8px}
.plate .pl-more .pr{margin-top:12px}
.plate .pl-w{margin-top:8px;font:500 14.5px/1.4 var(--sans);color:var(--ink)}
.plate .pl-w b{font-weight:650;color:var(--petrol-tx)}
.plate.strip .pl-w{margin-top:5px;font-size:14px}
.plate .pl-a{margin-top:2px}
.plate .pl-more .pr+.pd{margin-top:3px}
.pl-who{display:inline-flex;align-items:center;min-height:44px;font:600 15px/1 var(--sans);color:var(--petrol-tx);text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--rule-2)}
.leader{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:4;overflow:visible}
.leader line{stroke:var(--ink);stroke-width:1}
.leader circle{fill:var(--ink)}
.hint{position:absolute;right:var(--m);bottom:18px;text-align:right;font-weight:500;font-size:13px;line-height:1.4;color:var(--muted);background:var(--bg);padding:1px 4px;opacity:0;transition:opacity .4s;pointer-events:none}
.hint.show{opacity:1}
.chap{position:absolute;right:var(--m);bottom:10px;display:flex;gap:18px;opacity:0;visibility:hidden;transition:opacity .4s,visibility .4s;z-index:3}
.chap button{background:none;border:0;padding:8px 0;cursor:pointer;font:500 13px/1.2 var(--sans);color:var(--muted);transition:color .3s;text-decoration:underline;text-decoration-color:transparent;text-underline-offset:4px}
.chap button:hover{color:var(--ink);text-decoration-color:var(--rule-2)}
.chap button.cur{color:var(--ink);font-weight:650}
.stage.story .chap{opacity:1;visibility:visible}
.stage.story .hint{opacity:0}
.stage.ending .hint,.stage.ending .chap{opacity:0}

/* ---------- чертёж ---------- */
.plant{overflow:visible}
.t,.l,.r,.e,.nf,.floor,.s,.k,.n,.g,.belt,.ball,.water,.dots,.hit,.pe-f,.pe-s,.po-f,.po-s,.po-t,.pt-f,.pt-s,.pt-t,.cur,.mkr,.inst line,.inst circle,.lump,.dtk,.dln{vector-effect:non-scaling-stroke;stroke:var(--ln);stroke-width:.8;stroke-linejoin:miter;stroke-miterlimit:3}
.t{fill:var(--f-top)}
.l{fill:var(--f-l)}
.r{fill:var(--f-r)}
.nf,.n,polyline.s,polyline.g,path.s,path.g{fill:none}
.r.nf,.l.nf{stroke:none}
.r.nf{fill:var(--f-r)}
.l.nf{fill:var(--f-l)}
.floor{fill:var(--f-floor)}
.s{stroke-width:1.6;fill:none}
.k{fill:url(#hatch);stroke-width:1.2}
.hl{stroke:var(--ln);stroke-width:.6}
.g{fill:none;stroke-dasharray:14 3 1.5 3 1.5 3;stroke:var(--ln-2)}
.belt{fill:var(--f-belt)}
.lump{fill:var(--ln);stroke:none}
.dots{fill:none;stroke:var(--ln);stroke-width:1}
.ball{fill:var(--f-l);stroke-width:.6}
.water{fill:var(--f-water)}
.hit{fill:transparent;stroke:none;transition:fill .25s}
/* весь комплекс (28.09.2026): местный разрез земли под рудником и хвостохранилищем. Массив реже и светлее среза стен, руда плотнее,
   хвосты и шламы горизонтальной слоистостью, тело дамб частой косой. Новых цветов нет */
.xe{fill:url(#hatch-e)}.xo{fill:url(#hatch-o)}.xh{fill:url(#hatch-h)}.xw{fill:url(#hatch-w)}.xd{fill:url(#hatch-d)}
.xe,.xo,.xh,.xw,.xd,.gnd{stroke:none}
.gnd{fill:var(--bg)}
.he{stroke:var(--ln-2);stroke-width:.6}.ho{stroke:var(--ln);stroke-width:.55}.hh,.hw{stroke:var(--ln-2);stroke-width:.5}.hd{stroke:var(--ln-2);stroke-width:.7}
.hbe,.hbd{fill:var(--bg)}.hbo{fill:var(--f-r)}.hbh{fill:var(--f-floor)}.hbw{fill:var(--f-water)}
/* разбивочные оси генплана */
.axl{fill:none;stroke:var(--ln-2);stroke-width:.7;stroke-dasharray:18 3 2 3;vector-effect:non-scaling-stroke}
.axc{fill:var(--bg);stroke:var(--ln-2);stroke-width:.8;vector-effect:non-scaling-stroke}
.axt{font-family:var(--sans);font-size:13px;font-weight:600;fill:var(--muted);text-anchor:middle}
.pe-f{fill:var(--pe-fill);stroke:var(--copper);stroke-width:var(--pe-w,1.5px)}
.pe-s{fill:var(--pe-side);stroke:var(--copper);stroke-width:var(--pe-w,1.5px)}
.po-f{fill:var(--petrol);stroke:var(--petrol)}
.po-s,.po-t{fill:var(--petrol-2);stroke:var(--petrol)}
/* пост фабрики: светлый, штрихованный, графитовый контур. Рядом со сплошным петролевым читается сразу */
.pt-f{fill:url(#hatch-t);stroke:var(--theirs-2);stroke-width:1.6}
.pt-s,.pt-t{fill:var(--f-l);stroke:var(--theirs-2);stroke-width:1.3}
.hbg{fill:var(--their-f);stroke:none}
.hlt{stroke:var(--theirs);stroke-width:.8}
.hlg{stroke-width:16}
.pv{opacity:0;transition:opacity .01s}
.post[data-s="empty"] .pe,.post[data-s="ours"] .po,.post[data-s="theirs"] .pt,.post[data-s="pair"] .po,.post[data-s="pair"] .pp{opacity:1}
.cur{fill:none;stroke:var(--petrol);stroke-width:2;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.4s var(--ease)}
.cur-d{fill:var(--petrol);stroke:none;opacity:0;transition:opacity .4s}
/* линия куратора прочерчивается, когда камера уже встала */
.plant.cur-on .cur{stroke-dashoffset:0;transition-delay:.2s}
.plant.cur-on .cur-d{opacity:1;transition-delay:1.1s}
.marks,.inst,.dim{opacity:0;transition:opacity .5s}
.plant.marks-on .marks,.plant.inst-on .inst,.plant.dim-on .dim{opacity:1}
.mkr{fill:none;stroke:var(--copper);stroke-width:1.8;stroke-dasharray:7 4}
.inst circle{fill:var(--bg);stroke:var(--petrol);stroke-width:1.6}
.inst line{stroke:var(--petrol)}
.dim .n{stroke:var(--ink);stroke-width:.8}
/* размер директора по производству над всем комплексом: линия петролем, засечки медью, выносные графитом (28.09.2026) */
.dimk{opacity:0;transition:opacity .5s}
.plant.dimk-on .dimk{opacity:1}
.dimk .n{stroke:var(--ln-2);stroke-width:.8}
.dimk .dln{stroke:var(--petrol);stroke-width:1.3;transition:stroke-width .2s}
.plant.dimk-hot .dimk .dln{stroke-width:2.4}
.tag.dimt.dk{color:var(--petrol-tx)}
.dln{stroke:var(--ink);stroke-width:1.3}
.dtk{stroke:var(--copper);stroke-width:2.2}
.roof,.skin{opacity:0}
/* пелена фокуса: одна фигура с вырезом под нужные корпуса */
.veil{fill:var(--bg);fill-rule:evenodd;stroke:none;opacity:0;transition:opacity .3s;pointer-events:none}
.plant-fx.focus .veil{opacity:.64}
/* подсветка корпуса при наведении, отметка для заявки и рамка фокуса с клавиатуры, в слое движения */
.fxh,.fxp,.fxf{opacity:0;pointer-events:none;vector-effect:non-scaling-stroke}
.fxh{fill:var(--sel);stroke:var(--petrol-tx);stroke-width:1;transition:opacity .15s}
.fxh.on{opacity:1}
.fxp{fill:var(--sel);stroke:var(--petrol);stroke-width:1.4;stroke-dasharray:6 4}
.fxf{fill:none;stroke:var(--petrol);stroke-width:2}
.stage.rst .fxh.on,.stage.rst .fxp.on,.stage.rst .fxf.on{opacity:1}
/* лента и грабли идут шагами: слой движения перерисовывается восемь-десять раз в секунду, а не на каждом кадре */
.ore{animation:ore 1.6s steps(12) infinite;animation-play-state:paused}
.plant.run .ore{animation-play-state:running}
.rake{animation:rake 14s steps(140) infinite;animation-play-state:paused}
.plant.run .rake{animation-play-state:running}
@keyframes ore{to{transform:translate(var(--dx),var(--dy))}}
@keyframes rake{to{transform:rotate(360deg)}}
@keyframes cut-in{from{opacity:0}}
.corp{outline:none}
.corp:focus-visible .hit{stroke:var(--petrol);stroke-width:2;fill:var(--sel)}
.corp.picked .hit{fill:var(--sel);stroke:var(--petrol);stroke-width:1.4;stroke-dasharray:6 4}
.ore-g,.rk-g{transition:opacity .3s var(--ease)}
.plant-fx.focus .ore-g,.plant-fx.focus .rk-g{opacity:.36}

/* ---------- секции под сценой ---------- */
.sec{padding:clamp(48px,4.2vw,84px) 0 0}
.in{padding:0 var(--m);max-width:1920px;margin:0 auto}

/* от звонка до акта: одно слово-раздел крупно, под ним размерная цепь */
.mega{font-weight:800;font-size:clamp(56px,calc((100vw - 140px) / 11),170px);line-height:.84;letter-spacing:-.055em;margin-left:-.05em;max-width:none;text-wrap:initial;white-space:nowrap}
.mega .ln{display:block}
.mega .ln+.ln{margin-left:0}
.chain-w{position:relative;margin-top:clamp(24px,2.2vw,40px)}
.chain{position:relative}
/* шаг читается с названия: название жирным в начале строки, пояснение продолжает её (добивка круг 2) */
.chain li{position:relative;font-size:16.5px;line-height:1.5;color:var(--ink-2);max-width:36em}
.chain li+li{margin-top:22px}
.chain h3{display:inline;margin-right:.3em;font-size:17px;font-weight:650;line-height:1.25;color:var(--ink);font-variant-numeric:tabular-nums}
.chain p{display:inline}
.chain-g{position:absolute;left:0;top:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.chain-g .cl{fill:none;stroke:var(--ink);stroke-width:1.2;stroke-linejoin:miter}
.chain-g .ck{stroke:var(--copper);stroke-width:2}
.chain-g .ce{stroke:var(--ink);stroke-width:1}
.chain-g .ca{fill:var(--copper)}
.chain-g .cv{stroke:var(--rule-2);stroke-width:1}
html:not(.js) .chain-g{display:none}
/* широкий экран: календарный график. Слева отрезки шагов в масштабе времени (корень из числа дней), месяцы с изломом, акт точкой.
   Отрезок следующего шага начинается под концом предыдущего. От конца отрезка тонкая выноска идёт к названию шага в колонке текста,
   колонка стоит по сетке раздела людей. Ни зигзага над и под линией, ни ряда колонок */
@media (min-width:1200px){
  .chain-w{margin-top:clamp(36px,3vw,56px)}
  .js .chain li{position:absolute;left:0;top:0;margin:0;max-width:none;font-size:16px}
}
@media (min-width:1680px){.chain h3{font-size:18px}.js .chain li,.chain li{font-size:17px}}
/* планшет и телефон: цепь стоит отвесно справа от текста, засечки на высоте названий шагов, акт точкой в конце. Текст целиком */
@media (max-width:1199px){
  .js .chain{padding-right:30px}
  .chain li+li{margin-top:16px}
  .chain li{font-size:15.5px;line-height:1.46}
  .chain h3{font-size:16px}
}
@media (max-width:767px){
  .js .chain{padding-right:24px}
  .chain li+li{margin-top:12px}
  .chain li{font-size:15px;line-height:1.43}
  .chain h3{font-size:15.5px}
}

/* путь куратора продольным профилем (добивка круг 2). Три уровня ступенями слева направо, у каждого отметка ▽ по ГОСТ 21.101
   и подпись над линией. Под профилем размер «9 лет» между отметками механика отделения и главного механика и внешний размер
   «13 лет» от слесаря до главного механика. Сплошной отвесной линии у левого края блока нет, самый длинный отвесный участок —
   ступень с выносной линией посередине профиля. Звено «9 лет» к «13 лет» в масштабе, 9/13 */
.lv{--a1:19.7%;--a2:64%;--r:24px;--y1:120px;--d9:28px;--d13:70px;position:relative;height:calc(var(--y1) + var(--d13) + 32px);max-width:40rem;font-weight:600;font-size:15px;line-height:1.3;color:var(--ink)}
.lv-l,.lv-x,.lv-y,.lv-k{position:absolute;display:block}
.lv-l{height:1px;background:var(--ink)}
.lv-l.l1{left:0;width:var(--a1);top:var(--y1)}
.lv-l.l2{left:var(--a1);width:calc(var(--a2) - var(--a1));top:calc(var(--y1) - var(--r))}
.lv-l.l3{left:var(--a2);right:0;top:calc(var(--y1) - 2 * var(--r))}
.lv-l.l2::after,.lv-l.l3::after{content:"";position:absolute;left:0;top:0;width:1px;height:var(--r);background:var(--ink)}
.lv-l::before{content:"";position:absolute;left:3px;bottom:1px;width:15px;height:13px;background:var(--ink);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 13'%3E%3Cpath d='M.9.5H14.1L7.5 12Z' fill='none' stroke='%23000'/%3E%3C/svg%3E") center/100% 100% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 13'%3E%3Cpath d='M.9.5H14.1L7.5 12Z' fill='none' stroke='%23000'/%3E%3C/svg%3E") center/100% 100% no-repeat}
.lv-m{position:absolute;left:22px}
.lv-m.m1{width:calc(var(--a1) - 26px);bottom:calc(100% - var(--y1) + 6px)}
.lv-m.m2{left:calc(var(--a1) + 22px);width:calc(var(--a2) - var(--a1) - 26px);bottom:calc(100% - var(--y1) + var(--r) + 6px)}
.lv-m.m3{left:calc(var(--a2) + 22px);right:-4px;bottom:calc(100% - var(--y1) + 2 * var(--r) + 6px)}
/* выносные и размерные линии тонкие, засечки медью, как в размерах чертежа */
.lv-x{width:1px;background:var(--ink)}
.lv-x.x0{left:0;top:var(--y1);height:calc(var(--d13) + 7px)}
.lv-x.x1{left:var(--a1);top:var(--y1);height:calc(var(--d9) + 7px)}
.lv-x.x2{left:var(--a2);top:calc(var(--y1) - var(--r));height:calc(var(--r) + var(--d13) + 7px)}
.lv-y{height:1px;background:var(--ink)}
.lv-y.y9{left:var(--a1);width:calc(var(--a2) - var(--a1));top:calc(var(--y1) + var(--d9))}
.lv-y.y13{left:0;width:var(--a2);top:calc(var(--y1) + var(--d13))}
.lv-k{width:15px;height:2px;background:var(--copper);transform:rotate(-45deg)}
.lv-k.k9a{left:calc(var(--a1) - 7px);top:calc(var(--y1) + var(--d9) - .5px)}
.lv-k.k9b{left:calc(var(--a2) - 7px);top:calc(var(--y1) + var(--d9) - .5px)}
.lv-k.k13a{left:-7px;top:calc(var(--y1) + var(--d13) - .5px)}
.lv-k.k13b{left:calc(var(--a2) - 7px);top:calc(var(--y1) + var(--d13) - .5px)}
.lv-d{position:absolute;text-align:center;white-space:nowrap;font-variant-numeric:tabular-nums}
.lv-d.d9{left:var(--a1);width:calc(var(--a2) - var(--a1));top:calc(var(--y1) + var(--d9) - 22px);font-size:14px;line-height:18px}
/* «13 лет» крупно разрывает внешнюю размерную линию, как размерное число на чертеже */
.lv-d.d13{left:0;width:var(--a2);top:calc(var(--y1) + var(--d13));transform:translateY(-54%);font-size:14px;line-height:1}
.lv-d.d13>span{display:inline-block;padding:0 10px;background:var(--bg)}
.lv-d b{font-weight:800;font-size:clamp(40px,3.4vw,56px);line-height:.9;letter-spacing:-.04em;margin-right:.08em}
/* люди (28.09.2026): шесть человек ролями. Крупно у каждого дело, что он сделает у вас руками, роль строкой ниже, коротко и кнопка
   «Познакомиться ближе». Записи идут одной колонкой, у каждой своя композиция: у куратора профиль пути, у директора по производству
   главная строка и размер через весь комплекс. Справа закреплена вырезка поста текущего человека, от полки под его заголовком
   выноска к посту. Ни полос вдоль текста, ни линеек над блоками, ни нумерации, ни карточек */
.people .in{display:grid;grid-template-columns:repeat(12,1fr);column-gap:24px;align-items:start}
.ppl-h{grid-column:1/13;grid-row:1;display:grid;grid-template-columns:repeat(12,1fr);column-gap:24px;align-items:end}
.ppl-h h2{grid-column:1/7;max-width:15ch}
.ppl-h .intro{grid-column:8/13;max-width:38ch;font-size:clamp(19px,1.35vw,22px)}
@media (max-width:959px){.ppl-h h2{grid-column:1/13}.ppl-h .intro{grid-column:1/13;margin-top:16px}}
.crew{grid-column:1/13;grid-row:2;position:relative;display:grid;grid-template-columns:repeat(12,1fr);column-gap:24px;align-items:start;margin-top:clamp(48px,5vw,80px)}
.crew-l{grid-column:1/8}
.ppl-i{position:relative;scroll-margin-top:calc(var(--head) + 24px)}
.ppl-i+.ppl-i{margin-top:clamp(64px,6.4vw,112px)}
.ppl-hd{font:650 clamp(24px,1.9vw,32px)/1.2 var(--sans);letter-spacing:-.018em;text-wrap:balance;max-width:22em;color:var(--ink);transition:color .25s}
.ppl-r{margin-top:10px;font:600 17px/1.35 var(--sans);color:var(--ink-2)}
.ppl-main{margin-top:22px;font:420 clamp(22px,1.75vw,29px)/1.3 var(--serif-d);letter-spacing:-.008em;max-width:25em;color:var(--ink)}
.ppl-t{margin-top:14px;font:400 clamp(19px,1.3vw,21px)/1.5 var(--serif);max-width:33em;color:var(--ink)}
.ppl-t p+p{margin-top:10px}
.ppl-i .lv,.ppl-i .sz{margin-top:30px}
.ppl-go{margin-top:24px}
.ppl-more{display:inline-flex;align-items:center;min-height:52px;padding:0 22px;border:1px solid var(--ink);border-radius:0;background:none;color:var(--ink);
  font:600 17px/1.2 var(--sans);letter-spacing:-.005em;text-decoration:none;transition:color .2s,border-color .2s}
.ppl-more:hover{color:var(--petrol-tx);border-color:var(--petrol-tx)}
.ppl-more:focus-visible{outline:2px solid var(--petrol);outline-offset:3px}
.roles-after{margin-top:clamp(56px,5vw,80px);font-size:17px;line-height:1.5;color:var(--ink-2);max-width:52ch}
.crew-f{grid-column:8/13;position:sticky;top:calc(var(--head) + 28px);align-self:start;padding-bottom:48px}
.cut{position:relative;margin:0;height:clamp(340px,calc(calc(100*var(--svh)) - var(--head) - 150px),620px)}
.cut-s{position:absolute;inset:0;width:100%;height:100%;overflow:visible;display:none}
html:not(.js) .cut-s:first-child,.cut-s.on{display:block}
.cut.sw .cut-s.on{animation:cut-in .35s var(--ease)}
/* у директора по производству пост — размер над всей фабрикой, поэтому размер залит цветом нашего человека */
.cut-s[data-corp="all"] .dln{stroke:var(--petrol-tx);stroke-width:1.8}
.cut-s[data-corp="all"] .dim .n{stroke:var(--petrol-tx)}
.cut .tag{z-index:2}
.cut .tag span{background:var(--bg)}
.cut-n{position:absolute;left:0;top:100%;margin-top:12px;font:600 15px/1.3 var(--sans);color:var(--ink-2);white-space:nowrap}
.crew-g{display:none}
@media (min-width:960px){
  .js .ppl-i.on .ppl-hd{color:var(--petrol-tx)}
  .js .crew-g{display:block;position:absolute;left:0;top:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:2}
  .crew-g polyline{fill:none;stroke:var(--petrol-tx);stroke-width:1}
  .crew-g circle{fill:var(--petrol-tx)}
  .js .crew-g.fl{animation:cut-in .35s var(--ease)}
  .js .ppl-i{cursor:default}
}
/* узкое окно: одна колонка, вырезки в списке нет, пока человека не показали на разрезе. Тогда она встаёт в его запись */
@media (max-width:959px){
  .crew{display:block}
  .crew-f{display:none}
  .ppl-i .cut{height:clamp(290px,82vw,420px);margin:24px 0 4px}
  .ppl-i .cut-n{display:none}
}
/* размер через весь комплекс: профиль рельефа вниз слева направо, рудник, фабрика, хвостохранилища, у каждого отметка ▽,
   под профилем внешний размер «производство целиком». Зеркало профиля пути куратора, тот же язык отметок и медных засечек */
.sz{--a1:30%;--a2:64%;--r:22px;--y0:30px;--d:62px;position:relative;height:calc(var(--y0) + 2 * var(--r) + var(--d) + 26px);max-width:40rem;font:600 15px/1.3 var(--sans);color:var(--ink)}
.sz-l,.sz-x,.sz-y,.sz-k{position:absolute;display:block}
.sz-l{height:1px;background:var(--ink)}
.sz-l.l1{left:0;width:var(--a1);top:var(--y0)}
.sz-l.l2{left:var(--a1);width:calc(var(--a2) - var(--a1));top:calc(var(--y0) + var(--r))}
.sz-l.l3{left:var(--a2);right:0;top:calc(var(--y0) + 2 * var(--r))}
.sz-l.l2::after,.sz-l.l3::after{content:"";position:absolute;left:0;bottom:0;width:1px;height:calc(var(--r) + 1px);background:var(--ink)}
.sz-l::before{content:"";position:absolute;left:3px;bottom:1px;width:15px;height:13px;background:var(--ink);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 13'%3E%3Cpath d='M.9.5H14.1L7.5 12Z' fill='none' stroke='%23000'/%3E%3C/svg%3E") center/100% 100% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 13'%3E%3Cpath d='M.9.5H14.1L7.5 12Z' fill='none' stroke='%23000'/%3E%3C/svg%3E") center/100% 100% no-repeat}
.sz-l.l2::before,.sz-l.l3::before{left:8px}
.sz-m{position:absolute;white-space:nowrap}
.sz-m.m1{left:22px;bottom:calc(100% - var(--y0) + 6px)}
.sz-m.m2{left:calc(var(--a1) + 27px);bottom:calc(100% - var(--y0) - var(--r) + 6px)}
.sz-m.m3{left:calc(var(--a2) + 27px);bottom:calc(100% - var(--y0) - 2 * var(--r) + 6px)}
.sz-x{width:1px;background:var(--ink)}
.sz-x.x0{left:0;top:var(--y0);height:calc(2 * var(--r) + var(--d) + 7px)}
.sz-x.x3{right:0;top:calc(var(--y0) + 2 * var(--r));height:calc(var(--d) + 7px)}
.sz-y{left:0;right:0;height:1px;background:var(--ink);top:calc(var(--y0) + 2 * var(--r) + var(--d))}
.sz-k{width:15px;height:2px;background:var(--copper);transform:rotate(-45deg);top:calc(var(--y0) + 2 * var(--r) + var(--d) - .5px)}
.sz-k.k0{left:-7px}
.sz-k.k3{right:-8px}
.sz-d{position:absolute;left:0;right:0;top:calc(var(--y0) + 2 * var(--r) + var(--d));transform:translateY(-54%);text-align:center;font-size:15px;line-height:1}
.sz-d>span{display:inline-block;padding:0 12px;background:var(--bg)}
@media (max-width:374px){.sz{--a1:26%;--a2:50%}.sz-m{font-size:12.5px}.sz-m.m3{left:auto;right:0}}

/* окно «Познакомиться ближе» (28.09.2026): лист чертежа с рамкой по ГОСТ 2.104, полем подшивки и штампом. На телефоне на весь экран,
   на компьютере крупной панелью поверх страницы под сплошной калькой. Ни тени, ни скругления, ни размытия, ни выезжания: окно
   появляется сразу. Текст 20 и 22 px, строка до 62 знаков, контраст не ниже 7 к 1 в обеих сменах */
:root{
  --sh-bg:#FBFAF7;--sh-ink:#2B2F33;--sh-ink-2:#464C52;--sh-acc:#0C4A46;--sh-veil:rgba(244,243,240,.94);
  --sh-main:2px;--sh-thin:1px;--sh-bind:40px;--sh-edge:10px;--sh-pad:48px;
  --sh-fs:1.375rem;--sh-fs-1:1.625rem;--sh-fs-2:1.875rem;--sh-lh:1.5;--sh-measure:33em;--sh-bar:64px;--sh-w:1000px}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --sh-bg:#1F2326;--sh-ink:#ECE9E1;--sh-ink-2:#CFCBC1;--sh-acc:#7DBDB3;--sh-veil:rgba(31,35,38,.94)}}
:root[data-theme="dark"]{--sh-bg:#1F2326;--sh-ink:#ECE9E1;--sh-ink-2:#CFCBC1;--sh-acc:#7DBDB3;--sh-veil:rgba(31,35,38,.94)}
@media (max-width:767px){:root{--sh-bind:6px;--sh-edge:6px;--sh-pad:16px;--sh-fs:1.25rem;--sh-fs-1:1.4375rem;--sh-fs-2:1.625rem;--sh-bar:60px}}
html{scrollbar-gutter:stable}
html.ppl-open{overflow:hidden}
html.ppl-open .plant .ore,html.ppl-open .plant .rake{animation-play-state:paused}
.sheet{position:fixed;inset:0;margin:auto;padding:0;border:0;border-radius:0;box-shadow:none;overflow:hidden;
  width:min(var(--sh-w),calc(100vw - 2 * var(--m)));max-width:none;height:calc(100vh - 48px);height:calc(calc(100*var(--dvh)) - 48px);max-height:none;
  background:var(--sh-bg);color:var(--sh-ink);outline:var(--sh-thin) solid var(--rule-2)}
.sheet[open]{display:flex}
.sheet::backdrop{background:var(--sh-veil)}
@media (min-width:768px) and (max-height:700px){.sheet{height:calc(calc(100*var(--dvh)) - 16px)}}
@media (max-width:767px){.sheet{width:100%;height:100vh;height:calc(100*var(--dvh));outline:0}}
.sh-f{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;
  margin:max(var(--sh-edge),env(safe-area-inset-top)) max(var(--sh-edge),env(safe-area-inset-right)) max(var(--sh-edge),env(safe-area-inset-bottom)) max(var(--sh-bind),env(safe-area-inset-left));
  border:var(--sh-main) solid var(--sh-ink)}
.sh-bar{flex:none;display:flex;align-items:stretch;border-bottom:var(--sh-thin) solid var(--sh-ink);background:var(--sh-bg)}
.sh-bar button,.sh-bar a{min-height:var(--sh-bar);min-width:var(--sh-bar);padding:0 20px;display:inline-flex;align-items:center;gap:10px;
  background:none;border:0;border-radius:0;font:600 18px/1 var(--sans);color:var(--sh-ink);cursor:pointer;text-decoration:none}
.sh-bar .sh-k{border-right:var(--sh-thin) solid var(--sh-ink)}
.sh-bar .sh-x{margin-left:auto;border-left:var(--sh-thin) solid var(--sh-ink)}
.sh-bar button:hover,.sh-bar a:hover{color:var(--sh-acc)}
.sh-bar button:focus-visible,.sh-bar a:focus-visible{outline:2px solid var(--sh-acc);outline-offset:-5px}
.sh-x svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6}
.sh-t{align-self:center;min-width:0;padding:0 20px;font:600 17px/1.2 var(--sans);color:var(--sh-ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:479px){.sh-t{display:none}}
.sh-sc{flex:1;min-height:0;display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.sh-body{flex:1 0 auto;display:flex;flex-direction:column}
.sh-a{flex:1 0 auto;display:flex;flex-direction:column;padding:40px var(--sh-pad) 0;
  font:400 var(--sh-fs)/var(--sh-lh) var(--serif);color:var(--sh-ink);text-align:left;font-variant-numeric:lining-nums}
.sheet[data-k="1"] .sh-a,html[data-sh-k="1"] .sh-a{font-size:var(--sh-fs-1)}
.sheet[data-k="2"] .sh-a,html[data-sh-k="2"] .sh-a{font-size:var(--sh-fs-2)}
.sh-a>h2,.sh-a>p,.sh-a>ul,.sh-a>.lv,.sh-a>.sz{max-inline-size:var(--sh-measure)}
.sh-h{font:700 1.4em/1.18 var(--sans);letter-spacing:-.02em;text-wrap:balance;color:var(--sh-ink)}
.sh-h:focus{outline:0}
.sh-r{margin-top:.55em;font:600 .9em/1.35 var(--sans);color:var(--sh-ink-2)}
.sh-main{margin-top:1.1em;font:420 1.22em/1.32 var(--serif-d);letter-spacing:-.006em}
.sh-lead{margin-top:1.1em}
.sh-a .lv,.sh-a .sz{margin-top:1.4em;color:var(--sh-ink)}
.sh-a .lv-l,.sh-a .lv-x,.sh-a .lv-y,.sh-a .sz-l,.sh-a .sz-x,.sh-a .sz-y,.sh-a .lv-l::after,.sh-a .sz-l::after,.sh-a .lv-l::before,.sh-a .sz-l::before{background:var(--sh-ink)}
.sh-a .lv-d.d13>span,.sh-a .sz-d>span{background:var(--sh-bg)}
.sh-c{margin:1.4em 0 56px}
.sh-c li+li{margin-top:1.05em}
.sh-c b{display:block;max-width:32.5em;margin-bottom:.2em;font:650 .92em/1.4 var(--sans);letter-spacing:-.005em}
.sh-a a{color:var(--sh-acc);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em}
@media (max-width:767px){.sheet[data-k="1"] .sh-a,.sheet[data-k="2"] .sh-a,html[data-sh-k="1"] .sh-a,html[data-sh-k="2"] .sh-a{-webkit-hyphens:auto;hyphens:auto;hyphenate-limit-chars:8 4 3}}
/* основная надпись: прижата к правой и нижней линии рамки, графы тонкими линиями, как у формы заявки внизу сайта */
.sh-st{margin:auto calc(-1 * var(--sh-pad)) 0 auto;width:min(calc(100% + var(--sh-pad)),660px);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  border-top:var(--sh-main) solid var(--sh-ink);border-left:var(--sh-main) solid var(--sh-ink);font:600 max(18px,.82em)/1.3 var(--sans)}
.sh-st .c{display:block;min-height:64px;padding:10px 16px 12px;color:var(--sh-ink);text-decoration:none;border-bottom:var(--sh-thin) solid var(--sh-ink)}
.sh-st .k{display:block;margin-bottom:2px;font:500 max(16px,.72em)/1.25 var(--sans);color:var(--sh-ink-2)}
.sh-st .c-role,.sh-st .c-post{grid-column:1/-1}
.sh-st .c-prev,.sh-st .c-firm{border-right:var(--sh-thin) solid var(--sh-ink)}
.sh-st .c-next.wide{grid-column:1/-1}
.sh-st .c-firm,.sh-st .c-sheet{border-bottom:0;font-weight:500}
.sh-st .c-sheet{display:flex;flex-wrap:wrap;gap:2px 24px}
.sh-st .c{min-width:0;overflow-wrap:break-word}
.sh-st a.c:hover{background:var(--sel);color:var(--sh-acc)}
.sh-st a.c:focus-visible{outline:2px solid var(--sh-acc);outline-offset:-5px}
@media (max-width:767px){.sh-st{margin-left:calc(-1 * var(--sh-pad));width:calc(100% + 2 * var(--sh-pad));border-left:0}}
@media print{
  html.ppl-open body>*:not(.sheet){display:none}
  .sheet{position:static;width:auto;height:auto;outline:0}
  .sheet .sh-bar{display:none}
  .sh-sc{overflow:visible}
  .sheet .sh-f{margin:0 0 0 20mm;border-width:.5mm}}
/* lyudi.html: альбом тех же листов для тех, у кого окно не открылось. У каждого листа своя рамка, «Крупнее» даёт скрипт */
.album{background:var(--bg)}
.al-bar{position:sticky;top:0;z-index:5;border-bottom:var(--sh-thin) solid var(--sh-ink)}
.al-bar .al-back{border-right:var(--sh-thin) solid var(--sh-ink)}
.al-bar .sh-k{margin-left:auto;border-right:0;border-left:var(--sh-thin) solid var(--sh-ink)}
.al{padding:0 0 24px}
.al-s{padding:24px max(var(--m),env(safe-area-inset-right)) 0 max(var(--m),env(safe-area-inset-left));scroll-margin-top:var(--sh-bar)}
.al-s .sh-f{margin:0 0 0 var(--sh-bind);min-height:calc(calc(100*var(--svh)) - var(--sh-bar) - 48px);background:var(--sh-bg)}
.al-s .sh-a{scroll-margin-top:calc(var(--sh-bar) + 24px)}
@media (max-width:767px){.al-s{padding:12px 8px 0}.al-s .sh-f{margin:0}}

/* куда выезжаем: шкала часовых поясов строкой, живое время над засечками */
.geo .in{display:grid;grid-template-columns:repeat(12,1fr);grid-template-rows:auto auto 1fr;column-gap:24px}
.geo h2{grid-column:1/7;grid-row:2;max-width:18ch;margin-top:clamp(36px,3vw,48px)}
.tz{grid-column:1/7;grid-row:1;display:grid;position:relative;--th:34px}
.tz::before{content:"";grid-area:1/1;align-self:start;margin-top:calc(var(--th) + 16px);height:1px;background:var(--ink)}
.tz-g{grid-area:1/1;justify-self:start;position:relative;left:calc(var(--at) * 100%);translate:calc(var(--at) * -100%) 0;display:flex;flex-direction:column;text-align:left}
.tz-g.end{text-align:right}
.tm{display:block;font-weight:600;font-size:var(--th);line-height:1;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.tz-g .u{display:block;margin-top:28px;font-weight:600;font-size:14px;color:var(--ink);font-variant-numeric:tabular-nums}
.tz-g .c{display:block;margin-top:4px;font-weight:500;font-size:15px;line-height:1.4;color:var(--muted)}
.tz-g::after{content:"";position:absolute;left:calc(var(--at) * 100% - 7px);top:calc(var(--th) + 9px);width:15px;height:15px;background:linear-gradient(135deg,transparent calc(50% - 1px),var(--copper) calc(50% - 1px),var(--copper) calc(50% + 1px),transparent calc(50% + 1px))}
.geo-t{grid-column:1/7;grid-row:3;margin-top:24px}
.geo-t p{font-size:17px;line-height:1.55;color:var(--ink-2);max-width:44ch}
.geo-t p+p{margin-top:16px}

/* заявка — основная надпись; рядом три вопроса, которые задают до выезда */
.form-sec .in{display:grid;grid-template-columns:repeat(12,1fr);column-gap:24px;align-items:start}
.form-l{grid-column:1/6}
.form-l h2{font-size:clamp(34px,3.6vw,68px);max-width:12ch}
.form-l .intro{margin-top:22px;max-width:34ch;font-size:clamp(19px,1.35vw,22px)}
.direct{margin-top:22px}
.direct a{display:inline-flex;align-items:center;min-height:44px;font:700 clamp(28px,2.4vw,40px)/1 var(--sans);letter-spacing:-.025em;text-decoration:none;font-variant-numeric:tabular-nums}
.direct a:hover{color:var(--petrol-tx)}
.direct-s{margin-top:6px;font:400 15px/1.5 var(--sans);color:var(--muted)}
.direct-s a{color:var(--ink)}
.stamp{grid-column:7/13;grid-row:1/3}
.qa{grid-column:8/13;grid-row:1/4;margin-top:0}
.qa h3{font-size:15px;font-weight:600;color:var(--muted);letter-spacing:0}
.qa dl{margin-top:16px}
.qa dt{font:650 clamp(18px,1.3vw,20px)/1.25 var(--sans);letter-spacing:-.01em}
.qa dd{margin-top:6px;font-size:16px;line-height:1.5;color:var(--ink-2);max-width:44ch}
.qa dd+dt{margin-top:22px}
.qa .all{margin-top:22px}
.stamp{display:grid;grid-template-columns:1fr 1fr;grid-template-areas:"name contact" "task task" "consent org" "consent send";border:2px solid var(--ink);position:relative}
.cell{position:relative;padding:14px 18px 16px;min-width:0}
.c-name{grid-area:name;border-bottom:1px solid var(--ink);border-right:1px solid var(--ink)}
.c-contact{grid-area:contact;border-bottom:1px solid var(--ink)}
.c-task{grid-area:task;display:flex;flex-direction:column}
.c-consent{grid-area:consent;border-top:1px solid var(--ink);border-right:1px solid var(--ink);display:flex;flex-direction:column;justify-content:center}
.c-org{grid-area:org;border-top:1px solid var(--ink);display:flex;justify-content:space-between;align-items:baseline;padding-top:12px;padding-bottom:12px}
.c-send{grid-area:send;border-top:1px solid var(--ink);padding:0}
.stamp label{display:block;font-weight:500;font-size:13px;color:var(--muted)}
.stamp input[type=text],.stamp textarea{display:block;width:100%;min-height:44px;margin-top:4px;padding:8px 0;background:transparent;border:0;border-radius:0;font:400 20px/1.35 var(--serif);color:var(--ink);outline:none}
.stamp textarea{flex:1;resize:vertical;min-height:170px}
.stamp ::placeholder{color:var(--muted);opacity:1;font-size:.84em}
.stamp .fld:focus-within{background:var(--sel)}
.stamp .fld:not(.c-consent):focus-within{outline:2px solid var(--petrol);outline-offset:-2px}
.stamp .fld:focus-within label{color:var(--petrol-tx)}
.check{display:flex!important;gap:12px;align-items:center;min-height:44px;font-size:15px!important;font-weight:550!important;color:var(--ink)!important;line-height:1.35;cursor:pointer}
.c-docs{margin-top:2px;padding-left:32px;font-size:13.5px;line-height:1.45;color:var(--muted)}
.c-docs a{color:inherit;display:inline-block;padding:6px 0}
.org{font-weight:700;font-size:15px}
.org-s{font-family:var(--sans);font-weight:500;font-size:14px;color:var(--muted)}
.btn-send{width:100%;height:100%;min-height:64px;font-size:17px}
.err{display:none;margin-top:4px;font-weight:500;font-size:13px;color:var(--copper-tx)}
.fld.bad .err{display:block}
.fld.bad label{color:var(--copper-tx)}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.send-err{display:none;grid-column:1/-1;padding:14px 18px;border-top:1px solid var(--ink);font:500 15px/1.4 var(--sans);color:var(--copper-tx)}
.send-err a{color:inherit}
.send-err:target{display:block}

/* служебные страницы: заявка у нас, политика, согласие, вопросы, продукты, 404 */
.crumbs{margin-bottom:22px;font-weight:500;font-size:14px;color:var(--muted)}
.crumbs a{color:var(--ink);text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--rule-2)}
/* продукты и вопросы: текст слева, справа закреплённое оглавление с текущим пунктом и вырезка разреза с узлом продукта */
@media (min-width:1200px){
  .doc.doc-w .in{max-width:1920px;margin:0 auto;display:grid;grid-template-columns:repeat(12,1fr);column-gap:24px;align-items:start}
  .doc-w .doc-m{grid-column:1/7}
  .doc-aside{grid-column:8/13;align-self:stretch}
  .doc-st{position:sticky;top:calc(var(--head) + 28px)}
}
.doc-aside{display:none}
@media (min-width:1200px){.doc-aside{display:block}}
.toc{counter-reset:none}
.toc li+li{margin-top:2px}
.toc a{display:inline-block;padding:5px 0;font-weight:560;font-size:17px;line-height:1.25;letter-spacing:-.01em;color:var(--muted);text-decoration:none;transition:color .2s}
.toc a:hover{color:var(--ink)}
.toc a.cur{color:var(--ink);font-weight:760}
.doc-qa~.doc-aside .toc a,.doc-aside[aria-label^="Вопросы"] .toc a{font-size:15px;font-weight:520}
.doc-aside[aria-label^="Вопросы"] .toc a.cur{font-weight:700}
.pp-fig{position:relative;margin:26px 0 0;height:min(46vh,420px)}
.pp-fig .plant-a{position:absolute;inset:0;width:100%;height:100%;overflow:hidden;transition:opacity .18s}
.pp-fig.sw .plant-a{opacity:0}
.pp-fig .tag{z-index:2}
.pp-fig .tag span{background:var(--bg)}
.doc{padding:clamp(48px,7vw,112px) 0 0}
.doc .in{max-width:calc(46rem + 2 * var(--m));margin:0}
.doc h1{font-size:clamp(34px,4.2vw,64px);line-height:1;letter-spacing:-.035em}
.doc .meta{margin-top:16px;font:500 14px/1.4 var(--sans);color:var(--muted)}
.doc h2{margin-top:40px;font-size:clamp(20px,1.6vw,24px);line-height:1.2;letter-spacing:-.015em}
.doc p,.doc li{font-size:18px;line-height:1.55;color:var(--ink-2)}
.doc h1+p{margin-top:28px}
.doc p+p,.doc h2+p,.doc p+ul,.doc ul+p{margin-top:14px}
.doc ul{padding-left:1.2em;list-style:disc}
.doc .back{margin-top:40px}
.doc-qa h2{margin-top:44px}
.doc-qa h1+h2{margin-top:48px}
.doc-pp .pp{margin-top:64px}
.doc-pp .pp h2{margin-top:0;font-size:clamp(26px,2.4vw,40px);line-height:1.05;letter-spacing:-.03em}
.doc-pp .pp .sub{margin-top:8px;font:500 15px/1.4 var(--sans);color:var(--muted)}
.doc-pp .pp>p{margin-top:16px}
.doc-pp .spec{margin-top:24px}
.doc-pp .spec dd{font-size:17px}
.doc-pp .go{margin-top:20px}
.doc-pp .lead-in{margin-top:56px}

/* подвал */
.foot{margin-top:clamp(48px,4.4vw,88px);padding:clamp(40px,4vw,64px) 0 32px;background:var(--bg-2)}
.foot .in{display:grid;grid-template-columns:repeat(12,1fr);column-gap:24px;align-items:end}
.foot-mark{grid-column:1/7;color:var(--petrol)}
.foot-mark svg{width:100%;height:auto}
.foot-t{grid-column:9/13;font:400 14px/1.6 var(--sans);color:var(--ink-2)}
.foot-t p+p{margin-top:12px}
.foot-t a{color:inherit}
/* телефон и палец: ссылки подвала своей строкой, поле нажатия 44 px, соседние поля не наезжают. Разделители «, » и «. » между ними
   на узком экране прячутся, потому что ссылки стоят строками (добивка круг 2) */
@media (max-width:1199px),(pointer:coarse){
  .foot-t a.fl{display:inline-block;max-width:100%;padding:11px 0;margin-right:20px;vertical-align:top}
  .foot-t .fs{display:none}
}

/* появление при прокрутке — только opacity и transform */
.js .rv{opacity:0;transform:translateY(24px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.js .rv.in-v{opacity:1;transform:none}

/* ---------- 1920: поле шире, текстовая колонка уже, чертёж крупнее ---------- */
@media (min-width:1680px){:root{--m:64px}
  .step p{font-size:22px}
  .step{width:min(36%,700px)}
  .self{width:min(36%,700px)}
  .prods{width:min(36%,700px)}
  .spec dd{font-size:18px}
  .tag{font-size:15px}
}

/* ---------- планшет и телефон: сцена сверху, текст под ней ---------- */
@media (max-width:1199px){
  :root{--m:32px;--head:60px;--stage:calc(48*var(--svh));--dock:60px}
  body{padding-bottom:var(--dock)}
  .nav{display:none;position:fixed;left:0;right:0;top:var(--head);bottom:0;z-index:29;flex-direction:column;gap:0;padding:16px var(--m);background:var(--bg);font-size:28px;font-weight:700;letter-spacing:-.02em}
  .nav.open{display:flex}
  .nav a{padding:14px 0;background:none}
  .btn-head{display:none}
  .menu{display:inline-flex;align-items:center;min-height:44px;margin-left:auto;background:none;border:0;padding:0 2px;font:600 16px/1 var(--sans);text-decoration:underline;text-underline-offset:5px;text-decoration-color:var(--rule-2);cursor:pointer}
  .head-tel{order:2;padding:0 4px}
  .menu{order:3}
  .head{gap:16px}
  .brand svg{height:30px}
  /* нижняя панель: позвонить и обсудить задачу всегда под пальцем */
  .dock{display:grid;grid-template-columns:1fr 1.4fr;position:fixed;left:0;right:0;bottom:0;z-index:28;height:var(--dock);padding-bottom:env(safe-area-inset-bottom);background:var(--bg);transition:transform .3s var(--ease)}
  .dock a{display:flex;align-items:center;justify-content:center;min-height:44px;font:600 16px/1 var(--sans);text-decoration:none}
  .dock-tel{color:var(--ink);border-top:1px solid var(--ink)}
  .dock-go{background:var(--btn);color:var(--btn-tx)}
  .dock.off{transform:translateY(110%)}
  .menu-open .dock{transform:translateY(110%)}
  .stage{top:var(--head);height:var(--stage);z-index:3}
  .flow{padding-top:var(--stage);z-index:1}
  .hero{min-height:0;padding-top:12px;padding-bottom:28px;gap:10px}
  /* заголовок первого экрана целиком над нижней панелью: кегль от ширины, но не больше, чем позволяет высота между сценой и панелью.
     На 1180×900 «делать надо» уходило под панель на 46 px, на 1024×768 на 64, на 1180×820 на 88 (провал везде, 26.09.2026) */
  h1{font-size:clamp(40px,min(7.2vw,calc((calc(100*var(--svh)) - var(--head) - var(--stage) - var(--dock)) * .19)),150px)}
  .hero .for{margin-top:-2px}
  .hero-foot{max-width:34rem}
  .step,.step-short,.step-main{width:auto;padding:40px var(--m) 52px;min-height:calc((calc(100*var(--svh)) - var(--head) - var(--stage) - var(--dock)) * .6)}
  .step h2{max-width:none}
  .self{width:auto;padding:32px var(--m) 40px}
  .prods{width:auto;min-height:0;padding:32px var(--m) 40px}
  .hint{bottom:12px}
  /* шаги сцены на телефоне: кнопки по 44 px внизу сцены */
  .chap{left:0;right:0;bottom:0;justify-content:space-between;gap:0;padding:0 calc(var(--m) - 4px);background:var(--bg)}
  .chap button{min-height:44px;padding:0 4px}
  .chap button span,.chap button{background:transparent}
  .dock-on .head-tel{display:none}
  .axc,.axt{display:none}
  .tag{font-size:13px}
  .tag span{max-width:168px}
  .tag.prod span{font-size:15px;max-width:190px}
  .people .in,.geo .in,.form-sec .in,.ppl-h{display:block}
  .ppl-h .intro{margin-top:18px}
  .crew{margin-top:40px}
  .mega{white-space:normal}
  .geo h2{margin-top:0}
  .tz{margin-top:24px}
  .crew{margin-top:44px}
  .geo-t{display:block}
  .geo-t p+p{margin-top:16px}
  .qa{margin-top:44px}
  .stamp{margin-top:28px}
  .foot .in{display:block}
  .foot-t{margin-top:24px}
  .tz,.qa{grid-column:auto}
  /* зона нажатия у ссылок в тексте не меньше 44 px, строки текста не раздвигаются */
  .link,.qa .all a,.res-also a,.res-unsure a{padding:12px 0}
  .for a,.direct-s a{padding:14px 0}
  .psw button{padding:9px 0;min-height:44px}
}
@media (max-width:767px){
  :root{--m:20px;--head:56px;--stage:calc(40*var(--svh))}
  .sit-b .runin{display:block}
  .sit-b .runin b{display:block;margin-bottom:2px}
  .roles{grid-template-columns:1fr;row-gap:0}
  .roles{column-gap:18px}
  .roles button{min-height:40px;padding:6px 0}
  .pair{gap:14px}
  .pg{height:44px;width:42px}
  .pair-s:first-child .pg{width:89px}
  .pair-ar{width:40px;margin-bottom:15px}
  .for{font-size:16px}
  /* профиль куратора на телефоне: уровни шире, подписи мельче, «13» 36 px. Звенья не в масштабе, числа размеров говорят сами */
  .lv{--a1:25%;--a2:58%;--r:18px;--y1:100px;--d9:24px;--d13:60px;font-size:13.5px;line-height:1.25}
  .lv-m{left:20px}
  .lv-m.m1{width:calc(var(--a1) - 22px)}
  .lv-m.m2{left:calc(var(--a1) + 20px);width:calc(var(--a2) - var(--a1) - 22px)}
  .lv-m.m3{left:calc(var(--a2) + 20px)}
  .lv-d b{font-size:36px}
  .lv-d.d9{font-size:13px}
  .corp-row{flex-wrap:nowrap;overflow-x:auto;margin:14px calc(var(--m) * -1) 0;padding:0 var(--m);scrollbar-width:none;gap:0 20px}
  .corp-row::-webkit-scrollbar{display:none}
  .cr-b{white-space:nowrap;flex:none}
  .sec{padding-top:40px}
  body{font-size:17px}
  .intro,.self .intro,.prods .intro,.ppl-h .intro,.form-l .intro{font-size:18px;line-height:1.38}
  .qa dd,.geo-t p{font-size:15.5px;line-height:1.5}
  h2{font-size:28px}
  h2.display{font-size:38px}
  .head-tel .tel-full{display:none}
  .head-tel .tel-short{display:inline}
  .brand svg{height:28px}
  /* телефон: строка «КПД — контроль, порядок, действие.» на первом экране над панелью, на 480×844 она уходила под панель на 25 px */
  h1{font-size:clamp(40px,min(12.6vw,calc((calc(100*var(--svh)) - var(--head) - var(--stage) - var(--dock)) * .139)),60px);line-height:.9}
  .lead{font-size:17px}
  .act .btn{width:100%}
  .step,.step-short,.step-main{padding:20px var(--m) 28px}
  .sit label{padding:9px 0}
  .sit-b{padding-left:28px}
  .spec{grid-template-columns:1fr;row-gap:2px}
  .spec dd+dt{margin-top:12px}
  .psw button{font-size:22px}
  .mega{font-size:min(12.8vw,72px)}
  .mega .ln{display:block}
  .mega .ln+.ln{margin-left:0}
  .qa{margin-top:28px}
  /* люди на телефоне: дело 24 px, текст 19 px, между людьми 56 px */
  .ppl-h{display:block}
  .ppl-h .intro{margin-top:14px}
  .crew{margin-top:36px}
  .ppl-i+.ppl-i{margin-top:56px}
  .ppl-hd{font-size:24px}
  .ppl-r{font-size:16px}
  .ppl-main{font-size:21px;margin-top:16px}
  .ppl-t{font-size:19px}
  .ppl-more{width:100%;justify-content:center}
  .sz{--a1:27%;--a2:57%;--r:18px;--d:54px;font-size:13.5px}
  .sz-m.m2{left:calc(var(--a1) + 25px)}
  .sz-m.m3{left:calc(var(--a2) + 25px)}
  .sz-d{font-size:14px}
  .geo-t{margin-top:22px}
  /* шкала поясов: три отметки на одной линии */
  .tz{display:flex;justify-content:space-between;--th:26px}
  .tz::before{position:absolute;left:0;right:0;top:calc(var(--th) + 16px);height:1px;margin:0}
  .tz-g{left:0;translate:none}
  .tz-g .u{margin-top:24px;font-size:13px}
  .tz-g .c{font-size:14px}
  .tz-g::after{left:-7px;top:calc(var(--th) + 9px)}
  .tz-g.end::after{left:auto;right:-7px}
  /* телефон короче без потери текста: поля самопроверки и подвала плотнее (добивка круг 2) */
  .self{padding:26px var(--m) 32px}
  .foot{margin-top:36px;padding-top:32px}
  .stamp{grid-template-columns:1fr;grid-template-areas:"name" "contact" "task" "consent" "org" "send"}
  .c-name,.c-contact,.c-consent{border-right:0}
  .stamp textarea{min-height:112px}
  .foot-mark{max-width:180px}
}
/* профиль куратора на узком телефоне: на 320 «слесарь» заходил на ступень механика отделения, «обогатительной» выходило за конец
   линии уровня (на 360 на 2 px). Ступень главного механика левее, уже 360 подписи кеглем подписей чертежа (техконтроль добивки круг 2) */
@media (max-width:374px){.lv{--a2:57%}}
@media (max-width:359px){
  .lv{--a1:27%;--a2:59%}
  .lv-m{font-size:12px}
}
/* палец: поле нажатия 44 px у «Главная» в пути и у смены в подвале, строки не сдвигаются (техконтроль добивки) */
@media (pointer:coarse){
  .crumbs a{padding:14px 0}
  .foot-t .link-btn{padding:11px 0;margin:-11px 0}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .roof,.skin{opacity:0!important}
  .js .rv{opacity:1;transform:none}
  .js .hero h1 .ln{clip-path:none;transform:none}
}

/* расшифровка КПД, 26.09.2026 */
.kpd{margin:0 0 14px;font-family:var(--sans);font-weight:600;font-size:17px;line-height:1.35;color:var(--ink)}
.foot .kpd{margin:0 0 12px;font-size:16px}
@media (max-width:1199px){.hero h1.h1-l{font-size:clamp(30px,min(5.6vw,calc((calc(100*var(--svh)) - var(--head) - var(--stage) - var(--dock)) * .085)),64px)}}
@media (max-width:767px){.hero h1.h1-l{font-size:clamp(27px,7.4vw,40px);line-height:1}.h1-sub{font-size:18px}}
/* ===== сюжет «Уральская школа» и цитаты мира (05.10.2026) ===== */
.eyebrow{margin:0 0 .9em;font-family:var(--sans);font-weight:600;font-size:clamp(13px,.92vw,15.5px);line-height:1.35;letter-spacing:.005em;color:var(--copper-tx);max-width:34ch}
.hero h1.h1-s{font-size:clamp(40px,min(5.3vw,9.4vh),104px);line-height:.92;letter-spacing:-.046em}
.h1-sub{margin-top:.75em;font-family:var(--sans);font-weight:600;font-size:clamp(18px,min(1.55vw,2.9vh),27px);line-height:1.25;letter-spacing:-.012em;color:var(--ink);max-width:24em}
.nums{font-family:var(--sans);list-style:none;margin:0 0 4px;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 28px;max-width:34rem}
.nums li{border-top:1px solid var(--rule-2);padding-top:10px}
.nums b{display:block;font-weight:750;font-size:clamp(21px,1.75vw,30px);line-height:1.05;letter-spacing:-.025em;color:var(--ink);font-variant-numeric:tabular-nums}
.nums span{display:block;margin-top:6px;font-size:13.5px;line-height:1.38;color:var(--muted)}
.hero .act{margin-top:22px}
.hero .hero-foot .for{margin-top:18px;font-weight:400;font-size:14px;line-height:1.45;color:var(--muted);max-width:44ch}
.hero .kpd{margin-top:10px}
@media (min-width:1200px){
  .hero .hero-foot .for{position:static;width:auto;max-width:44ch}
  .hero .clip-hero{position:absolute;right:var(--m);bottom:clamp(20px,3.6vh,44px);width:min(420px,29vw);margin:0}
  .hero .clip-hero .clip-tr{font-size:15.5px}
}
/* карточка на первом экране — бумажный лист поверх чертежа, внутри вырезка без второй тени */
.hero .clip-hero{background:var(--bg-3);padding:16px 18px 18px;border:1px solid var(--rule);box-shadow:0 1px 0 rgba(0,0,0,.03),0 22px 48px -28px rgba(20,24,28,.42)}
.hero .clip-hero .clip-im{transform:none;box-shadow:none;padding:0;border:0;background:none}
.hero .clip-hero figcaption{margin-top:12px}
/* вырезка исходной страницы: лист на чертеже, перевод нашим шрифтом, строка источника */
.clip{margin:8px 0 4px;max-width:36rem}
.clip-im{display:block;background:#fff;padding:14px 16px;border:1px solid var(--rule);box-shadow:0 1px 0 rgba(0,0,0,.03),0 18px 40px -26px rgba(20,24,28,.38);transform:rotate(-.3deg);transition:transform .35s var(--ease-o),box-shadow .35s var(--ease-o)}
.clip-im:hover,.clip-im:focus-visible{transform:none;box-shadow:0 1px 0 rgba(0,0,0,.03),0 26px 52px -26px rgba(20,24,28,.46)}
.clip-im img{display:block;width:100%;height:auto}
.clip figcaption{margin-top:14px}
.clip .clip-tr,.step .clip .clip-tr{font-family:var(--serif);font-size:clamp(16.5px,1.12vw,19px);line-height:1.5;color:var(--ink);max-width:34em}
.clip .clip-src,.step .clip .clip-src{margin-top:8px;font-family:var(--sans);font-size:13px;line-height:1.45;color:var(--muted);max-width:40em}
.clip-src a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.clip .clip-our,.step .clip .clip-our{margin-top:12px;font-weight:600;font-size:clamp(16px,1.1vw,18px);line-height:1.4;color:var(--ink)}
.clip-q figcaption{margin-top:0;padding:16px 0 4px;border-top:1px solid var(--rule-2)}
.clip-s{max-width:30rem}
.step p.our{font-weight:550;color:var(--ink)}
:root[data-theme="dark"] .clip-im img{filter:brightness(.93)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .clip-im img{filter:brightness(.93)}}
/* кривые выхода на мощность, перерисованные по графику Т. Макналти */
.mcn{margin:8px 0 6px;max-width:38rem}
.mcn-g{display:block;width:100%;height:auto;overflow:visible}
.mcn-ax line{stroke:var(--rule-2);stroke-width:1}
.mcn-ax .mcn-gr{stroke:var(--rule);stroke-dasharray:2 5}
.mcn-ax text{font-family:var(--sans);font-size:11px;fill:var(--muted)}
.mcn-ax .mcn-al{font-size:11.5px;fill:var(--ink-2)}
.mcn-c{fill:none;stroke:var(--ln-2);stroke-width:2;stroke-linecap:round}
.mcn-1{stroke:var(--petrol);stroke-width:3.2}
.mcn-4{stroke:var(--copper);stroke-width:3.2}
.mcn-t{font-family:var(--sans);font-weight:650;font-size:12.5px}
.mcn-t1{fill:var(--petrol-tx)}.mcn-t2{fill:var(--copper-tx)}
.mcn figcaption{margin-top:6px;font-size:13px;line-height:1.45;color:var(--muted)}
.mcn figcaption a{color:inherit}
.js .mcn-c{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.8s var(--ease-o)}
.js .mcn.in .mcn-c{stroke-dashoffset:0}
.js .mcn.in .mcn-2{transition-delay:.18s}.js .mcn.in .mcn-3{transition-delay:.36s}.js .mcn.in .mcn-4{transition-delay:.54s}
.js .mcn-t{opacity:0;transition:opacity .6s var(--ease) 1.2s}.js .mcn.in .mcn-t{opacity:1}
@media (prefers-reduced-motion:reduce){.js .mcn-c{stroke-dashoffset:0;transition:none}.js .mcn-t{opacity:1;transition:none}}
/* лента лет: год цифрой, рядом что было, тонкие линейки между строками */
.yrs{list-style:none;margin:6px 0 4px;padding:0;max-width:36rem}
.yrs li{display:grid;grid-template-columns:3.6em 1fr;gap:14px;padding:9px 0;border-top:1px solid var(--rule)}
.yrs li:last-child{border-bottom:1px solid var(--rule)}
.yrs b{font-weight:700;font-size:15px;line-height:1.4;font-variant-numeric:tabular-nums;color:var(--copper-tx)}
.yrs span{font-size:15px;line-height:1.4;color:var(--ink-2)}
.yrs-w li{grid-template-columns:minmax(8em,36%) 1fr}
.yrs-w b{font-variant-numeric:normal}
@media (max-width:479px){.yrs-w li{grid-template-columns:1fr;gap:2px}}
/* правила работы: номер медью, текст строкой */
.rules{list-style:none;margin:4px 0;padding:0;counter-reset:r;max-width:34rem}
.rules li{position:relative;padding:12px 0 12px 2em;border-top:1px solid var(--rule);font-size:clamp(16px,1.1vw,18px);line-height:1.45;color:var(--ink)}
.rules li:last-child{border-bottom:1px solid var(--rule)}
.rules li::before{counter-increment:r;content:counter(r);position:absolute;left:0;top:13px;font-weight:700;font-size:13.5px;color:var(--copper-tx);font-variant-numeric:tabular-nums}
/* заголовки новых шагов мельче прежних коротких */
.st-stoit.st-x h2{font-size:clamp(30px,3.05vw,56px);line-height:1;letter-spacing:-.034em;max-width:18ch}
.st-x h2{max-width:20ch}
#komanda h2.display{font-size:clamp(32px,3.2vw,58px);line-height:.98;max-width:16ch}
.st-kur.st-x h2{font-weight:800;font-size:clamp(30px,3.1vw,56px);line-height:1;letter-spacing:-.032em;max-width:16ch}
.st-kur.st-x p{font-size:clamp(18px,1.25vw,21px)!important;color:inherit}
.step{scroll-margin-top:var(--head)}
@media (min-width:1200px) and (prefers-reduced-motion:no-preference){
  .js .st-x h2,.js .st-x>p{transition:color .35s var(--ease)}
  .js .st-x:not(.now) h2,.js .st-x:not(.now)>p{color:var(--muted)}
}
/* «Как работаем»: строка под крупным заголовком, этапы карточками в ряд */
.mega-sub{margin-top:16px;font-weight:650;font-size:clamp(20px,1.8vw,32px);line-height:1.18;letter-spacing:-.02em;color:var(--ink-2);max-width:30ch}
.stg-sec h2{max-width:22ch}
.stg{list-style:none;margin:clamp(24px,2.4vw,40px) 0 0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--rule-2)}
.stg li{padding:20px 24px 6px 0;border-right:1px solid var(--rule)}
.stg li+li{padding-left:24px}
.stg li:last-child{border-right:0}
.stg h3{font-size:17px;font-weight:650;line-height:1.25;margin-bottom:8px}
.stg p{font-size:15.5px;line-height:1.5;color:var(--ink-2)}
@media (max-width:1199px){
  .stg{grid-template-columns:repeat(2,minmax(0,1fr))}
  .stg li:nth-child(2){border-right:0}
  .stg li:nth-child(3){padding-left:0}
  .stg li:nth-child(n+3){border-top:1px solid var(--rule)}
  .hero .clip-hero{margin-top:22px}
}
@media (max-width:767px){
  .nums{gap:14px 18px}
  .nums b{font-size:21px}
  .stg{grid-template-columns:1fr}
  .stg li,.stg li+li{border-right:0;padding:16px 0 4px}
  .stg li+li{border-top:1px solid var(--rule)}
  .clip-im{padding:10px 12px}
}
/* страница «Источники» и мелкие блоки сюжета (05.10.2026) */
.doc-src{max-width:46rem}
.doc-src>p{font-size:17px;line-height:1.55;color:var(--ink-2)}
.doc-src .src-h{margin-top:72px;font-size:clamp(26px,2.2vw,38px)}
.src-c{margin-top:48px;scroll-margin-top:calc(var(--head) + 16px)}
.src-c .clip{max-width:none}
.src-c:target .clip-im,.src-c:target .clip-q figcaption{box-shadow:0 0 0 3px var(--petrol)}
.clip .clip-or{margin-top:8px;font-family:var(--sans);font-size:13px;line-height:1.45;font-style:italic;color:var(--muted);max-width:40em}
.step .clip .clip-or{font-size:13px}
.clip-ru .clip-im{padding:10px 12px}
.yrs-h{margin-top:4px;font-family:var(--sans);font-weight:600;font-size:13.5px!important;letter-spacing:.005em;color:var(--muted)}
.how-q{margin-top:clamp(24px,2.4vw,40px);max-width:40rem}
.how-q .our{margin-top:12px;font-size:17px;line-height:1.5;font-weight:550;color:var(--ink)}
/* краны в движении (05.10.2026) */
.bcr{animation:crane 26s steps(260) infinite alternate;animation-play-state:paused}
.bcr-t{animation:crane 9s steps(90) infinite alternate;animation-play-state:paused}
.tcr{animation:crane 12s steps(120) infinite alternate;animation-play-state:paused}
.rope{transform-origin:0 0;animation:rope 6s steps(60) infinite alternate;animation-play-state:paused}
.hook{animation:hook 6s steps(60) infinite alternate;animation-play-state:paused}
.plant.run .bcr,.plant.run .bcr-t,.plant.run .tcr,.plant.run .rope,.plant.run .hook{animation-play-state:running}
@keyframes crane{to{transform:translate(var(--dx),var(--dy))}}
@keyframes rope{to{transform:scaleY(.45)}}
@keyframes hook{to{transform:translateY(-30.8px)}}
@media (prefers-reduced-motion:reduce){.bcr,.bcr-t,.tcr,.rope,.hook{animation:none}}
.bcr-g,.tcr-g{transition:opacity .3s var(--ease)}
.plant-fx.focus .bcr-g,.plant-fx.focus .tcr-g{opacity:.36}
/* легенда «П — пост» и заливка поста на первом экране (05.10.2026) */
.lgd{position:absolute;right:var(--m);top:16px;z-index:3;padding:14px 18px 16px;background:var(--bg);border:1px solid var(--rule-2);box-shadow:0 18px 40px -28px rgba(20,24,28,.35);font-family:var(--sans);pointer-events:none;width:300px}
.lgd-h{margin:0 0 12px;font-weight:650;font-size:15px;line-height:1.3;color:var(--ink)}
.lgd ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.lgd li{display:flex;align-items:center;gap:12px;font-size:14.5px;line-height:1.25;color:var(--ink)}
.lgd-i{width:22px;height:28px;flex:none;overflow:visible}
.lgd-i path{stroke-width:1.8;stroke-linejoin:miter}
.lgd-i.e path{fill:var(--pe-fill);stroke:var(--copper)}
.lgd-i.o path{fill:var(--petrol);stroke:var(--petrol)}
.lgd-i.t path{stroke:var(--theirs-2)}
.lgd-hb{fill:var(--their-f)}
.lgd-hl{stroke:var(--theirs);stroke-width:1.2}
.lgd-step{display:none}
@media (max-width:1199px){
  .stage .lgd{display:none}
  .lgd-step{display:block;position:static;margin-top:6px;width:auto;background:none;border:0;box-shadow:none;border-top:1px solid var(--rule);padding:14px 0 0}
  .lgd-step ul{flex-direction:row;flex-wrap:wrap;gap:10px 22px}
  .step .lgd-step .lgd-h{font-size:15px}
  .step .lgd-step li{font-size:14.5px}
}
.post.hero-fill .pv{transition:opacity 1.2s var(--ease)}
/* плитки первого экрана: длинное слово помещается в колонку (05.10.2026) */
.hero .hero-foot{max-width:38rem}
.nums{max-width:38rem}
.nums b{font-size:clamp(20px,1.55vw,27px)}
/* старые движки: крупного плана нет, на первом экране вся фабрика (05.10.2026) */
/* смена в шапке (05.10.2026) */
.shift{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;margin-right:4px;border:1px solid var(--rule-2);background:none;color:var(--ink);font:600 14px/1 var(--sans);cursor:pointer;white-space:nowrap;transition:border-color .2s,color .2s}
.shift:hover,.shift:focus-visible{border-color:var(--ink)}
.shift-i{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}
.shift-i .moon path{fill:currentColor;stroke:none}
.shift-i .sun{display:none}
.shift.is-dark .shift-i .sun{display:inline}
.shift.is-dark .shift-i .moon{display:none}
.shift-t{display:none}
@media (min-width:1560px){.shift-t{display:inline}}
@media (max-width:1199px){.shift{margin-left:auto;padding:0 10px;min-width:44px;justify-content:center}.head .menu{margin-left:0}}
/* v3 главная: тексты и структура по документу 29 (06.10.2026) */
.nw{white-space:nowrap}
.shift .shift-t{display:none!important}
.hero h1.h1-v3{font-size:clamp(34px,min(3.75vw,7.4vh),74px);line-height:.97;letter-spacing:-.04em;max-width:13.5em;text-wrap:balance}
.hero .h1-sub{max-width:27em}
.hero .hero-foot{max-width:40rem}
.hero .eyebrow{max-width:none}
.hero .proof{margin:0;font:400 15px/1.5 var(--sans);color:var(--muted);max-width:56ch}
.hero .act{margin-top:20px}
.btn-line.btn-tel,.v3-kontakt .btn-line{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:0 22px;color:var(--ink);text-decoration:none;font-size:16px}
.step.v3{gap:18px}
.step.v3 h2{max-width:22ch}
.v3 .v3-lead{font-family:var(--serif-d);font-size:clamp(19px,1.35vw,23px);line-height:1.38;max-width:28em}
.v3-rows{list-style:none;margin:0;padding:0;max-width:34em;border-top:1px solid var(--rule)}
.v3-rows li{padding:12px 0;border-bottom:1px solid var(--rule);font-size:clamp(16.5px,1.1vw,18.5px);line-height:1.45}
.v3-rows b{font-family:var(--sans);font-weight:650;font-size:.96em;letter-spacing:-.005em}
.row-all{display:block;max-width:34em;padding:14px 0;border-bottom:1px solid var(--rule-2);font:600 17px/1.3 var(--sans);color:var(--ink);text-decoration:none}
.row-all:hover{border-bottom-color:var(--ink)}
.v3-zovut .row-all{margin-top:-18px}
figure.q{display:block;margin:0;padding:0;border:0;max-width:30em}
.v3-pusk .mcn-ax text{font-size:19px}
.v3-pusk .mcn-ax .mcn-al{font-size:21px;fill:var(--ink-2)}
.q-t{margin:0;font-family:var(--serif);font-size:clamp(19px,1.4vw,24px);line-height:1.4;color:var(--ink)}
.q-big{display:block;margin-bottom:.12em;font:800 clamp(64px,6.6vw,124px)/.9 var(--sans);letter-spacing:-.05em}
.q-n{font-family:var(--sans);font-size:.58em;line-height:0;vertical-align:super;margin-left:.08em}
.q-n a{color:inherit;text-decoration:none;padding:0 .15em}
.q-s{margin-top:6px;font:400 13.5px/1.45 var(--sans);color:var(--muted)}
.v3-pusk .mcn{margin:4px 0 0}
.step .v3-back{font-size:clamp(16px,1.1vw,18px);color:var(--muted)}
.v3-lyudi .roles{max-width:34em}
.v3-kak{display:flex;flex-direction:column;gap:14px;margin-top:18px}
.kak3{list-style:none;margin:0;padding:0;counter-reset:k;max-width:32em}
.kak3 li{position:relative;padding:10px 0 10px 44px;border-top:1px solid var(--rule);font-size:clamp(16.5px,1.1vw,18.5px);line-height:1.45;counter-increment:k}
.kak3 li::before{content:counter(k);position:absolute;left:0;top:8px;width:28px;height:28px;border:1px solid var(--ink);font:700 15px/26px var(--sans);text-align:center}
.kak3 b{font-family:var(--sans);font-weight:650;font-size:.96em}
.v3-kontakt .act{margin-top:6px}
.v3-kontakt .v3-geo{color:var(--ink-2)}
.foot-v3 .stamp3{font:600 15px/1.6 var(--sans);color:var(--ink)}
.foot-v3 .stamp3 a{color:inherit;text-decoration:none}
.foot-v3 .stamp3 i,.foot-v3 .foot-nav i{font-style:normal;color:var(--muted)}
.foot-v3 .kpd{margin:12px 0 0;font-size:14px;font-weight:400;color:var(--ink-2)}
.foot-v3 .foot-nav a{color:inherit}
.sm-n{display:none}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .sm-d{display:none}:root:not([data-theme="light"]) .sm-n{display:inline}}
:root[data-theme="dark"] .sm-d{display:none}:root[data-theme="dark"] .sm-n{display:inline}
.al-v3{padding:clamp(28px,4vw,56px) var(--m,16px) 0}
.al-v3-in{max-width:52rem;margin:0 auto}
.al-three{font:600 clamp(18px,1.4vw,22px)/1.35 var(--sans);margin:0 0 22px}
.al-v3 .yrs-h{font-size:clamp(22px,2vw,30px);margin:0 0 12px}
@media (max-width:1199px){.step.v3-kontakt{padding-bottom:calc(var(--stage) + 32px)}.step.v3,.v3-kak{scroll-margin-top:calc(var(--head) + var(--stage))}}
@media (max-width:1199px){.hero h1.h1-v3{font-size:clamp(28px,min(5vw,calc((calc(100*var(--svh)) - var(--head) - var(--stage) - var(--dock)) * .08)),52px)}}
@media (max-width:767px){
  .hero h1.h1-v3{font-size:clamp(24px,7.3vw,36px);line-height:1.02}
  .hero .proof{font-size:14px}
  .hero .act .btn,.hero .act .btn-line,.v3-kontakt .act .btn-line{width:100%}
  .dock{grid-template-columns:1fr 1fr}
  .dock a{font-size:15px}
  .q-big{font-size:clamp(56px,17vw,88px)}
}
/* v3 чертёж и буква П (06.10.2026): пост один, состояний два, цвет один днём и ночью, акцент только у залитой П */
:root{--pf:#2E8579;--pf-2:#226A61;--pf-3:#2A7A6F}
.po-f{fill:var(--pf);stroke:var(--pf-2)}
.po-s{fill:var(--pf-2);stroke:var(--pf-2)}
.po-t{fill:var(--pf-3);stroke:var(--pf-2)}
.pe-f{fill:var(--f-top);stroke:var(--ln);stroke-width:var(--pe-w,1px)}
.pe-s{fill:var(--f-l);stroke:var(--ln);stroke-width:var(--pe-w,1px)}
.close{--pe-w:1.2px}
.post[data-s="theirs"] .pe{opacity:1}.post[data-s="theirs"] .pt,.post[data-s="pair"] .pp{opacity:0}
.post.hero-fill .pv{transition:none}
.foot-mark{color:var(--pf)}
::selection{background:var(--ink);color:var(--bg)}
:focus-visible{outline-color:var(--ink)}
.btn:hover{background:var(--ink-2)}
.link:hover,.direct a:hover,.ppl-more:hover{color:inherit}
.eyebrow{color:var(--ink-2)}
.tag.role,.tag.dimt,.tag.dimt.dk,.roles button,.picked,.cr-b.on{color:var(--ink)}
.mkr{stroke:var(--ln);stroke-width:1.2}
.dtk{stroke:var(--ln);stroke-width:1.6}
.dimk .dln{stroke:var(--ln);stroke-width:1}
.cur{stroke:var(--ln);stroke-width:1.2}.cur-d{fill:var(--ln)}
.inst circle{stroke:var(--ln)}.inst line{stroke:var(--ln)}
.fxh,.fxp{fill:none;stroke:var(--ln)}.fxf{stroke:var(--ln)}
.corp:focus-visible .hit,.corp.picked .hit{fill:none;stroke:var(--ln)}
.mcn-1{stroke:var(--pf);stroke-width:3.2}
.mcn-2,.mcn-3,.mcn-4{stroke:var(--ln);stroke-width:1.2}
.mcn-ax line{stroke:var(--ln)}
.v3-rows li,.kak3 li{transition:color .25s}
.js .v3-rows.has-now li:not(.now),.js .kak3.has-now li:not(.now){color:var(--muted)}
/* v3: цитаты, источники, подстраницы (apply_v3_quotes_pages.py, 06.10.2026) */
/* цитата: тот же шрифт, что текст, прямое начертание, на ступень крупнее; цифра — единственная ссылка */
figure.q{position:relative}
.step .q-t,.q-t{font-family:var(--serif);font-style:normal;font-weight:400;font-size:clamp(20px,1.42vw,24px);line-height:1.4}
@media (min-width:1680px){.step .q-t{font-size:25px}}
.q-n a{position:relative;display:inline-block;padding:0 .2em;color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}
.q-n a::after{content:"";position:absolute;left:-10px;right:-10px;top:-14px;bottom:-10px}
.q-n a:hover{text-decoration-thickness:2px}
.q-pop{position:absolute;left:0;top:0;z-index:6;width:max-content;max-width:min(36em,100%);padding:7px 11px 8px;background:var(--ink);color:var(--bg);font:400 13.5px/1.4 var(--sans);text-decoration:none;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .15s,visibility 0s .15s}
.q-pop.on{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .15s}
@media (prefers-reduced-motion:reduce){.q-pop,.q-pop.on{transition:none}}
/* подвал подстраниц и альбома людей */
.foot .foot-nav a,.al-foot a{color:inherit}
.foot .foot-nav i,.al-foot i{font-style:normal;color:var(--muted)}
.al-foot{margin:40px 0 0;padding:0 var(--m,16px) 0 calc(var(--m,16px) + var(--sh-bind) + var(--sh-pad));font:600 15px/1.6 var(--sans)}
/* lyudi.html: «Три буквы…» и «Где работали наши люди» по левому краю текста листов, заголовок ступенью раздела */
.al-s.al-v3{padding-top:clamp(28px,4vw,56px)}
.al-v3 .al-v3-in{max-width:none;margin:0 0 0 var(--sh-bind);padding:0 var(--sh-pad)}
.al-v3 .al-three{font-size:clamp(20px,1.6vw,26px);margin-bottom:28px}
.al-v3 h2.yrs-h{margin:0 0 14px;font:700 clamp(24px,2vw,32px)/1.15 var(--sans)!important;letter-spacing:-.02em;color:var(--ink)}
.al-v3 .yrs{max-width:60rem}
.al-v3 .yrs b{color:var(--ink);font-family:var(--sans);font-weight:650}
.al-v3 .yrs b,.al-v3 .yrs span{font-size:17px;line-height:1.45}
/* источники: приложение к отчёту под номерами */
.doc-src .src-toc{list-style:none;margin:28px 0 0;padding:0;border-top:1px solid var(--rule)}
.src-toc li{border-bottom:1px solid var(--rule)}
.src-toc a{display:flex;gap:14px;align-items:baseline;padding:9px 0;color:var(--ink);text-decoration:none;font:400 15.5px/1.4 var(--sans)}
.src-toc a:hover .src-tt{text-decoration:underline;text-underline-offset:3px}
.src-n{flex:none;display:inline-block;min-width:1.9em;font:700 15px/1.4 var(--sans);font-variant-numeric:tabular-nums;color:var(--ink)}
.src-c{position:relative;margin-top:44px;padding-top:18px;border-top:1px solid var(--rule-2)}
.src-old{position:absolute;top:0}
.src-t{display:flex;gap:14px;align-items:baseline;margin:0;font:600 clamp(19px,1.5vw,24px)/1.3 var(--sans);letter-spacing:-.01em}
.src-t .src-n{font-size:inherit}
.src-dl{display:grid;grid-template-columns:11em minmax(0,1fr);column-gap:20px;margin:18px 0 0}
.src-dl dt{padding:9px 0;border-top:1px solid var(--rule);font:500 13.5px/1.45 var(--sans);color:var(--muted)}
.src-dl dd{margin:0;padding:8px 0;border-top:1px solid var(--rule);font-size:17px;line-height:1.5;color:var(--ink)}
.src-dl dd[lang="en"]{color:var(--ink-2)}
.src-dl a{color:inherit;text-underline-offset:3px}
.src-url{overflow-wrap:anywhere;font:400 14.5px/1.5 var(--sans)!important}
.src-c .src-im{margin:18px 0 0;max-width:none}
.src-c .src-im figcaption{margin-top:10px;font:400 13px/1.4 var(--sans);color:var(--muted)}
.src-c:target{border-top-color:var(--ink)}
.src-c:target .src-t{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:6px}
.src-c:target .clip-im{box-shadow:0 0 0 3px var(--ink)}
@media (max-width:767px){.src-dl{display:block}.src-dl dt{padding:10px 0 0}.src-dl dd{border-top:0;padding:2px 0 8px}}
/* продукты: подбор первого шага и «Как работаем» в колонке страницы */
.doc-pp .pp-self{width:auto;margin-top:40px;padding:28px 0 8px;border-top:1px solid var(--rule-2);border-bottom:1px solid var(--rule-2)}
.doc-pp .pp-self h2{margin:0;font-size:clamp(26px,2.4vw,40px);line-height:1.05;letter-spacing:-.03em}
.doc-pp .pp-self .intro{max-width:36em;font-size:17px}
.doc-pp .pp-self .res-h{max-width:none;font-size:clamp(26px,2.2vw,36px)}
.doc-pp .pp-self .res p:not(.res-k){max-width:36em}
.doc-pp .pp-self .res .go{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;margin-top:20px}
.doc-pp .pp-self .res .go .btn{margin-top:0}
.doc-pp .pp-how{margin-top:72px;padding-top:28px;border-top:1px solid var(--rule-2)}
.doc-pp .pp-how h2{margin:0;font-size:clamp(26px,2.4vw,40px);line-height:1.05;letter-spacing:-.03em}
.doc-pp .pp-how h3{margin:44px 0 0;font-size:clamp(20px,1.6vw,26px);line-height:1.2;letter-spacing:-.015em}
.doc-pp .pp-how>p{margin-top:16px}
.doc-pp .pp-how .rules{margin-top:16px}
.pp-self .sit input:checked+label .sit-h,.pp-self .opt input:checked~span:last-child,.doc-pp .pp-self .res-h{color:var(--ink)}
.pp-self .sit input:checked+label .mk,.pp-self .opt input:checked+.mk{background:var(--ink)}
.pp-self .sit-b .runin.need b,.pp-self .sit-b .runin.start b,.doc-pp .pp-how .rules li::before{color:var(--muted)}
.pp-self input:focus-visible+label,.pp-self input:focus-visible+.mk+span{outline-color:var(--ink)}
.doc-pp .pp-how ul.rules,.doc-pp .pp-how ul.stg,.doc-pp .pp-self ul{list-style:none;padding-left:0}
.doc-pp .pp-how .rules li{color:var(--ink)}
.kak5{list-style:none;margin:20px 0 0;padding:0;counter-reset:k;max-width:40em}
.kak5 li{position:relative;padding:12px 0 12px 44px;border-top:1px solid var(--rule);font-size:17px;line-height:1.5;counter-increment:k}
.kak5 li:last-child{border-bottom:1px solid var(--rule)}
.kak5 li::before{content:counter(k);position:absolute;left:0;top:11px;width:28px;height:28px;border:1px solid var(--ink);font:700 15px/26px var(--sans);text-align:center}
.kak5 b{font-family:var(--sans);font-weight:650;font-size:.96em}
.doc-pp .pp-how .stg{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:16px}
.doc-pp .pp-how .stg h4{margin:0 0 8px;font:650 17px/1.25 var(--sans)}
.doc-pp .pp-how .stg li:nth-child(n){border-top:0;border-right:1px solid var(--rule);padding:16px 20px 6px 0}
.doc-pp .pp-how .stg li:nth-child(n+2){padding-left:20px}
.doc-pp .pp-how .stg li:last-child{border-right:0}
@media (max-width:767px){.doc-pp .pp-how .stg{grid-template-columns:1fr}.doc-pp .pp-how .stg li:nth-child(n),.doc-pp .pp-how .stg li:nth-child(n+2){border-right:0;padding:14px 0 4px}.doc-pp .pp-how .stg li:nth-child(n+2){border-top:1px solid var(--rule)}}
/* v3 решения (06.10.2026): акцент только у залитой П, istochniki подряд, lyudi по ширине листов */
:root{--petrol:var(--ink);--petrol-2:var(--ink-2);--petrol-tx:var(--ink);--copper:var(--ln);--copper-tx:var(--ink-2);--btn-h:var(--ink-2);--sel:rgba(43,47,51,.06);--sh-acc:var(--sh-ink)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--petrol:var(--ink);--petrol-2:var(--ink-2);--petrol-tx:var(--ink);--copper:var(--ln);--copper-tx:var(--ink-2);--btn-h:var(--ink-2);--sel:rgba(236,233,225,.08);--sh-acc:var(--sh-ink)}}
:root[data-theme="dark"]{--petrol:var(--ink);--petrol-2:var(--ink-2);--petrol-tx:var(--ink);--copper:var(--ln);--copper-tx:var(--ink-2);--btn-h:var(--ink-2);--sel:rgba(236,233,225,.08);--sh-acc:var(--sh-ink)}
.src-c:target .clip-im,.src-c:target .clip-q figcaption{box-shadow:0 0 0 3px var(--ink)}
.src-ru{font:400 13px/1.4 var(--sans);color:var(--muted);white-space:nowrap}
.al-v3 .yrs{max-width:none}
.al-v3 .yrs-w li{grid-template-columns:minmax(10em,30%) 1fr}
@media (max-width:479px){.al-v3 .yrs-w li{grid-template-columns:1fr}}
.foot-v3 .foot-req{margin-top:12px;font:400 12.5px/1.55 var(--sans);color:var(--muted)}
.foot-v3 .foot-req a{color:inherit;text-underline-offset:2px}
.foot-v3 .foot-req i{font-style:normal}
@media (max-width:767px){.foot-v3 .foot-req a{display:inline-block;padding:11px 0;margin:-11px 0}}

/* масштаб ответственности куратора: вложенные размерные отрезки от общего начала (06.10.2026) */
.rs{position:relative;max-width:40rem;margin-top:30px;padding-right:9px;font:500 15px/1.3 var(--sans);color:var(--ink)}
.rs-w{display:block;border-left:1px solid currentColor}
.rs-r{display:block;padding-top:14px}
.rs-r.r1{padding-top:0}
.rs-t{display:block;padding:0 0 4px 14px}
.rs-t b{font-weight:700}
.rs-r.r1 .rs-l{width:24%}.rs-r.r2 .rs-l{width:48%}.rs-r.r3 .rs-l{width:74%}.rs-r.r4 .rs-l{width:100%}
.rs-l{display:block;position:relative;height:15px;box-sizing:border-box;border-right:1px solid currentColor;
  background:linear-gradient(currentColor,currentColor) 0 7px/100% 1px no-repeat}
.rs-l::before,.rs-l::after{content:"";position:absolute;top:6.5px;width:15px;height:2px;background:currentColor;transform:rotate(-45deg)}
.rs-l::before{left:-7.5px}
.rs-l::after{right:-8px}
.rs-r.r4 .rs-l{color:var(--ink);border-right-width:2px;background-size:100% 2px;background-position:0 6.5px}
.rs-r.r4 .rs-l::after{right:-8.5px}
.sh-a>.rs{max-inline-size:var(--sh-measure)}
.sh-a .rs{margin-top:1.4em;color:var(--sh-ink)}
.sh-a .rs-r.r4 .rs-l{color:var(--ink)}
@media (max-width:599px){.rs{font-size:13.5px;line-height:1.28}.rs-r{padding-top:12px}.rs-t{padding-left:12px}}

/* v3 телефон и планшет (06.10.2026): чертёж не закреплён и ничего не перекрывает. Экран идёт так: заголовок, кадр, текст.
   Кадр — блок в потоке высотой 42 % экрана, в него скрипт ставит сцену. Без скрипта кадров и сцены на узком экране нет */
.mfr{display:none}
@media (max-width:1199px){
  :root{--stage:0px;--mfr:calc(42*var(--svh))}
  .scene{display:block}
  .flow{padding-top:0}
  .scene>.stage{display:none}
  .mfr{display:block;position:relative;height:var(--mfr);margin:20px 0 24px;overflow:hidden;background:var(--bg)}
  .mfr>.stage{position:absolute;left:0;top:0;width:100%;height:100%;z-index:1}
  .mfr .leader{display:none}
  .mfr-frz{position:absolute;left:0;top:0;width:100%;height:100%;display:block}
  .hero{gap:10px}
  .hero .mfr{margin:14px 0 0}
  .step.v3{min-height:0}
  .step.v3-kontakt{padding-bottom:40px}
  .step.v3,.v3-kak{scroll-margin-top:calc(var(--head) + 8px)}
  .v3-pusk .q-fact+.mfr{margin-top:16px}
}
/* телефон в альбомной: шапка не выше 56 px */
@media (max-width:1199px) and (max-height:500px){:root{--head:56px}}
/* v3 правки раунда 1 (06.10.2026) */
/* чертёж: без кружков осей и букв корпусов, без уголков линии среза и без точки выноски в углу сцены */
.axc,.axt{display:none}
.cutln{display:none!important}
#ld-c[cx="0"][cy="0"],#ld-l[x1="0"][x2="0"]{visibility:hidden}
/* подвал: знак водяным знаком цветом текста, основная надпись графами, залитая П в правой графе */
.foot-mark{color:var(--ink);opacity:.08}
.foot-v3 .stamp3{display:grid;grid-template-columns:minmax(0,auto) minmax(0,1fr) 72px;gap:1px;margin:0;background:var(--ln);border:1px solid var(--ln);font:600 14.5px/1.35 var(--sans)}
.foot-v3 .stamp3>i{display:none}
.foot-v3 .stamp3>*{display:block;min-width:0;padding:9px 14px;background:var(--bg-2);overflow-wrap:anywhere}
.foot-v3 .stamp3>:nth-child(1){grid-column:1/3;grid-row:1}
.foot-v3 .stamp3>:nth-child(3){grid-column:1;grid-row:2}
.foot-v3 .stamp3>:nth-child(9){grid-column:2;grid-row:2;font-weight:500;color:var(--ink-2)}
.foot-v3 .stamp3>:nth-child(5){grid-column:1;grid-row:3}
.foot-v3 .stamp3>:nth-child(7){grid-column:2;grid-row:3}
.foot-v3 .stamp3>.st-p{grid-column:3;grid-row:1/4;display:flex;align-items:center;justify-content:center}
.st-p svg{display:block;width:24px;height:auto;fill:var(--pf)}
@media (max-width:767px){
  .foot-v3 .stamp3{grid-template-columns:minmax(0,1fr) 56px}
  .foot-v3 .stamp3>:nth-child(n){grid-column:1;grid-row:auto}
  .foot-v3 .stamp3>.st-p{grid-column:2;grid-row:1/6}
}
/* первый экран и ритм экранов на широком */
.hero .h1-sub{font-weight:500;font-size:clamp(17px,min(1.4vw,2.6vh),24px)}
.v3-rows b,.kak3 b{font-family:var(--serif);font-weight:600;font-size:1em;letter-spacing:0}
@media (min-width:1200px){
  .hero{justify-content:center}
  .hero .hero-foot{margin-top:8px}
  .step.v3+.step.v3{margin-top:16vh}
  .v3-lyudi .roles{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
}
/* шапка: на телефоне и планшете один состав, звонок в нижней панели */
@media (max-width:1199px){.head-v3 .head-tel{display:none!important}.mfr .tags{display:none}}
/* телефон: чертёж после текста экрана, не выше 38 % экрана, на контакте без чертежа */
@media (max-width:767px){
  :root{--mfr:calc(38*var(--svh))}
  .step.v3>.mfr{order:9;margin:24px 0 0}
  .v3-kontakt .mfr{display:none!important}
}
/* телефон в альбомной: чертёж только у большой П, нижней панели нет, телефон в шапке */
@media (max-width:1199px) and (max-height:500px){
  :root{--dock:0px}
  .dock{display:none!important}
  .head-v3 .head-tel{display:inline-flex!important}
  .step.v3 .mfr{display:none!important}
}
/* lyudi: видимый заголовок и телефон в верхней строке */
.al-h1{margin:0 0 16px;font:700 clamp(34px,4vw,56px)/1.02 var(--sans);letter-spacing:-.025em;color:var(--ink)}
.al-bar .al-tel{margin-left:auto;border-left:var(--sh-thin) solid var(--sh-ink)}
.al-bar .al-tel+.sh-k{margin-left:0}
.al-tel .s{display:none}
@media (max-width:479px){.al-tel .f{display:none}.al-tel .s{display:inline}.al-bar a,.al-bar button{padding:0 10px;font-size:15px}.al-bar .al-tel{flex:1;justify-content:center;border-left:0}}
/* v3 правки раунда 2 (06.10.2026) */
/* типографика главной: четыре ступени. Дисплей — заголовки и «64 %», лид — подзаголовок, вводки и цитаты антиквой,
   текст — строки, шаги и наши абзацы антиквой, подпись — 14 px гротеском */
:root{--fs-d:clamp(34px,min(3.75vw,7.4vh),74px);--fs-l:clamp(19px,1.42vw,25px);--fs-t:clamp(17px,1.12vw,19.5px);--fs-c:14px}
.flow .hero h1.h1-v3,.flow .step.v3 h2,.flow .q-big{font-size:var(--fs-d)}
.flow .step.v3 h2{line-height:.98;letter-spacing:-.04em}
.flow .q-big{line-height:.9;margin-bottom:.14em}
.flow .hero .h1-sub,.flow .v3 .v3-lead,.flow .step .q-t{font-family:var(--serif);font-weight:400;font-size:var(--fs-l);line-height:1.38;letter-spacing:0}
.flow .v3-rows li,.flow .kak3 li,.flow .step.v3 p.our,.flow .step.v3 .v3-back,.flow .v3-kontakt p:not(.act){font-family:var(--serif);font-size:var(--fs-t);line-height:1.5}
.flow .row-all{font-size:var(--fs-t)}
.flow .hero .eyebrow,.flow .hero .proof,.flow .q-s,.tag{font-size:var(--fs-c)}
.flow .hero .eyebrow{font-weight:600}
.flow .q-s{font-family:var(--sans)}
@media (max-width:1199px){:root{--fs-d:clamp(28px,5vw,52px);--fs-l:19px;--fs-t:17px;--fs-c:14px}.flow .hero h1.h1-v3{font-size:clamp(28px,min(5vw,calc((calc(100*var(--svh)) - var(--head) - var(--stage) - var(--dock)) * .08)),52px)}}
@media (max-width:767px){:root{--fs-d:clamp(24px,7.3vw,36px);--fs-l:18.5px;--fs-t:17px;--fs-c:13.5px}.flow .hero h1.h1-v3{font-size:var(--fs-d)}.flow .step.v3 h2{max-width:none}}
/* контакт на широком: экран во всю высоту окна, фабрика целиком над подвалом */
@media (min-width:1200px){.step.v3-kontakt{min-height:calc(calc(100*var(--svh)) - var(--head))}}
.stage{transition:opacity .12s linear}
/* подвал: без водяного знака, штамп справа внизу, почта в графе не рвётся */
.foot-v3 .foot-mark{display:none}
.foot-v3 .stamp3>a[href^="mailto"]{white-space:nowrap;overflow-wrap:normal}
@media (min-width:768px){.foot-v3 .foot-t>.stamp3{width:max-content;max-width:100%}}
@media (min-width:1100px){
  .foot-v3{padding-top:clamp(32px,3vw,48px)}
  .foot-v3 .foot-t{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:clamp(32px,4vw,72px);align-items:end}
  .foot-v3 .foot-t>*{grid-column:1}
  .foot-v3 .foot-t>.stamp3{grid-column:2;grid-row:1/span 3;align-self:end}
  .foot-v3 .foot-t>.kpd{margin-top:0}
}
/* телефон: под подвалом нет полосы под скрытую нижнюю панель, между кнопками контакта и подвалом без лишнего зазора */
@media (max-width:1199px){html.js:not(.dock-on) body{padding-bottom:0}.foot-v3{margin-top:0}.step.v3-kontakt{padding-bottom:32px}}
/* роли на телефоне столбиком, от 600 px двумя ровными колонками */
@media (max-width:599px){.v3-lyudi .roles{display:grid;grid-template-columns:minmax(0,1fr)}}
@media (min-width:600px) and (max-width:1199px){.v3-lyudi .roles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:24px}}
/* первый экран на широком: у кромки шторки мягкий переход в фон, П стоит на том же фоне, что фабрика ниже */
@media (min-width:1200px){.in-hero .curtain::after{content:"";position:absolute;top:0;bottom:0;left:100%;width:clamp(80px,9vw,160px);background:linear-gradient(90deg,var(--bg),rgba(244,243,240,0));background:linear-gradient(90deg,var(--bg) 0%,transparent 100%)}}
/* телефон в альбомной: текст слева, кадр чертежа справа на всю высоту окна */
@media (max-width:1199px) and (max-height:500px) and (orientation:landscape){
  .hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.78fr);column-gap:28px;row-gap:0;align-content:start;padding-top:10px;padding-bottom:16px}
  .hero>.h1-w,.hero>.hero-foot{grid-column:1}
  .hero>.mfr{display:block!important;grid-column:2;grid-row:1/span 2;height:calc(100*var(--svh) - var(--head) - 20px);margin:0}
  .hero .eyebrow{margin-bottom:6px}
  :root{--fs-d:clamp(22px,3.3vw,30px)}
  .flow .hero h1.h1-v3{font-size:var(--fs-d)}
  .flow .hero .h1-sub{font-size:15.5px;line-height:1.38;margin-top:8px}
  .hero .proof{display:none}
  .hero .act{margin-top:12px}
  .hero .act{display:flex;flex-wrap:nowrap;gap:10px}
  .hero .act .btn,.hero .act .btn-line{width:auto;min-height:44px;padding:0 14px;font-size:15px;white-space:nowrap}
  .step.v3{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.78fr);column-gap:28px;row-gap:0;align-content:start;padding-top:12px}
  .step.v3>*{grid-column:1;margin-top:0;margin-bottom:16px}
  .step.v3>.mfr,.v3-kontakt .mfr{display:block!important;grid-column:2;grid-row:1/span 12;position:sticky;top:calc(var(--head) + 10px);order:0;
    height:calc(100*var(--svh) - var(--head) - 20px);margin:0}
}
/* v3 доводка по раунду 3 (apply_v3_polish.py, 06.10.2026) */
/* 2. шапка: кнопка видна сразу, группа справа стоит по правому краю сетки */
html.in-hero .btn-head{opacity:1;visibility:visible}
/* 3. H1: «на горно-обогатительные» одной группой. На узком экране группа рвётся только после дефиса, «на» остаётся с «горно-» */
@media (max-width:519px){.hero h1.h1-v3 .h1-g{white-space:normal}}
/* 4. длинные H2 на широком на ступень меньше, ровные строки */
@media (min-width:1200px){.flow .step.v3 h2.h2-long{font-size:min(calc(var(--fs-d)*.7),38px,calc(2.1vw + 4px));line-height:1.04;max-width:none;margin-right:-32px;text-wrap:balance}}
/* 5. роли на экране «Люди» до 1199 px: простой текст второго плана, не кнопки */
@media (max-width:1199px){
  .v3-lyudi .roles{row-gap:2px}
  .v3-lyudi .roles button,.v3-lyudi .roles button:hover,.v3-lyudi .roles button.hot{min-height:0;padding:2px 0;font:400 var(--fs-t)/1.45 var(--serif);letter-spacing:0;color:var(--muted);text-decoration:none;cursor:default}
}
/* 6. надстрочная цифра: без подчёркивания, зона касания 44×44, подчёркивание только под курсором и в фокусе */
.q-n a{text-decoration:none;color:inherit}
.q-n a::after{left:50%;top:50%;right:auto;bottom:auto;width:44px;height:44px;transform:translate(-50%,-50%)}
.q-n a:hover,.q-n a:focus-visible{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}
/* 7. строка доказательства читается как довод, а не сноска */
.flow .hero .proof{font-size:clamp(15px,calc(.6vw + 7px),18px);line-height:1.45;color:var(--ink-2)}
/* 8. контакт на широком: экран контакта высотой окна без подвала, подвал со штампом сразу под кнопками */
@media (min-width:1200px){
  html{scroll-padding-top:max(96px,calc(var(--head) + 24px))}
  .foot-v3{margin-top:0}
  .step.v3-kontakt{justify-content:flex-end;padding-bottom:clamp(40px,3.6vw,64px);min-height:calc(100vh - var(--head) - var(--foot-h,200px));min-height:calc(calc(100*var(--svh)) - var(--head) - var(--foot-h,200px))}
}
/* 9. «Пуск»: фабрика в полутон, пока идут кривые */
@media (min-width:1200px){.stage>.snap,.stage>.view{transition:opacity .5s}.stage.half>.snap,.stage.half>.view{opacity:.35}}
@media (min-width:1200px) and (prefers-reduced-motion:reduce){.stage>.snap,.stage>.view{transition:none}}
/* мелочь: ссылки подвала, путей и подвала подстраниц — тонкая линия цвета линий чертежа, под курсором цветом текста */
.foot-v3 .foot-nav a,.foot-v3 .foot-req a,.foot .foot-nav a,.foot a.fl,.al-foot a,.crumbs a{text-decoration-line:underline;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:var(--rule-2)}
.foot-v3 .foot-nav a:hover,.foot-v3 .foot-req a:hover,.foot .foot-nav a:hover,.foot a.fl:hover,.al-foot a:hover,.crumbs a:hover{text-decoration-color:currentColor}
/* мелочь: кадр чертежа до 1199 px без жёсткого прямоугольника, края уходят в фон */
@media (max-width:1199px){
  .mfr{background:transparent;
    -webkit-mask-image:linear-gradient(90deg,transparent,#000 36px,#000 calc(100% - 36px),transparent),linear-gradient(180deg,transparent,#000 28px,#000 calc(100% - 36px),transparent);
    -webkit-mask-composite:source-in;
    mask-image:linear-gradient(90deg,transparent,#000 36px,#000 calc(100% - 36px),transparent),linear-gradient(180deg,transparent,#000 28px,#000 calc(100% - 36px),transparent);
    mask-composite:intersect}
}
/* 1. телефон боком: кадр в потоке, не закреплён (relative вместо sticky: в кадре сцена стоит absolute), не выше 78 % экрана, строка доказательства на первом экране */
@media (max-width:1199px) and (max-height:500px) and (orientation:landscape){
  .hero>.mfr,.step.v3>.mfr,.v3-kontakt .mfr{position:relative;top:auto;height:min(78vh,calc(100vh - var(--head) - 20px));height:min(calc(78*var(--svh)),calc(100*var(--svh) - var(--head) - 20px))}
  .flow .hero h1.h1-v3{font-size:clamp(20px,2.9vw,25px)}
  .hero .proof{display:block;margin-top:4px}
  .flow .hero .proof{font-size:13px;line-height:1.32}
  .flow .hero .h1-sub{font-size:14px;line-height:1.32;margin-top:6px;max-width:none}
  .hero h1.h1-v3{max-width:none}
  .hero .act{margin-top:10px}
}
/* переключатель RU/EN (build_en.py, 06.10.2026) */
.nav .lang{color:var(--muted);font-variant-numeric:tabular-nums}
.nav .lang:hover,.nav .lang:focus-visible{color:var(--ink)}
@media (max-width:1199px){.nav .lang{margin-top:8px;font-size:20px;font-weight:600;letter-spacing:0}}
