/* ═══ 3D-фигурки по фото (/3d-figurki/, шаблон fig) ═══════════════════
   Поверх v2.css и v2-pages.css. Все значения — токены DESIGN.md; ниже
   объявлены только токены этой страницы. Написано от 375 px вверх:
   базовые правила — телефон, @media (min-width) только добавляет.
   Сигнатура — примерка на полке (.fit); всё остальное тихое. */

.v2{
  /* токен страницы: геометрия кадра полки ph-fig-shelf.webp, 1800×1344 px.
     Кружка стоит дном на 872 px, высота её переднего края 146 px ≈ 9,5 см. */
  --fit-ratio:1800 / 1344;
  --fit-base:35.12%;      /* токен страницы: от низа кадра до линии дна кружки */
  --fit-line:34.31%;      /* токен страницы: 30 см в высоте кадра (146 / 9,5 × 30 / 1344) */
  --fit-h:34.52%;         /* токен страницы: вырезка на 30 см вместе с прозрачным полем PNG (0,6 %) */
  --fit-x:36%;            /* токен страницы: ось фигурки по ширине кадра */
  --fit-w-fig:8.43%;      /* токен страницы: ширина вырезки фигурки на 30 см, доля ширины кадра */
  --fit-w-bust:15.49%;    /* токен страницы: ширина вырезки бюста на 30 см */
  --fit-gap:2%;           /* токен страницы: от края фигурки до линейки */
  --fit-mug-x:3.3%;       /* токен страницы: левый край кружки (ручка) */
  --fit-mug-top:52.5%;    /* токен страницы: верх кружки от верха кадра */
  --fit-zoom:163.64%;     /* токен страницы: окно 1100×825 px кадра (4:3) вокруг кружки и фигурки, на всех ширинах: фигурка крупнее */
  --fit-top:-36.4%;       /* токен страницы: окно начинается с 300 px кадра */
  --shadow-fig:drop-shadow(3px 5px 5px color-mix(in srgb,var(--ink) 28%,transparent)); /* токен страницы: тень фигурки на полке, свет из окна слева */
  --fig-mark:4.5;         /* токен страницы: штрих глифа 16 px (--ico) в метке «Подойдёт» (1,5 px) */
  --fig-step-last:1.5fr;  /* токен страницы: последний шаг (печать и роспись) шире двух первых, как --ord-film-last */
}


/* Форматы 02 и фото 07 на телефоне — сеткой 2 колонки, без ленты вбок (заказчик 27.10: «горизонтальный скролл
   важного контента — зло»): 6 форматов — 3 ряда, 4 правила фото — 2 × 2. С 600 px — как было (3 / 2 и 4 колонки). */
.v2 .fig-fmt__grid,.v2 .fig-foto__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-4) var(--s-3);margin:0;padding:0}
@media (max-width:599px){
  .v2 .fig-card__t{font-size:var(--t-ui);line-height:1.3}
  .v2 .fig-card__img{margin-bottom:var(--s-1)}
}
/* Телефон (лента форматов): карточки со второй не раскладываются, пока до них далеко (content-visibility,
   как .tcard в v2.css) — их кадры 4:5 (≈ 200 КБ) не отнимают канал у кадра первого экрана (LCP).
   Высоту ряда держит первая карточка (stretch), сдвигов нет. */
@media (max-width:599px){.v2 .fig-card:nth-child(n+2){content-visibility:auto;contain-intrinsic-block-size:auto 0}}

/* ═══ 01 · Первый экран ═══════════════════════════════════════════════ */
/* Телефон: крошки, надзаголовок, H1, лид, срок, кнопка — всё в первом окне
   (390×664, 375×548), кадр ниже кромкой; миниатюр нет (расписанные работы — в ленте 02). */
.v2 .fig-hero{padding-block:0 var(--s-6)}
.v2 .fig-hero__in{display:grid;gap:var(--s-3)}
.v2 .fig-hero__in>*{min-width:0}
/* H1 внутренней страницы — --t-h1 (DESIGN.md §3, §9б), как у .phead. */
.v2 .fig-hero__t{font:500 var(--t-h1)/1.08 var(--f-d);letter-spacing:-.02em}
.v2 .fig-hero__lead{font-size:var(--t-lead);line-height:1.55;color:var(--ink-2);max-width:var(--measure);text-wrap:pretty}
/* Надзаголовок на телефоне и планшете — не мельче подписи (--t-s, mobile-rules §4):
   --t-eyebrow 12 px читается с трудом. От 900 px — как в системе. */
