/* «Органика» - тема «Оранжерея».
   Палитра: Пигмент, ui #647d2a (светлая) + тёмная полоса из того же прогона.
   Контрасты проверены движком: кнопка #759800 несёт тёмную надпись,
   цветной мелкий текст - только #445d28. */
:root{
  --bg:#f0f5e6;
  --surface:#e7edd8;
  --surface-2:#dde4cb;
  --border:#c9d0ba;
  --border-strong:#b3b9a5;
  --ink:#191c11;
  --muted:#585c50;
  --accent:#759800;
  --accent-hover:#698900;
  --accent-subtle:#e4f3cb;
  --on-accent:#111111;
  --olive-text:#445d28;
  --d-bg:#111407;
  --d-surface:#1a1e0d;
  --d-text:#e7e9e0;
  --d-muted:#7d8075;
  --d-accent:#c9f46c;
  --d-border:#373c28;
  --serif:'Cormorant Garamond',Georgia,serif;
  --sans:'Jost','Segoe UI',sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  background:var(--bg);color:var(--ink);
  font-family:var(--sans);font-weight:400;font-size:17px;line-height:1.6;
  overflow-x:hidden;
}
h1,h2,h3{font-family:var(--serif);font-weight:500;line-height:1.08}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
.wrap{max-width:1360px;margin:0 auto;padding:0 44px}

/* ---------- плавающий логотип ---------- */
.float-logo{position:fixed;left:20px;top:20px;z-index:90;width:88px;height:88px}
.float-logo .disc{
  position:absolute;inset:12px;background:#fff;border-radius:50%;
  box-shadow:0 8px 30px rgba(25,28,17,.18);
  display:flex;align-items:center;justify-content:center;
}
.float-logo .disc a{display:flex;align-items:center;justify-content:center;width:100%;height:100%}
.float-logo .disc img{width:72%}
.float-logo svg{position:absolute;inset:0;animation:spin 26s linear infinite}
.float-logo svg text{font-family:var(--sans);font-size:8.4px;letter-spacing:.22em;text-transform:uppercase;fill:var(--olive-text)}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- шапка ---------- */
header.site{
  display:flex;justify-content:flex-end;align-items:center;gap:30px;
  padding:24px 44px;font-size:14px;letter-spacing:.05em;position:relative;z-index:20;
}
header.site nav{display:flex;gap:24px}
header.site nav a{opacity:.8;transition:.25s;padding:4px 0;border-bottom:1px solid transparent}
header.site nav a:hover{opacity:1;color:var(--olive-text)}
header.site nav a.on{opacity:1;color:var(--olive-text);border-bottom-color:var(--olive-text)}
.btn{
  display:inline-block;padding:13px 30px;border-radius:999px;
  background:var(--accent);color:var(--on-accent);letter-spacing:.08em;font-size:14px;
  font-weight:400;transition:.3s;border:1px solid var(--accent);cursor:pointer;
}
.btn:hover{background:var(--accent-hover);border-color:var(--accent-hover);transform:translateY(-1px)}
.btn.ghost{background:transparent;color:var(--olive-text);border-color:var(--olive-text)}
.btn.ghost:hover{border-color:var(--accent-hover);color:var(--olive-text);background:var(--accent-subtle);transform:translateY(-1px)}

/* вторичная кнопка в ключевых блоках мягко «дышит», привлекая взгляд */
@keyframes ghostglow{
  0%,100%{box-shadow:0 0 0 0 rgba(117,152,0,0)}
  50%{box-shadow:0 0 0 7px rgba(117,152,0,.16)}
}
.hero .btn.ghost,.cta-band .btn.ghost,.page-hero .btn.ghost{animation:ghostglow 3.8s ease-in-out infinite}
.hero .btn.ghost:hover,.cta-band .btn.ghost:hover,.page-hero .btn.ghost:hover{animation:none}
.btn.big{font-size:16px;padding:17px 44px}

/* мобильное меню */
.burger{display:none;background:none;border:1px solid var(--border-strong);border-radius:10px;
  padding:9px 12px;font-family:var(--sans);font-size:13px;letter-spacing:.08em;cursor:pointer;color:var(--ink)}

