/* =========================
   Home (homepage.html) — Section 1
   Ribbon Hero with animated cosmetic background and floating product chips
   ========================= */

/* Section wrapper */
.hero-ribbon{
  position: relative;
  padding: clamp(72px, 8vw, 120px) 0 clamp(64px, 6vw, 96px);
  isolation:isolate;
}

/* Grid */
.hero-grid{
  display:grid;
  grid-template-columns: 1.3fr 1fr;
  gap: clamp(16px, 3vw, 40px);
  align-items:center;
}

/* Copy */
.hero-title span{
  background: linear-gradient(90deg, var(--dl-accent-2), var(--dl-accent));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.hero-lede{ font-size: clamp(1rem, .5vw + .9rem, 1.1rem); max-width: 56ch; }
.hero-cta{ display:flex; gap:12px; margin:18px 0 8px; }
.btn-solid, .btn-ghost{
  display:inline-flex; align-items:center; justify-content:center; gap:.5rem;
  height:44px; padding:0 16px; border-radius:12px; text-decoration:none; font-weight:600;
  border:1px solid transparent; box-shadow: var(--dl-shadow);
}
.btn-solid{
  color:#fff; background: linear-gradient(135deg, var(--dl-accent), #3f8b7a);
}
.btn-solid:hover{ filter: brightness(1.05); transform: translateY(-1px); }
.btn-ghost{
  color: var(--dl-ink); background:#fff; border-color: var(--dl-line);
}
.btn-ghost:hover{ background:#f8fbfa; transform: translateY(-1px); }

.hero-highlights{
  display:flex; flex-wrap:wrap; gap:8px 12px; padding:0; margin:14px 0 0; list-style:none;
  color:var(--dl-muted); font-size:.95rem;
}
.hero-highlights li{
  padding:6px 10px; border:1px dashed #d7dcdf; border-radius:12px; background:#fff;
}

/* Visual stack */
.hero-visual{
  position: relative; min-height: 360px;
  display:grid; place-items:center;
}
.hero-card{
  padding:12px; background:#fff; border:1px solid var(--dl-line); border-radius:18px; box-shadow: var(--dl-shadow);
  transition: transform .2s ease, box-shadow .2s ease;
}
.hero-card:hover{ transform: translateY(-4px) rotate(-.5deg); }
.hero-card img{ display:block; }

.hero-chip{
  padding:8px; background:#fff; border:1px solid var(--dl-line); border-radius:999px; box-shadow: var(--dl-shadow);
  width:max-content;
}
.hero-chip img{ border-radius:999px; }

/* Floating positions (kept within container; images ≤350px already) */
.float-a{ transform: translate(-20%, -10%); }
.float-b{ transform: translate(22%, 6%); }
.float-c{ transform: translate(0, -12%); }

@keyframes floatyA{ from{ transform: translate(-20%, -10%) } 50%{ transform: translate(-20%, -6%) } to{ transform: translate(-20%, -10%) } }
@keyframes floatyB{ from{ transform: translate(22%, 6%) } 50%{ transform: translate(22%, 10%) } to{ transform: translate(22%, 6%) } }
@keyframes floatyC{ from{ transform: translate(0, -12%) } 50%{ transform: translate(0, -8%) } to{ transform: translate(0, -12%) } }

.hero-visual .float-a{ animation: floatyA 6s ease-in-out infinite; }
.hero-visual .float-b{ animation: floatyB 7s ease-in-out infinite; }
.hero-visual .float-c{ animation: floatyC 5.5s ease-in-out infinite; }

/* Cosmetic ribbons (decor only) */
.ribbon{
  position:absolute; inset:auto auto 0 0; width: 48vw; height: 48vw; pointer-events:none; z-index:-1;
  background: radial-gradient(60% 60% at 50% 50%, rgba(179,86,118,.14), transparent 60%);
  filter: blur(22px);
}
.ribbon-a{ bottom: -6vw; left: -8vw; }
.ribbon-b{
  top: -8vw; right: -8vw; left:auto;
  background: radial-gradient(60% 60% at 50% 50%, rgba(44,109,94,.14), transparent 60%);
}
.ribbon-c{
  top: 20%; right: 10%; width: 24vw; height:24vw;
  background: radial-gradient(60% 60% at 50% 50%, rgba(194,221,214,.25), transparent 60%);
}

/* Responsive */
@media (max-width: 1024px){
  .hero-grid{ grid-template-columns: 1.1fr 1fr; }
}
@media (max-width: 860px){
  .hero-grid{ grid-template-columns: 1fr; }
  .hero-visual{ min-height: 300px; margin-top: 8px; }
  /* On mobile show title & text first, images after (already natural order) */
}
@media (max-width: 520px){
  .hero-highlights{ font-size:.9rem; }
  .hero-card, .hero-chip{ border-radius:14px; }
  .hero-visual{ min-height: 260px; }
}
/* Герой секции — обрезаем всё, что выходит за пределы */
.hero-ribbon{
  overflow: hidden;       /* ключ к устранению скролла */
}

/* На всякий случай ограничим размер самих декоративных пятен */
.ribbon{
  max-width: 100vw;
  max-height: 100vh;
  contain: paint;         /* изолирует расчёт границ эффекта blur */
}
/* =========================
   SECTION 2 — Active Matrix
   ========================= */
.actives-matrix{ padding: clamp(56px, 7vw, 96px) 0; overflow:hidden; }
.am-grid{ display:grid; grid-template-columns: 1.1fr 1fr; gap: clamp(18px, 3vw, 40px); align-items:start; }
.am-title{ font-family:"PrataDL", serif; }
.am-lede{ max-width: 60ch; }

.am-list{
  list-style:none; padding:0; margin: 16px 0 0;
  display:grid; gap:14px;
}
.am-metric{
  display:grid; grid-template-columns: auto 1fr; gap:14px;
  align-items:center; padding:12px; border:1px solid var(--dl-line);
  border-radius:16px; background:#fff; box-shadow: var(--dl-shadow);
  transition: transform .2s ease, box-shadow .2s ease;
}
.am-metric:hover{ transform: translateY(-2px); box-shadow: 0 12px 28px rgba(31,31,34,.08), 0 6px 16px rgba(31,31,34,.06); }

.am-ring{
  --pdeg: 0deg;             /* JS анимирует до целевого */
  --size: 88px;
  width: var(--size); height: var(--size); border-radius: 50%;
  background: conic-gradient(var(--dl-accent) var(--pdeg), #e9ecef 0);
  mask: radial-gradient(farthest-side, #0000 calc(50% - 8px), #000 calc(50% - 8px));
  display:grid; place-items:center;
}
.am-ring-num{ font-weight:600; font-family:"InterDL",sans-serif; }

.am-meta .am-name{ margin:0 0 .25rem 0; }
.am-meta .am-name span{ color: var(--dl-muted); font-weight:600; }
.am-note{ margin:0 0 .5rem 0; color: var(--dl-ink-2); }
.am-tags{ display:flex; flex-wrap:wrap; gap:8px; padding:0; margin:0; list-style:none; }
.am-tags li{ padding:6px 10px; background:#fff; border:1px dashed #d7dcdf; border-radius:12px; color:var(--dl-muted); }

.am-visual{
  position:relative; min-height: 340px; display:grid; place-items:center; gap:12px;
}
.am-card{
  padding:10px; background:#fff; border:1px solid var(--dl-line);
  border-radius:16px; box-shadow: var(--dl-shadow); transition: transform .2s ease;
}
.am-card:hover{ transform: translateY(-4px) rotate(-.25deg); }
.am-chip{
  padding:8px; background:#fff; border:1px solid var(--dl-line);
  border-radius:999px; box-shadow: var(--dl-shadow);
}
.am-chip img{ border-radius:999px; }

/* Responsive for Section 2 */
@media (max-width: 980px){
  .am-grid{ grid-template-columns: 1fr; }
  .am-visual{ min-height: 280px; }
}

/* =========================
   SECTION 3 — Climate Mosaic
   ========================= */
.climate-mosaic{ padding: clamp(56px, 7vw, 96px) 0; overflow:hidden; }
.cm-wrap{ display:grid; gap:18px; }
.cm-title{ font-family:"PrataDL", serif; }
.cm-grid{
  display:grid;
  grid-template-columns: repeat(12, 1fr);
  gap: 12px;
}
.cm-tile{
  grid-column: span 6;
  position:relative; overflow:hidden; border-radius:18px; background:#fff; border:1px solid var(--dl-line);
  box-shadow: var(--dl-shadow); transition: transform .2s ease, box-shadow .2s ease;
}
.cm-tile:hover{ transform: translateY(-3px); box-shadow: 0 12px 28px rgba(31,31,34,.08), 0 6px 16px rgba(31,31,34,.06); }
.cm-tile img{ width:100%; max-width:350px; margin:12px auto 0; border-radius:14px; }
.cm-tile figcaption{
  font-weight:600; padding:12px 14px 14px; color:var(--dl-ink-2);
}

/* Слегка «ломаем» сетку на десктопе для динамики */
@media (min-width: 1025px){
  .cm-tile:nth-child(1){ grid-column: 1 / span 5; }
  .cm-tile:nth-child(2){ grid-column: 6 / span 7; }
  .cm-tile:nth-child(3){ grid-column: 1 / span 7; }
  .cm-tile:nth-child(4){ grid-column: 8 / span 5; }
}

/* =========================
   SECTION 4 — Lab Process
   ========================= */
.lab-process{ padding: clamp(56px, 7vw, 96px) 0; overflow:hidden; }
.lp-wrap{ display:grid; gap:18px; }
.lp-title{ font-family:"PrataDL", serif; }
.lp-steps{
  position:relative;
  list-style:none; padding: 22px 0 0; margin:0;
  display:grid; gap:20px;
}
.lp-steps::before{
  content:""; position:absolute; left: 24px; top:0; bottom:0;
  width:2px; background: linear-gradient(180deg, var(--dl-accent), #dee9e5 60%, #e9ecef);
  border-radius:2px;
}
.lp-step{
  position:relative; display:grid; grid-template-columns: 56px 1fr; gap:12px; align-items:start;
  padding-left:0;
  transition: transform .2s ease;
}
.lp-step:hover{ transform: translateY(-2px); }
.lp-dot{
  width:18px; height:18px; border-radius:50%;
  background: #fff; border:3px solid var(--dl-accent);
  box-shadow: var(--dl-shadow);
  position:absolute; left: 16px; top: 8px;
}
.lp-card{
  padding:12px; border:1px solid var(--dl-line); border-radius:14px; background:#fff; box-shadow: var(--dl-shadow);
}
.lp-name{ margin:0 0 .25rem 0; }
.lp-fig{ margin:0; }
.lp-fig img{ display:block; }

/* Активное состояние по скроллу */
.lp-step.is-on .lp-card{ border-color: #c8e3da; box-shadow: 0 12px 28px rgba(31,31,34,.08), 0 6px 16px rgba(31,31,34,.06); }
.lp-step.is-on .lp-dot{ background: var(--dl-accent); border-color: #fff; }

/* Responsive tweaks */
@media (max-width: 680px){
  .lp-steps::before{ left: 18px; }
  .lp-step{ grid-template-columns: 48px 1fr; }
  .lp-dot{ left: 10px; }
}
/* =========================
   SECTION 5 — Texture Studio
   ========================= */
.texture-studio{ padding: clamp(56px, 7vw, 96px) 0; position:relative; overflow:hidden; }
.tx-head .tx-title{ font-family:"PrataDL", serif; }
.tx-lede{ max-width: 60ch; }

.tx-grid{
  display:grid;
  grid-template-columns: repeat(12, 1fr);
  gap: 12px;
}
.tx-card{
  grid-column: span 3; /* 4 карточки = по 3 колонки */
  background:#fff; border:1px solid var(--dl-line); border-radius:16px;
  box-shadow: var(--dl-shadow);
  padding: 10px 10px 12px;
  transition: transform .15s ease, box-shadow .15s ease;
  transform: perspective(600px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateZ(0);
  will-change: transform;
}
.tx-card:hover{ box-shadow: 0 12px 28px rgba(31,31,34,.08), 0 6px 16px rgba(31,31,34,.06); }
.tx-card img{ margin-inline:auto; }
.tx-card figcaption{ text-align:center; font-weight:600; padding-top:8px; color:var(--dl-ink-2); }

/* декоративные «блюры» */
.tx-blob{
  position:absolute; pointer-events:none; filter: blur(24px); opacity:.9;
  width:40vw; height:40vw; border-radius:50%;
  background: radial-gradient(50% 50% at 50% 50%, rgba(179,86,118,.12), transparent 60%);
  z-index:-1;
}
.tx-blob-a{ left:-10vw; top:-6vw; }
.tx-blob-b{ right:-12vw; bottom:-10vw; background: radial-gradient(50% 50% at 50% 50%, rgba(44,109,94,.12), transparent 60%); }

/* адаптив */
@media (max-width: 1024px){
  .tx-card{ grid-column: span 6; }
}
@media (max-width: 600px){
  .tx-card{ grid-column: span 12; }
}

/* =========================
   SECTION 6 — Shade Harmony
   ========================= */
.shade-harmony{ padding: clamp(56px, 7vw, 96px) 0; overflow:hidden; position:relative; }
.sh-title{ font-family:"PrataDL", serif; }
.sh-ribbons{
  position:absolute; inset:0; z-index:-1; pointer-events:none;
  display:grid; grid-template-columns: repeat(4, 1fr); gap:0;
  opacity:.6;
}
.sh-ribbons span{
  display:block; filter: blur(6px);
  background: linear-gradient(180deg, #fbe8ee, #f0fff9);
  transform: translateY(calc(var(--i) * -6%));
  animation: shWave 8s ease-in-out infinite;
}
@keyframes shWave{
  0%,100%{ transform: translateY(0); }
  50%{ transform: translateY(-6%); }
}

.sh-grid{
  display:grid; grid-template-columns: repeat(12, 1fr); gap: 12px; margin-top: 10px;
}
.sh-swatch{
  grid-column: span 6;
  background:#fff; border:1px solid var(--dl-line); border-radius:16px; box-shadow: var(--dl-shadow);
  padding:10px 10px 12px; transition: transform .2s ease;
}
.sh-swatch:hover{ transform: translateY(-3px); }
.sh-swatch img{ margin-inline:auto; }
.sh-swatch figcaption{ text-align:center; font-weight:600; padding-top:8px; color:var(--dl-ink-2); }

@media (max-width: 680px){
  .sh-swatch{ grid-column: span 12; }
}

/* =========================
   SECTION 7 — Botanical Timeline (horizontal snap)
   ========================= */
.botanical-timeline{ padding: clamp(56px, 7vw, 96px) 0; }
.bt-title{ font-family:"PrataDL", serif; }
.bt-track{
  margin-top: 12px;
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(240px, 320px);
  gap: 12px;
  overflow-x: auto; overflow-y: visible;
  padding: 12px;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  border: 1px solid var(--dl-line);
  border-radius: 16px;
  background:#fff;
}
.bt-track:focus{ outline: 2px solid #cdebe2; outline-offset: 4px; }
.bt-card{
  scroll-snap-align: start;
  background:#fff; border:1px solid var(--dl-line); border-radius:14px; box-shadow: var(--dl-shadow);
  padding: 10px; display:grid; gap:8px;
  transition: transform .2s ease;
}
.bt-card:hover{ transform: translateY(-2px); }
.bt-card figure{ margin:0; }
.bt-card img{ margin-inline:auto; }
.bt-card h3{ margin: 4px 0 0; }
.bt-card p{ margin:0; color: var(--dl-ink-2); }

/* Маска для лёгкого затухания краёв — не влияет на горизонтальный скролл страницы */
.bt-track{
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 24px, #000 calc(100% - 24px), transparent 100%);
          mask-image: linear-gradient(90deg, transparent 0, #000 24px, #000 calc(100% - 24px), transparent 100%);
}

@media (max-width: 520px){
  .bt-track{ grid-auto-columns: 86%; }
}
/* =========================
   SECTION 8 — Scent Spheres
   ========================= */
.scent-spheres{ padding: clamp(56px, 7vw, 96px) 0; position:relative; overflow:hidden; }
.ss-title{ font-family:"PrataDL", serif; }
.ss-lede{ max-width: 60ch; }
.ss-grid{
  display:grid; grid-template-columns: repeat(12, 1fr); gap: 12px; margin-top: 10px;
}
.ss-chip{
  grid-column: span 6;
  background:#fff; border:1px solid var(--dl-line); border-radius:999px; box-shadow: var(--dl-shadow);
  padding:10px; text-align:center; transition: transform .2s ease;
}
.ss-chip:hover{ transform: translateY(-3px); }
.ss-chip img{ border-radius:999px; margin-inline:auto; }
.ss-chip figcaption{ font-weight:600; padding-top:8px; color:var(--dl-ink-2); }

.floaty{ animation: ssFloat 6.5s ease-in-out infinite; }
@keyframes ssFloat{ 0%,100%{ transform: translateY(0) } 50%{ transform: translateY(-6px) } }

.ss-ring{
  position:absolute; pointer-events:none; filter: blur(22px);
  width:42vw; height:42vw; border-radius:50%;
  background: radial-gradient(50% 50% at 50% 50%, rgba(179,86,118,.10), transparent 60%);
  z-index:-1;
}
.ss-ring-a{ left:-12vw; top:-10vw; }
.ss-ring-b{ right:-14vw; bottom:-12vw; background: radial-gradient(50% 50% at 50% 50%, rgba(44,109,94,.10), transparent 60%); }

@media (max-width: 680px){
  .ss-chip{ grid-column: span 12; }
}

/* =========================
   SECTION 9 — Ingredient Ledger
   ========================= */
.ingredient-ledger{ padding: clamp(56px, 7vw, 96px) 0; overflow:hidden; }
.il-title{ font-family:"PrataDL", serif; }
.il-grid{
  display:grid; grid-template-columns: 1fr 1fr; gap: 18px; align-items:start; margin-top: 8px;
}
.il-list{ padding-left: 1.1rem; margin:0; display:grid; gap:.5rem; }
.il-list li{ color: var(--dl-ink-2); }
.il-proof{ display:grid; gap:12px; }
.il-cert{ margin:0; }
.il-cert img{ margin-inline:auto; }
.il-cert figcaption{ text-align:center; color:var(--dl-muted); }

.il-metrics{ display:grid; gap:10px; }
.il-row{ display:grid; grid-template-columns: 1fr auto; gap: 10px; align-items:center; }
.il-label{ color: var(--dl-ink); font-weight:600; }
.il-bar{
  --h: 10px;
  display:inline-block; width: 180px; height: var(--h);
  border-radius: 999px; background: #eef2f4; border:1px solid var(--dl-line);
  overflow: hidden;
}
.il-bar i{
  display:block; height: 100%; width: 0%;
  background: linear-gradient(90deg, var(--dl-accent), #3f8b7a);
  border-radius: 999px;
  transition: width .8s ease;
}

@media (max-width: 920px){
  .il-grid{ grid-template-columns: 1fr; }
  .il-row{ grid-template-columns: 1fr; }
  .il-bar{ width: 100%; }
}

/* =========================
   SECTION 10 — Packaging Loop
   ========================= */
.pack-loop{ padding: clamp(56px, 7vw, 96px) 0; overflow:hidden; }
.pl-title{ font-family:"PrataDL", serif; }
.pl-steps{
  position:relative; list-style:none; padding: 18px 0 0; margin:0;
  display:grid; gap:16px;
}
.pl-steps::before{
  content:""; position:absolute; left:26px; top:0; bottom:0; width:2px;
  background: linear-gradient(180deg, var(--dl-accent), #dbe9e4 60%, #e9ecef); border-radius:2px;
}
.pl-step{
  position:relative;
  display:grid; grid-template-columns: 56px 1fr; gap:12px; align-items:start;
  transition: transform .2s ease;
}
.pl-step:hover{ transform: translateY(-2px); }
.pl-node{
  width:18px; height:18px; border-radius:50%; background:#fff; border:3px solid var(--dl-accent);
  position:absolute; left:18px; top:10px; box-shadow: var(--dl-shadow);
}
.pl-card{
  padding:12px; border:1px solid var(--dl-line); background:#fff; border-radius:14px; box-shadow: var(--dl-shadow);
}
.pl-fig{ margin:0; }
.pl-fig img{ margin-inline:auto; }

@media (max-width: 680px){
  .pl-steps::before{ left: 20px; }
  .pl-step{ grid-template-columns: 48px 1fr; }
  .pl-node{ left: 12px; }
}
/* ===== HOTFIX: timeline cards getting too narrow / text overflow ===== */

/* 1) Колонки: 56px для линии/точки + эластичная колонка под контент */
.lp-step,
.pl-step{
  grid-template-columns: 56px minmax(0, 1fr) !important;
}
@media (max-width: 680px){
  .lp-step,
  .pl-step{
    grid-template-columns: 48px minmax(0, 1fr) !important;
  }
}

/* 2) Всегда во 2-ю колонку: и карточки, и фигуры с изображениями */
.lp-card, .lp-fig,
.pl-card, .pl-fig{
  grid-column: 2 !important;
  min-width: 0;                 /* критично для grid, иначе текст может распирать */
}

/* 3) Переносы внутри текста, чтобы не вылезал за рамки */
.lp-card p, .pl-card p,
.lp-card h3, .pl-card h3{
  overflow-wrap: anywhere;
  word-break: normal;
  hyphens: auto;
}

/* 4) Изображения в фигурах — безопасные размеры */
.lp-fig img, .pl-fig img{
  width: 100%;
  max-width: 350px;
  height: auto;
  display: block;
}

/* 5) Чуть больше «воздуха» у карточек, чтобы текст не лип к краям */
.lp-card, .pl-card{ padding: 14px 14px 12px; }
/* =========================
   SECTION 11 — Routine Dial
   ========================= */
.routine-dial{ padding: clamp(56px, 7vw, 96px) 0; overflow:hidden; }
.rd-title{ font-family:"PrataDL", serif; }
.rd-tabs{
  display:flex; gap:8px; flex-wrap:wrap; margin-top:8px;
}
.rd-tab{
  height:42px; padding:0 14px; border-radius:999px; border:1px solid var(--dl-line);
  background:#fff; cursor:pointer; font-weight:600; color:var(--dl-ink-2);
  transition: background .2s ease, transform .2s ease, border-color .2s ease;
}
.rd-tab:hover{ transform: translateY(-2px); }
.rd-tab.is-active{ background:linear-gradient(135deg, var(--dl-mint), #fff); border-color:#cfe8df; color:var(--dl-ink); }

.rd-panels{ margin-top:12px; }
.rd-panel[hidden]{ display:none !important; }
.rd-panel{
  border:1px solid var(--dl-line); border-radius:16px; background:#fff; box-shadow: var(--dl-shadow);
  padding:14px; transition: box-shadow .2s ease;
}
.rd-panel.is-active{ box-shadow: 0 12px 28px rgba(31,31,34,.08), 0 6px 16px rgba(31,31,34,.06); }

.rd-grid{
  display:grid; grid-template-columns: 1fr auto; gap:12px; align-items:center;
}
.rd-copy{ min-width:0; }
.rd-list{ margin:0; padding-left:1.1rem; display:grid; gap:.4rem; }
.rd-fig img{ margin-inline:auto; }

@media (max-width: 720px){
  .rd-grid{ grid-template-columns: 1fr; }
}

/* =========================
   SECTION 12 — Ethos Grid
   ========================= */
.ethos-grid{ padding: clamp(56px, 7vw, 96px) 0; overflow:hidden; }
.eg-title{ font-family:"PrataDL", serif; }
.eg-grid{
  display:grid; grid-template-columns: repeat(12, 1fr); gap:12px; margin-top:10px;
}
.eg-card{
  grid-column: span 4;
  background:#fff; border:1px solid var(--dl-line); border-radius:16px; box-shadow: var(--dl-shadow);
  padding:12px; transition: transform .2s ease;
  min-width:0;
}
.eg-card:hover{ transform: translateY(-3px); }
.eg-card h3{ margin:.25rem 0 .25rem; }
.eg-card p{ margin:0; color: var(--dl-ink-2); }

.eg-fig{ text-align:center; }
.eg-fig img{ margin-inline:auto; }
.eg-fig figcaption{ margin-top:6px; color:var(--dl-muted); }

@media (max-width: 1040px){ .eg-card{ grid-column: span 6; } }
@media (max-width: 620px){ .eg-card{ grid-column: span 12; } }

/* =========================
   SECTION 13 — Cooling Protocol
   ========================= */
.cooling-protocol{ padding: clamp(56px, 7vw, 96px) 0; position:relative; overflow:hidden; }
.cp-title{ font-family:"PrataDL", serif; }
.cp-grid{
  display:grid; grid-template-columns: 1fr 1fr; gap:12px; margin-top:10px; align-items:start;
}
.cp-step{
  background:#fff; border:1px solid var(--dl-line); border-radius:16px; box-shadow: var(--dl-shadow);
  padding:12px; min-width:0; transition: transform .2s ease;
}
.cp-step:hover{ transform: translateY(-2px); }
.cp-fig{
  background:#fff; border:1px solid var(--dl-line); border-radius:16px; box-shadow: var(--dl-shadow);
  padding:10px; text-align:center;
}
.cp-fig img{ margin-inline:auto; }
.cp-fig figcaption{ margin-top:6px; color:var(--dl-muted); }

.cp-veil{
  position:absolute; inset:auto -10vw -12vw auto; width:42vw; height:42vw; border-radius:50%;
  background: radial-gradient(50% 50% at 50% 50%, rgba(179,86,118,.10), transparent 60%);
  filter: blur(22px); pointer-events:none; z-index:-1;
}

@media (max-width: 900px){
  .cp-grid{ grid-template-columns: 1fr; }
}
/* =========================
   SECTION 14 — Press & Praise Rail
   ========================= */
.press-rail{ padding: clamp(56px, 7vw, 96px) 0; overflow:hidden; }
.pr-title{ font-family:"PrataDL", serif; }
.pr-lede{ max-width: 60ch; }
.pr-track{
  margin-top: 10px;
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(240px, 320px);
  gap: 12px;
  overflow-x: auto; overflow-y: visible;
  padding: 12px;
  scroll-snap-type: x mandatory;
  border: 1px solid var(--dl-line);
  border-radius: 16px; background: #fff; box-shadow: var(--dl-shadow);
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 24px, #000 calc(100% - 24px), transparent 100%);
          mask-image: linear-gradient(90deg, transparent 0, #000 24px, #000 calc(100% - 24px), transparent 100%);
}
.pr-card{
  scroll-snap-align: start;
  background:#fff; border:1px solid var(--dl-line); border-radius:14px; box-shadow: var(--dl-shadow);
  padding:10px; text-align:center; transition: transform .2s ease;
}
.pr-card:hover{ transform: translateY(-3px); }
.pr-card img{ margin-inline:auto; }
.pr-card figcaption{ margin-top:6px; color: var(--dl-muted); }

/* =========================
   SECTION 15 — Atelier Sign-off
   ========================= */
.atelier-signoff{ padding: clamp(56px, 7vw, 96px) 0; position:relative; overflow:hidden; }
.as-title{ font-family:"PrataDL", serif; }
.as-grid{
  display:grid; grid-template-columns: 1fr auto; gap: 12px; margin-top: 10px; align-items:start;
}
.as-copy{ background:#fff; border:1px solid var(--dl-line); border-radius:16px; box-shadow: var(--dl-shadow); padding:12px; }
.as-fig{
  background:#fff; border:1px solid var(--dl-line); border-radius:16px; box-shadow: var(--dl-shadow);
  padding:10px; text-align:center;
}
.as-fig img{ margin-inline:auto; }
.as-fig figcaption{ margin-top:6px; color: var(--dl-muted); }
.as-glow{
  position:absolute; inset:auto -12vw -14vw auto; width:46vw; height:46vw; border-radius:50%;
  background: radial-gradient(50% 50% at 50% 50%, rgba(44,109,94,.10), transparent 60%);
  filter: blur(24px); pointer-events:none; z-index:-1;
}

@media (max-width: 840px){
  .as-grid{ grid-template-columns: 1fr; }
}
/* =========================
   CONTACT FORM
   ========================= */
.contact-form{
  padding: clamp(56px, 7vw, 96px) 0;
  position: relative;
  overflow: hidden;
}
.contact-form .contact-header h2{
  font-family: "PrataDL", serif;
  margin: 0 0 .25rem;
}
.contact-form .contact-header p{ max-width: 60ch; }

.form-wrapper{
  margin-top: 14px;
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: 12px;
  background: #fff;
  border: 1px solid var(--dl-line);
  border-radius: 16px;
  box-shadow: var(--dl-shadow);
  padding: 14px;
}
.form-field{ grid-column: span 6; min-width: 0; }
.form-full{ grid-column: span 12; }

.form-wrapper input,
.form-wrapper textarea{
  width: 100%;
  background: #fff;
  border: 1px solid var(--dl-line);
  border-radius: 12px;
  padding: 12px 12px;
  font: inherit;
  color: var(--dl-ink);
  outline: none;
  transition: border-color .2s ease, box-shadow .2s ease, transform .15s ease;
}
.form-wrapper textarea{ min-height: 140px; resize: vertical; }

.form-wrapper input:focus,
.form-wrapper textarea:focus{
  border-color: #cfe8df;
  box-shadow: 0 0 0 4px rgba(44,109,94,.10);
}

.form-checkbox{
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--dl-ink-2);
}
.form-checkbox input{
  width: 18px; height: 18px;
  accent-color: var(--dl-accent);
}
.form-checkbox a{ color: var(--dl-accent); }

.cta-button{
  justify-self: start;
  height: 44px;
  padding: 0 16px;
  border: 1px solid transparent;
  border-radius: 12px;
  background: linear-gradient(135deg, var(--dl-accent), #3f8b7a);
  color: #fff;
  font-weight: 600;
  cursor: pointer;
  box-shadow: var(--dl-shadow);
  transition: transform .15s ease, filter .15s ease;
}
.cta-button:hover{ transform: translateY(-2px); filter: brightness(1.05); }

/* helper */
.vh{ position:absolute !important; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0 0 0 0); border:0; }

/* soft glows */
.cf-glow{
  position: absolute; pointer-events:none; filter: blur(24px); z-index:-1;
  width: 44vw; height: 44vw; border-radius: 50%;
  background: radial-gradient(50% 50% at 50% 50%, rgba(179,86,118,.10), transparent 60%);
}
.cf-glow.a{ left: -12vw; top: -10vw; }
.cf-glow.b{ right: -14vw; bottom: -12vw; background: radial-gradient(50% 50% at 50% 50%, rgba(44,109,94,.10), transparent 60%); }

/* errors (на случай валидации) */
.is-invalid{ border-color: #e9a2a2 !important; box-shadow: 0 0 0 4px rgba(233,162,162,.25) !important; }

/* responsive */
@media (max-width: 860px){
  .form-field{ grid-column: span 12; }
  .cta-button{ justify-self: stretch; }
}
/* =========================
   HOMEPAGE — Longform Manifesto (no images)
   ========================= */
.longform-manifesto{
  padding: clamp(64px, 8vw, 112px) 0;
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(60% 60% at 12% 10%, rgba(179,86,118,.06) 0%, transparent 60%),
    radial-gradient(60% 60% at 88% 90%, rgba(44,109,94,.06) 0%, transparent 60%),
    linear-gradient(180deg, #ffffff 0%, #f8fbfa 100%);
}
.lf-title{ font-family: "PrataDL", serif; }
.lf-lede{ max-width: 70ch; }
.lf-wrap{ display: grid; gap: 14px; }

.lf-columns{
  /* two-column reading on wide screens, collapses gracefully */
  column-width: 520px;
  column-gap: 28px;
  max-width: 1100px;
}
.lf-columns p,
.lf-columns ul,
.lf-columns h3,
.lf-columns blockquote{
  break-inside: avoid;
  margin: 0 0 12px;
}
.lf-columns h3{
  font-size: clamp(1.05rem, 1.8vw, 1.25rem);
  margin-top: 6px;
}
.lf-list{
  padding-left: 1.1rem;
  display: grid;
  gap: .35rem;
  color: var(--dl-ink-2);
}
.lf-quote{
  border-left: 4px solid #cfe8df;
  margin-left: 0;
  padding: 6px 10px;
  color: var(--dl-ink-2);
  font-style: italic;
}

/* background soft glows */
.lf-glow{
  position: absolute; pointer-events: none; filter: blur(28px); z-index: -1;
  width: 44vw; height: 44vw; border-radius: 50%;
  background: radial-gradient(50% 50% at 50% 50%, rgba(179,86,118,.10), transparent 60%);
}
.lf-glow.a{ left: -12vw; top: -10vw; }
.lf-glow.b{ right: -14vw; bottom: -12vw; background: radial-gradient(50% 50% at 50% 50%, rgba(44,109,94,.10), transparent 60%); }

/* readability & safety */
.longform-manifesto p{
  line-height: 1.65;
  color: var(--dl-ink);
  overflow-wrap: anywhere;
  hyphens: auto;
}
/* Индексы лент без инлайна */
.sh-ribbons .rib:nth-child(1){ --i: 0; }
.sh-ribbons .rib:nth-child(2){ --i: 1; }
.sh-ribbons .rib:nth-child(3){ --i: 2; }
.sh-ribbons .rib:nth-child(4){ --i: 3; }

/* если у вас уже есть правила, использующие var(--i), они продолжат работать.
   Пример базовых стилей (оставьте свои, это только ориентир): */
.sh-ribbons{
  position: absolute; inset: 0; pointer-events: none; overflow: hidden;
}
.sh-ribbons .rib{
  position: absolute; top: -20%; bottom: -20%; width: 2px;
  left: calc(10% + var(--i) * 18%);
  background: linear-gradient(180deg, rgba(44,109,94,.15), rgba(255,255,255,0));
  filter: blur(0.3px);
  animation: shFloat 6s ease-in-out infinite;
  animation-delay: calc(var(--i) * 0.6s);
}

@keyframes shFloat{
  0%,100%{ transform: translateY(0); opacity:.7; }
  50%{ transform: translateY(6%); opacity:1; }
}