.v2 .fig-hero .eyebrow{font-size:var(--t-s)}
.v2 .fig-hero__when b{font:600 var(--t-ui)/1.35 var(--f-d);text-wrap:balance}
.v2 .fig-hero__cta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-1) var(--s-4)}
.v2 .fig-hero__cta .link{align-self:center}
.v2 .fig-hero__cta .btn{flex:1 1 100%}
/* Подпись под кнопками — строкой на всю ширину, не шире --measure-s (подпись под кнопкой, DESIGN §5). */
.v2 .fig-hero__note{flex:1 1 100%;max-width:var(--measure-s);font-size:var(--t-s);line-height:1.5;color:var(--ink-2);text-wrap:pretty}
.v2 .fig-hero__vis{display:grid;gap:var(--s-2);margin-top:var(--s-2)}
.v2 .fig-hero__frame{position:relative;aspect-ratio:4/3;border-radius:var(--r-img);overflow:hidden;background:var(--linen);box-shadow:var(--shadow)}
.v2 .fig-hero__frame img{width:100%;height:100%;object-fit:cover;object-position:50% 40%}
/* Вертикальный кадр 4:5 (белая фигурка без росписи или реальная с подарочной коробкой): фигурка целиком, от головы до подставки. */
.v2 .fig-hero__frame--tall{aspect-ratio:4/5}
.v2 .fig-hero__frame--tall img{object-position:50% 50%}
.v2 .fig-hero__thumbs{display:none}
.v2 .fig-thumb{display:grid;gap:var(--s-1);font:600 var(--t-s)/1.3 var(--f-d);color:var(--ink)}
/* Миниатюра больше 56 px — кадр системы: --r-img (DESIGN.md §4), метка «Пример» в углу. */
.v2 .fig-thumb__img{position:relative;display:block;aspect-ratio:1;border-radius:var(--r-img);overflow:hidden;background:var(--linen);
  outline:var(--ring) solid transparent;outline-offset:calc(var(--ring) * -1);transition:outline-color var(--dur) var(--ease)}
.v2 .fig-thumb__img img{width:100%;height:100%;object-fit:cover}
/* «С росписью» (фигурка с коробкой, 4:5) в квадрате: окно ниже центра — видны и голова, и подставка. */
.v2 .fig-thumb__img--low img{object-position:50% 75%}
.v2 .fig-thumb__t{display:inline-flex;align-items:center;min-height:var(--s-4);text-decoration:underline;text-decoration-color:var(--rule);text-underline-offset:var(--ul-off)}
.v2 .fig-thumb:hover .fig-thumb__img{outline-color:color-mix(in srgb,var(--acc) 35%,transparent)}
.v2 .fig-thumb:hover .fig-thumb__t{color:var(--acc);text-decoration-color:currentColor}
@media (min-width:600px){
  .v2 .fig-hero__cta .btn{flex:0 0 auto}
  .v2 .fig-hero__vis{width:min(100%,var(--canvas-max));margin-top:var(--s-3)}
  /* Вертикальный кадр на планшете не шире --canvas-md: иначе 4:5 занимает целый экран. */
  .v2 .fig-hero__vis:has(.fig-hero__frame--tall){width:min(100%,var(--canvas-md))}
  .v2 .fig-hero__thumbs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-2)}
}
@media (min-width:900px){
  /* Текст слева, кадр справа, как первый экран главной; пустые строки
     сверху и снизу держат текст по центру высоты кадра. */
  .v2 .fig-hero__in{grid-template-columns:minmax(0,6fr) minmax(0,5fr);grid-template-rows:auto 1fr repeat(5,auto) 1fr;column-gap:var(--col-gap);row-gap:var(--s-4);
    grid-template-areas:"crumbs crumbs" ". vis" "eye vis" "t vis" "lead vis" "when vis" "cta vis" ". vis"}
  .v2 .fig-hero__crumbs{grid-area:crumbs}
  .v2 .fig-hero .eyebrow{grid-area:eye;font-size:var(--t-eyebrow)}.v2 .fig-hero__t{grid-area:t}.v2 .fig-hero__lead{grid-area:lead}
  .v2 .fig-hero__when{grid-area:when}.v2 .fig-hero__cta{grid-area:cta}
  .v2 .fig-hero__vis{grid-area:vis;align-self:center;margin:0}
}