/* ---------- hero главной ---------- */
.hero{
  display:grid;grid-template-columns:1.1fr .9fr;gap:40px;
  padding:36px 44px 84px;max-width:1360px;margin:0 auto;
  align-items:center;position:relative;
}
.kicker{
  font-size:13px;letter-spacing:.32em;text-transform:uppercase;color:var(--olive-text);
  margin-bottom:24px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;
}
.hero>*,.page-hero>*,.split>*{min-width:0}
.kicker::before{content:"";width:44px;height:1px;background:var(--olive-text)}
/* подпись над заголовком первого экрана вложена в H1 (главный запрос), вид — как у подписи */
h1 .kicker{font-family:var(--sans);font-weight:400;line-height:1.6}   /* как у текста страницы */
.hero h1{font-size:clamp(48px,6.2vw,92px);letter-spacing:-.01em}
.hero h1 em,.h-em{font-style:italic;color:var(--olive-text)}
.hero .lead{max-width:44ch;margin:28px 0 36px;font-size:19px}
.cta-row{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.hero .photo{position:relative}
.hero .photo .arch{
  border-radius:290px 290px 24px 24px;overflow:hidden;
  box-shadow:0 30px 80px rgba(25,28,17,.22);
}
.hero .photo .arch img{width:100%;height:620px;object-fit:cover;transform:scale(1.06);transition:transform 2.4s cubic-bezier(.2,.6,.2,1)}
body.loaded .hero .photo .arch img{transform:scale(1)}
.hero .photo .tag{
  position:absolute;left:-30px;bottom:42px;background:#fff;border-radius:18px;
  padding:17px 23px;box-shadow:0 16px 44px rgba(25,28,17,.16);font-size:14px;line-height:1.45;
}
.hero .photo .tag b{font-weight:500;color:var(--olive-text)}
.leaf-mark{position:absolute;right:-120px;top:-40px;width:400px;opacity:.05;pointer-events:none}
.hero{overflow-x:clip}

/* стартовый каскад hero */
.hero .st{opacity:0;transform:translateY(24px);transition:.9s cubic-bezier(.2,.65,.25,1)}
body.loaded .hero .st{opacity:1;transform:none}
body.loaded .hero .st:nth-child(2){transition-delay:.12s}
body.loaded .hero .st:nth-child(3){transition-delay:.24s}
body.loaded .hero .st:nth-child(4){transition-delay:.36s}

/* ---------- бегущая строка ---------- */
.marquee{
  border-top:1px solid var(--border);border-bottom:1px solid var(--border);
  overflow:hidden;white-space:nowrap;background:var(--surface);
}
.marquee .track{display:inline-block;animation:mq 30s linear infinite;padding:15px 0}
.marquee span{font-family:var(--serif);font-size:21px;font-style:italic;margin:0 32px;color:var(--olive-text)}
@keyframes mq{to{transform:translateX(-50%)}}

/* ---------- секции ---------- */
section{max-width:1360px;margin:0 auto;padding:92px 44px}
.sec-head{display:flex;align-items:end;justify-content:space-between;margin-bottom:52px;gap:30px}
.sec-head h2{font-size:clamp(36px,3.8vw,58px)}
.sec-head .note{max-width:36ch;font-size:16px;color:var(--muted);text-align:right}

/* карточки услуг */
.services{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border);border:1px solid var(--border)}
.svc{
  background:var(--bg);padding:36px 32px;position:relative;transition:.35s;
  display:flex;flex-direction:column;gap:11px;min-height:210px;
}
.svc:hover{background:var(--accent-subtle)}
.svc .num{font-size:12px;letter-spacing:.28em;color:var(--olive-text)}
.svc h3{font-size:26px}
.svc .from{margin-top:auto;font-size:16px;color:var(--muted)}
.svc .from b{font-weight:500;font-size:18px;color:var(--olive-text)}
.svc .arr{
  position:absolute;right:28px;bottom:28px;width:34px;height:34px;border:1px solid var(--border-strong);
  border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:15px;
  transition:.35s;color:var(--olive-text);
}
.svc .arr::after{content:"→"}
.svc:hover .arr{background:var(--accent);border-color:var(--accent);color:var(--on-accent);transform:rotate(-45deg)}
.go::after{content:" →"}

/* тёмная полоса */
.dark-band{
  display:grid;grid-template-columns:.9fr 1.1fr;gap:64px;align-items:center;
  background:var(--d-bg);color:var(--d-text);border-radius:32px;
  padding:72px 64px;position:relative;overflow:hidden;
}
.dark-band::after{
  content:"";position:absolute;right:-140px;bottom:-140px;width:480px;height:480px;
  background:radial-gradient(circle,rgba(201,244,108,.10),transparent 70%);
}
.dark-band h2{font-size:clamp(34px,3.4vw,52px);margin-bottom:22px}
.dark-band h2 em{font-style:italic;color:var(--d-accent)}
.dark-band p{opacity:.88;margin-bottom:15px;font-size:17px}
.badges{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}
.dark-band .badges{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.dark-band .badges span{
  display:flex;align-items:center;gap:11px;
  padding:14px 18px;border-radius:12px;font-size:13.5px;letter-spacing:.03em;
  background:rgba(201,244,108,.07);border:1px solid var(--d-border);color:var(--d-text);
}
.dark-band .badges span::before{content:"✦";color:var(--d-accent);font-size:11px;flex-shrink:0}
.dark-band .ph{border-radius:24px;overflow:hidden}
.dark-band .ph img{height:460px;width:100%;object-fit:cover}

/* сплит фото+текст */
.split{display:grid;grid-template-columns:1.05fr .95fr;gap:64px;align-items:center}
.split.rev-order .txt{order:2}
.split .ph{border-radius:24px 200px 24px 24px;overflow:hidden;box-shadow:0 26px 70px rgba(25,28,17,.18)}
.split .ph.plain{border-radius:24px}
.split .ph img{height:520px;width:100%;object-fit:cover}
.split h2{font-size:clamp(34px,3.6vw,52px);margin-bottom:24px}
.list-check{list-style:none;margin-top:8px}
.list-check li{padding:15px 0;border-bottom:1px solid var(--border);display:flex;gap:15px;font-size:17px}
.list-check li::before{content:"✦";color:var(--olive-text);font-size:14px;margin-top:2px}

/* мастера */
.masters{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,390px));gap:34px;justify-content:center}
.master{position:relative;border-radius:24px;overflow:hidden;cursor:pointer;background:var(--surface)}
.master img{height:400px;width:100%;object-fit:cover;object-position:top;transition:1.1s cubic-bezier(.2,.7,.2,1)}
.master:hover img{transform:scale(1.045)}
.master .info{
  position:absolute;left:14px;right:14px;bottom:14px;background:rgba(240,245,230,.94);
  backdrop-filter:blur(8px);border-radius:15px;padding:16px 20px;
  display:flex;justify-content:space-between;align-items:center;gap:10px;
}
.master .info h3{font-size:23px}
.master .info small{font-size:14px;color:var(--muted);display:block;margin-top:2px;font-family:var(--sans)}
.master .info .go{font-size:12.5px;letter-spacing:.1em;color:var(--olive-text);white-space:nowrap}

