/* ============================================================
   shoner-metall.ru — единственный файл стилей.
   Дизайн-система перенесена с shoner-otval.ru
   (тема OpenCart oct_showcase). Подробности — README, раздел 5.1.
   Правки цветов делать только в блоке :root.
   ============================================================ */

/* --------------------- ШРИФТЫ (локально) --------------------- */
@font-face{font-family:'NotoSans';src:url('../fonts/NotoSans-Regular.woff2?v=2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'NotoSans';src:url('../fonts/NotoSans-Bold.woff2?v=2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
/* Montserrat (fonts/Montserrat-*.woff2, из темы отвалов) подключается только внутри
   страниц с дизайном C — здесь не объявляем, чтобы не грузился зря. */

/* --------------------- ТОКЕНЫ --------------------- */
:root{
  --dark:#3F4546;        /* шапка, подвал */
  --dark-2:#333635;
  --accent:#F0BF64;      /* жёлтый логотипа */
  --y:#F1B82D;           /* жёлтый подвала темы отвалов */
  --cta:#DD821F;         /* основная кнопка */
  --cta-hover:#F5A623;
  --beige:#E4D9C3;
  --beige-l:#EAE2CE;
  --text:#1C1C28;
  --muted:#5C6566;
  --line:#E2E4E4;
  --bg-soft:#F4F5F5;
  --shadow:0 2px 4px rgba(40,41,61,.04),0 8px 16px rgba(96,97,112,.16);
  --r:4px;
}

/* --------------------- БАЗА --------------------- */
*,*::before,*::after{box-sizing:border-box}
html{font-size:16px;scroll-behavior:smooth;-webkit-text-size-adjust:100%}
/* якорные секции не прячутся под липкими шапками */
:root{--topbar:36px}
[id]{scroll-margin-top:158px}
/* фирменное выделение текста и видимый фокус с клавиатуры */
::selection{background:var(--y);color:#1C1C28}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible{
  outline:2px solid var(--y);outline-offset:2px}
/* overflow-x: clip, а не hidden. hidden превращает элемент в область
   прокрутки, и любой position:sticky внутри перестаёт липнуть — именно
   из-за этого верхняя полоска и меню уезжали вверх вместе со страницей.
   clip так же обрезает лишнее по горизонтали, но области прокрутки
   не создаёт. Для старых браузеров запасной вариант ниже. */
body{margin:0;font-family:NotoSans,sans-serif;font-weight:400;line-height:1.55;color:var(--text);background:#fff;overflow-x:clip}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
ul{margin:0;padding:0;list-style:none}
h1,h2,h3,h4{margin:0;line-height:1.18;font-weight:700;text-wrap:balance}
h1{font-size:2.75rem}
h2{font-size:2rem}
h3{font-size:1.125rem}
p{margin:0}
table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums}
.container{--pad:1rem;width:100%;max-width:1320px;margin:0 auto;padding:0 var(--pad)}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}

/* --------------------- КНОПКИ --------------------- */
.btn{display:inline-flex;align-items:center;justify-content:center;font-size:.875rem;font-weight:500;
  padding:.985rem 2rem;border:1px solid transparent;border-radius:var(--r);white-space:nowrap;cursor:pointer;
  font-family:inherit;transition:background .3s ease-out,color .3s ease-out,transform .2s ease-out;
  filter:drop-shadow(0 0 1px rgba(40,41,61,.08)) drop-shadow(0 .5px 2px rgba(96,97,112,.16))}
.btn:hover{transform:translateY(-2px)}
.btn:active{transform:none}
.btn-primary{background:var(--cta);color:#fff}
.btn-primary:hover{background:var(--cta-hover)}
.btn-ghost{background:transparent;color:var(--accent);border-color:var(--accent)}
.btn-ghost:hover{background:var(--accent);color:var(--dark)}
.btn-dark{background:var(--dark);color:#fff}
.btn-dark:hover{background:var(--dark-2)}
.btn-lg{padding:1.15rem 2.5rem;font-size:1rem}

/* ============================================================
   BLOCK: header — два яруса, как на shoner-otval.ru
   ============================================================ */
.topline{background:var(--dark-2);color:rgba(255,255,255,.75);font-size:.8125rem}
.topline .container{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;
  min-height:38px;flex-wrap:wrap}
.topline-left{display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap}
.topline a:hover{color:var(--accent)}
.topline b{color:var(--accent);font-weight:400}

.hdr{background:var(--dark);position:sticky;top:0;z-index:60;box-shadow:0 2px 12px rgba(0,0,0,.18)}
.hdr-in{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;min-height:96px;padding-top:.75rem;padding-bottom:.75rem}
.hdr-brand{display:flex;align-items:center;gap:.875rem;flex-shrink:0}
.hdr-brand img{height:64px;width:auto}
.hdr-brand-text{display:flex;flex-direction:column;line-height:1.25}
.hdr-brand-text b{color:#fff;font-size:1.0625rem;letter-spacing:.02em;white-space:nowrap}
.hdr-brand-text span{color:var(--accent);font-size:.75rem;white-space:nowrap}
.hdr-nav{display:flex;align-items:center;gap:1.5rem;font-size:.9375rem;font-weight:600;flex-wrap:nowrap}
.hdr-nav a{white-space:nowrap}
.hdr-nav a{color:#fff;padding:.25rem 0;border-bottom:2px solid transparent}
.hdr-nav a:hover{color:var(--accent);border-bottom-color:var(--accent)}
.hdr-right{display:flex;align-items:center;gap:1.25rem;flex-shrink:0}
.hdr-phone{display:flex;flex-direction:column;align-items:flex-end;line-height:1.2}
.hdr-phone a{color:var(--accent);font-weight:700;font-size:1.25rem;white-space:nowrap}
.hdr-phone span{color:rgba(255,255,255,.6);font-size:.6875rem;white-space:nowrap}
.hdr-burger{display:none;background:none;border:0;padding:.5rem;cursor:pointer}
.hdr-burger span{display:block;width:26px;height:2px;background:var(--accent);margin:5px 0;transition:transform .2s}

/* бургер включается раньше (1400), чтобы пункты меню не переносились на вторую строку */
@media(max-width:1400px){.hdr-nav{display:none}.hdr-burger{display:block}}
@media(max-width:900px){
  .topline .container{justify-content:center;text-align:center;font-size:.75rem;padding-top:.375rem;padding-bottom:.375rem}
  .topline-left{justify-content:center;gap:.75rem}
  .hdr-in{min-height:76px}
  .hdr-brand img{height:48px}
}
@media(max-width:600px){
  .topline{display:none}
  .hdr-phone a{font-size:1.0625rem}
  .hdr-phone span{display:none}
  .hdr-brand-text{display:none}
  .hdr .btn{display:none}
}

/* мобильное меню */
.mmenu{position:fixed;inset:0;background:rgba(28,28,40,.6);z-index:80;display:none}
.mmenu.is-open{display:block}
.mmenu-panel{position:absolute;top:0;right:0;bottom:0;width:min(86vw,340px);background:var(--dark);
  padding:1.5rem;overflow:auto;display:flex;flex-direction:column;gap:.25rem}
.mmenu-panel a{color:#fff;font-size:1rem;font-weight:600;padding:.75rem 0;border-bottom:1px solid rgba(255,255,255,.08)}
.mmenu-panel a:hover{color:var(--accent)}
.mmenu-close{align-self:flex-end;background:none;border:0;color:var(--accent);font-size:1.75rem;cursor:pointer;line-height:1}

/* ============================================================
   СЕКЦИИ
   ============================================================ */
.section{padding:72px 0}
.section-soft{background:var(--bg-soft)}
.section-beige{background:var(--beige-l)}
.section-dark{background:var(--dark);color:#fff}
.section-head{max-width:56rem;margin-bottom:2.5rem}
.section-head h2{margin-bottom:.75rem}
.section-head p{color:var(--muted);font-size:1.0625rem}
.section-dark .section-head p{color:rgba(255,255,255,.75)}
.eyebrow{display:inline-block;font-size:.75rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  color:var(--cta);margin-bottom:1rem}
.section-dark .eyebrow{color:var(--accent)}
.lead{font-size:1.0625rem;color:var(--muted);margin-top:1.25rem;max-width:44em}
.hero-actions{display:flex;gap:1rem;flex-wrap:wrap;margin-top:2rem;align-items:center}
.hero-note{font-size:.8125rem;color:var(--muted)}
@media(max-width:900px){.section{padding:48px 0}h1{font-size:1.875rem}h2{font-size:1.5rem}}
@media(max-width:420px){h1{font-size:1.625rem}}

/* --------------------- ПЕРВЫЙ ЭКРАН: 3 варианта --------------------- */
.pane{display:none}
.pane.is-active{display:block}

/* В1 — прайс на первом экране */
.v1{background:var(--dark);color:#fff;padding:64px 0 0}
.v1 .lead{color:rgba(255,255,255,.75)}
.v1-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:3rem;align-items:start}
.v1 h1 em{font-style:normal;color:var(--accent)}
.v1-facts{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem 2rem;margin-top:2.5rem}
.v1-fact b{display:block;font-size:1.5rem;color:var(--accent);line-height:1.2;white-space:nowrap}
.v1-fact span{font-size:.8125rem;color:rgba(255,255,255,.7)}
.v1-card{background:#fff;color:var(--text);border-radius:var(--r);padding:1.75rem;box-shadow:var(--shadow)}
.v1-card h2{font-size:1.125rem;margin-bottom:.25rem}
.v1-card .sub{font-size:.75rem;color:var(--muted);margin-bottom:1.25rem}
.price-row{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;
  padding:.625rem 0;border-bottom:1px solid var(--line);font-size:.875rem}
.price-row:last-of-type{border-bottom:0}
.price-row b{font-weight:700;white-space:nowrap}
.v1-card .btn{width:100%;margin-top:1.25rem}
.v1-strip{background:var(--beige);color:var(--text);margin-top:56px;padding:1rem 0;font-size:.875rem}
.v1-strip .container{display:flex;gap:2rem;flex-wrap:wrap;justify-content:space-between}
@media(max-width:900px){.v1-grid{grid-template-columns:1fr;gap:2rem}.v1-facts{gap:1.25rem}
  .v1-fact b{font-size:1.125rem}}

/* В2 — фото цеха */
.v2-stage{position:relative;min-height:540px;display:flex;align-items:center;
  background:#2c3132 url('../img/hero.jpg') center/cover no-repeat}
.v2-stage::after{content:'';position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(31,35,36,.94) 0%,rgba(31,35,36,.82) 46%,rgba(31,35,36,.25) 100%)}
.v2-ph{position:absolute;right:1.5rem;bottom:1rem;z-index:3;font-size:.6875rem;color:rgba(255,255,255,.45)}
.v2-in{position:relative;z-index:2;color:#fff;padding:72px 0;max-width:44rem}
.v2-in h1{font-size:3rem}
.v2-in h1 em{font-style:normal;color:var(--accent)}
.v2-in .lead{color:rgba(255,255,255,.8)}
.v2-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.75rem}
.v2-tags li{border:1px solid rgba(240,191,100,.5);color:var(--accent);border-radius:var(--r);
  padding:.375rem .75rem;font-size:.8125rem}
.v2-bar{background:var(--beige);padding:1.5rem 0}
.v2-bar .container{display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem}
.v2-bar b{display:block;font-size:1.375rem;line-height:1.2;white-space:nowrap}
.v2-bar span{font-size:.8125rem;color:var(--muted)}
@media(max-width:900px){.v2-in h1{font-size:2rem}.v2-stage{min-height:auto}
  .v2-bar .container{grid-template-columns:repeat(2,1fr)}.v2-bar b{font-size:1.125rem}}

/* В3 — услуги плиткой */
.v3{padding:64px 0 0;background:#fff}
.v3-head{max-width:52rem}
.v3 h1 em{font-style:normal;background:linear-gradient(transparent 62%,var(--accent) 62%)}
.v3-bar{margin-top:56px;background:var(--beige-l);padding:1.5rem 0}
.v3-bar .container{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;flex-wrap:wrap}
.v3-bar p{font-size:.9375rem}

/* --------------------- ПЛИТКИ УСЛУГ --------------------- */
.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-top:2.5rem}
.tile{border:1px solid var(--line);border-radius:var(--r);padding:1.5rem;background:#fff;display:block;
  transition:box-shadow .3s ease-out,border-color .3s ease-out,transform .3s ease-out}
.tile:hover{box-shadow:var(--shadow);border-color:var(--beige);transform:translateY(-3px)}
.tile h3{margin-bottom:.5rem}
.tile p{font-size:.875rem;color:var(--muted)}
.tile b{display:block;margin-top:.875rem;font-size:.9375rem;color:var(--cta)}
.tile-more{display:inline-block;margin-top:.625rem;font-size:.8125rem;color:var(--muted);border-bottom:1px dashed var(--line)}
@media(max-width:900px){.tiles{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.tiles{grid-template-columns:1fr}}

/* --------------------- ЦИФРЫ / ПРЕИМУЩЕСТВА --------------------- */
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}
.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:2.5rem}
@media(max-width:900px){.grid-4{grid-template-columns:repeat(2,1fr)}.grid-3,.grid-2{grid-template-columns:1fr}}
@media(max-width:480px){.grid-4{grid-template-columns:1fr}}

.num b{display:block;font-size:2rem;color:var(--cta);line-height:1.15;white-space:nowrap}
@media(max-width:900px){.num b{font-size:1.5rem}}
.section-dark .num b{color:var(--accent)}
.num span{font-size:.9375rem;color:var(--muted)}
.section-dark .num span{color:rgba(255,255,255,.75)}

.adv{border-left:3px solid var(--accent);padding:.25rem 0 .25rem 1.25rem}
.adv h3{margin-bottom:.5rem}
.adv p{font-size:.9375rem;color:var(--muted)}
.section-dark .adv p{color:rgba(255,255,255,.75)}

/* --------------------- ТАБЛИЦЫ ЦЕН --------------------- */
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:#fff}
.table-wrap table{min-width:560px;font-size:.9375rem}
th,td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}
thead th{background:var(--dark);color:#fff;font-size:.8125rem;text-transform:uppercase;letter-spacing:.04em;
  position:sticky;top:0}
tbody tr:nth-child(even){background:var(--bg-soft)}
tbody tr:hover{background:var(--beige-l)}
tbody td:first-child{font-weight:700}
.table-note{margin-top:1rem;font-size:.875rem;color:var(--muted)}
.table-note strong{color:var(--text)}

/* --------------------- БЛОК СРАВНЕНИЯ --------------------- */
.calc-compare{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;margin-top:1.75rem}
.calc-card{border-radius:var(--r);padding:1.5rem;background:#fff;border:1px solid var(--line)}
.calc-card.is-us{border-color:var(--cta);border-width:2px}
.calc-card h3{font-size:1rem;margin-bottom:1rem}
.calc-card dl{margin:0;font-size:.9375rem}
.calc-card .row{display:flex;justify-content:space-between;gap:1rem;padding:.5rem 0;border-bottom:1px dashed var(--line)}
.calc-card .row:last-child{border-bottom:0;padding-top:.875rem;font-weight:700;font-size:1.125rem}
.calc-card .row b{white-space:nowrap}
.calc-card.is-us .row:last-child b{color:var(--cta)}
@media(max-width:700px){.calc-compare{grid-template-columns:1fr}}

/* --------------------- ЭТАПЫ --------------------- */
.steps{counter-reset:s;display:grid;grid-template-columns:repeat(5,1fr);gap:1.25rem;margin-top:2.5rem}
.step{position:relative;padding-top:2.75rem}
.step::before{counter-increment:s;content:counter(s);position:absolute;top:0;left:0;
  width:2rem;height:2rem;border-radius:50%;background:var(--accent);color:var(--dark);
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.9375rem}
.step h3{font-size:1rem;margin-bottom:.375rem}
.step p{font-size:.875rem;color:var(--muted)}
@media(max-width:900px){.steps{grid-template-columns:repeat(2,1fr)}}
@media(max-width:480px){.steps{grid-template-columns:1fr}}

/* --------------------- ЗАГЛУШКА КАЛЬКУЛЯТОРА --------------------- */
.calc-stub{border:2px dashed rgba(240,191,100,.55);border-radius:var(--r);padding:2.5rem;text-align:center;
  background:rgba(240,191,100,.07)}
.calc-stub h2{margin-bottom:.75rem}
.calc-stub p{color:var(--muted);max-width:42em;margin:0 auto}
.section-dark .calc-stub p{color:rgba(255,255,255,.75)}

/* --------------------- ФОРМА ЗАЯВКИ --------------------- */
.form-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:3rem;align-items:start}
.field{margin-bottom:1rem}
.field label{display:block;font-size:.8125rem;font-weight:600;margin-bottom:.375rem}
.field input,.field textarea{width:100%;font-family:inherit;font-size:.9375rem;padding:.75rem 1rem;
  border:1px solid var(--line);border-radius:var(--r);background:#fff;color:var(--text)}
.field textarea{min-height:110px;resize:vertical}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--cta)}
.field-hint{font-size:.75rem;color:var(--muted);margin-top:.375rem}
.field-2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.agree{display:flex;align-items:flex-start;gap:.625rem;font-size:.8125rem;color:var(--muted);margin:1rem 0}
.agree input{width:18px;height:18px;accent-color:var(--cta);flex-shrink:0;margin-top:2px}
.agree a{color:var(--cta);text-decoration:underline}
.form-msg{margin-top:1rem;font-size:.9375rem;display:none}
.form-msg.ok{display:block;color:#0a7d32}
.form-msg.err{display:block;color:#c0392b}
.contacts-card{background:var(--dark);color:#fff;border-radius:var(--r);padding:1.75rem}
.contacts-card h3{color:var(--accent);margin-bottom:1.25rem;font-size:1rem;text-transform:uppercase;letter-spacing:.06em}
.contacts-card .c-row{display:flex;flex-direction:column;padding:.625rem 0;border-bottom:1px solid rgba(255,255,255,.12)}
.contacts-card .c-row:last-child{border-bottom:0}
.contacts-card .c-row span{font-size:.8125rem;color:rgba(255,255,255,.6)}
.contacts-card .c-row a,.contacts-card .c-row b{color:#fff;font-size:1.125rem;font-weight:600}
.contacts-card .c-row a:hover{color:var(--accent)}
@media(max-width:900px){.form-grid{grid-template-columns:1fr;gap:2rem}.field-2{grid-template-columns:1fr}}

/* --------------------- FAQ --------------------- */
.faq{max-width:60rem}
.faq details{border-bottom:1px solid var(--line);padding:1rem 0}
.faq summary{cursor:pointer;font-weight:700;font-size:1.0625rem;list-style:none;display:flex;
  justify-content:space-between;gap:1rem;align-items:center;transition:color .2s ease}
.faq summary:hover{color:var(--cta)}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:'+';color:var(--cta);font-size:1.5rem;line-height:1;flex-shrink:0}
.faq details[open] summary::after{content:'–'}
.faq p{margin-top:.75rem;color:var(--muted);font-size:.9375rem;max-width:56em}

/* --------------------- ГАЛЕРЕЯ ЦЕХА --------------------- */
.gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-top:2.5rem}
.shot{position:relative;border-radius:var(--r);overflow:hidden;background:#2c3132;display:block}
.shot img{width:100%;height:230px;object-fit:cover;transition:transform .4s ease}
.shot:hover img{transform:scale(1.04)}
.shot figcaption{position:absolute;left:0;right:0;bottom:0;padding:2.25rem .875rem .75rem;color:#fff;
  font-size:.8125rem;line-height:1.35;background:linear-gradient(transparent,rgba(28,32,33,.92))}
.shot figcaption b{display:block;font-size:.9375rem}
.shot-wide{grid-column:span 2}
.shot-wide img{height:230px}
@media(max-width:900px){.gallery{grid-template-columns:repeat(2,1fr)}.shot-wide{grid-column:span 2}}
@media(max-width:480px){.gallery{grid-template-columns:1fr}.shot-wide{grid-column:span 1}.shot img{height:210px}}

/* --------------------- ОБОРУДОВАНИЕ --------------------- */
.equip{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;margin-top:2rem}
.equip-item{display:flex;gap:1rem;align-items:flex-start;border:1px solid var(--line);border-radius:var(--r);padding:1rem;background:#fff;
  transition:box-shadow .3s ease-out,transform .3s ease-out}
.equip-item:hover{box-shadow:var(--shadow);transform:translateY(-2px)}
.equip-item img{width:110px;height:80px;object-fit:cover;border-radius:var(--r);flex-shrink:0}
.equip-item h3{font-size:1rem;margin-bottom:.25rem}
.equip-item p{font-size:.875rem;color:var(--muted)}
@media(max-width:700px){.equip{grid-template-columns:1fr}}

/* --------------------- ГЕОГРАФИЯ --------------------- */
.geo-list{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.5rem}
.geo-list li{border:1px solid var(--line);border-radius:var(--r);padding:.375rem .75rem;font-size:.8125rem;color:var(--muted)}

/* ============================================================
   BLOCK: footer — перенесён с shoner-otval.ru
   ============================================================ */
.ftr{background:var(--dark);color:#fff;position:relative;padding:50px 0 0;overflow:hidden}
.ftr-container{max-width:1400px;margin:0 auto;padding:0 20px;position:relative;z-index:2}
.ftr-h{color:var(--y);font-size:18px;font-weight:600;text-transform:uppercase;letter-spacing:1px;margin:0 0 25px}
.ftr a{color:#fff;transition:color .3s ease}
.ftr a:hover{color:var(--y)}
.ftr-managers{width:100%;margin-bottom:40px}
.ftr-managers .ftr-h{text-align:center;margin-bottom:30px}
.ftr-mgr-grid{display:flex;flex-direction:row;justify-content:space-around;align-items:flex-start;gap:20px;flex-wrap:nowrap}
.mgr{display:flex;flex-direction:column;align-items:center;text-align:center;color:#fff;gap:10px;flex:1;max-width:290px;transition:opacity .2s ease}
.mgr:hover{opacity:.85}
.mgr-photo{width:220px;height:220px;min-width:220px;border-radius:50%;object-fit:cover;
  border:3px solid rgba(241,184,45,.35);background:rgba(255,255,255,.08);
  display:flex;align-items:center;justify-content:center}
.mgr-photo svg{width:64px;height:64px;fill:var(--y)}
.mgr-phone{display:block;font-size:16px;font-weight:600;color:#fff;white-space:nowrap;transition:color .2s ease}
.mgr:hover .mgr-phone{color:var(--y)}
.mgr-name{display:block;font-size:14px;color:var(--y);font-style:italic}
.ftr-content{display:flex;justify-content:space-between;align-items:flex-start;gap:40px;position:relative}
.ftr-left{flex:1;display:flex;flex-direction:column;gap:28px;min-width:0}
.ftr-top-row{display:flex;flex-direction:row;gap:40px;align-items:flex-start}
.ftr-col-sched{flex:0 0 26%;min-width:0}
.ftr-col-form{flex:1;min-width:0}
.ftr-col-3{flex:0 0 32%;position:relative;z-index:10;padding-top:40px}
.ftr-sched{font-size:14px}
.ftr-sched-line{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}
.ftr-sched-label{color:rgba(255,255,255,.8)}
.ftr-sched-time{color:var(--y);font-weight:500}
.ftr-form-title{color:var(--y);font-size:14px;font-weight:600;margin-bottom:15px;display:block}
.ftr-form{display:flex;flex-wrap:wrap;max-width:420px}
/* Галочка согласия лежит внутри формы, поэтому в строке с полем и кнопкой
   она была бы третьим элементом и сжимала бы поле. Отправляем её на свою строку. */
.ftr-form .ftr-check{flex:0 0 100%}
.ftr-input{flex:1;min-width:0;background:#fff;border:1px solid rgba(255,255,255,.2);border-right:0;color:var(--text);
  padding:10px 15px;border-radius:4px 0 0 4px;font-size:14px;font-family:inherit}
.ftr-input::placeholder{color:#9aa0a1}
.ftr-input:focus{outline:none;border-color:var(--y)}
.ftr-form-btn{background:var(--y);color:#58595b;border:0;padding:10px 25px;border-radius:0 4px 4px 0;
  font-weight:600;font-size:14px;font-family:inherit;cursor:pointer;transition:all .3s ease;white-space:nowrap}
.ftr-form-btn:hover{background:#fff}
.ftr-check{display:flex;align-items:center;gap:10px;margin-top:12px;font-size:13px}
.ftr-check input{width:18px;height:18px;accent-color:var(--y)}
.ftr-check a{color:var(--y);text-decoration:underline}
.ftr-contact{display:flex;align-items:flex-start;gap:10px;margin-bottom:10px;font-size:16px}
.ftr-contact svg{flex:0 0 20px;width:20px;height:20px;fill:var(--y);margin-top:3px}
.ftr-contact i{font-style:italic;color:var(--y)}
.ftr-star-wrap{position:absolute;top:-50px;right:0;width:600px;height:584px;z-index:1;pointer-events:none;overflow:hidden}
.ftr-star{width:500px;height:500px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:2;
  filter:drop-shadow(0 0 30px rgba(241,184,45,.3))}
.ftr-star-cut{position:absolute;top:50%;left:-77%;width:300%;height:400px;background:var(--dark);
  transform:rotate(-49deg);transform-origin:center center;z-index:2;
  filter:drop-shadow(-46px -4px 6px rgba(0,0,0,.5))}
.ftr-col-3 .ftr-h{margin-top:100px;text-align:right;position:relative;z-index:10}
.ftr-links{position:relative;z-index:10}
.ftr-links li{margin-bottom:12px;text-align:right;font-size:15px}
.ftr-links a:hover{text-decoration:underline}
.ftr-socials{display:flex;gap:12px;justify-content:flex-end;margin-top:16px;position:relative;z-index:10}
.ftr-social{width:40px;height:40px;background:var(--y);border-radius:50%;display:flex;align-items:center;
  justify-content:center;transition:all .3s ease}
.ftr-social svg{width:18px;height:18px;fill:#58595b}
.ftr-social:hover{background:#fff;transform:translateY(-3px);box-shadow:0 5px 15px rgba(0,0,0,.3)}
.ftr-powered{display:flex;justify-content:flex-end;padding:10px 20px 20px;position:relative;z-index:19;
  font-size:12px;line-height:1.6;text-align:right}
@media(max-width:1200px){.mgr-photo{width:180px;height:180px;min-width:180px}}
@media(max-width:992px){.mgr-photo{width:150px;height:150px;min-width:150px}.mgr-phone{font-size:14px}}
@media(max-width:900px){
  .ftr{padding:40px 0 0}
  .ftr-content{flex-direction:column;align-items:center;text-align:center;gap:40px}
  .ftr-left,.ftr-col-3{flex:0 0 100%;width:100%;padding-top:0}
  .ftr-top-row{flex-direction:column;gap:20px}
  .ftr-col-sched,.ftr-col-form{flex:0 0 100%;width:100%}
  .ftr-form{max-width:100%}
  .ftr-contact{text-align:left}
  .ftr-star-wrap,.ftr-star-cut{display:none}
  .ftr-col-3 .ftr-h{margin-top:20px;text-align:center}
  .ftr-links li{text-align:center}
  .ftr-socials{justify-content:center}
  .ftr-powered{justify-content:center;text-align:center}
  .ftr-mgr-grid{flex-wrap:wrap;justify-content:center;gap:24px}
  .mgr{flex:0 0 calc(50% - 24px);max-width:180px}
  .mgr-photo{width:120px;height:120px;min-width:120px}
  .mgr-photo svg{width:40px;height:40px}
}
@media(max-width:575px){
  .ftr-h{font-size:16px}
  .mgr{flex:0 0 calc(50% - 16px);max-width:150px}
  .mgr-photo{width:90px;height:90px;min-width:90px}
  .mgr-phone{font-size:12px}.mgr-name{font-size:12px}
}

/* ============================================================
   СЛУЖЕБНЫЕ ПЕРЕКЛЮЧАТЕЛИ: первый экран (1/2/3) и дизайн (A/B/C).
   Удалить вместе с #demo-switcher после выбора заказчиком.
   ============================================================ */
.switcher{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);z-index:9999;
  background:rgba(28,28,40,.94);border-radius:16px;padding:8px 14px;display:flex;gap:18px;
  align-items:center;flex-wrap:wrap;justify-content:center;max-width:calc(100vw - 24px);
  box-shadow:0 8px 24px rgba(0,0,0,.35)}
.sw-group{display:flex;align-items:center;gap:4px}
.sw-label{color:rgba(255,255,255,.55);font-size:11px;font-weight:700;text-transform:uppercase;
  letter-spacing:.08em;margin-right:6px}
.switcher a{gap:.4rem}
.switcher button,.switcher a{background:transparent;border:0;color:#fff;font-family:inherit;font-size:13px;font-weight:600;
  padding:9px 14px;border-radius:999px;cursor:pointer;white-space:nowrap;transition:background .2s,color .2s;
  display:inline-flex;align-items:center;justify-content:center}
.switcher button:hover,.switcher a:hover{background:rgba(255,255,255,.12)}
.switcher button.is-active,.switcher a.is-active{background:var(--y);color:#1C1C28}
body.has-switcher{padding-bottom:110px}
@media(max-width:820px){
  .switcher{width:calc(100% - 24px);left:12px;transform:none;flex-direction:column;gap:8px;border-radius:8px}
  .sw-group{width:100%;justify-content:center}
  .sw-label{flex:0 0 52px;margin-right:0}
  .switcher button,.switcher a{flex:1;padding:9px 4px;font-size:12px}
  body.has-switcher{padding-bottom:170px}
}

@media print{.switcher,.hdr-burger,.lb{display:none}}

/* ============================================================
   АНИМАЦИИ ПОЯВЛЕНИЯ ПРИ ПРОКРУТКЕ.
   Класс .rv вешает js/main.js (пункт 6); при prefers-reduced-motion
   или без IntersectionObserver классы не вешаются — всё видно сразу.
   ============================================================ */
@media (prefers-reduced-motion: no-preference){
  .rv{opacity:0;transform:translateY(22px);transition:opacity .55s ease-out,transform .55s ease-out}
  .rv-in{opacity:1;transform:none}
}

/* ============================================================
   ЛАЙТБОКС ГАЛЕРЕЙ — js/main.js, пункт 7.
   Открывается кликом по фото в галереях (.gallery, .dc-mosaic,
   .db-strip, .db-works). Стрелки, клавиатура, счётчик.
   ============================================================ */
.lb-zoom{cursor:zoom-in}
/* z-index выше служебного переключателя (9999), иначе панель висела бы поверх фото */
.lb{position:fixed;inset:0;z-index:10000;background:rgba(20,22,23,.94);display:flex;align-items:center;
  justify-content:center;opacity:0;visibility:hidden;transition:opacity .25s ease,visibility .25s ease}
.lb.is-open{opacity:1;visibility:visible}
.lb figure{margin:0;max-width:min(92vw,1200px);max-height:86vh;display:flex;flex-direction:column;
  gap:.75rem;align-items:center}
.lb img{max-width:100%;max-height:76vh;width:auto;height:auto;box-shadow:0 24px 60px rgba(0,0,0,.5);
  transform:scale(.96);transition:transform .25s ease}
.lb.is-open img{transform:scale(1)}
.lb figcaption{color:rgba(255,255,255,.85);font-size:.875rem;text-align:center;padding:0 1rem;max-width:56em}
.lb button{position:absolute;background:none;border:0;color:#fff;cursor:pointer;font-family:inherit;
  line-height:1;padding:.5rem .75rem;transition:color .2s;z-index:2}
.lb button:hover{color:var(--y)}
.lb-close{top:14px;right:18px;font-size:2.25rem}
.lb-prev,.lb-next{top:50%;transform:translateY(-50%);font-size:3.5rem;user-select:none}
.lb-prev{left:10px}
.lb-next{right:10px}
.lb-cnt{position:absolute;top:22px;left:50%;transform:translateX(-50%);color:rgba(255,255,255,.7);font-size:.8125rem}
@media(max-width:700px){
  .lb-prev,.lb-next{top:auto;bottom:14px;transform:none;font-size:2.75rem}
  .lb-prev{left:22%}
  .lb-next{right:22%}
  .lb img{max-height:66vh}
}


/* ============================================================
   ДИЗАЙН «ИНДУСТРИАЛЬНЫЙ» — выбран заказчиком 20.08.2026.
   Перенесён из черновика design-c/ без изменений.
   Все страницы сайта несут class="dc" на <body>.
   ============================================================ */

/* ============================================================
   ДИЗАЙН C «ИНДУСТРИАЛЬНЫЙ» — рабочий дизайн сайта.
   Тёмный сайт, заголовки Montserrat капсом, сигнальные жёлтые
   акценты. Фирменные цвета и подвал — из ../css/style.css.
   Если дизайн выбран — перенести стили в style.css (README, 7.3).
   ============================================================ */
@font-face{font-family:'Montserrat';src:url('../fonts/Montserrat-Medium.woff2?v=2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'Montserrat';src:url('../fonts/Montserrat-Bold.woff2?v=2') format('woff2');font-weight:700;font-style:normal;font-display:swap}

body.dc{--r:0;background:#282C2D;color:#fff}
.dc h1,.dc h2,.dc h3,.dc h4{font-family:Montserrat,NotoSans,sans-serif}
.dc h1,.dc h2{text-transform:uppercase;letter-spacing:.02em}
.dc h2{font-size:1.75rem}
@media(max-width:900px){.dc h2{font-size:1.375rem}}
.dc .section-head h2,.dc #geografiya h2{padding-left:1rem;border-left:6px solid var(--y)}
.dc #geografiya h2{margin-bottom:.5rem}
.dc .section-head p{color:rgba(255,255,255,.72)}
.dc .eyebrow{background:var(--y);color:var(--dark-2);padding:.3rem .625rem;letter-spacing:.08em}
.dc .btn{font-family:Montserrat,NotoSans,sans-serif;font-weight:700;text-transform:uppercase;
  letter-spacing:.05em;font-size:.8125rem}
.dc .lead{color:rgba(255,255,255,.75)}

/* --- Яндекс.Карта. Подключается скриптом, когда до неё доскроллили,
       поэтому у контейнера заранее задана высота: вставка карты
       не должна дёргать вёрстку. --- */
.ymap{position:relative;min-height:440px;border-radius:4px;overflow:hidden;
  background:#E8EBEB;border:1px solid var(--line)}
.ymap iframe{display:block;width:100% !important;height:440px !important;border:0}
.ymap-stub{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:.75rem;text-align:center;padding:1.5rem;color:var(--text)}
.ymap-stub b{font-family:Montserrat,NotoSans,sans-serif;font-size:1.125rem}
.ymap-stub span{color:var(--muted);font-size:.9375rem;max-width:26rem}
@media(max-width:600px){
  .ymap,.ymap iframe{min-height:340px}
  .ymap iframe{height:340px !important}
}

/* «бумажные» секции: прайс и расчёты на белых листах */
.dc-paper{background:#fff;color:var(--text)}
.dc-paper .section-head p{color:var(--muted)}
.dc-paper .table-note{color:var(--muted)}
.dc-paper .table-note strong{color:var(--text)}

/* Светлый текст на светлом фоне — текст пропадает.
   Дизайн C тёмный, поэтому абзацы в нём белые; в белых секциях
   .dc-paper и жёлтой .dc-calc их нужно возвращать в тёмный.
   Список закрывает все блоки, где такой текст вообще бывает,
   чтобы новая секция на белом листе не всплыла тем же багом. */
.dc .dc-paper .lead,
.dc .dc-paper .adv p,
.dc .dc-paper .dc-step p,
.dc .dc-paper .geo-list li,
.dc .dc-paper .faq p,
.dc .dc-paper .agree,
.dc .dc-paper .field-hint{color:var(--muted)}
.dc .dc-paper .dc-card h3,
.dc .dc-paper .field label{color:var(--text)}

.dc .dc-calc .lead,
.dc .dc-calc .adv p,
.dc .dc-calc .dc-step p,
.dc .dc-calc .geo-list li,
.dc .dc-calc .faq p,
.dc .dc-calc .agree,
.dc .dc-calc .field-hint{color:rgba(51,54,53,.85)}
.dc .dc-calc .dc-card h3,
.dc .dc-calc .field label{color:var(--dark-2)}

/* --- шапка: центрированный логотип + жёлтая навигация --- */
.dc-top{background:#1F2324;color:rgba(255,255,255,.7);font-size:.875rem;
  position:sticky;top:0;z-index:61}
.dc-top-in{display:flex;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;padding-top:.5rem;padding-bottom:.5rem}
.dc-top a:hover{color:var(--accent)}
.dc-hdr{background:var(--dark);padding:.875rem 0}
.dc-hdr-in{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1.5rem}
.dc-hdr-phone{line-height:1.3}
.dc-hdr-phone a{font-family:Montserrat,NotoSans,sans-serif;font-weight:700;font-size:1.625rem;color:var(--accent);white-space:nowrap}
.dc-hdr-phone a:hover{color:#fff}
.dc-hdr-phone span{display:block;font-size:.8125rem;color:rgba(255,255,255,.65)}
.dc-brand{display:flex;flex-direction:column;align-items:center;gap:.375rem;text-align:center}
.dc-brand img{height:64px;width:auto}
.dc-brand span{font-size:.75rem;color:var(--accent);letter-spacing:.06em;white-space:nowrap}
.dc-hdr-right{display:flex;justify-content:flex-end}
.dc-nav{background:var(--y);position:sticky;top:var(--topbar);z-index:60;box-shadow:0 4px 14px rgba(0,0,0,.3);
  border-bottom:6px solid;border-image:repeating-linear-gradient(45deg,var(--dark-2) 0 12px,var(--y) 12px 24px) 1}
.dc-nav-in{display:flex;justify-content:center;overflow-x:auto;scrollbar-width:none}
.dc-nav-in::-webkit-scrollbar{display:none}
.dc-nav a{flex-shrink:0;padding:.875rem 1.125rem;color:var(--dark-2);font-family:Montserrat,NotoSans,sans-serif;
  font-weight:700;font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
.dc-nav a:hover{background:var(--dark-2);color:var(--y)}
@media(max-width:900px){
  .dc-hdr{padding:.75rem 0}
  .dc-hdr-in{grid-template-columns:1fr;gap:.5rem;justify-items:center}
  .dc-hdr-right{display:none}
  .dc-brand img{height:48px}
  .dc-hdr-phone{text-align:center}
  .dc-nav-in{justify-content:flex-start}
}

/* --- первый экран: полноэкранное фото --- */
.dc-hero{position:relative;min-height:620px;display:flex;align-items:flex-end}
.dc-hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.dc-hero::after{content:'';position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(31,35,36,.35) 0%,rgba(31,35,36,.55) 45%,rgba(31,35,36,.95) 100%)}
.dc-hero-in{position:relative;z-index:2;padding-top:96px;padding-bottom:56px;width:100%}
.dc-hero h1{font-size:clamp(1.75rem,3.4vw,3.25rem);max-width:17em}
.dc-hero h1 em{font-style:normal;color:var(--accent)}
.dc-hero .lead{max-width:46em}
.dc-hero-badge{position:absolute;right:1rem;bottom:56px;z-index:3;background:var(--y);color:var(--dark-2);
  padding:1rem 1.25rem;font-family:Montserrat,NotoSans,sans-serif;font-weight:700;font-size:.8125rem;
  text-transform:uppercase;letter-spacing:.05em;line-height:1.5;max-width:240px}
.dc-hero-badge b{display:block;font-size:1.375rem}
.dc-stats{background:var(--y);color:var(--dark-2)}
.dc-stats-in{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:1.5rem;padding-top:1.5rem;padding-bottom:1.5rem}
.dc-stats b{display:block;font-family:Montserrat,NotoSans,sans-serif;font-size:1.5rem;line-height:1.2;white-space:nowrap}
.dc-stats span{font-size:.8125rem;font-weight:600}
@media(max-width:1240px){.dc-stats b{font-size:1.25rem}}
@media(max-width:1240px){.dc-hero-badge{display:none}}
@media(max-width:900px){
  .dc-hero{min-height:480px}
  .dc-stats-in{grid-template-columns:repeat(2,1fr);gap:1rem}
  .dc-stats b{font-size:1.125rem}
}

/* --- услуги: карточки с фото --- */
.dc-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem;margin-top:2.5rem}
.dc-card{background:var(--dark);display:flex;flex-direction:column;
  transition:transform .25s ease-out,box-shadow .25s ease-out}
.dc-card:hover{transform:translateY(-4px);box-shadow:0 12px 28px rgba(0,0,0,.45)}
.dc-card img{width:100%;height:180px;object-fit:cover}
.dc-card-body{padding:1.25rem 1.25rem 1.5rem;border-left:4px solid var(--y);flex:1;display:flex;flex-direction:column}
.dc-card h3{font-size:.9375rem;letter-spacing:.04em;text-transform:uppercase;margin-bottom:.5rem;color:#fff}
.dc-card p{font-size:.875rem;color:rgba(255,255,255,.72);flex:1}
.dc-card b{display:inline-block;margin-top:1rem;background:var(--y);color:var(--dark-2);
  font-family:Montserrat,NotoSans,sans-serif;font-weight:700;font-size:.8125rem;
  padding:.375rem .625rem;align-self:flex-start}
@media(max-width:900px){.dc-cards{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.dc-cards{grid-template-columns:1fr}}

/* --- возможности: гигантские цифры --- */
.dc-nums{display:grid;grid-template-columns:repeat(4,1fr);gap:2.5rem 2rem;margin-top:2.5rem}
.dc-nums .num b{font-family:Montserrat,NotoSans,sans-serif;font-size:2rem;color:var(--y);white-space:nowrap}
.dc-nums .num span{color:rgba(255,255,255,.72)}
@media(max-width:1100px){.dc-nums{grid-template-columns:repeat(2,1fr)}.dc-nums .num b{font-size:1.75rem}}
@media(max-width:520px){.dc-nums .num b{font-size:1.375rem}}
@media(max-width:480px){.dc-nums{grid-template-columns:1fr}}

/* --- цех: бесшовная мозаика --- */
.dc-mosaic{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;margin-top:2.5rem}
.dc-mosaic .shot img{height:250px}
.dc-mosaic .shot,.dc-mosaic .shot img{border-radius:0}
@media(max-width:900px){.dc-mosaic{grid-template-columns:repeat(2,1fr)}}
@media(max-width:480px){.dc-mosaic{grid-template-columns:1fr}}

/* --- преимущества --- */
.dc .adv{border-left:6px solid var(--y);background:rgba(255,255,255,.05);padding:1.25rem 1.25rem 1.25rem 1.5rem}
.dc .adv p{color:rgba(255,255,255,.72)}

/* --- порядок работы: вертикальный таймлайн --- */
.dc-steps{position:relative;margin-top:2.5rem;padding-left:4.5rem;max-width:52rem}
.dc-steps::before{content:'';position:absolute;left:1.6rem;top:.5rem;bottom:.5rem;width:2px;background:var(--y)}
.dc-step{position:relative;padding-bottom:2rem}
.dc-step:last-child{padding-bottom:0}
.dc-step::before{content:attr(data-n);position:absolute;left:-4.5rem;top:-.25rem;width:3.25rem;height:3.25rem;
  background:var(--y);color:var(--dark-2);display:flex;align-items:center;justify-content:center;
  font-family:Montserrat,NotoSans,sans-serif;font-weight:700;font-size:1.25rem}
.dc-step h3{font-size:1rem;letter-spacing:.04em;text-transform:uppercase;margin-bottom:.375rem}
.dc-step p{font-size:.9375rem;color:rgba(255,255,255,.72);max-width:44em}

/* --- калькулятор: сигнальная секция --- */
.dc-calc{background:var(--y);color:var(--dark-2)}
.dc-calc .calc-stub{border-color:rgba(51,54,53,.55);background:rgba(255,255,255,.22)}
.dc-calc .calc-stub p{color:rgba(51,54,53,.85)}
.dc-calc .btn-primary{background:var(--dark-2);color:var(--y)}
.dc-calc .btn-primary:hover{background:var(--dark);color:#fff}

/* --- география, FAQ, форма на тёмном --- */
.dc .geo-list li{border-color:rgba(255,255,255,.25);color:rgba(255,255,255,.72)}
.dc .contacts-card{background:var(--y);color:var(--dark-2)}
.dc .contacts-card h3{color:var(--dark-2)}
.dc .contacts-card .c-row{border-bottom-color:rgba(51,54,53,.25)}
.dc .contacts-card .c-row span{color:rgba(51,54,53,.7)}
.dc .contacts-card .c-row a,.dc .contacts-card .c-row b{color:var(--dark-2)}
.dc .contacts-card .c-row a:hover{text-decoration:underline}
.dc .faq details{border-bottom-color:rgba(255,255,255,.15)}
.dc .faq summary::after{color:var(--y)}
.dc .faq p{color:rgba(255,255,255,.72)}
.dc .field label{color:#fff}
.dc .field input,.dc .field textarea{background:#232728;border-color:rgba(255,255,255,.25);color:#fff}
.dc .field input:focus,.dc .field textarea:focus{border-color:var(--y)}
.dc .field-hint{color:rgba(255,255,255,.55)}
.dc .agree{color:rgba(255,255,255,.72)}
.dc .agree a{color:var(--accent)}
.dc .form-msg.ok{color:#7fd89b}
.dc .form-msg.err{color:#ff9c8a}

/* подвал общий; в C — сигнальная полоса сверху */
.dc .ftr{border-top:6px solid;border-image:repeating-linear-gradient(45deg,var(--y) 0 12px,var(--dark-2) 12px 24px) 1}

/* --- страницы услуг: компактный первый экран и хлебные крошки --- */
.dc-hero-inner{min-height:400px}
.dc-hero-inner .dc-hero-in{padding-top:52px;padding-bottom:40px}
.dc-hero-inner h1{max-width:20em}
.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1.25rem;
  font-size:.8125rem;color:rgba(255,255,255,.7)}
.crumbs a{border-bottom:1px solid rgba(255,255,255,.3)}
.crumbs a:hover{color:var(--y);border-bottom-color:var(--y)}
.crumbs span{opacity:.55}
@media(max-width:900px){
  .dc-hero-inner{min-height:auto}
  .dc-hero-inner .dc-hero-in{padding-top:36px;padding-bottom:28px}
  .crumbs{font-size:.75rem;margin-bottom:.875rem}
}

/* ============================================================
   МОБИЛЬНАЯ ОПТИМИЗАЦИЯ — общий слой для всех трёх дизайнов.
   design-b и design-c подключают этот же файл, поэтому правки
   здесь действуют на все шаблоны. Правила намеренно идут
   последними: перекрывают базовые без !important.
   ============================================================ */

/* --- 1. Таблицы: тень-подсказка, что таблица листается вбок --- */
.table-wrap{
  background-image:
    linear-gradient(to right,#fff,rgba(255,255,255,0)),
    linear-gradient(to left,#fff,rgba(255,255,255,0)),
    linear-gradient(to right,rgba(28,28,40,.16),rgba(28,28,40,0)),
    linear-gradient(to left,rgba(28,28,40,.16),rgba(28,28,40,0));
  background-position:0 0,100% 0,0 0,100% 0;
  background-repeat:no-repeat;
  background-size:28px 100%,28px 100%,14px 100%,14px 100%;
  background-attachment:local,local,scroll,scroll;
  -webkit-overflow-scrolling:touch;
}

/* --- 2. Мобильная панель действий: звонок и заявка под большим пальцем --- */
.mbar{display:none}
.mbar-btn svg,.mbar-btn img{width:20px;height:20px;fill:currentColor;flex-shrink:0}

/* ============================================================
   ≤ 900 px
   ============================================================ */
@media(max-width:900px){
  [id]{scroll-margin-top:84px}   /* на телефоне липнет только шапка */
  .section-head p{font-size:1rem}
  .lead{font-size:1rem}
  /* полоса преимуществ под первым экраном A — в столбик, а не вразнобой */
  .v1-strip .container{flex-direction:column;gap:.5rem}
  .v1-strip{margin-top:40px}
  /* карточки цен и контактов не липнут к краям */
  .v1-card,.contacts-card,.calc-card{padding:1.375rem}
  .calc-stub{padding:1.75rem 1.25rem}
}

/* ============================================================
   ≤ 820 px — здесь появляется мобильная панель действий
   ============================================================ */
@media(max-width:820px){
  .mbar{
    display:flex;position:fixed;left:0;right:0;bottom:0;z-index:9998;
    background:rgba(28,28,40,.97);padding:8px 10px calc(8px + env(safe-area-inset-bottom));
    gap:8px;box-shadow:0 -6px 20px rgba(0,0,0,.28)
  }
  .mbar-btn{
    flex:1;display:flex;align-items:center;justify-content:center;gap:.5rem;
    min-height:48px;padding:.625rem .75rem;border-radius:var(--r);
    font-size:.9375rem;font-weight:600;line-height:1.2;text-align:center
  }
  .mbar-call{background:rgba(255,255,255,.14);color:#fff}
  .mbar-cta{background:var(--cta);color:#fff}
  .mbar-btn:active{opacity:.85}
  /* место под панель; со служебным переключателем — больше */
  body{padding-bottom:76px}
  body.has-switcher{padding-bottom:132px}

  /* переключатель дизайнов: одна компактная строка над панелью */
  .switcher{
    left:8px;right:8px;width:auto;transform:none;bottom:72px;
    flex-direction:row;border-radius:var(--r);padding:6px 8px;gap:6px
  }
  .sw-group{width:100%;gap:6px}
  .sw-label{flex:0 0 auto;font-size:10px;margin-right:2px}
  .switcher a{flex:1;gap:.35rem;padding:8px 4px;font-size:12px;min-height:40px}
  .switcher a b{font-weight:700}
  .switcher a span{font-weight:400;opacity:.85}
}

/* ============================================================
   ≤ 700 px — таблицы и подвал
   ============================================================ */
@media(max-width:700px){
  th,td{padding:.625rem .75rem;font-size:.875rem}
  .table-wrap table{min-width:520px}
  /* колонка условий в широких таблицах переносится, иначе ширина в два экрана */
  .table-wrap td:last-child:not(:nth-child(-n+2)){white-space:normal;min-width:13rem}
  .table-note{font-size:.8125rem}
  /* ссылки подвала — нормальный тач-таргет */
  .ftr-links a,.ftr-contact a{display:inline-block;padding:.2rem 0}
  .faq summary{padding:.35rem 0}
}

/* ============================================================
   ≤ 600 px — ввод без автозума в iOS и компактная шапка
   ============================================================ */
@media(max-width:600px){
  /* Safari увеличивает страницу, если поле меньше 16px. Ставим ровно 16. */
  input,textarea,select,.field input,.field textarea,.ftr-input{font-size:16px}
  .ftr-form-btn{font-size:15px;padding:10px 16px}
  .ftr-form{flex-wrap:wrap}
  .hdr-in{min-height:68px;padding-top:.5rem;padding-bottom:.5rem}
  .hdr-brand img{height:44px}
  .section{padding:40px 0}
  .section-head{margin-bottom:1.75rem}
  h2{font-size:1.375rem}
  /* кнопки первого экрана — во всю ширину, крупный тач-таргет */
  .hero-actions{gap:.625rem;width:100%}
  .hero-actions .btn{flex:1 1 100%;min-height:50px}
  .hero-note{flex:1 1 100%}
  .btn-lg{padding:1rem 1.5rem;font-size:.9375rem}
  .v1{padding-top:40px}
  .v3{padding-top:40px}
  .v2-in{padding:48px 0}
  .v1-facts{gap:1rem}
  .v1-fact b{font-size:1.25rem}
  .price-row{font-size:.8125rem}
  .gallery{gap:.625rem}
  .shot figcaption{font-size:.75rem;padding:1.75rem .625rem .625rem}
  .equip-item{gap:.75rem;padding:.875rem}
  .equip-item img{width:84px;height:64px}
  .calc-card .row:last-child{font-size:1rem}
  .contacts-card .c-row b,.contacts-card .c-row a{font-size:1rem}
  /* мобильное меню: пункты крупнее */
  .mmenu-panel a{padding:.875rem 0;font-size:1.0625rem}
}

/* ============================================================
   ≤ 420 px — самые узкие телефоны
   ============================================================ */
@media(max-width:420px){
  /* контейнер НЕ сжимаем: на узком экране поля важнее ширины строки */
  .container{--pad:1.25rem}
  .section{padding:32px 0}
  .mbar-btn{font-size:.875rem;gap:.375rem}
  .mbar-btn svg{width:18px;height:18px}
  .switcher a span{display:none}   /* остаются буквы A / B / C */
  .switcher a{font-size:13px}
  .sw-label{display:none}
  body.has-switcher{padding-bottom:124px}
  .table-wrap table{min-width:460px}
  th,td{padding:.5rem .625rem;font-size:.8125rem}
  .ftr-h{font-size:15px}
  .ftr-powered{font-size:11px}
}

/* ============================================================
   ТОЧЕЧНЫЕ ПРАВКИ ДЛЯ ДИЗАЙНОВ B И C
   (их собственные стили лежат внутри их index.html)
   ============================================================ */
@media(max-width:900px){
  /* B: горизонтальное меню — видно, что оно листается */
  .db-nav-in{padding-right:2.5rem;
    -webkit-mask-image:linear-gradient(to right,#000 88%,transparent);
    mask-image:linear-gradient(to right,#000 88%,transparent)}
  .db-nav a{padding:.75rem 1rem;font-size:.8125rem}
  .db-hero{padding:40px 0 36px}
  .db-frame img{height:250px}
  .db-spec-row{font-size:.875rem}
  .db-spec-row b{font-size:1rem}
  .db-cycle-in{gap:.375rem 1rem;font-size:.8125rem}
  /* C: то же для жёлтой навигации */
  .dc-nav-in{padding-right:2.5rem;
    -webkit-mask-image:linear-gradient(to right,#000 88%,transparent);
    mask-image:linear-gradient(to right,#000 88%,transparent)}
  .dc-nav a{padding:.75rem .875rem}
  .dc-hero-in{padding-top:64px;padding-bottom:40px}
  .dc-mosaic .shot img{height:190px}
}
@media(max-width:600px){
  .db-row{padding:1.125rem 0}
  .db-row-num{font-size:1.375rem}
  .db-kadr img{height:210px}
  .db-work img{height:200px}
  .dc-hero{min-height:420px}
  .dc-card img{height:160px}
  .dc-steps{padding-left:3.5rem}
  .dc-steps::before{left:1.25rem}
  .dc-step::before{left:-3.5rem;width:2.5rem;height:2.5rem;font-size:1rem}
  .dc-step{padding-bottom:1.5rem}
}
@media(max-width:420px){
  .db-brand img{height:38px;padding:5px 7px}
  .db-brand-text b{font-size:.9375rem}
  .dc-brand img{height:42px}
  .dc-hdr-phone a{font-size:1.125rem}
  .dc-top-in{font-size:.75rem;gap:.25rem}
}

@media print{.mbar{display:none}}

/* ============================================================
   МОБИЛЬНЫЕ ПОЛЯ И ШАПКИ ДИЗАЙНОВ B И C
   Добавлено 18.08.2026 по замечаниям с телефона:
   в B и C шапка была не оптимизирована, а контент местами
   упирался в край экрана.
   ============================================================ */

/* --- 1. Поля по краям: на телефоне 20 px вместо 16 --- */
@media(max-width:600px){
  .container{--pad:1.25rem}
  .ftr-container{padding-left:1.25rem;padding-right:1.25rem}
  /* ленты с горизонтальной прокруткой: чтобы первый и последний
     элемент не прилипали к краю экрана */
  .db-nav-in,.dc-nav-in,.db-strip{scroll-padding-left:1.25rem}
  /* заголовки C с жёлтой чертой слева не липнут к краю */
  .dc .section-head h2,.dc #geografiya h2{padding-left:.875rem;border-left-width:5px}
}
@media(max-width:360px){
  .container{--pad:1rem}
  .ftr-container{padding-left:1rem;padding-right:1rem}
}

/* ============================================================
   ШАПКА B — «инженерный»
   ============================================================ */
@media(max-width:820px){
  .db-top{position:relative;z-index:61}
  .db-top-in{gap:.75rem;padding-top:.625rem;padding-bottom:.625rem;align-items:center}
  .db-brand{gap:.625rem;min-width:0}
  .db-brand img{height:40px;padding:5px 8px;flex-shrink:0}
  .db-brand-text{min-width:0}
  .db-brand-text b{font-size:1rem;white-space:normal;line-height:1.2}
  .db-top-right{flex-shrink:0}
  .db-phone a{font-size:1.0625rem}

  /* лента меню: крупнее тап-таргет, кнопка расчёта видна сразу */
  .db-nav-in{gap:0}
  .db-nav a{padding:.75rem .875rem;font-size:.8125rem;border-right-color:rgba(28,28,40,.08)}
  .db-nav .db-nav-cta{margin-left:0;order:-1;font-weight:700}
}
@media(max-width:420px){
  .db-brand img{height:34px;padding:4px 6px}
  .db-brand-text b{font-size:.875rem}
  .db-phone a{font-size:.9375rem}
  .db-phone span{display:none}
  .db-nav a{padding:.6875rem .75rem;font-size:.75rem}
}

/* ============================================================
   ШАПКА C — «индустриальный»
   ============================================================ */
@media(max-width:900px){
  /* верхняя полоска: адрес прячем, до 820 px остаётся один телефон */
  .dc-top-in{justify-content:center;text-align:center;gap:.375rem;font-size:.8125rem}

  /* логотип выше телефона: в разметке телефон идёт первым */
  .dc-hdr-in{grid-template-columns:1fr;gap:.375rem;justify-items:center;text-align:center}
  .dc-brand{order:-1}
  .dc-brand img{height:44px}
  .dc-brand span{font-size:.6875rem}
  .dc-hdr-phone a{font-size:1.25rem}
  .dc-hdr-phone span{font-size:.6875rem}
  .dc-nav a{padding:.8125rem .875rem;font-size:.6875rem;letter-spacing:.04em}
}
@media(max-width:420px){
  .dc-hdr{padding:.625rem 0}
  .dc-brand img{height:38px}
  .dc-brand span{display:none}
  .dc-hdr-phone a{font-size:1.125rem}
  .dc-top-in{font-size:.6875rem}
}

/* ============================================================
   ВНУТРЕННИЕ ОТСТУПЫ B И C НА ТЕЛЕФОНЕ
   ============================================================ */
@media(max-width:600px){
  /* B: ведомость услуг и спецификация первого экрана */
  .db-hero{padding:32px 0 28px}
  .db-row{gap:.75rem;padding:1rem 0}
  .db-row-go{padding:0 .25rem}
  .db-spec{margin-top:1.5rem}
  .db-frame{padding:6px}
  .db-cycle-in{padding-top:.875rem;padding-bottom:.875rem}
  .db-works{gap:1.25rem 1rem}

  /* C: карточки, таймлайн и «бумажные» секции */
  .dc-hero-in{padding-top:48px;padding-bottom:32px}
  .dc-stats-in{padding-top:1.125rem;padding-bottom:1.125rem;gap:.875rem}
  .dc-card-body{padding:1rem 1rem 1.25rem;border-left-width:3px}
  .dc-mosaic{gap:2px}
  .dc .adv{padding:1rem 1rem 1rem 1.125rem;border-left-width:5px}
  .dc .contacts-card{padding:1.25rem}
}

/* ============================================================
   ПРАВКИ ПО СКРИНШОТАМ С ТЕЛЕФОНА — 18.08.2026
   Что было видно: длинные кнопки и телефон в шапке B распирали
   страницу вправо, из-за чего у таблиц пропадало правое поле;
   таблицы уезжали за экран; форма и чекбокс в подвале ломались.
   ============================================================ */

/* --- 1. Никакой горизонтальной прокрутки: страховка на уровне документа --- */
html{overflow-x:clip}
body{max-width:100%}

/* Старые браузеры (Safari до 16) не знают clip — там возвращаем hidden.
   Липкая шапка в них работать не будет, зато не появится горизонтальная
   прокрутка. Доля таких браузеров сегодня меньше процента. */
@supports not (overflow-x: clip){
  html,body{overflow-x:hidden}
}

/* --- 2. Кнопки: длинный текст переносится, а не распирает экран --- */
@media(max-width:820px){
  .btn{white-space:normal;text-align:center;line-height:1.25}
  .btn-lg{padding:.9375rem 1.25rem}
  .hero-actions .btn{min-width:0}
  .dc .btn{letter-spacing:.03em}
}

/* --- 3. Таблицы: на телефоне влезают целиком, без «уехавшего» края --- */
@media(max-width:820px){
  .table-wrap{max-width:100%;min-width:0;margin-left:0;margin-right:0}
  /* минимальную ширину снимаем: пусть таблица ужимается под экран */
  .table-wrap table{min-width:0;width:100%;font-size:.8125rem;table-layout:fixed}
  th,td{white-space:normal;overflow-wrap:break-word;padding:.5rem .5rem;vertical-align:top}
  thead th{font-size:.6875rem;letter-spacing:.02em;line-height:1.25}
  tbody td:first-child{font-weight:700}
  /* таблицы прайса (резка и гибка): цифры не рвутся по слэшу,
     значения прижаты вправо. Класс .table-nums стоит только у них —
     в таблице «Остальные операции» текст переносится как обычно. */
  .table-nums tbody td{white-space:nowrap;text-align:right}
  .table-nums tbody td:first-child{text-align:left;white-space:normal}
  .table-nums thead th{text-align:right}
  .table-nums thead th:first-child{text-align:left}
  /* ведомость оборудования: фото уже, текст переносится */
  .db-equip-img,.equip-item img{width:64px;height:48px}
  .table-note{margin-top:.75rem}
}
@media(max-width:420px){
  .table-wrap table{font-size:.75rem}
  th,td{padding:.4375rem .375rem}
  thead th{font-size:.625rem}
  .db-equip-img,.equip-item img{width:52px;height:40px}
}

/* --- 4. Подвал: форма обратного звонка в столбик, чекбокс не ломается --- */
@media(max-width:600px){
  .ftr-form{flex-direction:column;gap:.5rem;max-width:100%}
  .ftr-input{border-right:1px solid rgba(255,255,255,.2);border-radius:var(--r);width:100%}
  .ftr-form-btn{border-radius:var(--r);width:100%;padding:.875rem 1rem;min-height:48px}
  .ftr-check{align-items:flex-start;gap:.625rem;line-height:1.4}
  .ftr-check input{margin-top:2px;flex:0 0 18px}
  .ftr-check a{display:inline}
  .ftr-form-title{margin-bottom:.625rem}
}

/* --- 5. Шапка B: телефон целиком, название прячем на узких экранах --- */
@media(max-width:560px){
  .db-top-in{gap:.5rem}
  .db-brand-text{display:none}
  .db-brand img{height:36px}
  .db-phone{text-align:right}
  .db-phone a{font-size:1.0625rem;white-space:nowrap}
  .db-phone span{display:block;font-size:.625rem}
}
@media(max-width:380px){
  .db-phone a{font-size:.9375rem}
  .db-nav a{padding:.6875rem .625rem;font-size:.6875rem}
}

/* --- 6. Шапка C: в ленту меню влезает больше пунктов --- */
@media(max-width:600px){
  .dc-nav a{padding:.75rem .625rem;font-size:.6875rem}
  .dc-hdr-in{gap:.25rem}
}

/* --- 7. Полоса «полный цикл» в B: не липнет к краям --- */
@media(max-width:600px){
  .db-cycle-in{padding-top:.875rem;padding-bottom:.875rem;gap:.375rem .875rem;line-height:1.45}
}

/* ============================================================
   ПРАВКИ ПО ВТОРОМУ КРУГУ СКРИНШОТОВ — 18.08.2026
   Корень проблемы «отступы впритык»: у элементов, которые сидят
   на .container (шапки, полосы, первый экран C), стояла короткая
   запись padding: X 0 — она обнуляла боковые поля контейнера.
   Заменено на padding-top/padding-bottom, поля вернулись.
   ============================================================ */

/* --- 1. Чекбокс согласия: текст со ссылкой одним блоком --- */
.ftr-check{align-items:flex-start;gap:.625rem;line-height:1.45}
.ftr-check input{flex:0 0 18px;margin-top:2px}
.ftr-check span{flex:1;min-width:0}
.ftr-check a{white-space:normal}

/* --- 2. Ленты меню в B и C: на телефоне переносим в две строки,
       чтобы пункты не обрезались краем экрана --- */
@media(max-width:700px){
  .db-nav-in,.dc-nav-in{overflow-x:visible;flex-wrap:wrap;justify-content:flex-start;
    padding-top:.25rem;padding-bottom:.25rem;
    -webkit-mask-image:none;mask-image:none}
  .db-nav a,.dc-nav a{flex:0 0 auto}
  .db-nav a{border-right:1px solid var(--line);border-left:0}
  .db-nav a:first-child{border-left:0}
  .db-nav .db-nav-cta{order:-1;flex:1 1 100%;text-align:center;justify-content:center}
  .dc-nav-in{justify-content:center;gap:0}
  .dc-nav a{padding:.625rem .625rem}
}

/* --- 3. Первый экран C: текст и кнопки с полями, а не в край --- */
@media(max-width:900px){
  .dc-hero{min-height:auto}
  .dc-hero-in{padding-top:56px;padding-bottom:36px}
  .dc-hero h1{font-size:clamp(1.5rem,6.4vw,2rem)}
  .dc-hero .lead{font-size:.9375rem}
  .dc-hero .hero-actions{margin-top:1.5rem}
}

/* --- 4. Шапка B: логотип и телефон с полями, ровная высота --- */
@media(max-width:820px){
  .db-top-in{align-items:center;min-height:56px}
  .db-brand{flex:0 1 auto;min-width:0}
}

/* ============================================================
   БУРГЕР-МЕНЮ В ДИЗАЙНАХ B И C — 18.08.2026
   На телефоне ленты меню заменены выезжающей панелью: пункты
   больше не переносятся в четыре строки и не съедают экран.
   Работает на том же скрипте, что и меню основного шаблона.
   ============================================================ */

/* пункты меню в панели: кнопка расчёта и телефон выделены */
.mmenu-cta{color:var(--accent) !important;font-weight:700}
.mmenu-phone{color:var(--accent) !important;font-size:1.125rem !important;
  font-weight:700;border-bottom:0 !important;margin-top:.5rem}

@media(max-width:820px){
  /* ленты меню прячем — вместо них бургер */
  .db-nav,.dc-nav{display:none}
  .db-top-right .hdr-burger,.dc-hdr-right .hdr-burger{display:block;padding:.375rem}
  .hdr-burger span{width:24px}

  /* B: бургер справа от телефона, шапка липкая — меню всегда под рукой */
  .db-top{position:sticky;top:0;z-index:60;box-shadow:0 2px 12px rgba(0,0,0,.18)}
  .db-top-right{gap:.75rem}
  .db-burger-spacer{display:none}

  /* C: логотип по центру, бургер прижат к правому краю.
     Селектор с .dc — у страницы свои стили идут после этого файла
     и без повышения веса перекрыли бы правило. */
  .dc .dc-hdr-in{position:relative}
  .dc .dc-hdr-right{display:flex;position:absolute;right:0;top:50%;transform:translateY(-50%);
    justify-content:flex-end;align-items:center}
  .dc .dc-hdr-right .btn{display:none}
  .dc-hdr{position:sticky;top:0;z-index:60;box-shadow:0 2px 12px rgba(0,0,0,.25)}
  .dc-top{position:relative;z-index:59}
}

/* в B панель меню на тёмном фоне — как и сама шапка */
@media(max-width:820px){
  .db .mmenu-panel,.dc .mmenu-panel{background:var(--dark)}
}

/* бургер в B и C нужен только на телефоне: выше 820 работают ленты меню */
@media(min-width:821px){
  .db-top-right .hdr-burger,.dc-hdr-right .hdr-burger{display:none}
}

/* ============================================================
   ТЕКСТОВЫЕ ТАБЛИЦЫ НА ТЕЛЕФОНЕ — КАРТОЧКАМИ. 18.08.2026
   Ведомость оборудования, «Остальные операции» и «Материалы»
   при четырёх колонках на 400 px рвали слова по слогам.
   Класс .table-cards + атрибуты data-th у ячеек (проставлены
   в разметке) превращают каждую строку в карточку:
   фото сверху, название крупно, ниже «подпись — значение».
   Прайсовые таблицы (.table-nums) остаются обычными.
   ============================================================ */
@media(max-width:700px){
  .table-cards{border:0;background:none;overflow:visible}
  .table-cards table{border:0;table-layout:auto;font-size:.875rem}
  /* заголовок таблицы прячем — он переехал в подписи ячеек */
  .table-cards thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
  .table-cards tbody,.table-cards tr,.table-cards td{display:block;width:100%}

  .table-cards tr{border:1px solid var(--line);border-radius:var(--r);
    padding:.25rem .875rem .75rem;margin-bottom:.75rem;background:#fff}
  .table-cards tr:last-child{margin-bottom:0}
  .table-cards tbody tr:nth-child(even){background:#fff}
  .table-cards tbody tr:hover{background:#fff}

  .table-cards td{border:0;padding:.3125rem 0;display:flex;gap:.875rem;
    align-items:baseline;justify-content:space-between;text-align:right;white-space:normal}
  .table-cards td::before{content:attr(data-th);flex:0 0 44%;text-align:left;
    color:var(--muted);font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em}

  /* фото — во всю ширину карточки, без подписи */
  .table-cards td.is-media{display:block;padding:.625rem 0 .375rem}
  .table-cards td.is-media::before{display:none}
  .table-cards td.is-media img{width:100%;height:170px;object-fit:cover;border-radius:var(--r)}
  /* первая текстовая ячейка — название карточки */
  .table-cards td.is-title{display:block;text-align:left;font-weight:700;font-size:1rem;
    line-height:1.3;padding:.25rem 0 .5rem;border-bottom:1px solid var(--line);margin-bottom:.25rem}
  .table-cards td.is-title::before{display:none}

  /* тёмная тема дизайна C: карточки не белые, а прозрачные с рамкой */
  .dc .section:not(.dc-paper) .table-cards tr,
  .dc .section:not(.dc-paper) .table-cards tbody tr:nth-child(even){
    background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.18)}
  .dc .section:not(.dc-paper) .table-cards td.is-title{border-bottom-color:rgba(255,255,255,.18)}
  .dc .section:not(.dc-paper) .table-cards td::before{color:rgba(255,255,255,.6)}
}
@media(max-width:420px){
  .table-cards td{gap:.625rem}
  .table-cards td::before{flex-basis:40%;font-size:.625rem}
  .table-cards td.is-media img{height:150px}
}

/* ============================================================
   ФОТО НА ТЕЛЕФОНЕ — ВО ВСЮ ШИРИНУ ЭКРАНА. 18.08.2026
   Галереи цеха, готовых изделий и мозаика в C выходили с полями
   контейнера по бокам — снимки получались мелкими. До 700 px
   они разворачиваются от края до края: ровно на величину поля
   контейнера (--pad), поэтому горизонтальной прокрутки не будет.
   ============================================================ */
@media(max-width:700px){
  .gallery,.dc-mosaic,.db-works,.db-strip{
    margin-left:calc(var(--pad,1rem) * -1);
    margin-right:calc(var(--pad,1rem) * -1)}
  .gallery{gap:.375rem}
  .db-works{gap:.75rem .375rem}
  .dc-mosaic{gap:.25rem}
  /* края фото прямые: со скруглениями «во всю ширину» смотрится грязно */
  .shot,.shot img,.db-work img{border-radius:0}
  .shot img{height:260px}
  .shot-wide img{height:260px}
  .db-work img{height:240px}
  .dc-mosaic .shot img{height:230px}
  /* подписи возвращаем внутрь полей, чтобы текст не липнул к краю */
  .shot figcaption{padding-left:var(--pad,1rem);padding-right:var(--pad,1rem)}
  .db-work figcaption{padding-left:var(--pad,1rem);padding-right:var(--pad,1rem)}
  .db-strip{padding-left:var(--pad,1rem);padding-right:var(--pad,1rem)}
  .db-strip-hint{padding-left:0}
}
@media(max-width:420px){
  .shot img,.shot-wide img{height:230px}
  .db-work img{height:220px}
  .dc-mosaic .shot img{height:200px}
}

/* --- страница документа: политика ПДн и подобные тексты --- */
.doc{max-width:52rem}
.doc h3{font-size:1.0625rem;margin:2rem 0 .625rem;text-transform:none;letter-spacing:0}
.doc h3:first-of-type{margin-top:1rem}
.doc p{margin-bottom:.875rem;font-size:.9375rem;line-height:1.65}
.doc b{font-weight:700}

/* ============================================================
   ТАБЛИЦЫ НА ТЁМНЫХ СЕКЦИЯХ — 20.08.2026
   Базовый стиль таблиц пришёл из светлого дизайна: белый фон
   `.table-wrap` плюс унаследованный от `.dc` белый текст давали
   белое на белом — содержимое было не видно. На «бумажных»
   секциях `.dc-paper` и жёлтой `.dc-calc` всё остаётся как было.
   ============================================================ */
.dc .section:not(.dc-paper):not(.dc-calc) .table-wrap{
  background:rgba(255,255,255,.04);
  border-color:rgba(255,255,255,.16);
  background-image:none}
.dc .section:not(.dc-paper):not(.dc-calc) table{color:#fff}
.dc .section:not(.dc-paper):not(.dc-calc) th,
.dc .section:not(.dc-paper):not(.dc-calc) td{border-bottom-color:rgba(255,255,255,.14)}
.dc .section:not(.dc-paper):not(.dc-calc) thead th{background:#1F2324;color:var(--y)}
.dc .section:not(.dc-paper):not(.dc-calc) tbody tr:nth-child(even){background:rgba(255,255,255,.05)}
.dc .section:not(.dc-paper):not(.dc-calc) tbody tr:hover{background:rgba(255,255,255,.09)}
.dc .section:not(.dc-paper):not(.dc-calc) tbody td:first-child{color:#fff}
.dc .section:not(.dc-paper):not(.dc-calc) .table-note{color:rgba(255,255,255,.6)}
.dc .section:not(.dc-paper):not(.dc-calc) .table-note strong{color:#fff}
.dc .section:not(.dc-paper):not(.dc-calc) .table-note a{color:var(--accent);text-decoration:underline}

/* белые карточки внутри тёмной темы всегда с тёмным текстом */
.dc .tile,.dc .equip-item,.dc .calc-card,.dc .v1-card{color:var(--text)}

/* ============================================================
   ВСПЛЫВАЮЩЕЕ ОКНО РЕЗУЛЬТАТА — 24.08.2026
   Показывается после отправки формы. Разметку создаёт js/main.js,
   поэтому в HTML страниц ничего добавлять не нужно.
   ============================================================ */
.popup{position:fixed;inset:0;z-index:10050;display:flex;align-items:center;justify-content:center;
  padding:1.25rem;background:rgba(20,22,23,.72);opacity:0;transition:opacity .25s ease}
.popup.is-open{opacity:1}
.popup-box{position:relative;width:100%;max-width:440px;background:#fff;color:var(--text);
  border-radius:var(--r);padding:2.5rem 2rem 2rem;text-align:center;
  box-shadow:0 24px 60px rgba(0,0,0,.45);transform:translateY(14px) scale(.98);
  transition:transform .28s cubic-bezier(.2,.8,.3,1)}
.popup.is-open .popup-box{transform:none}
.popup-x{position:absolute;top:.5rem;right:.75rem;background:none;border:0;cursor:pointer;
  font-size:1.75rem;line-height:1;color:var(--muted);padding:.25rem .5rem}
.popup-x:hover{color:var(--text)}

/* значок: галочка на успех, восклицательный знак на ошибку */
.popup-icon{width:72px;height:72px;margin:0 auto 1.25rem;border-radius:50%;position:relative}
.popup-ok .popup-icon{background:#e7f6ec}
.popup-err .popup-icon{background:#fdeceb}
.popup-icon::after{content:'';position:absolute;left:50%;top:50%}
.popup-ok .popup-icon::after{width:14px;height:26px;margin:-16px 0 0 -7px;
  border:solid #0a7d32;border-width:0 4px 4px 0;transform:rotate(45deg);
  animation:popup-check .35s ease-out .1s both}
.popup-err .popup-icon::after{width:4px;height:32px;margin:-16px 0 0 -2px;background:#c0392b;
  border-radius:2px;box-shadow:0 0 0 0 transparent}
.popup-err .popup-icon::before{content:'';position:absolute;left:50%;bottom:14px;width:4px;height:4px;
  margin-left:-2px;background:#c0392b;border-radius:50%}
@keyframes popup-check{from{opacity:0;transform:rotate(45deg) scale(.4)}to{opacity:1;transform:rotate(45deg) scale(1)}}

.popup-title{font-size:1.375rem;margin-bottom:.625rem}
.popup-text{color:var(--muted);font-size:.9375rem;margin-bottom:1.25rem}
.popup-extra{margin-bottom:1.5rem}
.popup-phone{display:inline-block;font-size:1.25rem;font-weight:700;color:var(--cta);
  border-bottom:2px solid rgba(221,130,31,.35);padding-bottom:2px}
.popup-phone:hover{border-bottom-color:var(--cta)}
.popup-ok-btn,.popup .popup-ok{min-width:170px}

@media(max-width:600px){
  .popup{padding:1rem;align-items:flex-end}
  .popup-box{max-width:none;padding:2rem 1.25rem 1.5rem;border-radius:12px 12px 0 0;
    transform:translateY(100%)}
  .popup.is-open .popup-box{transform:none}
  .popup-icon{width:60px;height:60px;margin-bottom:1rem}
  .popup-title{font-size:1.1875rem}
  .popup .popup-ok{width:100%;min-height:50px}
}

/* тёмная тема: окно остаётся светлым, но кнопка своя */
.dc .popup-box{color:var(--text)}


/* ============================================================
   КОНТАКТЫ КРУПНЕЕ И КНОПКА МЕССЕНДЖЕРА MAX
   Заказчик просил, чтобы телефон читался сразу, а написать
   в мессенджер можно было с любой страницы.
   ============================================================ */

/* телефон в подвале — отдельной строкой и крупно */
.ftr-tel{font-family:Montserrat,NotoSans,sans-serif;font-size:1.375rem;font-weight:700;
  color:var(--y);white-space:nowrap;line-height:1.25;display:inline-block;margin-bottom:.125rem}
.ftr-tel:hover{color:#fff}

/* телефон на странице контактов */
.contacts-card .c-row a[href^="tel"]{font-family:Montserrat,NotoSans,sans-serif;font-size:1.5rem;font-weight:700}

/* кнопка «Написать в Max» */
.btn-max{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  background:#5B49F0;color:#fff !important;text-decoration:none;border:0;border-radius:var(--r);
  padding:.75rem 1.25rem;font-family:inherit;font-size:.9375rem;font-weight:700;line-height:1.2;
  transition:background .18s ease,transform .18s ease;margin-top:.75rem}
.btn-max:hover{background:#4638d8;transform:translateY(-1px)}
.btn-max svg,.btn-max img{width:20px;height:20px;fill:currentColor;flex-shrink:0}
.btn-max-lg{padding:.9375rem 1.75rem;font-size:1rem;margin-top:0}

/* в выезжающем меню — во всю ширину панели */
.mmenu-max{display:flex;width:100%;margin-top:.875rem;border-bottom:0 !important}

/* в мобильной панели действий: кнопка компактная, чтобы у «Позвонить»
   и «Чертёж» осталось место под подписи */
.mbar-max{background:#5B49F0;color:#fff;flex:0 0 auto;padding-left:1rem;padding-right:1rem}
.mbar-max:hover{background:#4638d8}

@media(max-width:600px){
  .dc-hdr-phone a{font-size:1.375rem}
  .ftr-tel{font-size:1.25rem}
  .contacts-card .c-row a[href^="tel"]{font-size:1.25rem}
  .btn-max{width:100%}
  .btn-max-lg{width:auto}
}


/* ------------------------------------------------------------
   Плавающая кнопка мессенджера Max.
   Держится в правом нижнем углу, на узких экранах спрятана:
   там внизу и так панель действий со своей кнопкой Max.
   ------------------------------------------------------------ */
.max-float{
  position:fixed;right:20px;bottom:20px;z-index:9990;
  display:inline-flex;align-items:center;gap:0;overflow:hidden;
  height:58px;padding:0 14px;border-radius:29px;
  background:#5B49F0;color:#fff;text-decoration:none;
  box-shadow:0 8px 24px rgba(28,28,40,.32);
  transition:gap .25s ease,padding .25s ease,background .18s ease,transform .18s ease
}
.max-float img{width:30px;height:30px;flex-shrink:0}
.max-float span{
  max-width:0;white-space:nowrap;font-weight:700;font-size:.9375rem;
  opacity:0;transition:max-width .25s ease,opacity .2s ease
}
.max-float:hover,.max-float:focus-visible{background:#4638d8;transform:translateY(-2px);gap:.625rem;padding-right:20px}
.max-float:hover span,.max-float:focus-visible span{max-width:12rem;opacity:1}

@media(max-width:820px){ .max-float{display:none} }
@media(prefers-reduced-motion:reduce){ .max-float{transition:none} }

/* при печати кнопка не нужна */
@media print{ .max-float{display:none} }


/* ------------------------------------------------------------
   ТОНКАЯ ЛИПКАЯ ПОЛОСКА С ТЕЛЕФОНОМ
   Держится вверху на любой прокрутке. Номер — единственное,
   что остаётся в ней на узких экранах: полоска не должна
   съедать высоту, ради которой человек и листает страницу.
   ------------------------------------------------------------ */
.dc-top-in{align-items:center;flex-wrap:nowrap;min-height:36px;
  padding-top:0;padding-bottom:0}      /* высота ровно как --topbar, иначе
                                          между полоской и меню будет щель */
.dc-top-adr{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.dc-top-right{display:flex;align-items:center;gap:.375rem;white-space:nowrap;flex-shrink:0}
.dc-top-tel{font-family:Montserrat,NotoSans,sans-serif;font-weight:700;font-size:1rem;
  color:var(--y);letter-spacing:.01em}
.dc-top-tel:hover{color:#fff}
.dc-top a{color:inherit}

@media(max-width:1100px){ .dc-top-hours{display:none} }
@media(max-width:820px){
  /* на телефоне липнет тёмная шапка с логотипом, полоска едет с ней */
  .dc-top{position:relative;z-index:59}
  .dc-nav{top:0}
  .dc-top-adr,.dc-top-mail,.dc-top-sep{display:none}
  .dc-top-in{justify-content:center}
  .dc-top-tel{font-size:1.0625rem}
}


/* ------------------------------------------------------------
   ТЕЛЕФОН: ШАПКА В ОДНУ СТРОКУ
   Логотип · телефон · бургер. Раньше логотип стоял над телефоном,
   и липкая шапка съедала треть экрана при прокрутке. Верхняя
   полоска здесь не нужна: номер и так в шапке, а она липкая.
   ------------------------------------------------------------ */
@media(max-width:820px){
  .dc .dc-top{display:none}

  .dc .dc-hdr{padding:.5rem 0}
  .dc .dc-hdr-in{display:flex;align-items:center;justify-content:space-between;
    gap:.625rem;position:static;text-align:left;grid-template-columns:none}

  .dc .dc-brand{order:-1;flex-direction:row;align-items:center;gap:.5rem;text-align:left}
  .dc .dc-brand img{height:34px}
  .dc .dc-brand span{display:none}

  .dc .dc-hdr-phone{order:0;margin-left:auto;text-align:right;line-height:1}
  .dc .dc-hdr-phone a{font-size:1.1875rem}
  .dc .dc-hdr-phone span{display:none}

  .dc .dc-hdr-right{order:1;position:static;transform:none;flex:0 0 auto}
  .dc .hdr-burger{margin-left:.125rem}

  /* якорям хватает высоты одной шапки */
  [id]{scroll-margin-top:64px}
}

@media(max-width:360px){
  .dc .dc-brand img{height:30px}
  .dc .dc-hdr-phone a{font-size:1.0625rem}
}


/* «по запросу» в прайсе — вместо прочерка. Прочерк читается как отказ,
   а здесь смысл обратный: гибка возможна, считаем индивидуально.
   Пишем мельче цен, чтобы не спорить с ними за внимание. */
.table-nums td.ask,td.ask{font-size:.8125rem;color:var(--muted);white-space:nowrap;font-variant-numeric:normal}
.dc .section:not(.dc-paper):not(.dc-calc) td.ask{color:rgba(255,255,255,.6)}
@media(max-width:600px){ td.ask{font-size:.75rem} }