/* ═══ 02 · Форматы ════════════════════════════════════════════════════ */
.v2 .fig-fmt{padding-block:var(--s-4) var(--sec)}
.v2 .fig-fmt__in{display:grid;gap:var(--s-5)}
.v2 .fig-fmt__head{display:grid;gap:var(--s-2)}
.v2 .fig-card{display:grid;gap:var(--s-0);align-content:start}
.v2 .fig-card__img{position:relative;margin:0 0 var(--s-2);aspect-ratio:4/5;border-radius:var(--r-img);overflow:hidden;background:var(--linen);
  outline:var(--ring) solid transparent;outline-offset:calc(var(--ring) * -1);transition:outline-color var(--dur) var(--ease)}
.v2 .fig-card__img img{width:100%;height:100%;object-fit:cover}
/* Вырезка на льне: фигурка целиком, с воздухом сверху и снизу. Картинка
   шириной с саму фигурку (не с кадр): браузер берёт узкий файл из srcset. */
.v2 .fig-card__img--cut img{position:absolute;top:0;left:50%;width:auto;max-width:none;height:100%;padding-block:var(--s-3) var(--s-2);
  transform:translateX(-50%);filter:var(--shadow-fig)}
.v2 .fig-card__t{font:600 var(--t-h3)/1.25 var(--f-d);text-wrap:balance}
.v2 .fig-card__meta{font-size:var(--t-s);color:var(--ink-2);text-wrap:pretty}
/* Пришли по якорю из меню — карточка отмечена акцентной рамкой (внутри кадра:
   у ленты край обрезается). */
.v2 .fig-card:target .fig-card__img{outline-color:var(--acc)}
.v2 .fig-fmt__foot{display:grid;gap:var(--s-3);max-width:var(--measure-art)}
.v2 .fig-fmt__agree{font:600 var(--t-ui)/1.35 var(--f-d)}
.v2 .fig-fmt__who .qa__a{font-size:var(--t-s);line-height:1.6}
@media (min-width:600px){
  .v2 .fig-fmt__grid{grid-auto-flow:row;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-5) var(--s-3);overflow:visible;margin:0;padding:0}
  /* Кадры — реальные вертикальные фото работ (фигурка целиком): 4:5 во всех рядах,
     горизонтальная обрезка резала бы голову или подставку. */
}
@media (min-width:900px){
  .v2 .fig-fmt__head{grid-template-columns:minmax(0,7fr) minmax(0,5fr);column-gap:var(--col-gap);align-items:end}
  .v2 .fig-fmt__grid{gap:var(--s-5) var(--s-4)}
  /* Ведущая карточка — «Фигурка в полный рост»: две колонки и два ряда,
     кадр на всю высоту; справа два формата, ниже ряд из трёх. */
  .v2 .fig-card--lead{grid-column:span 2;grid-row:span 2;grid-template-rows:minmax(0,1fr) auto auto;align-content:stretch}
  .v2 .fig-card--lead .fig-card__img{aspect-ratio:auto;min-height:0}
  .v2 .fig-card--lead .fig-card__img:not(.fig-card__img--cut) img{position:absolute;inset:0}
  .v2 .fig-card--lead .fig-card__t{font-size:var(--t-phrase);font-weight:500;line-height:1.2;letter-spacing:-.01em}
  .v2 .fig-card:not(.fig-card--lead) .fig-card__img img{object-position:50% 45%}
}

/* ═══ 03 · Три шага: карточки главной (.hsteps), на телефоне лента ═════ */
.v2 .fig-steps .hstep__img{margin:0 0 var(--s-2)}
/* Три шага — не ряд одинаковых карточек (DESIGN.md §9): последний, самый
   долгий (печать и роспись), шире; отметки дней — шкала слева направо. */
/* Квадратный реальный кадр (3D-модель на мониторе и фигурка) в 4:3: голова целиком, срезается низ подставки. */
.v2 .fig-steps .fig-step__img--up img{object-position:50% 25%}
/* Номер шага — в правом верхнем углу: слева на реальном кадре 1 лицо на фото пары. */
.v2 .fig-steps .hstep__n{left:auto;right:var(--s-2)}
@media (min-width:900px){.v2 .fig-steps .hsteps{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,var(--fig-step-last));gap:var(--s-5)}}

/* ═══ 04 · Примерка на полке ══════════════════════════════════════════ */
.v2 .fig-fit{padding-block:var(--sec)}
.v2 .fig-fit__in{display:grid;gap:var(--s-3)}
.v2 .fig-fit__head{display:grid;gap:var(--s-2);margin-bottom:var(--s-2)}
.v2 .fig-fit__head .lead{max-width:var(--measure)}
.v2 .fig-fit__cap{font-size:var(--t-s);line-height:1.5;color:var(--ink-2);max-width:var(--measure);text-wrap:pretty}
.v2 .fig-fit__cap span{color:var(--ink);font-weight:600}
/* Кадр: окно в «плоскость» фото. Все позиции внутри — доли плоскости,
   поэтому кадрирование на телефоне не сбивает масштаб. */