/* ---------- внутренние страницы ---------- */
.page-head{max-width:1360px;margin:0 auto;padding:26px 44px 0}
.crumbs{font-size:14px;color:var(--muted);letter-spacing:.04em;display:flex;gap:10px;flex-wrap:wrap}
.crumbs a:hover{color:var(--olive-text)}
.crumbs span::before{content:"/";margin-right:10px;color:var(--border-strong)}
.page-hero{
  display:grid;grid-template-columns:1.15fr .85fr;gap:44px;align-items:center;
  max-width:1360px;margin:0 auto;padding:40px 44px 70px;
}
.page-hero h1{font-size:clamp(40px,5vw,72px);letter-spacing:-.01em}
.page-hero .lead{max-width:48ch;margin:24px 0 34px;font-size:19px}
.page-hero .ph{border-radius:24px 200px 24px 24px;overflow:hidden;box-shadow:0 26px 70px rgba(25,28,17,.18)}
.page-hero .ph img{height:440px;width:100%;object-fit:cover}
.page-hero .facts{display:flex;gap:36px;margin-top:34px;flex-wrap:wrap}
.fact{border-left:1px solid var(--border-strong);padding-left:16px;font-size:14.5px;color:var(--muted)}
.fact b{display:block;font-family:var(--serif);font-size:19px;color:var(--ink);font-weight:500;margin-bottom:3px}

/* прайс-таблица */
.ptable{border-top:1px solid var(--border)}
.prow{
  display:grid;grid-template-columns:1fr auto;gap:24px;align-items:baseline;
  padding:19px 6px;border-bottom:1px solid var(--border);transition:.3s;
}
.prow:hover{background:var(--accent-subtle);padding-left:18px}
.prow .nm{font-size:18px}
.prow .nm small{display:block;font-size:14.5px;color:var(--muted);margin-top:3px}
.prow .pr{font-family:var(--serif);font-size:21px;color:var(--olive-text);white-space:nowrap;font-weight:500}
.prow .pr small{font-size:.62em;color:var(--muted);font-family:var(--sans);font-weight:400}
.pgroup{margin-bottom:54px}
.pgroup h2,.pgroup h3.gt{font-size:clamp(28px,2.8vw,40px);margin-bottom:22px}
/* строка под заголовком группы цен: «без учёта материалов», «на аппарате …» */
.pgroup .gnote{color:var(--muted);font-size:15px;margin:-6px 0 18px}

/* галерея работ */
.works{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:22px}
.works figure{border-radius:20px;overflow:hidden;position:relative}
.works img{height:320px;width:100%;object-fit:cover;transition:.9s}
.works figure:hover img{transform:scale(1.05)}
/* высокие фото (кабинет LPG): три в ряд, на телефоне — лента с прокруткой вбок */
.works.tall{grid-template-columns:repeat(3,1fr)}
.works.tall img{height:auto;aspect-ratio:3/4}
@media(max-width:640px){
  .works.tall{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:76%;
    overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;scrollbar-width:none}
  .works.tall::-webkit-scrollbar{display:none}
  .works.tall figure{scroll-snap-align:start}
}

/* плейсхолдер под живое фото */
.ph-todo{
  border:1.5px dashed var(--border-strong);border-radius:20px;background:var(--surface);
  min-height:320px;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:14px;padding:30px;text-align:center;color:var(--muted);font-size:14px;
}
.ph-todo img.leaf{width:56px;height:56px;object-fit:contain;opacity:.5;animation:breathe 4s ease-in-out infinite}
@keyframes breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.1)}}
.ph-todo b{font-weight:400;color:var(--olive-text);letter-spacing:.06em;text-transform:uppercase;font-size:12.5px}

/* CTA-полоса */
.cta-band{
  max-width:1360px;margin:0 auto;padding:0 44px 92px;text-align:center;
}
.cta-band .inner{
  background:var(--surface);border:1px solid var(--border);border-radius:32px;padding:64px 40px;
}
.cta-band h2{font-size:clamp(32px,3.6vw,52px);margin-bottom:16px}
.cta-band p{color:var(--muted);margin-bottom:32px}

/* футер */
footer.site{
  border-top:1px solid var(--border);padding:44px;max-width:1360px;margin:0 auto;
  display:grid;grid-template-columns:auto 1fr auto;gap:36px;font-size:14px;align-items:start;
}
footer.site .fl{display:flex;align-items:center;gap:14px}
footer.site .fl img{width:44px}
footer.site .fl b{font-family:var(--serif);font-size:19px;font-weight:500;display:block}
footer.site .mid{display:flex;gap:40px;flex-wrap:wrap;justify-content:center;color:var(--muted)}
footer.site .mid a:hover{color:var(--olive-text)}
footer.site .right{text-align:right;color:var(--muted)}
footer.site .right a{color:var(--ink)}
footer.site .right a:hover{color:var(--olive-text)}

/* появление при скролле */
.rev{opacity:0;transform:translateY(26px);transition:.9s cubic-bezier(.2,.65,.25,1)}
.rev.on{opacity:1;transform:none}

/* ступенчатое появление детей сеток: задержка от порядкового номера */
.services.rev .svc,.masters.rev .master,.works.rev figure,.ptable .prow{
  opacity:0;transform:translateY(22px);
  transition:opacity .7s cubic-bezier(.2,.65,.25,1),transform .7s cubic-bezier(.2,.65,.25,1);
  transition-delay:calc(var(--i,0)*70ms);
}
.works.rev figure{transform:translateY(22px) scale(.965)}
.services.rev.on .svc,.masters.rev.on .master,.works.rev.on figure,.ptable.on .prow{
  opacity:1;transform:none;
}
.pgroup.rev.on .ptable .prow{opacity:1;transform:none}
/* строки прайса едут от своей группы */
.pgroup.rev .ptable .prow{transition-delay:calc(var(--i,0)*45ms)}

