/* ============================================================
   ТопМастер74 — «Тёмная мастерская: металл и свет» (направление A)
   Токены и стиль — закон из design/A/манифест.md + 04-дизайн-манифест.
   Self-hosted шрифты (latin+cyrillic), без внешних CDN.
   ============================================================ */

/* ============ SELF-HOSTED ШРИФТЫ ============ */
@font-face{
  font-family:"Unbounded";font-style:normal;font-weight:400;font-display:swap;
  src:url("../fonts/Unbounded-400-cyrillic.woff2") format("woff2");
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face{
  font-family:"Unbounded";font-style:normal;font-weight:400;font-display:swap;
  src:url("../fonts/Unbounded-400-latin.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2122,U+2191,U+2193,U+2212,U+2215;
}
@font-face{
  font-family:"Unbounded";font-style:normal;font-weight:600;font-display:swap;
  src:url("../fonts/Unbounded-600-cyrillic.woff2") format("woff2");
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face{
  font-family:"Unbounded";font-style:normal;font-weight:600;font-display:swap;
  src:url("../fonts/Unbounded-600-latin.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2122,U+2191,U+2193,U+2212,U+2215;
}
@font-face{
  font-family:"Unbounded";font-style:normal;font-weight:700;font-display:swap;
  src:url("../fonts/Unbounded-700-cyrillic.woff2") format("woff2");
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face{
  font-family:"Unbounded";font-style:normal;font-weight:700;font-display:swap;
  src:url("../fonts/Unbounded-700-latin.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2122,U+2191,U+2193,U+2212,U+2215;
}
@font-face{
  font-family:"Onest";font-style:normal;font-weight:400;font-display:swap;
  src:url("../fonts/Onest-400-cyrillic.woff2") format("woff2");
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face{
  font-family:"Onest";font-style:normal;font-weight:400;font-display:swap;
  src:url("../fonts/Onest-400-latin.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2122,U+2191,U+2193,U+2212,U+2215;
}
@font-face{
  font-family:"Onest";font-style:normal;font-weight:500;font-display:swap;
  src:url("../fonts/Onest-500-cyrillic.woff2") format("woff2");
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face{
  font-family:"Onest";font-style:normal;font-weight:500;font-display:swap;
  src:url("../fonts/Onest-500-latin.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2122,U+2191,U+2193,U+2212,U+2215;
}
@font-face{
  font-family:"Onest";font-style:normal;font-weight:600;font-display:swap;
  src:url("../fonts/Onest-600-cyrillic.woff2") format("woff2");
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face{
  font-family:"Onest";font-style:normal;font-weight:600;font-display:swap;
  src:url("../fonts/Onest-600-latin.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2122,U+2191,U+2193,U+2212,U+2215;
}
@font-face{
  font-family:"JetBrains Mono";font-style:normal;font-weight:400;font-display:swap;
  src:url("../fonts/JetBrainsMono-400-cyrillic.woff2") format("woff2");
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face{
  font-family:"JetBrains Mono";font-style:normal;font-weight:400;font-display:swap;
  src:url("../fonts/JetBrainsMono-400-latin.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2122,U+2191,U+2193,U+2212,U+2215;
}
@font-face{
  font-family:"JetBrains Mono";font-style:normal;font-weight:500;font-display:swap;
  src:url("../fonts/JetBrainsMono-500-cyrillic.woff2") format("woff2");
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face{
  font-family:"JetBrains Mono";font-style:normal;font-weight:500;font-display:swap;
  src:url("../fonts/JetBrainsMono-500-latin.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2122,U+2191,U+2193,U+2212,U+2215;
}
@font-face{
  font-family:"JetBrains Mono";font-style:normal;font-weight:600;font-display:swap;
  src:url("../fonts/JetBrainsMono-600-cyrillic.woff2") format("woff2");
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face{
  font-family:"JetBrains Mono";font-style:normal;font-weight:600;font-display:swap;
  src:url("../fonts/JetBrainsMono-600-latin.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2122,U+2191,U+2193,U+2212,U+2215;
}

/* ============ ТОКЕНЫ ============ */
:root{
  --graphite:#17140F;      /* фон 60% */
  --surface:#221D16;       /* поверхность 30% */
  --copper:#C1743A;        /* акцент/декор 10% — НЕ текстовая заливка */
  --brass:#C6A052;         /* вторичный акцент */
  --steel:#B9BBB6;         /* вторичный текст */
  --light:#EDE7DC;         /* основной текст/свет */
  --copper-dim:#8f5228;
  --copper-cta:#6E3B1C;    /* глубокая медь под текст-заливку CTA: --light поверх даёт APCA Lc≈80 */

  --font-display:"Unbounded","PT Root UI","Golos Text",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;
  --font-body:"Onest","Golos Text",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;
  --font-mono:"JetBrains Mono","SF Mono","IBM Plex Mono",ui-monospace,"Cascadia Code",monospace;

  /* шкала ×1.333, база 17 */
  --fs-xs:.75rem; --fs-sm:.94rem; --fs-body:1.0625rem;
  --fs-h3:1.333rem; --fs-h2:1.777rem; --fs-h1:2.37rem;
  /* макс. уменьшен с 5.3rem: реальный self-hosted Unbounded (bold) заметно шире
     системного шрифта, использованного в дизайн-скетче для предпросмотра —
     на 5.3rem слово «инженерной» не помещалось в колонку hero и переносилось
     посимвольно. 4rem — граница, при которой обе строки-переносы («инженерной
     сантехники», «в квартире — под ключ») ложатся ровно по 2 строки, как в макете. */
  --fs-display:clamp(2.1rem,7.4vw,4rem);

  /* 8pt */
  --s1:8px; --s2:16px; --s3:24px; --s4:32px; --s6:48px; --s8:64px; --s10:80px; --s12:96px; --s16:128px;

  --ease:cubic-bezier(.32,.72,0,1);
  --radius:26px;
}

*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{
  background:var(--graphite);color:var(--light);
  font-family:var(--font-body);font-size:var(--fs-body);line-height:1.6;
  font-weight:400;letter-spacing:-.01em;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{display:block;max-width:100%}
/* h1 намеренно исключён: геройский заголовок — вручную сбалансированные 3 строки,
   естественный перенос по пробелу уже даёт нужный результат (см. design/A) */
h2,h3,h4,h5,p{overflow-wrap:break-word}
a{color:inherit;text-decoration:none}
ul{list-style:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
input,textarea{font:inherit;color:inherit}

/* плёночное зерно — фикс. оверлей, не трогает скролл */
.grain{position:fixed;inset:0;z-index:60;pointer-events:none;opacity:.05;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");}

.wrap{max-width:1280px;margin-inline:auto;padding-inline:clamp(20px,5vw,64px)}
.skip-link{position:absolute;left:-9999px;top:0;z-index:100;background:var(--copper-cta);color:var(--light);
  padding:12px 20px;border-radius:0 0 12px 0}
.skip-link:focus{left:0}

/* доступно только скринридеру (напр. живой статус слайдера) */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* тонкая инженерная иконка (Lucide, инлайн-SVG) — единый набор на весь проект */
.tico{width:20px;height:20px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round}

/* ============ ПЛАВАЮЩАЯ НАВИГАЦИЯ ============ */
.nav{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;justify-content:center;pointer-events:none}
.nav__pill{pointer-events:auto;margin-top:var(--s3);display:flex;align-items:center;gap:var(--s4);
  padding:10px 12px 10px 22px;border-radius:999px;
  background:rgba(28,24,18,.62);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  box-shadow:inset 0 1px 0 rgba(237,231,220,.08),0 12px 40px -18px rgba(0,0,0,.9);}
.brand{font-family:var(--font-display);font-weight:700;font-size:var(--fs-sm);letter-spacing:.02em}
.brand b{color:var(--copper)}
.nav__links{display:flex;gap:var(--s3);font-size:var(--fs-sm);color:var(--steel)}
.nav__links a{transition:color .4s var(--ease)}
.nav__links a:hover{color:var(--light)}
.nav__phone{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:var(--fs-xs);
  color:var(--light);background:var(--copper-cta);padding:9px 16px;border-radius:999px;font-weight:600;
  transition:transform .5s var(--ease)}
.nav__phone:hover{transform:translateY(-1px)}
@media(max-width:820px){.nav__links{display:none}}

/* ============ HERO ============ */
.hero{position:relative;min-height:100dvh;display:flex;align-items:center;
  padding-top:var(--s16);padding-bottom:var(--s10);overflow:hidden}
.hero::before{content:"";position:absolute;top:-18%;right:-6%;width:70vw;height:80vh;z-index:0;
  background:radial-gradient(46% 46% at 62% 30%,rgba(193,116,58,.28),rgba(198,160,82,.10) 42%,transparent 70%);
  filter:blur(6px);opacity:0;transform:scale(.92);
  animation:light 1400ms var(--ease) 120ms forwards}
.hero::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(120% 120% at 70% 20%,transparent 40%,rgba(6,5,3,.55) 100%)}

.hero__grid{position:relative;z-index:2;display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(32px,5vw,72px);align-items:center;width:100%}

.eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-mono);
  font-size:var(--fs-xs);letter-spacing:.22em;text-transform:uppercase;color:var(--brass);margin-bottom:var(--s3)}
.eyebrow::before{content:"";width:26px;height:1px;background:var(--brass);opacity:.7}

.h1{font-family:var(--font-display);font-weight:700;font-size:var(--fs-display);line-height:1.02;
  letter-spacing:-.02em;margin-bottom:var(--s4)}
.h1 .em{color:var(--copper)}
.h1 .line{display:block;overflow:hidden}
.h1 .line span{display:block;transform:translateY(105%);
  animation:rise 900ms var(--ease) forwards}
.h1 .line:nth-child(1) span{animation-delay:.30s}
.h1 .line:nth-child(2) span{animation-delay:.40s}
.h1 .line:nth-child(3) span{animation-delay:.50s}

.lead{max-width:52ch;color:var(--steel);font-size:var(--fs-h3);line-height:1.5;margin-bottom:var(--s6);
  opacity:0;animation:fade 900ms var(--ease) .62s forwards}
.lead b{color:var(--light);font-weight:600}

.cta-row{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:center;
  opacity:0;animation:fade 900ms var(--ease) .72s forwards}
.btn{display:inline-flex;align-items:center;gap:14px;border-radius:999px;font-weight:600;
  font-size:var(--fs-body);padding:16px 16px 16px 26px;transition:transform .5s var(--ease),background .5s var(--ease)}
.btn__ico{width:34px;height:34px;border-radius:999px;display:grid;place-items:center;flex:0 0 auto;
  transition:transform .5s var(--ease)}
.btn:active{transform:scale(.98)}
.btn--primary{background:var(--copper-cta);color:var(--light)}
.btn--primary .btn__ico{background:rgba(237,231,220,.18)}
.btn--primary:hover .btn__ico{transform:translate(3px,-2px)}
.btn--ghost{background:transparent;color:var(--light);padding-left:26px;
  box-shadow:inset 0 0 0 1px rgba(185,187,182,.28)}
.btn--ghost:hover{background:rgba(237,231,220,.06)}
.btn--ghost .btn__ico{background:rgba(237,231,220,.10)}
.btn svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.6}
.btn:disabled{opacity:.55;cursor:not-allowed}

.trust{display:flex;gap:var(--s4);margin-top:var(--s6);flex-wrap:wrap;
  opacity:0;animation:fade 900ms var(--ease) .84s forwards}
.trust__i{display:flex;align-items:flex-start;gap:12px;
  font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--steel);line-height:1.4}
.trust__icon{color:var(--copper);width:22px;height:22px;margin-top:2px}
.trust__i b{display:block;font-family:var(--font-display);font-size:var(--fs-h3);color:var(--light);font-weight:700;letter-spacing:0}

/* --- геройское фото узла со светом и выносками --- */
.stage{position:relative;perspective:1400px}
.stage__frame{position:relative;background:var(--surface);padding:10px;border-radius:var(--radius);
  box-shadow:0 40px 90px -40px rgba(0,0,0,.9),inset 0 1px 0 rgba(237,231,220,.06);
  transform:rotate(-1.4deg);opacity:0;
  animation:reveal 1200ms var(--ease) .25s forwards}

/* --- Embla-слайдер витрины (5 узлов); headless-библиотека, вид полностью наш --- */
.embla{position:relative;border-radius:calc(var(--radius) - 10px)}
.embla:focus-visible{outline:2px solid var(--copper);outline-offset:4px}
.embla__viewport{overflow:hidden;border-radius:calc(var(--radius) - 10px)}
.embla__container{display:flex}
.embla__slide{flex:0 0 100%;min-width:0}

.stage__img{position:relative;border-radius:calc(var(--radius) - 10px);overflow:hidden;aspect-ratio:1280/854}
.stage__img img{width:100%;height:100%;object-fit:cover;object-position:center;
  filter:brightness(.9) contrast(1.02)}
.stage__img::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(70% 60% at 50% 40%,transparent 30%,rgba(10,8,5,.5) 100%)}
/* кроп портретных/квадратных кадров под общую landscape-рамку 1280/854 */
.crop-work12 img{object-position:50% 28%}
.crop-work18 img{object-position:50% 38%}
.crop-work9 img{object-position:50% 30%}
.crop-work17 img{object-position:50% 34%}

/* точки-навигация слайдера — медный стиль */
.hero-dots{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);z-index:5;
  display:flex;gap:10px;padding:9px 13px;border-radius:999px;
  background:rgba(20,17,12,.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.hero-dot{width:8px;height:8px;border-radius:999px;background:rgba(237,231,220,.35);
  transition:background .4s var(--ease),transform .4s var(--ease)}
.hero-dot:hover{background:rgba(237,231,220,.65)}
.hero-dot[aria-selected="true"]{background:var(--copper);transform:scale(1.35)}

/* инженерные выноски (сигнатура) */
.callout{position:absolute;z-index:3;opacity:0;animation:fade 700ms var(--ease) forwards}
.callout:nth-of-type(1){animation-delay:1.05s}
.callout:nth-of-type(2){animation-delay:1.20s}
.callout:nth-of-type(3){animation-delay:1.35s}
.callout .dot{position:absolute;left:-5px;top:-5px;width:10px;height:10px;border-radius:999px;
  background:var(--copper);box-shadow:0 0 0 4px rgba(193,116,58,.25),0 0 14px rgba(193,116,58,.6)}
.callout .leader{position:absolute;top:0;height:1px;background:linear-gradient(90deg,var(--brass),rgba(198,160,82,.2))}
.callout .chip{position:absolute;top:-12px;white-space:nowrap;font-family:var(--font-mono);
  font-size:11px;letter-spacing:.02em;color:var(--light);
  background:rgba(20,17,12,.78);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  padding:6px 11px;border-radius:8px;box-shadow:inset 0 1px 0 rgba(237,231,220,.08)}
.callout .chip .num{color:var(--brass);font-weight:700;margin-right:7px}
.callout--r .leader{left:6px;width:46px}
.callout--r .chip{left:58px}
.callout--l .leader{right:6px;width:46px}
.callout--l .chip{right:58px}
/* позиции выносок — раньше задавались через inline style="left/top", перенесены сюда,
   чтобы держать CSP style-src 'self' строгим (без 'unsafe-inline').
   Портрет мастера зафиксирован в правом-нижнем углу кадра (см. .portrait) — все выноски
   намеренно держим в левых ~60% ширины и верхних ~70% высоты кадра, чтобы чип с текстом
   (включая его leader-линию) физически не мог зайти под врезку-портрет ни на одном слайде. */
.callout--p1{left:18%;top:16%}
.callout--p2{left:50%;top:44%}
.callout--p3{left:52%;top:62%}
/* слайд 2 (work12) */
.callout--p4{left:20%;top:14%}
.callout--p5{left:20%;top:30%}
/* слайд 3 (work18) */
.callout--p6{left:20%;top:16%}
.callout--p7{left:60%;top:30%}
/* слайд 4 (work9) */
.callout--p8{left:24%;top:16%}
.callout--p9{left:54%;top:58%}
/* слайд 5 (work17) — было единственной выноской, которая реально заезжала под портрет */
.callout--p10{left:18%;top:18%}

.portrait{position:absolute;right:-22px;bottom:-30px;z-index:4;width:40%;max-width:210px;
  background:var(--surface);padding:7px;border-radius:18px;
  box-shadow:0 26px 60px -26px rgba(0,0,0,.95),inset 0 1px 0 rgba(237,231,220,.07);
  transform:rotate(2deg);opacity:0;animation:reveal 1000ms var(--ease) .7s forwards}
.portrait img{border-radius:12px;aspect-ratio:1/1;object-fit:cover;object-position:75% 30%;width:100%}
.portrait__cap{font-family:var(--font-mono);font-size:10px;color:var(--steel);
  letter-spacing:.04em;padding:8px 6px 4px;line-height:1.35}
.portrait__cap b{color:var(--light);display:block;font-weight:600}

.legend{display:none;margin-top:var(--s3);gap:10px;flex-direction:column}
.legend div{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--steel);line-height:1.4}
.legend .num{color:var(--brass);font-weight:700;margin-right:8px}

@media(max-width:900px){
  .hero__grid{grid-template-columns:1fr;gap:var(--s10)}
  .stage__frame{transform:none}
  .portrait{width:34%;right:12px;bottom:-24px}
  .callout{display:none}
  .legend{display:flex}
}
@media(max-width:560px){
  .cta-row{flex-direction:column;align-items:stretch}
  .btn{justify-content:space-between}
  .portrait{position:static;width:100%;max-width:none;transform:none;margin-top:var(--s2);
    display:flex;gap:var(--s2);align-items:center}
  .portrait img{width:96px;height:96px;flex:0 0 auto}
}

/* ============ БРЕНД-ЛЕНТА (Splide) — маркер уровня, не носитель УТП ============ */
.brand-strip{padding-block:var(--s3);background:var(--surface);
  border-top:1px solid rgba(185,187,182,.14);border-bottom:1px solid rgba(185,187,182,.14)}
.brand-strip__row{display:flex;align-items:center;gap:var(--s4)}
.brand-strip__label{flex:0 0 auto;font-family:var(--font-mono);font-size:var(--fs-xs);
  letter-spacing:.14em;text-transform:uppercase;color:var(--steel);white-space:nowrap}
.brand-splide{flex:1 1 auto;min-width:0}
.brand-splide .splide__slide{display:flex;align-items:center;justify-content:center;height:40px}
/* лого-стена: реальные бренды производителей, приведены к единому силуэту —
   brightness(0) invert(1) обесцвечивает любой логотип (цветной SVG или растр) в чистый
   светлый силуэт, приглушённый непрозрачностью в покое; на ховер/фокус — полная яркость */
.brand-logo{display:block;height:24px;width:auto;max-width:200px;
  filter:brightness(0) invert(1);opacity:.55;
  transition:opacity .35s var(--ease)}
.brand-logo--mark{height:28px}
.splide__slide:hover .brand-logo,.splide__slide:focus-within .brand-logo{opacity:1}
@media(max-width:560px){
  .brand-strip__row{gap:var(--s2)}
  .brand-strip__label{display:none}
}

/* ============ ОБЩИЕ ЭЛЕМЕНТЫ СЕКЦИЙ ============ */
section{padding-block:clamp(80px,10vw,128px);position:relative}
.section__head{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--s6);
  margin-bottom:var(--s8);flex-wrap:wrap}
.h2{font-family:var(--font-display);font-weight:700;font-size:var(--fs-h1);line-height:1.06;
  letter-spacing:-.02em;max-width:16ch}
.h2 .em{color:var(--copper)}
.section__note{max-width:38ch;color:var(--steel);font-size:var(--fs-body)}

/* тихий один-разовый reveal, переиспользуется во всех секциях после hero */
.reveal{opacity:0;transform:translateY(28px);
  transition:transform .8s var(--ease),opacity .8s var(--ease)}
.reveal.in{opacity:1;transform:none}

/* ============ ПОРТФОЛИО (bento) ============ */
.bento{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--s2);grid-auto-rows:200px}
.card{position:relative;border-radius:var(--radius);overflow:hidden;background:var(--surface);
  box-shadow:0 30px 70px -46px rgba(0,0,0,.9);transition:transform .8s var(--ease),opacity .8s var(--ease),box-shadow .5s var(--ease)}
.card:hover{transform:translateY(-6px);box-shadow:0 40px 80px -40px rgba(0,0,0,.95)}
.card img{width:100%;height:100%;object-fit:cover;filter:brightness(.92) contrast(1.03);
  transition:transform .9s var(--ease)}
.card:hover img{transform:scale(1.05)}
.card__grad{position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(12,10,6,.86) 100%);pointer-events:none}
.card__meta{position:absolute;left:0;right:0;bottom:0;padding:var(--s3);pointer-events:none}
.card__brand{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.14em;
  text-transform:uppercase;color:var(--brass);margin-bottom:6px}
.card__title{font-family:var(--font-body);font-size:var(--fs-body);font-weight:600;line-height:1.25;color:var(--light)}
.card__zoom{position:absolute;top:var(--s2);right:var(--s2);width:36px;height:36px;border-radius:999px;
  display:grid;place-items:center;background:rgba(20,17,12,.68);backdrop-filter:blur(6px);
  color:var(--light);opacity:0;transition:opacity .4s var(--ease);pointer-events:none}
.card:hover .card__zoom,.card:focus-within .card__zoom{opacity:1}
.card__zoom svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.7}
/* z-index выше декоративных слоёв (.card__grad/.card__zoom/.card__meta) — на случай, если pointer-events
   где-то переопределят; без этого декор перехватывал hit-test и клик по карточке не открывал лайтбокс */
.card__btn{position:absolute;inset:0;width:100%;height:100%;cursor:zoom-in;z-index:2}

.c-wide{grid-column:span 8;grid-row:span 2}
.c-tall{grid-column:span 4;grid-row:span 2}
.c-third{grid-column:span 4;grid-row:span 2}
.c-half{grid-column:span 6;grid-row:span 2}
@media(max-width:1000px){
  .bento{grid-auto-rows:190px}
  .c-wide{grid-column:span 12}
  .c-tall{grid-column:span 6}
  .c-third{grid-column:span 6}
  .c-half{grid-column:span 6}
}
@media(max-width:600px){
  .bento{grid-template-columns:1fr;grid-auto-rows:240px}
  .c-wide,.c-tall,.c-third,.c-half{grid-column:span 1;grid-row:span 1}
}

/* ============ УСЛУГИ И ЦЕНЫ ============ */
.services__intro{max-width:68ch;color:var(--steel);font-size:var(--fs-body);margin-bottom:var(--s8)}
.price-list{display:flex;flex-direction:column}
.price-row{display:grid;grid-template-columns:1.4fr auto 2fr;gap:var(--s4);align-items:baseline;
  padding-block:var(--s3);border-bottom:1px solid rgba(185,187,182,.14)}
.price-row:first-child{padding-top:0}
.price-row__head{display:flex;align-items:center;gap:12px}
.price-row__icon{color:var(--brass)}
.price-row__name{font-family:var(--font-display);font-weight:600;font-size:var(--fs-h3);color:var(--light)}
.price-row__price{font-family:var(--font-mono);font-size:var(--fs-body);color:var(--brass);white-space:nowrap;text-align:right}
.price-row__desc{color:var(--steel);font-size:var(--fs-sm);line-height:1.5}
@media(max-width:760px){
  .price-row{grid-template-columns:1fr;gap:6px}
  .price-row__price{text-align:left}
}
.disclaimer{margin-top:var(--s6);color:var(--steel);font-size:var(--fs-xs);font-family:var(--font-mono);
  opacity:.75;max-width:60ch}

/* ============ КАК Я РАБОТАЮ (принципы) ============ */
.principles{display:grid;grid-template-columns:5fr 7fr;gap:var(--s8);align-items:start}
.how__photo{position:sticky;top:calc(var(--s16) + var(--s3));transform:rotate(-1.2deg)}
.principles__list{display:flex;flex-direction:column}
.principle{display:grid;grid-template-columns:56px 1fr;gap:var(--s3);padding-block:var(--s4);
  border-bottom:1px solid rgba(185,187,182,.14)}
.principle:first-child{padding-top:0}
.principle:last-child{border-bottom:0}
/* иконок здесь больше нет (убраны по правке клиента) — номер принципа сам несёт роль маркера,
   поэтому увеличен и выровнен по верхней строке заголовка, без «дыры» на месте бывшей иконки */
.principle__num{padding-top:2px}
.principle__index{font-family:var(--font-mono);font-size:var(--fs-h2);color:var(--brass);font-weight:700;line-height:1}
.principle__title{font-family:var(--font-display);font-weight:600;font-size:var(--fs-h3);color:var(--light);margin-bottom:6px}
.principle__text{color:var(--steel);font-size:var(--fs-body);line-height:1.55;max-width:56ch}
@media(max-width:900px){
  .principles{grid-template-columns:1fr}
  .how__photo{position:static;max-width:280px;transform:none}
}

/* ============ ФОТО-КАРТОЧКА (переиспользуемая рамка) ============ */
.photo-card{background:var(--surface);padding:10px;border-radius:var(--radius);
  box-shadow:0 30px 80px -40px rgba(0,0,0,.9)}
.photo-card img{border-radius:calc(var(--radius) - 10px);width:100%;object-fit:cover;
  filter:brightness(.94) contrast(1.02)}
.photo-card--portrait img{aspect-ratio:4/5;object-position:60% 22%}
.photo-card--square img{aspect-ratio:1/1;object-position:50% 38%}

/* ============ О МАСТЕРЕ ============ */
.master{display:grid;grid-template-columns:7fr 5fr;gap:clamp(32px,6vw,80px);align-items:center}
.master__photo{position:relative}
.master__frame{transform:rotate(1.2deg)}
.master__title{font-family:var(--font-display);font-weight:700;font-size:var(--fs-h1);line-height:1.1;
  letter-spacing:-.02em;margin-bottom:var(--s4);max-width:14ch}
.master__text{color:var(--steel);font-size:var(--fs-body);line-height:1.65;max-width:60ch;margin-bottom:var(--s6)}
.master__text a,.text-link{color:var(--brass);text-decoration:underline;text-underline-offset:3px}
.master__trust{display:flex;gap:var(--s4);flex-wrap:wrap}
@media(max-width:900px){
  .master{grid-template-columns:1fr}
  .master__photo{order:-1;max-width:280px}
}

/* ============ ОБЪЕКТЫ ============ */
.objects__intro{max-width:60ch;color:var(--steel);font-size:var(--fs-body);margin-bottom:var(--s6)}
.objects__list{display:flex;flex-wrap:wrap;gap:var(--s2)}
.object-tag{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:var(--fs-sm);
  color:var(--light);background:var(--surface);padding:14px 20px;border-radius:999px}
.object-tag svg{width:15px;height:15px;stroke:var(--copper);fill:none;stroke-width:1.6;flex:0 0 auto}
.objects__geo{margin-top:var(--s4);color:var(--steel);font-size:var(--fs-sm);font-family:var(--font-mono)}

/* ============ КОНТАКТ / ЗАЯВКА ============ */
.contact{display:grid;grid-template-columns:5fr 7fr;gap:clamp(32px,6vw,72px);align-items:start}
@media(max-width:900px){
  .contact{grid-template-columns:1fr}
}
.contact__lead{color:var(--steel);font-size:var(--fs-h3);line-height:1.5;max-width:44ch;margin-bottom:var(--s6)}
.contact__phone{display:inline-flex;align-items:center;gap:12px;font-family:var(--font-display);
  font-weight:700;font-size:var(--fs-h2);color:var(--light);margin-bottom:var(--s6)}
.contact__phone svg{width:24px;height:24px;stroke:var(--copper);fill:none;stroke-width:1.6}
.contact__geo{color:var(--steel);font-size:var(--fs-sm);font-family:var(--font-mono);margin-bottom:var(--s6)}
.social-row{display:flex;gap:var(--s2)}
.social{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:var(--fs-xs);
  color:var(--light);background:var(--surface);padding:12px 18px;border-radius:999px;transition:transform .4s var(--ease)}
.social:hover{transform:translateY(-2px)}
.social svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.5}

.form-card{background:var(--surface);border-radius:var(--radius);padding:clamp(28px,4vw,var(--s8));
  box-shadow:0 30px 80px -40px rgba(0,0,0,.9)}
.field{display:flex;flex-direction:column;gap:8px;margin-bottom:var(--s4)}
.field label{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--steel)}
.field input{background:rgba(237,231,220,.05);border:1px solid rgba(185,187,182,.22);border-radius:14px;
  padding:14px 16px;font-size:var(--fs-body);color:var(--light);transition:border-color .3s var(--ease),background .3s var(--ease)}
.field input::placeholder{color:rgba(185,187,182,.55)}
.field input:focus{outline:none;border-color:var(--copper);background:rgba(237,231,220,.08)}
.field input[aria-invalid="true"]{border-color:var(--copper)}
.field__error{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--copper);min-height:1.2em}
.field--hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.consent{display:flex;gap:12px;align-items:flex-start;margin-bottom:var(--s6);cursor:pointer}
.consent input{margin-top:4px;width:18px;height:18px;flex:0 0 auto;accent-color:var(--copper-cta)}
.consent__text{font-size:var(--fs-sm);color:var(--steel);line-height:1.5}
.consent__text a{color:var(--brass);text-decoration:underline;text-underline-offset:3px}
.form-msg{font-family:var(--font-mono);font-size:var(--fs-sm);margin-top:var(--s3);min-height:1.4em}
.form-msg[data-state="ok"]{color:var(--light)}
.form-msg[data-state="error"]{color:var(--copper)}
.form-card .btn--primary{width:100%;justify-content:space-between}

/* ============ ПОДВАЛ ============ */
.footer{padding-block:var(--s8);border-top:1px solid rgba(185,187,182,.14)}
.footer__grid{display:flex;justify-content:space-between;flex-wrap:wrap;gap:var(--s6);margin-bottom:var(--s6)}
.footer__brand .brand{font-size:var(--fs-h3);display:block;margin-bottom:8px}
.footer__brand p{color:var(--steel);font-size:var(--fs-sm);max-width:36ch}
.footer__col h5{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;
  color:var(--brass);margin-bottom:var(--s2)}
.footer__col ul{display:flex;flex-direction:column;gap:8px}
.footer__col a{color:var(--steel);font-size:var(--fs-sm);transition:color .3s var(--ease)}
.footer__col a:hover{color:var(--light)}
.footer__bottom{display:flex;justify-content:space-between;flex-wrap:wrap;gap:var(--s2);
  font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--steel);opacity:.75;
  padding-top:var(--s4);border-top:1px solid rgba(185,187,182,.1)}

/* ============ ЛАЙТБОКС ============ */
.lightbox{position:fixed;inset:0;z-index:80;display:none;align-items:center;justify-content:center;
  padding:var(--s4);background:rgba(10,8,5,.92);backdrop-filter:blur(12px)}
.lightbox[data-open="true"]{display:flex}
.lightbox__figure{position:relative;max-width:min(1100px,92vw);max-height:88vh}
.lightbox__figure img{max-width:100%;max-height:88vh;border-radius:18px;object-fit:contain;
  box-shadow:0 40px 100px -30px rgba(0,0,0,.9)}
.lightbox__cap{margin-top:var(--s2);text-align:center;font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--steel)}
.lightbox__close,.lightbox__prev,.lightbox__next{position:absolute;width:44px;height:44px;border-radius:999px;
  background:rgba(28,24,18,.72);color:var(--light);display:grid;place-items:center;
  transition:transform .3s var(--ease),background .3s var(--ease)}
.lightbox__close{top:-56px;right:0}
.lightbox__prev{left:-56px;top:50%;transform:translateY(-50%)}
.lightbox__next{right:-56px;top:50%;transform:translateY(-50%)}
.lightbox__close:hover,.lightbox__prev:hover,.lightbox__next:hover{background:var(--copper-cta)}
.lightbox__close svg,.lightbox__prev svg,.lightbox__next svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8}
@media(max-width:760px){
  .lightbox__prev{left:0}
  .lightbox__next{right:0}
  .lightbox__close{top:-48px;right:0}
}

/* ============ АНИМАЦИИ ============ */
@keyframes light{to{opacity:1;transform:scale(1)}}
@keyframes rise{to{transform:translateY(0)}}
@keyframes fade{to{opacity:1}}
@keyframes reveal{from{opacity:0;transform:var(--from,translateY(24px)) scale(.98);filter:blur(8px)}
  to{opacity:1;filter:blur(0)}}
.stage__frame{--from:rotate(-1.4deg)}
.portrait{--from:rotate(2deg)}

/* защита от классической утечки CSS Grid: дочерний элемент трека не сжимается уже
   min-content, что раздувает трек и вызывает горизонтальный оверфлоу на мобильных */
.hero__grid > *,.master > *,.principles > *,.contact > *{min-width:0}

:focus-visible{outline:2px solid var(--copper);outline-offset:3px;border-radius:6px}

@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
  .h1 .line span,.lead,.cta-row,.trust,.stage__frame,.portrait,.callout{opacity:1;transform:none;filter:none}
  .card,.reveal{opacity:1;transform:none}
  .hero::before{opacity:1;transform:none}
  /* hero-слайдер: без JS-инициализации виден только первый слайд (work13), как раньше */
  .embla__slide:not(:first-child){display:none}
  .hero-dots{display:none}
}