.v2 .fit{--fit-k:.8333;--fit-w:var(--fit-w-fig);position:relative;aspect-ratio:4/3;border-radius:var(--r-img);overflow:hidden;background:var(--linen);box-shadow:var(--shadow)}
.v2 .fit[data-kind="bust"]{--fit-w:var(--fit-w-bust)}
.v2 .fit__plane{position:absolute;left:0;top:var(--fit-top);width:var(--fit-zoom);aspect-ratio:var(--fit-ratio)}
.v2 .fit__shelf{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* Вырезка высотой в 30 см, нужный рост — одним transform: scale от низа. */
.v2 .fit__fig{position:absolute;left:var(--fit-x);bottom:var(--fit-base);height:var(--fit-h);width:auto;max-width:none;
  transform:translateX(-50%) scale(var(--fit-k));transform-origin:50% 100%;filter:var(--shadow-fig);
  transition:transform var(--dur-img) var(--ease),opacity var(--dur) var(--ease)}
.v2 .fit__fig--bust,.v2 .fit[data-kind="bust"] .fit__fig--figure{opacity:0}
.v2 .fit[data-kind="bust"] .fit__fig--bust{opacity:1}
/* Линейка справа от фигурки: слой во всю плоскость, сдвиг — transform,
   поэтому проценты сдвига считаются от ширины и высоты кадра. */
.v2 .fit__dim{position:absolute;inset:0;pointer-events:none;
  transform:translateX(calc(var(--fit-x) + var(--fit-w) * var(--fit-k) / 2 + var(--fit-gap)));transition:transform var(--dur-img) var(--ease)}
.v2 .fit__line{position:absolute;left:0;bottom:var(--fit-base);width:var(--line);height:var(--fit-line);background:var(--ink);
  transform:scaleY(var(--fit-k));transform-origin:50% 100%;transition:transform var(--dur-img) var(--ease)}
/* Засечки линейки: нижняя стоит на полке, верхняя едет вместе с подписью. */
.v2 .fit__dim::before{content:'';position:absolute;left:calc(var(--s-1) / -2 + var(--line) / 2);bottom:var(--fit-base);width:var(--s-1);height:var(--line);background:var(--ink)}
.v2 .fit__top{position:absolute;inset:0;transform:translateY(calc((1 - var(--fit-k)) * var(--fit-line)));transition:transform var(--dur-img) var(--ease)}
.v2 .fit__top::before{content:'';position:absolute;left:calc(var(--s-1) / -2 + var(--line) / 2);top:calc(100% - var(--fit-base) - var(--fit-line));width:var(--s-1);height:var(--line);background:var(--ink)}
.v2 .fit__val,.v2 .fit__mug{position:absolute;display:inline-flex;align-items:center;min-height:var(--chip-h);padding:0 var(--s-1);border-radius:var(--r-chip);
  background:var(--card);color:var(--ink);font:600 var(--t-s)/1 var(--f-d);white-space:nowrap}
.v2 .fit__val{left:var(--s-2);top:calc(100% - var(--fit-base) - var(--fit-line));transform:translateY(-50%)}
.v2 .fit__mug{left:var(--fit-mug-x);bottom:calc(100% - var(--fit-mug-top) + var(--s-1));color:var(--ink-2)}
/* Переключатели сразу под кадром. До 900 px высоты — ряд пилюль с одной
   цифрой (пилюля DESIGN.md §4: лён, --r-chip, 44 px, Jost 600 --t-ui;
   выбранная — --ink / --card), «куда ставят» — в подписи под ними (#fitSay).
   Кадр, «Фигурка / Бюст» и высоты — в одном окне телефона. */
.v2 .fig-fit__ctl{display:grid;gap:var(--s-3);align-content:start;margin-top:var(--s-1)}
.v2 .fig-fit__ctl .size__row{gap:var(--s-1)}
.v2 .fig-fit__ctl .sizes{grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:var(--s-1)}
.v2 .fig-fit__ctl .sizes__row{display:flex;justify-content:center;align-items:center;min-height:var(--tap);padding:0 var(--s-1);border-radius:var(--r-chip);text-align:center}
.v2 .fig-fit__ctl .sizes__row span{display:none}
.v2:not(.js) .fig-fit__kind{display:none}
@media (min-width:900px){
  /* Полка слева крупно, выбор справа строками «высота · куда ставят»:
     смена роста видна без прокрутки. */
  .v2 .fig-fit__in{grid-template-columns:minmax(0,7fr) minmax(0,5fr);grid-template-areas:"head head" "stage ctl" "cap ctl";column-gap:var(--col-gap);row-gap:var(--s-3);align-items:start}
  .v2 .fig-fit__head{grid-area:head;margin-bottom:var(--s-3)}
  .v2 .fig-fit__stage{grid-area:stage}
  .v2 .fig-fit__ctl{grid-area:ctl;gap:var(--s-4);margin-top:0}
  .v2 .fig-fit__cap{grid-area:cap;max-width:none}
  .v2 .fig-fit__ctl .sizes{grid-auto-flow:row;grid-auto-columns:auto}
  .v2 .fig-fit__ctl .sizes__row{display:grid;min-height:var(--row);padding:var(--s-2) var(--s-3);border-radius:var(--r-btn);text-align:left}
  .v2 .fig-fit__ctl .sizes__row span{display:block}
}
@media (prefers-reduced-motion:reduce){.v2 .fit__fig,.v2 .fit__dim,.v2 .fit__line,.v2 .fit__top{transition:none}}

/* ═══ 05 · Из чего складывается цена ══════════════════════════════════ */
.v2 .fig-price{padding-block:var(--band);background:var(--linen)}
.v2 .fig-price__in{display:grid;gap:var(--s-5)}
.v2 .fig-price__head{display:grid;gap:var(--s-3);align-content:start}
.v2 .fig-price__head .lead{max-width:var(--measure)}
/* Панель на льне плоская (DESIGN.md §2): тени нет. */
.v2 .fig-price__card{display:grid;gap:var(--s-4);padding:var(--s-4) var(--s-3);border-radius:var(--r-panel);background:var(--card)}
.v2 .fig-price__list{display:grid;gap:var(--s-3);margin:0}
.v2 .fig-price__list div{display:grid;gap:var(--s-0)}
.v2 .fig-price__list dt{font:600 var(--t-ui)/1.3 var(--f-d)}
.v2 .fig-price__list dd{margin:0;font-size:var(--t-s);color:var(--ink-2);text-wrap:pretty}
.v2 .fig-price__go{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-4)}
.v2 .fig-price__free{font-size:var(--t-s);color:var(--ink-2)}
.v2 .fig-price__go .btn{flex:1 1 100%}
@media (min-width:600px){
  .v2 .fig-price__go .btn{flex:0 0 auto}
  .v2 .fig-price__list{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--s-5);row-gap:var(--s-4)}
}
@media (min-width:900px){
  .v2 .fig-price__in{grid-template-columns:minmax(0,5fr) minmax(0,7fr);column-gap:var(--col-gap);align-items:start}
  .v2 .fig-price__card{padding:var(--pad-panel)}
}