/* подчёркивание навигации растёт слева */
header.site nav a{background:linear-gradient(currentColor,currentColor) left bottom/0 1px no-repeat;
  transition:background-size .35s ease,opacity .25s,color .25s;border-bottom:none}
header.site nav a:hover,header.site nav a.on{background-size:100% 1px}

/* клавиатурный фокус в тон бренда */
:focus-visible{outline:2px solid var(--olive-text);outline-offset:2px;border-radius:4px}
.dark-band :focus-visible{outline-color:var(--d-accent)}

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

/* мелкий текст плотнее - Jost 300 на 13-14px расплывается */
small,.fact,.crumbs,.svc .from,.note{font-weight:400}

/* прайс: строки не шире колонки чтения */
.ptable{max-width:900px}

/* бейдж рейтинга Яндекс Карт */
.ybadge{
  display:inline-flex;align-items:center;gap:10px;margin-top:22px;
  padding:11px 18px;border:1px solid var(--border);border-radius:999px;
  background:#fff;font-size:14px;color:var(--ink);transition:.25s;
}
.ybadge:hover{border-color:var(--olive-text)}
.ybadge .stars{color:#f5a300;letter-spacing:2px;font-size:15px}
.ybadge b{font-weight:500}
.ybadge small{color:var(--muted);font-size:13.5px}
/* плашки Яндекса: до согласия на cookie — наша ссылка, после — живой рейтинг и награда */
.yplashki{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:22px}
.yplashki .ybadge{margin-top:0}
iframe.yplashka{display:none;width:150px;height:50px;border:0;border-radius:8px}
iframe.yplashka.yplashka--vid{display:block}
.ybadge.ybadge--skryta{display:none}

/* встраиваемые карты и отзывы Яндекса */
.embed-frame{
  border:1px solid var(--border);border-radius:24px;overflow:hidden;background:var(--surface);
}
.embed-frame iframe{display:block;width:100%;border:0}
.reviews-wrap{display:grid;grid-template-columns:1fr 1fr;gap:34px;align-items:start}
@media(max-width:1024px){.reviews-wrap{grid-template-columns:1fr}}

/* уважение к reduced-motion */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  html{scroll-behavior:auto}
  .rev,.hero .st{opacity:1;transform:none}
}

/* ---------- адаптив ---------- */
@media(max-width:1024px){
  .wrap,section{padding-left:22px;padding-right:22px}
  header.site{padding:18px 22px 18px 90px}
  header.site nav{
    display:none;position:absolute;top:100%;right:22px;left:22px;background:#fff;
    border:1px solid var(--border);border-radius:18px;padding:18px 22px;
    flex-direction:column;gap:14px;box-shadow:0 20px 60px rgba(25,28,17,.14);
  }
  header.site nav.open{display:flex}
  .burger{display:block}
  .float-logo{width:64px;height:64px;left:12px;top:12px}
  .hero{grid-template-columns:1fr;padding:16px 22px 60px}
  .hero .photo .arch img{height:420px}
  .hero .photo .tag{left:10px}
  .leaf-mark{display:none}
  .services{grid-template-columns:1fr 1fr}
  .dark-band{grid-template-columns:1fr;padding:46px 28px;gap:34px}
  .dark-band .ph img{height:320px}
  .split,.page-hero{grid-template-columns:1fr;gap:36px;padding-left:22px;padding-right:22px}
  .split.rev-order .txt{order:0}
  .split .ph img,.page-hero .ph img{height:380px}
  .page-head{padding:18px 22px 0}
  .sec-head{flex-direction:column;align-items:flex-start}
  .sec-head .note{text-align:left}
  section{padding-top:60px;padding-bottom:60px}
  footer.site{grid-template-columns:1fr;text-align:left;gap:22px;padding:34px 22px}
  footer.site .mid{justify-content:flex-start}
  footer.site .right{text-align:left}
}
@media(max-width:560px){
  .services{grid-template-columns:1fr}
  .hero h1{font-size:44px}
  header.site{justify-content:space-between;gap:10px}
  header.site>.btn{padding:10px 16px;font-size:12.5px;letter-spacing:.04em}
  .kicker{font-size:12px;letter-spacing:.14em}
  .dark-band .badges{grid-template-columns:1fr}
}