/* ═══ 06 · Как это делается ═══════════════════════════════════════════ */
/* «Как это делается» и «Какие фотографии подойдут» — одна тема: на стыке по --sec-near с каждой стороны (DESIGN §5). */
.v2 .fig-craft{padding-block:var(--sec) var(--sec-near)}
.v2 .fig-craft__in{display:grid;gap:var(--s-5)}
.v2 .fig-craft__head{display:grid;gap:var(--s-3)}
.v2 .fig-craft__head .lead{max-width:var(--measure)}
.v2 .fig-craft__img{position:relative;margin:0;aspect-ratio:4/3;border-radius:var(--r-img);overflow:hidden;background:var(--linen)}
.v2 .fig-craft__img img{width:100%;height:100%;object-fit:cover}
/* Реальный бюст крупно — вертикальный кадр 4:5, лицо в верхней трети. */
.v2 .fig-craft__img--real{aspect-ratio:4/5}
.v2 .fig-craft__img--real img{object-position:50% 30%}
@media (min-width:900px){
  .v2 .fig-craft__in{grid-template-columns:minmax(0,6fr) minmax(0,5fr);column-gap:var(--col-gap);row-gap:var(--s-5);align-items:center}
  /* Вертикальный кадр — в узкой колонке, список пяти пунктов — в широкой. */
  .v2 .fig-craft__in:has(.fig-craft__img--real){grid-template-columns:minmax(0,4fr) minmax(0,6fr)}
  .v2 .fig-craft__head{grid-column:1 / -1}
}

/* ═══ 07 · Какие фотографии подойдут ══════════════════════════════════ */
.v2 .fig-foto{padding-block:var(--sec-near) var(--sec)}
.v2 .fig-foto__in{display:grid;gap:var(--s-5)}
.v2 .fig-foto__head{display:grid;gap:var(--s-2)}
.v2 .fig-foto__head .lead{max-width:var(--measure)}
.v2 .fig-rule{display:grid;gap:var(--s-1);align-content:start}
.v2 .fig-rule__img{position:relative;margin:0 0 var(--s-1);aspect-ratio:1;border-radius:var(--r-img);overflow:hidden;background:var(--linen)}
.v2 .fig-rule__img img{width:100%;height:100%;object-fit:cover}
/* Метка — чип, глиф и слово, не только цвет (DESIGN.md §9б, как .shot__mark):
   «Подойдёт» — --acc-soft / --acc-ink, «Не подойдёт» — --ink / --card;
   --err только для ошибок формы. */
.v2 .fig-rule__mark{display:inline-flex;align-items:center;gap:var(--s-0);justify-self:start;min-height:var(--chip-h);padding:0 var(--s-1);border-radius:var(--r-chip);
  background:var(--acc-soft);color:var(--acc-ink);font:600 var(--t-s)/1 var(--f-b);white-space:nowrap}
.v2 .fig-rule__mark svg{flex:0 0 auto;width:var(--ico);height:var(--ico);stroke-width:var(--fig-mark)}
.v2 .fig-rule--no .fig-rule__mark{background:var(--ink);color:var(--card)}
.v2 .fig-rule__t{margin-top:var(--s-0);font:600 var(--t-ui)/1.3 var(--f-d);text-wrap:balance}
.v2 .fig-rule__note{font-size:var(--t-s);color:var(--ink-2);text-wrap:pretty}
.v2 .fig-foto__go{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-4)}
.v2 .fig-foto__go p{font-size:var(--t-s);color:var(--ink-2);max-width:var(--measure-s);text-wrap:balance}
.v2 .fig-foto__go .btn{flex:1 1 100%}
@media (min-width:600px){
  .v2 .fig-foto__grid{grid-auto-flow:row;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-5) var(--s-3);overflow:visible;margin:0;padding:0}
  .v2 .fig-foto__go .btn{flex:0 0 auto}
}
@media (min-width:900px){
  .v2 .fig-foto__grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s-4)}
  .v2 .fig-foto__go p{max-width:none}
}

/* ═══ 08 · Готовые фигурки: лента реальных работ ══════════════════════ */
/* Лента от 600 px (общая .rail-bar и data-rail из v2.js; до 600 — сетка 2 колонки, ниже): 600 —
   два с половиной кадра, снап, поля ленты = поля страницы; 900 — четыре с краем пятого, в пределах колонки.
   Кадр 3:4 — пропорция самих фото (960×1280): фигурка целиком. */
/* Верх — --sec-near: над лентой светлая «Какое фото подойдёт» со своим нижним --sec (было два полных поля подряд, DESIGN §5). */
.v2 .fig-works{padding-block:var(--sec-near) var(--s-6)}
.v2 .fig-works__in{display:grid;gap:var(--s-4)}
.v2 .fig-works__head{display:grid;gap:var(--s-2)}
.v2 .fig-works__head .lead{max-width:var(--measure)}
.v2 .fig-works__bar{order:1}
.v2 .fig-works__rail{display:grid;grid-auto-flow:column;grid-auto-columns:var(--rail);gap:var(--s-3);overflow-x:auto;overscroll-behavior-x:contain;
  scroll-snap-type:x mandatory;margin:calc(var(--s-1) * -1) calc(var(--gut) * -1);padding:var(--s-1) var(--gut);scroll-padding-inline:var(--gut);scrollbar-width:none}
.v2 .fig-works__rail::-webkit-scrollbar{display:none}
.v2 .fig-work{scroll-snap-align:start}
.v2 .fig-work__a{display:block;aspect-ratio:3/4;border-radius:var(--r-img);overflow:hidden;background:var(--linen);
  outline:var(--ring) solid transparent;outline-offset:calc(var(--ring) * -1);transition:outline-color var(--dur) var(--ease)}
.v2 .fig-work__a img{width:100%;height:100%;object-fit:cover;transition:transform var(--dur-img) var(--ease)}
.v2 .fig-work__a:hover{outline-color:color-mix(in srgb,var(--acc) 35%,transparent)}
.v2 .fig-work__a:focus-visible{outline-color:var(--acc)}
@media (hover:hover){.v2 .fig-work__a:hover img{transform:scale(1.03)}}
/* Телефон (до 600 px, заказчик 27.10: «горизонтальный скролл важного контента — зло»): сетка 2 колонки
   кадров 3:4 вместо ленты, видны первые шесть, остальные — «Показать ещё N» (fig/works.php, общий .works__more
   из v2.js); счётчика и стрелок нет. Окно просмотра — то же (кадр — ссылка data-dlg). */