/* Плавающие виджеты - тёмный сервисный слой (пара к контакт-кнопке) */
.yButton .yButtonBackground{background-color:#141a26!important}
.yButton .yButtonWave{border-color:#141a26!important;color:#141a26!important}
.yButton .yButtonText{color:#ffffff!important}

/* Единый ритм страниц услуг */
.stack>.pgroup{margin-bottom:0}
.stack>.pgroup+.pgroup{margin-top:54px}
.stack>.split,.stack>.dark-band,.stack>.sec-head{margin-top:96px}
.stack>:first-child{margin-top:0}
@media (max-width:760px){.stack>.split,.stack>.dark-band,.stack>.sec-head{margin-top:64px}}

/* Акция месяца: блок на главной, в прайсе и на странице услуги */
.promo-band{max-width:1360px;margin:72px auto 0;padding:0 44px}
.promo-band.on-page{margin-top:8px}
.promo-band + section{padding-top:76px!important}
@media (max-width:900px){.promo-band + section{padding-top:56px!important}}
.promo-inner{
  position:relative;overflow:hidden;display:grid;grid-template-columns:1.2fr .8fr;gap:48px;align-items:center;
  background:var(--d-bg);color:var(--d-text);border-radius:32px;padding:56px 60px;
}
.promo-inner .leaf{position:absolute;right:-50px;bottom:-70px;width:280px;opacity:.07;pointer-events:none}
.promo-kicker{
  display:flex;align-items:center;gap:12px;margin-bottom:16px;
  font-size:12.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--d-accent);
}
.promo-kicker::before{content:"";width:36px;height:1px;background:var(--d-accent)}
.promo-inner h2{font-size:clamp(34px,3.6vw,54px);line-height:1.05;margin-bottom:16px;color:var(--d-text)}
.promo-inner p{opacity:.86;max-width:54ch;font-size:17px}
.promo-inner .promo-note{margin-top:14px;font-size:14.5px;opacity:.62}
.promo-inner .promo-link{border-bottom:1px solid currentColor;white-space:nowrap}
.promo-price{position:relative;text-align:right}
.promo-price .new{display:block;font-family:var(--serif);font-weight:500;font-size:clamp(56px,6.4vw,92px);line-height:.95;color:var(--d-accent)}
.promo-price .old{display:block;margin-top:8px;font-size:19px;opacity:.55;text-decoration:line-through}
.promo-price .until{
  display:inline-block;margin-top:16px;padding:7px 15px;border-radius:999px;
  border:1px solid rgba(201,244,108,.35);font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;
}
.promo-price .after{display:block;margin-top:12px;max-width:34ch;margin-left:auto;font-size:14px;line-height:1.5;opacity:.6}
.promo-cta{display:flex;gap:12px;flex-wrap:wrap;justify-content:flex-end;margin-top:24px}
.promo-cta .btn.ghost{color:var(--d-text);border-color:rgba(231,233,224,.4)}
.promo-cta .btn.ghost:hover{background:rgba(201,244,108,.1);color:var(--d-text);border-color:var(--d-accent)}
@media (max-width:900px){
  .promo-band{padding:0 18px;margin-top:48px}
  .promo-inner{grid-template-columns:1fr;gap:26px;padding:40px 28px}
  .promo-price{text-align:left}
  .promo-price .after{margin-left:0}
  .promo-cta{justify-content:flex-start}
}
/* значок на плитке услуги и строки прайса по акции */
.promo-pill{
  position:absolute;top:22px;right:22px;padding:6px 12px;border-radius:999px;
  background:var(--d-bg);color:var(--d-accent);font-size:12px;letter-spacing:.1em;text-transform:uppercase;
}
.prow.is-promo{background:var(--accent-subtle);padding-left:18px;box-shadow:inset 3px 0 0 var(--accent)}
.promo-tag{
  display:inline-block;margin-right:10px;padding:3px 10px;border-radius:999px;vertical-align:2px;
  background:var(--d-bg);color:var(--d-accent);font-size:12px;letter-spacing:.08em;text-transform:uppercase;
}
.promo-new{font-weight:500}
.promo-old{margin-left:10px;font-size:.72em;color:var(--muted);font-family:var(--sans);font-weight:400}
.promo-old small{display:none}

/* мероприятия школы */
.promo-techs{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.promo-techs span{padding:6px 13px;border-radius:999px;border:1px solid rgba(201,244,108,.35);font-size:14px;color:var(--d-text)}
.promo-price .sub{display:block;margin-top:4px;font-family:var(--serif);font-size:26px;color:var(--d-text);opacity:.85}
.school-event{margin-bottom:24px;padding:14px 18px;border-radius:14px;background:var(--accent-subtle);font-size:16px;border-left:3px solid var(--accent)}
.school-event b{font-weight:500;color:var(--olive-text)}

/* курс школы */
.course{display:grid;grid-template-columns:.8fr 1.2fr;gap:64px}
.course h3{font-size:26px;margin-bottom:18px}
.course .list-check b{font-weight:500}
.course-note{margin-top:22px;color:var(--muted);font-size:15.5px}
@media (max-width:860px){.course{grid-template-columns:1fr;gap:36px}}

/* иконки мессенджеров рядом с «Позвонить» */
.msg-ic{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:50%;
  flex-shrink:0;transition:transform .2s ease,box-shadow .2s ease;box-shadow:0 4px 14px rgba(25,28,17,.16)}
.msg-ic:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(25,28,17,.22)}
.msg-ic svg{width:22px;height:22px;fill:#fff}
.msg-ic.tg{background:#229ed9}
.cta-row{align-items:center}
/* строка-анонс мероприятия школы */
.event-strip{max-width:1360px;margin:8px auto 0;padding:0 44px}
.event-strip a{display:grid;grid-template-columns:auto 1fr auto;gap:26px;align-items:center;
  padding:20px 28px;border-radius:20px;background:var(--d-bg);color:var(--d-text);transition:transform .3s ease}
.event-strip a:hover{transform:translateY(-2px)}
.event-date{font-family:var(--serif);font-size:26px;color:var(--d-accent);white-space:nowrap}
.event-txt{font-size:15.5px;opacity:.85}
.event-txt b{display:block;font-weight:500;font-size:17px;opacity:1;margin-bottom:2px}
.event-go{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--d-accent);white-space:nowrap}
.event-go::after{content:" →"}
.event-strip + section{padding-top:64px!important}
@media (max-width:760px){.event-strip{padding:0 18px}.event-strip a{grid-template-columns:1fr;gap:6px}}
/* страница мастер-класса */
.mk-techs .svc{min-height:170px;cursor:default}
.mk-techs .svc:hover{background:var(--bg)}
.mk-past{margin:-6px 0 22px;padding:12px 16px;border-radius:12px;background:var(--accent-subtle);font-size:16px}

.msg-ic.vk{background:#0077ff}
.msg-ic.vk svg{width:24px;height:24px}
.msg-ic.sm{width:34px;height:34px;box-shadow:none}
.msg-ic.sm svg{width:17px;height:17px}
.msg-ic.sm.vk svg{width:19px;height:19px}
.soc-row{display:flex;gap:8px;justify-content:flex-end;margin:10px 0 12px}
.kanal-tg{margin-top:18px;font-size:16px;color:var(--muted)}
.kanal-tg a{color:var(--olive-text)}
.cfab-vk svg{width:26px!important;height:26px!important}
@media (max-width:760px){.soc-row{justify-content:flex-start}}

/* карточка мастера: клик - работы, кнопка - запись */
.master .cover{position:absolute;inset:0;z-index:1}
.master .info{z-index:2}
.master .acts{display:flex;flex-direction:column;align-items:flex-end;gap:7px}
.master .book{
  padding:6px 14px;border-radius:999px;background:var(--accent);color:var(--on-accent);
  font-size:12px;letter-spacing:.06em;white-space:nowrap;transition:.25s;
}
.master .book:hover{background:var(--accent-hover)}

/* ---------- вопросы и ответы ---------- */
.faq{max-width:900px}
.faq details{border-bottom:1px solid var(--border)}
.faq details:first-child{border-top:1px solid var(--border)}
.faq summary{
  list-style:none;cursor:pointer;position:relative;
  padding:20px 46px 20px 0;font-family:var(--serif);font-size:clamp(20px,2vw,24px);
  line-height:1.25;transition:color .2s;
}
.faq summary::-webkit-details-marker{display:none}
.faq summary:hover{color:var(--olive-text)}
.faq summary::after{
  content:'';position:absolute;right:10px;top:50%;width:9px;height:9px;margin-top:-7px;
  border-right:1.5px solid var(--olive-text);border-bottom:1.5px solid var(--olive-text);
  transform:rotate(45deg);transition:transform .25s,margin .25s;
}
.faq details[open] summary::after{transform:rotate(-135deg);margin-top:-2px}
.faq details p{margin:0 0 22px;max-width:74ch;color:var(--muted);font-size:17px}

/* ---------- смежные услуги ---------- */
.related{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.related a{
  display:block;padding:24px 26px;background:var(--surface);
  border:1px solid var(--border);border-radius:16px;transition:.25s;
}
.related a:hover{background:var(--surface-2);border-color:var(--border-strong);transform:translateY(-3px)}
.related b{display:block;font-family:var(--serif);font-weight:500;font-size:22px;margin-bottom:6px}
.related span{font-size:15px;color:var(--muted)}
@media(max-width:900px){.related{grid-template-columns:1fr}}

.stack>.faq,.stack>.related,.stack>.reviews-wrap{margin-top:0}

/* список противопоказаний */
.list-stop{list-style:none;columns:2;column-gap:48px;margin-top:4px}
.list-stop li{break-inside:avoid;padding:13px 0;border-bottom:1px solid var(--border);display:flex;gap:14px;font-size:17px}
.list-stop li::before{content:"—";color:var(--muted);margin-top:1px}
.gnote-stop{margin-top:22px;font-size:16px;color:var(--muted);max-width:62ch}
@media(max-width:900px){.list-stop{columns:1}}

/* окно про файлы cookie: две равные по размеру кнопки, отказ так же доступен, как согласие */
.cookie{position:fixed;left:50%;bottom:18px;z-index:20000;width:min(760px,calc(100% - 24px));
  transform:translate(-50%,16px);opacity:0;transition:opacity .25s ease,transform .25s ease;
  background:#fff;border:1px solid var(--border-strong);border-radius:22px;
  box-shadow:0 14px 44px rgba(25,28,17,.2);padding:20px 24px;
  display:flex;gap:18px 24px;align-items:center;font-size:14.5px;line-height:1.55;color:var(--ink)}
.cookie--vid{opacity:1;transform:translate(-50%,0)}
.cookie__t{margin:0;flex:1}
.cookie__t a{color:var(--olive-text);text-decoration:underline;text-underline-offset:3px}
.cookie__k{display:flex;flex-direction:column;gap:10px;flex:0 0 auto}
.cookie__k .btn{padding:12px 20px;font-size:13px;justify-content:center;white-space:nowrap}
.cookie__seychas{font-size:12px;color:var(--muted);text-align:center;margin-top:-4px}
@media(max-width:640px){
  .cookie{flex-direction:column;align-items:stretch;bottom:10px;padding:16px 18px;font-size:14px}
  .cookie__k{flex-direction:row;flex-wrap:wrap}
  .cookie__k .btn{flex:1 1 140px}
  .cookie__seychas{flex-basis:100%;text-align:left;margin-top:-4px}
}
@media(prefers-reduced-motion:reduce){.cookie{transition:none}}
@media print{.cookie{display:none}}

/* отзывы и карта Яндекса до согласия: заглушка с кнопкой на месте окна */
.embed-frame{position:relative}
.okno-zaglushka{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:14px;padding:24px;text-align:center;background:var(--surface)}
.okno-zaglushka p{font-family:var(--serif);font-size:26px;margin:0;color:var(--ink)}
.okno-zaglushka small{max-width:42ch;color:var(--muted);font-size:13px;line-height:1.5}

/* «Настройки cookie» в подвале выглядит как остальные ссылки */
footer.site .cookie-vybor{cursor:pointer}

/* страницы-документы: политика и согласие */
.doc{max-width:900px}
.doc h1{font-size:clamp(34px,4vw,56px);margin-bottom:14px}
.doc h2{font-size:clamp(26px,2.6vw,36px);margin:52px 0 16px}
.doc h3{font-size:24px;margin-bottom:14px}
.doc p,.doc li{max-width:72ch}
.doc p{margin-bottom:14px}
.doc ul,.doc ol{margin:0 0 16px 22px}
.doc li{margin-bottom:10px}
.doc a{color:var(--olive-text);text-decoration:underline;text-underline-offset:3px}
.doc-red{font-size:15px;color:var(--muted);letter-spacing:.04em}
.doc-lead{font-size:19px}
.doc-cel{border:1px solid var(--border);border-radius:20px;background:#fff;padding:24px 26px;margin-bottom:16px}
.doc-cel dl{display:grid;grid-template-columns:170px 1fr;gap:10px 22px;font-size:15.5px}
.doc-cel dt{color:var(--muted)}
.doc-cel dd{margin:0}
.doc-punkty li{margin-bottom:14px}
@media(max-width:640px){
  .doc-cel{padding:20px}
  .doc-cel dl{grid-template-columns:1fr;gap:2px}
  .doc-cel dd{margin-bottom:10px}
}
.doc-def{margin-bottom:10px}
.doc-rekv{line-height:1.75}

/* пока открыто окно cookie или мобильное меню, кнопки в углах экрана не мешают */
body:has(.cookie) .cfab,body:has(.cookie) .yButton,
body:has(header.site nav.open) .cfab,body:has(header.site nav.open) .yButton{opacity:0;pointer-events:none;transition:opacity .2s}

/* ---------- закреплённая шапка: меню всегда под рукой (21.09) ---------- */
html{scroll-padding-top:96px}
header.site{position:sticky;top:0;z-index:80;transition:padding .3s ease}
header.site::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:rgba(240,245,230,.88);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--border);opacity:0;transition:opacity .3s ease}
body.prokrucheno header.site{padding-top:18px;padding-bottom:18px}
body.prokrucheno header.site::before{opacity:1}
/* логотип: целиком ведёт на главную; после прокрутки — поменьше, кольцо остаётся и крутится от прокрутки (22.09, main.js) */
.float-logo{transition:width .3s ease,height .3s ease,top .3s ease,left .3s ease}
.float-logo svg{pointer-events:none;transition:opacity .3s ease}
.float-logo .disc{transition:inset .3s ease}
.float-logo .disc a{position:relative}
.float-logo .disc a::after{content:"";position:absolute;inset:-12px;border-radius:50%}
body.prokrucheno .float-logo{width:68px;height:68px;top:7px}
body.prokrucheno .float-logo .disc{inset:10px}
.nav-dop{display:none}
@media(max-width:1024px){
  body.prokrucheno header.site{padding:14px 16px 14px 72px}
  body.prokrucheno .float-logo{width:54px;height:54px;top:6px;left:10px}
  body.prokrucheno .float-logo .disc{inset:8px}
  .burger{position:relative;z-index:3;min-width:84px;background:rgba(255,255,255,.6)}
  /* полноэкранное меню */
  header.site nav{position:fixed;inset:0;z-index:2;display:flex;visibility:hidden;opacity:0;
    flex-direction:column;justify-content:center;gap:0;padding:96px 30px 32px;
    border:0;border-radius:0;box-shadow:none;background:var(--bg);overflow-y:auto;
    transition:opacity .28s ease,visibility 0s linear .28s}
  header.site nav.open{visibility:visible;opacity:1;transition:opacity .28s ease}
  header.site nav>a{font-family:var(--serif);font-size:clamp(30px,8.6vw,40px);line-height:1.2;
    letter-spacing:0;opacity:1;padding:12px 0;border-bottom:1px solid var(--border);background:none;
    transform:translateY(12px);transition:transform .5s cubic-bezier(.2,.7,.2,1),color .2s}
  header.site nav>a.on{color:var(--olive-text);border-bottom-color:var(--border)}
  header.site nav.open>a{transform:none}
  header.site nav.open>a:nth-of-type(2){transition-delay:.04s}
  header.site nav.open>a:nth-of-type(3){transition-delay:.08s}
  header.site nav.open>a:nth-of-type(4){transition-delay:.12s}
  header.site nav.open>a:nth-of-type(5){transition-delay:.16s}
  .nav-dop{display:flex;flex-direction:column;align-items:flex-start;gap:12px;margin-top:30px;
    font-size:15px;color:var(--muted)}
  /* ссылки меню красят все <a> внутри nav — кнопке и телефону возвращаем свой вид */
  header.site nav .nav-dop a{opacity:1;border-bottom:0;background-image:none}
  header.site nav .nav-dop .btn{padding:14px 30px;background:var(--accent);color:var(--on-accent);
    border:1px solid var(--accent);font-size:14px;letter-spacing:.08em}
  header.site nav .nav-dop .nav-tel{padding:0;font-size:20px;color:var(--ink);letter-spacing:.02em}
  .nav-dop span{line-height:1.5}
  body:has(header.site nav.open){overflow:hidden}
}
@media print{header.site{position:static}.float-logo{display:none}}

/* 22.09: одна-две работы не растягиваются на всю ширину; текст страниц техник */
.works.solo{grid-template-columns:repeat(auto-fill,minmax(240px,340px))}
.works.solo img{height:auto}
.opis{max-width:860px}
.opis p{font-size:17px;line-height:1.7;margin-bottom:14px}
.opis p:last-child{margin-bottom:0}
.gnote a,.opis a,.faq p a{color:var(--olive-text);text-decoration:underline;text-underline-offset:3px}

/* 22.09: после крупного шрифта на узких телефонах — кнопка «Записаться онлайн» в карточке-призыве не рвётся,
   у плашки рейтинга подпись короче («на Яндекс Картах» прячется, плашка и так ведёт на Карты) */
@media (max-width:420px){
  .cta-band .btn.big{padding:15px 24px;letter-spacing:.05em;white-space:nowrap}
  .ybadge .yb-gde{display:none}
}

/* 22.09: одна кнопка записи — вверху, «Онлайн-запись» со значком; кнопка YClients в углу не показывается
   (её скрипт больше не грузится, cookie.js); «Листок» с контактами — справа внизу (правило в блоке кнопки) */
.yButton{display:none!important}
header.site>.btn.zapis{display:inline-flex;align-items:center;gap:9px;font-weight:500;letter-spacing:.05em;
  box-shadow:0 8px 22px rgba(117,152,0,.30);animation:zapis-svet 3.8s ease-in-out infinite}
header.site>.btn.zapis:hover{animation:none;box-shadow:0 10px 26px rgba(117,152,0,.40)}
header.site>.btn.zapis .zapis-ik{width:17px;height:17px;flex-shrink:0}
@keyframes zapis-svet{0%,100%{box-shadow:0 8px 22px rgba(117,152,0,.30),0 0 0 0 rgba(117,152,0,0)}
  50%{box-shadow:0 8px 22px rgba(117,152,0,.30),0 0 0 7px rgba(117,152,0,.14)}}
@media (max-width:400px){header.site>.btn.zapis .zapis-ik{display:none}}
header.site>.btn.zapis{white-space:nowrap}
@media (max-width:360px){header.site>.btn.zapis{padding:10px 12px;font-size:12px;letter-spacing:.02em}.burger{min-width:64px;padding-left:10px;padding-right:10px}}
@media (prefers-reduced-motion:reduce){header.site>.btn.zapis{animation:none}}

/* 24.09: работы «до и после» целиком и с подписью. Врач Дарья Белай: «клиент не должен гадать, что там было
   сделано» — в карточке 3:4 фото вписано без обрезки на светлом фоне, под ним подпись. */
.works.celikom{grid-template-columns:repeat(auto-fill,minmax(240px,340px));justify-content:center}
.works.celikom figure{background:#fff;display:flex;flex-direction:column}
.works.celikom img{height:auto;aspect-ratio:3/4;object-fit:contain;background:#fff}
.works.celikom figure:hover img{transform:none}
.works figcaption{padding:10px 14px 14px;font-size:14.5px;line-height:1.45;color:var(--ink)}
.works .shir{grid-column:1/-1;background:#fff}
.works .shir img{height:auto}

/* 24.09: текстовые разделы без картинки («Как проходит», «Какой массаж выбрать» и т. п.) —
   строка не шире, чем удобно читать */
.tekst-blok{max-width:860px}

/* 24.09: ряд из двух широких карточек «до и после» (коллажи 2:1) — фото целиком, подпись снизу */
.works.para{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));margin-top:16px}
.works.para figure{background:#fff}
.works.para img{height:auto}
.works.para figure:hover img{transform:none}
/* 27.09: карточки разной высоты не тянутся до самой высокой в ряду — без пустых белых полей */
.works.para{align-items:start}
/* 27.09: в одну колонку (до 1024) фото шапки и блоков — квадрат не шире 560: при фиксированной высоте 380 на планшете кадр становился полосой ~2,6:1 и резал лица */
@media(max-width:1024px){
  .split .ph,.page-hero .ph,.dark-band .ph{max-width:560px;width:100%}
  .split .ph img,.page-hero .ph img,.dark-band .ph img{height:auto;aspect-ratio:auto}  /* 29.09: целиком, в своих пропорциях */
  .hero .photo{max-width:480px;width:100%}
  .hero .photo .arch img{height:auto;aspect-ratio:4/5}
}
/* 29.09: жалобы «на телефоне фото обрезаются»: в одну-две колонки работы показываем целиком, без обрезки по 320 px */
@media(max-width:560px){
  .works img{height:auto}
  .works figure:hover img{transform:none}
}
/* 29.09: Олег — «все фото на сайте не обрезались под разными экранами». Фото шапки и блоков — целиком, в своих
   пропорциях, не выше 560 px (рамка по размеру фото); работы в сетках — целиком, ряды выравниваются по верху */
.page-hero .ph,.split .ph,.dark-band .ph{width:fit-content;max-width:100%;justify-self:center}
.page-hero .ph img,.split .ph img,.dark-band .ph img{display:block;width:auto;height:auto;max-width:100%;max-height:560px;aspect-ratio:auto;object-fit:contain}
.works{align-items:start}
.works img{height:auto}
.works figure:hover img{transform:none}
/* 29.09: сетки работ с фото разных пропорций — плиткой (колонки без пустот), каждое фото целиком; где у блока своя
   сетка (style с grid-template) и карусели .tall — как было */
.works:not(.tall):not([style*="grid-template"]){display:block;columns:4 220px;column-gap:18px}
.works:not(.tall):not([style*="grid-template"])>figure{break-inside:avoid;margin:0 0 18px;display:block}
.works:not(.tall):not([style*="grid-template"])>.shir{column-span:all}
@media(max-width:560px){.works:not(.tall):not([style*="grid-template"]){columns:2;column-gap:12px}
  .works:not(.tall):not([style*="grid-template"])>figure{margin-bottom:12px}}
/* 29.09: в коротком блоке (2–3 работы) колонок столько же, сколько работ — не жмутся в четверть ширины */
@media(min-width:561px){.works:not(.tall):not([style*="grid-template"]):has(>figure:nth-child(2):last-child){columns:2;max-width:820px}
  .works:not(.tall):not([style*="grid-template"]):has(>figure:nth-child(3):last-child){columns:3}}

/* 29.09: строка цены — ссылка на запись на эту услугу (select-master?o=s<ID>) */
a.prow{color:inherit;text-decoration:none;cursor:pointer}
a.prow .pr::after{content:"→";font-family:var(--sans);font-size:.72em;margin-left:12px;color:var(--accent);display:inline-block;transition:transform .25s}
a.prow:hover .nm{color:var(--olive-text)}
a.prow:hover .pr::after{transform:translateX(4px)}
a.prow:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* 05.10: длинные цены и стрелки записи помещаются на самых узких телефонах. */
@media(max-width:340px){
  .prow{gap:12px}
  .prow .nm{font-size:16px}
  .prow .pr{font-size:17px}
  .prow .pr small{display:block}
}