@media (max-width:599px){
  .v2 .fig-works__rail{grid-auto-flow:row;grid-auto-columns:auto;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-3) var(--s-2);
    overflow:visible;scroll-snap-type:none;margin:0;padding:0}
  .v2 .fig-works__bar{display:none}
  .v2.js .fig-works__rail:not(.is-open)>.work--more{display:none}
  .v2 .fig-works__more{order:2;justify-self:stretch;justify-content:center}
}
@media (min-width:600px){.v2 .fig-works__rail{grid-auto-columns:calc((100% - 2 * var(--s-3)) / 2.4)}}
@media (min-width:900px){
  .v2 .fig-works__in{grid-template-columns:minmax(0,1fr) auto;align-items:end;row-gap:var(--s-5)}
  .v2 .fig-works__bar{order:0;padding-top:0;border-top:0}
  .v2 .fig-works__rail{grid-column:1 / -1;grid-auto-columns:calc((100% - 4 * var(--s-3)) / 4.4);margin-inline:0;padding-inline:0;scroll-padding-inline:0}
}
@media (prefers-reduced-motion:reduce){.v2 .fig-work__a img{transition:none}}

/* 10 · Отзывы о фигурках: блок не выводится (публичных отзывов нет), стили — на случай возврата. */
.v2 .fig-revs{padding-block:var(--sec);background:var(--linen)}
.v2 .fig-revs__in{display:grid;gap:var(--s-5)}
.v2 .fig-revs__list{display:grid;gap:var(--s-5)}
.v2 .fig-rev{display:grid;gap:var(--s-2);align-content:start}
.v2 .fig-rev__photo{width:100%;max-width:var(--rev-photo);border-radius:var(--r-img)}
.v2 .fig-rev__q{margin:0;max-width:var(--measure)}
.v2 .fig-rev__who{font:600 var(--t-ui)/1.3 var(--f-d)}
@media (min-width:900px){.v2 .fig-revs__list{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-5) var(--s-4)}}

/* ═══ 09 · Гарантии: тёмная полоса главной, заголовок скрыт ══════════ */
/* Линии только между строками (без рамки сверху и снизу полосы) — общий .promise (v2.css). */
.v2 .fig-prom .promise__in{gap:0}
/* Телефон: четыре гарантии — списком, как общий .promise (v2.css), без ленты вбок (заказчик 27.10: горизонтальный
   скролл важного контента на телефоне — зло; до 27.10 здесь была лента «1 из 4»). Счётчик и стрелки скрыты. */
/* Счётчик и стрелки ленты гарантий — только пока это лента (до 600 px), под ней, в зоне большого пальца, как у
   остальных лент сайта (DESIGN §5; аудит страниц 13.10: лента была без счётчика и стрелок). Тёмная полоса:
   счётчик --on-ink-2, кнопки контуром --on-ink-line, наведение — белая заливка. */
.v2 .fig-prom__bar{margin-top:var(--s-4)}
.v2 .fig-prom .rail-bar__count{color:var(--on-ink-2)}
.v2 .fig-prom .rail-btn{background:transparent;color:var(--card);box-shadow:inset 0 0 0 1.5px var(--on-ink-line)}
.v2 .fig-prom .rail-btn:hover:not(:disabled){background:var(--card);color:var(--ink)}
.v2 .fig-prom__bar{display:none}

/* ═══ 11 · Вопросы и 12 · заявка: блоки главной, свой ритм ════════════ */
.v2 .faq.fig-faq{padding-block:var(--sec) var(--s-5)}
/* Чат ВКонтакте — кнопкой обводкой под строкой «часы · телефон» (аудит страниц 13.10): у ссылки телефона цель
   44 px выходит за строку на ~9 px (отрицательные поля), --s-2 сверху держит между ними больше 8 px. На телефоне
   кнопка во всю ширину, как одиночные кнопки шапок (.phead__cta), от 600 px — по подписи. */
.v2 .fig-lead__soc{display:flex;margin-top:var(--s-2)}
@media (max-width:599px){.v2 .fig-lead__soc .btn{flex:1 1 100%}}
/* Заявка от 900 px: колонка текста шире (6fr), чтобы заголовок заявки
   встал в строку; текст по центру высоты панели формы, как на главной. */
@media (min-width:900px){.v2 .fig-lead .lead-sec__in{grid-template-columns:minmax(0,6fr) minmax(0,5fr)}}

/* ═══ 13 · Портреты на холсте ═════════════════════════════════════════ */
.v2 .fig-holst{padding-block:var(--band);background:var(--butter);--ink-2:var(--ink-2-butter)}
.v2 .fig-holst__in{display:grid;gap:var(--s-5)}
.v2 .fig-holst__head{display:grid;gap:var(--s-3);align-content:start}
.v2 .fig-holst__head .lead{max-width:var(--measure)}
.v2 .fig-holst__t{margin-bottom:calc(var(--s-3) - var(--s-5))}
.v2 .fig-holst__list{display:grid;gap:var(--s-1)}
/* Строка-ссылка: миниатюра, название с бейджем, цена «от», стрелка.
   На лимонной полосе — белая, наведение — белый с 8 % тона. */
.v2 .fig-holst__a{display:grid;grid-template-columns:var(--thumb) minmax(0,1fr) auto;align-items:center;gap:var(--s-2) var(--s-3);min-height:var(--row);
  padding:var(--s-1) var(--s-3) var(--s-1) var(--s-1);border-radius:var(--r-btn);background:var(--card);transition:background-color var(--dur) var(--ease)}
.v2 .fig-holst__a:hover{background:color-mix(in srgb,var(--ink) 8%,var(--card))}
.v2 .fig-holst__a img{width:var(--thumb);aspect-ratio:4/5;height:auto;border-radius:var(--r-btn);object-fit:cover;background:var(--linen)}
.v2 .fig-holst__name{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-1);font:600 var(--t-ui)/1.2 var(--f-d)}
.v2 .fig-holst__price{display:grid;justify-items:end;gap:var(--s-0);text-align:right}
.v2 .fig-holst__price b{font:600 var(--t-ui)/1.2 var(--f-d);white-space:nowrap}
.v2 .fig-holst__old{display:inline-flex;align-items:center;gap:var(--s-1);font-size:var(--t-s);color:var(--ink-2);white-space:nowrap}
/* Стрелка — от 380 px: на узком экране место отдано цене со скидкой. */
.v2 .fig-holst__go{display:none;color:var(--acc);transition:transform var(--dur) var(--ease)}
.v2 .fig-holst__a:hover .fig-holst__go{transform:translateX(var(--nudge))}
@media (min-width:380px){.v2 .fig-holst__a{grid-template-columns:var(--thumb) minmax(0,1fr) auto auto}.v2 .fig-holst__go{display:block}}
@media (min-width:900px){
  /* H2 во всю ширину одной строкой, ниже лид со ссылкой слева и список справа. */
  .v2 .fig-holst__in{grid-template-columns:minmax(0,5fr) minmax(0,6fr);column-gap:var(--col-gap);align-items:start}
  .v2 .fig-holst__t{grid-column:1 / -1;margin-bottom:0}
  .v2 .fig-holst__name{font-size:var(--t-h3)}
}

/* Появление блоков (.rv → .rv.in из v2.css, assets/js/pages/fig.js):
   при печати всё видно сразу. */
@media print{.v2.js .rv{opacity:1;transform:none}}

/* Цена «от» в первом экране (прайс 30.09, inc/v2-prices.php): строкой над сроком, в той же области сетки. */
.v2 .fig-hero__price{display:block;margin-bottom:var(--s-1);font:600 var(--t-num)/1.1 var(--f-d);font-variant-numeric:tabular-nums}
.v2 .fig-hero__price small{font:600 var(--t-ui)/1.35 var(--f-d);color:var(--ink-2)}
/* «Сколько стоит»: цена «от» под заголовком. */
.v2 .fig-price__from{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s-1) var(--s-2)}
.v2 .fig-price__from b{font:500 var(--t-h2)/1.08 var(--f-d);letter-spacing:-.015em}
.v2 .fig-price__from span{color:var(--ink-2)}
/* Самые узкие телефоны (320–374 px): строка цены прибавила высоты — промежутки первого экрана на ступень
   меньше, «Узнать цену по фото» остаётся целиком в первом окне 320×568. */
@media (max-width:374px){
  /* Высот в примерке шесть (с 23 см из прайса): у бюста в один ряд кнопки уже цели 44 px — три в ряд. */
  .v2 .fig-fit__ctl .sizes{grid-auto-flow:row;grid-template-columns:repeat(3,minmax(0,1fr))}
  .v2 .fig-hero__in{row-gap:var(--s-2)}
  .v2 .fig-hero__price{margin-bottom:var(--s-0)}
}
