/* ═══════════════════════════════════════════════════════════
   Локус — site.css
   Палитра «Известняк» (направление 1, выбрано заказчиком).
   Mobile-first, без исключений.
   ═══════════════════════════════════════════════════════════ */

/* ─── Палитра ─────────────────────────────────────────────
   Тёплая светлая база (70 %), графитовый текст (30 %),
   кирпичная терракота на действии.
   Контрасты WCAG AA:
     --fg  на --bg  = 14.2 : 1
     --on-accent на --accent = 5.9 : 1
     --muted на --bg = 5.2 : 1
     --muted на --panel = 4.5 : 1
   ──────────────────────────────────────────────────────── */
:root {
    /* Фон и поверхности */
    --bg:        #F3EEE6;   /* Известняк — основной фон */
    --panel:     #E7DFD2;   /* Подложка — карточки, врезки */
    --panel-d:   #DDD4C4;   /* Подложка тёмная (ховер карточки) */
    --white:     #FFFFFF;   /* Белый — карточки на тёмном */
    --line:      #D5CCBE;   /* Границы */

    /* Текст */
    --fg:        #231F1C;   /* Графит — основной текст */
    --fg-light:  #FFFFFF;   /* Белый текст на тёмных блоках */
    --muted:     #6A6258;   /* Раствор — подписи, вторичное */
    --muted-l:   #948B7F;   /* Светлый раствор — плейсхолдеры */

    /* Акцент: терракота / кирпич */
    --accent:       #A24B2A;  /* Кнопки и акцент */
    --accent-hover: #8B3F22;  /* Ховер кнопки */
    --accent-soft:  rgba(162, 75, 42, 0.08); /* Мягкий фон акцента */
    --on-accent:    #FFFFFF;  /* Текст на кнопке */
    /* Акцент как ЦВЕТ ТЕКСТА — отдельные токены, заливку не трогают:
       --accent-text на --bg 6.4, на --panel 5.6; --accent-on-dark на графите 6.1, на карточке 5.4 */
    --accent-text:    #8B3F22;
    --accent-on-dark: #D98B6A;

    /* Тёмные блоки */
    --dark:      #231F1C;   /* Графит — фон тёмных секций */
    --dark-panel: #2E2924;  /* Карточка в тёмном */
    --dark-muted: #9A9389;  /* Подпись в тёмном */

    /* Шрифты */
    --f-body: 'Golos Text', system-ui, -apple-system, sans-serif;
    --f-mono: 'JetBrains Mono', ui-monospace, 'Cascadia Code', monospace;

    /* Сетка */
    --wrap: 1180px;
    --gap:  20px;           /* боковое поле телефона — норма mobile-standard */
    --gap-section: 64px;    /* проём между блоками: на телефоне ≤140, на десктопе ≤200 */

    /* Анимация */
    --ease: cubic-bezier(.4, 0, .2, 1);
    --dur:  .25s;
}

@media (min-width: 641px) {
    :root { --gap: 20px; --gap-section: 80px; }
}
@media (min-width: 1041px) {
    :root { --gap: 24px; --gap-section: 96px; }
}

/* ─── Сброс ───────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html {
    font-size: 16px;
    -webkit-text-size-adjust: 100%;
    scroll-behavior: smooth;
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}

body {
    font-family: var(--f-body);
    font-size: 1rem;
    line-height: 1.6;
    color: var(--fg);
    background: var(--bg);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

img, svg, video { display: block; max-width: 100%; height: auto; }
a { color: var(--accent-text); text-decoration: none; transition: color var(--dur) var(--ease); }
a:hover { color: var(--fg); }

/* ─── Типографика ─────────────────────────────────────── */
h1, h2, h3, h4, h5, h6 {
    font-family: var(--f-body);
    font-weight: 600;
    line-height: 1.2;
    color: var(--fg);
}

h1, .h1 { font-size: clamp(1.75rem, 4vw, 2.75rem); font-weight: 700; letter-spacing: -0.02em; }
h2, .h2 { font-size: clamp(1.5rem, 3vw, 2.25rem); font-weight: 600; letter-spacing: -0.01em; }
h3, .h3 { font-size: clamp(1.125rem, 2.2vw, 1.5rem); font-weight: 600; }
h4, .h4 { font-size: 1.125rem; font-weight: 600; }

.kicker {
    font-family: var(--f-mono);
    font-size: 0.75rem;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--accent-text);
    margin-bottom: 8px;
}

.lead {
    font-size: clamp(1.0625rem, 1.8vw, 1.25rem);
    line-height: 1.55;
    color: var(--muted);
    max-width: 68ch;
}

.mono {
    font-family: var(--f-mono);
    font-weight: 500;
    font-variant-numeric: tabular-nums;
}

.price {
    font-family: var(--f-mono);
    font-weight: 500;
    font-size: 1.25rem;
    color: var(--fg);
    white-space: nowrap;
}

p + p { margin-top: 1em; }

/* ─── Контейнер ───────────────────────────────────────── */
.wrap {
    width: 100%;
    max-width: var(--wrap);
    margin: 0 auto;
    padding: 0 var(--gap);
}

/* ─── Секции ──────────────────────────────────────────── */
section, .sec {
    padding: var(--gap-section) 0;
}

.sec-head {
    margin-bottom: 40px;
}
@media (min-width: 641px) { .sec-head { margin-bottom: 56px; } }

/* Тёмная секция */
.dark {
    background: var(--dark);
    color: var(--fg-light);
    /* Текст внутри тёмного блока красится теми же токенами, что и на светлом:
       переопределяем их здесь, иначе графит ложится на графит (правка 24.09) */
    --fg: var(--fg-light);
    --muted: var(--dark-muted);
    --accent-text: var(--accent-on-dark);
}
.hero, .form-section, .footer { --accent-text: var(--accent-on-dark); }
.dark h2, .dark h3, .dark h4,
.dark .h2, .dark .h3 { color: var(--fg-light); }
.dark .kicker { color: var(--accent-text); }  /* в .dark это --accent-on-dark */
.dark .lead { color: var(--dark-muted); }
.dark .muted { color: var(--dark-muted); }

/* ─── Сетка ───────────────────────────────────────────── */
.grid { display: grid; gap: var(--gap); }

.g2 { grid-template-columns: 1fr; }
@media (min-width: 641px) { .g2 { grid-template-columns: 1fr 1fr; } }

.g3 { grid-template-columns: 1fr; }
@media (min-width: 641px) { .g3 { grid-template-columns: 1fr 1fr; } }
@media (min-width: 941px) { .g3 { grid-template-columns: repeat(3, 1fr); } }

.g4 { grid-template-columns: 1fr; }
@media (min-width: 481px) { .g4 { grid-template-columns: 1fr 1fr; } }
@media (min-width: 641px) { .g4 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1041px) { .g4 { grid-template-columns: repeat(4, 1fr); } }

/* ─── Кнопки ──────────────────────────────────────────── */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 14px 28px;
    font-family: var(--f-body);
    font-size: 0.9375rem;
    font-weight: 600;
    line-height: 1.2;
    border-radius: 8px;
    border: 2px solid transparent;
    cursor: pointer;
    transition: all var(--dur) var(--ease);
    text-decoration: none;
    white-space: nowrap;
    min-height: 48px; /* тач-цель */
}

.btn-p {
    background: var(--accent);
    color: var(--on-accent);
    border-color: var(--accent);
}
.btn-p:hover {
    background: var(--accent-hover);
    border-color: var(--accent-hover);
    color: var(--on-accent);
}

.btn-s {
    background: transparent;
    color: var(--fg);
    border-color: var(--line);
}
.btn-s:hover {
    border-color: var(--fg);
    color: var(--fg);
}

.dark .btn-s, .hero .btn-s {
    color: var(--fg-light);
    border-color: rgba(255,255,255,.25);
}
.dark .btn-s:hover, .hero .btn-s:hover {
    border-color: var(--fg-light);
}

.btn-sm { padding: 10px 20px; font-size: 0.875rem; min-height: 40px; }

.btn-row { display: flex; flex-wrap: wrap; gap: 12px; }

/* ─── Карточки ────────────────────────────────────────── */
.card {
    background: var(--white);
    border: 1px solid var(--line);
    border-radius: 12px;
    padding: 24px;
    transition: border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);
}
.card:hover { border-color: var(--muted-l); }

.card-accent {
    background: var(--panel);
    border-color: var(--panel);
}

.dark .card {
    background: var(--dark-panel);
    border-color: var(--dark-panel);
    color: var(--fg-light);
}

/* Карточка-ссылка (витрина) */
a.card {
    text-decoration: none;
    color: inherit;
}
a.card:hover {
    box-shadow: 0 4px 20px rgba(35,31,28,.08);
    color: inherit;
}

/* ─── Hero (первый экран) ─────────────────────────────── */
.hero {
    position: relative;
    min-height: 520px;
    display: flex;
    align-items: flex-end;
    padding: 0;
    overflow: hidden;
    background: var(--dark);
    color: var(--fg-light);
}
@media (min-width: 641px) { .hero { min-height: 600px; } }
@media (min-width: 1041px) { .hero { min-height: 680px; } }

.hero-bg {
    position: absolute;
    inset: 0;
    z-index: 1;
}
.hero-bg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.hero-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(35,31,28,.85) 0%, rgba(35,31,28,.4) 60%, rgba(35,31,28,.2) 100%);
    z-index: 2;
}

.hero-body {
    position: relative;
    z-index: 3;
    width: 100%;
    max-width: var(--wrap);
    margin: 0 auto;
    padding: 40px var(--gap) 48px;
}
@media (min-width: 641px) { .hero-body { padding-bottom: 64px; } }

.hero h1 { color: var(--fg-light); max-width: 18ch; margin-bottom: 16px; }
.hero .lead { color: rgba(255,255,255,.8); max-width: 52ch; margin-bottom: 24px; }
.hero .btn-row { margin-bottom: 32px; }

.hero-facts {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 24px;
    font-family: var(--f-mono);
    font-size: 0.8125rem;
    font-weight: 500;
    color: rgba(255,255,255,.7);
}
.hero-facts span::before {
    content: '';
    display: inline-block;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--accent);
    margin-right: 8px;
    vertical-align: middle;
}

/* Плейсхолдер для фото (пока нет реальных) */
.photo-placeholder {
    background: var(--panel);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--muted);
    font-size: 0.875rem;
    border-radius: 12px;
    aspect-ratio: 16/10;
    text-align: center;
    padding: 20px;
}
.photo-placeholder::before {
    content: '';
    display: block;
    width: 40px;
    height: 40px;
    border: 2px dashed var(--muted-l);
    border-radius: 8px;
    margin: 0 auto 8px;
}

.dark .photo-placeholder {
    background: var(--dark-panel);
    color: var(--dark-muted);
}
.dark .photo-placeholder::before { border-color: var(--dark-muted); }

/* Фото объектов */
.photo { margin: 0; }
.photo img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 4/3;
    object-fit: cover;
    border-radius: 12px;
    background: var(--panel);
}
.photo-wide { max-width: 880px; }
.photo-wide img, .photo-169 img { aspect-ratio: 16/9; }
.photo figcaption {
    margin-top: 8px;
    font-size: 0.8125rem;
    color: var(--muted);
    line-height: 1.4;
}
.step-photo { margin-top: 16px; }

/* ─── Обещания (4 плитки) ─────────────────────────────── */
.promise { counter-reset: promise; }
.promise-item {
    counter-increment: promise;
    padding: 24px;
    background: var(--panel);
    border-radius: 12px;
}
.promise-item::before {
    content: counter(promise, decimal-leading-zero);
    font-family: var(--f-mono);
    font-size: 0.75rem;
    font-weight: 500;
    color: var(--accent-text);
    display: block;
    margin-bottom: 12px;
}
.promise-title {
    font-weight: 600;
    font-size: 1.0625rem;
    margin-bottom: 6px;
}
.promise-text {
    font-size: 0.9375rem;
    color: var(--muted);
    line-height: 1.5;
}

/* ─── Витрина разделов ────────────────────────────────── */
.showcase-card {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 28px 24px;
    background: var(--white);
    border: 1px solid var(--line);
    border-radius: 12px;
    text-decoration: none;
    color: inherit;
    transition: all var(--dur) var(--ease);
}
.showcase-card:hover {
    border-color: var(--accent);
    box-shadow: 0 4px 20px rgba(35,31,28,.06);
    color: inherit;
}
.showcase-card .sc-title {
    font-size: 1.125rem;
    font-weight: 600;
    color: var(--fg);
}
.showcase-card .sc-desc {
    font-size: 0.9375rem;
    color: var(--muted);
    line-height: 1.5;
}
.showcase-card .sc-link {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--accent-text);
    margin-top: auto;
}

/* ─── Этапы (цепочка) ────────────────────────────────── */
.steps { counter-reset: step; }
.step-item {
    counter-increment: step;
    position: relative;
    padding: 0 0 32px 48px;
    border-left: 2px solid var(--line);
    margin-left: 17px;
}
.step-item:last-child { border-left-color: transparent; padding-bottom: 0; }

.step-item::before {
    content: counter(step, decimal-leading-zero);
    position: absolute;
    left: -17px;
    top: 0;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--accent);
    color: var(--on-accent);
    font-family: var(--f-mono);
    font-size: 0.75rem;
    font-weight: 500;
    display: flex;
    align-items: center;
    justify-content: center;
}

.step-title {
    font-size: 1.0625rem;
    font-weight: 600;
    margin-bottom: 4px;
}
.step-text {
    font-size: 0.9375rem;
    color: var(--muted);
    line-height: 1.5;
}

/* ─── FAQ (аккордеон) ─────────────────────────────────── */
.faq details {
    border-bottom: 1px solid var(--line);
}
.faq summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 20px 0;
    cursor: pointer;
    font-size: 1.0625rem;
    font-weight: 600;
    line-height: 1.4;
    list-style: none;
    color: var(--fg);
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
    content: '+';
    flex-shrink: 0;
    font-family: var(--f-mono);
    font-size: 1.25rem;
    font-weight: 400;
    color: var(--muted);
    transition: transform var(--dur) var(--ease);
}
.faq details[open] summary::after {
    content: '−';
}
.faq .faq-answer {
    padding: 0 0 20px;
    font-size: 0.9375rem;
    line-height: 1.6;
    color: var(--muted);
    max-width: 72ch;
}
.dark .faq summary { color: var(--fg-light); }
.dark .faq .faq-answer { color: var(--dark-muted); }

/* ─── Форма заявки ────────────────────────────────────── */
.form-section {
    background: var(--dark);
    color: var(--fg-light);
}

.form-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--gap);
}
@media (min-width: 641px) {
    .form-grid { grid-template-columns: 1fr 1fr; }
}

.form-field {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.form-field label {
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--dark-muted);
}

.form-field input,
.form-field textarea,
.form-field select {
    font-family: var(--f-body);
    font-size: 1rem;
    padding: 12px 16px;
    background: var(--dark-panel);
    color: var(--fg-light);
    border: 1px solid rgba(255,255,255,.12);
    border-radius: 8px;
    outline: none;
    transition: border-color var(--dur) var(--ease);
}
.form-field input:focus,
.form-field textarea:focus {
    border-color: var(--accent);
}
.form-field input::placeholder,
.form-field textarea::placeholder {
    color: rgba(255,255,255,.62);
}

.form-field textarea { resize: vertical; min-height: 100px; }

.form-agree {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-size: 0.8125rem;
    color: var(--dark-muted);
    line-height: 1.5;
}
.form-agree input { margin-top: 3px; flex-shrink: 0; }
.form-agree a { color: var(--dark-muted); text-decoration: underline; }

.form-status {
    padding: 16px 20px;
    border-radius: 8px;
    font-size: 0.9375rem;
    display: none;
}
.form-status.ok { display: block; background: rgba(46,139,87,.15); color: #2e8b57; }
.form-status.err { display: block; background: rgba(162,75,42,.15); color: var(--accent-text); }

/* ─── Хлебные крошки ──────────────────────────────────── */
.crumbs {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    font-size: 0.8125rem;
    color: var(--muted);
    align-items: center;
    padding: 4px var(--gap);
}
/* тач-цель крошки на телефоне — не меньше 44px по высоте */
.crumbs a { color: var(--muted); display: inline-flex; align-items: center; min-height: 44px; }
.crumbs a:hover { color: var(--accent-text); }
.crumbs span::before { content: ' / '; color: var(--muted-l); }
.crumbs span:first-child::before { display: none; }

/* ─── Шапка ───────────────────────────────────────────── */
.header {
    position: sticky;
    top: 0;
    z-index: 60;
    background: var(--bg);
    border-bottom: 1px solid var(--line);
    transition: box-shadow var(--dur) var(--ease);
}
.header.scrolled { box-shadow: 0 2px 12px rgba(35,31,28,.06); }

.hd {
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 64px;
    max-width: var(--wrap);
    margin: 0 auto;
    padding: 0 var(--gap);
}
@media (min-width: 941px) { .hd { height: 76px; } }

.hd-logo {
    display: flex;
    align-items: center;
    gap: 10px;
    text-decoration: none;
    color: var(--fg);
}
.hd-logo svg { width: 36px; height: 36px; flex-shrink: 0; }
@media (min-width: 941px) { .hd-logo svg { width: 42px; height: 42px; } }
.hd-logo-text {
    font-size: 1.125rem;
    font-weight: 700;
    letter-spacing: -0.01em;
}

/* Навигация (десктоп) */
.nav { display: none; align-items: center; gap: 4px; }
@media (min-width: 1041px) { .nav { display: flex; } }

.nav-link {
    padding: 8px 14px;
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--fg);
    text-decoration: none;
    border-radius: 6px;
    transition: background var(--dur) var(--ease), color var(--dur) var(--ease);
}
.nav-link:hover { background: var(--panel); color: var(--fg); }
.nav-link.active { color: var(--accent-text); }

/* Подменю */
.nav-item { position: relative; }
.nav-drop {
    position: absolute;
    top: 100%;
    left: 0;
    min-width: 240px;
    padding: 8px 0;
    background: var(--white);
    border: 1px solid var(--line);
    border-radius: 10px;
    box-shadow: 0 8px 32px rgba(35,31,28,.1);
    opacity: 0;
    visibility: hidden;
    transform: translateY(4px);
    transition: all var(--dur) var(--ease);
    z-index: 70;
}
.nav-item:hover .nav-drop,
.nav-item:focus-within .nav-drop {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}
.nav-drop a {
    display: block;
    padding: 10px 20px;
    font-size: 0.9375rem;
    color: var(--fg);
    text-decoration: none;
    transition: background var(--dur) var(--ease);
}
.nav-drop a:hover { background: var(--panel); color: var(--fg); }

/* Стрелка у пунктов с подменю — «как в Windows», по просьбе заказчика 15.10 */
.nav-item > .nav-link { display: inline-flex; align-items: center; }
.nav-caret { margin-left: 6px; transition: transform var(--dur) var(--ease); }
.nav-item:hover .nav-caret, .nav-item:focus-within .nav-caret { transform: rotate(180deg); }

/* Кнопка в шапке */
.hd-cta {
    display: none;
    margin-left: 12px;
}
@media (min-width: 1041px) { .hd-cta { display: inline-flex; } }

/* Телефон в шапке */
.hd-phone {
    display: none;
    font-family: var(--f-mono);
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--fg);
    text-decoration: none;
    margin-left: 16px;
}
@media (min-width: 1200px) { .hd-phone { display: block; } }
.hd-phone:hover { color: var(--accent-text); }

/* Бургер */
.burger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    background: none;
    border: none;
    cursor: pointer;
    color: var(--fg);
}
@media (min-width: 1041px) { .burger { display: none; } }

/* Мобильное меню */
.mob-menu {
    position: fixed;
    inset: 0;
    z-index: 100;
    background: var(--bg);
    padding: 20px var(--gap);
    overflow-y: auto;
    transform: translateX(100%);
    visibility: hidden;     /* закрытое меню не ловит фокус и не стоит за краем экрана */
    transition: transform .3s var(--ease), visibility 0s linear .3s;
}
.mob-menu.open { transform: translateX(0); visibility: visible; transition: transform .3s var(--ease); }

.mob-menu-close {
    display: flex;
    justify-content: flex-end;
    margin-bottom: 24px;
}

.mob-menu a {
    display: block;
    padding: 14px 0;
    font-size: 1.0625rem;
    font-weight: 500;
    color: var(--fg);
    text-decoration: none;
    border-bottom: 1px solid var(--line);
}
.mob-menu a:last-child { border-bottom: none; }

.mob-menu .mob-phone {
    display: block;
    margin-top: 24px;
    padding: 14px 0;
    font-family: var(--f-mono);
    font-size: 1.125rem;
    font-weight: 500;
    color: var(--accent-text);
    text-decoration: none;
}

/* ─── Подвал ──────────────────────────────────────────── */
.footer {
    background: var(--dark);
    color: var(--fg-light);
    padding: 56px 0 0;
}

.foot-top {
    display: grid;
    grid-template-columns: 1fr;
    gap: 32px var(--gap);
    padding-bottom: 40px;
}
@media (min-width: 641px) {
    .foot-top { grid-template-columns: 1.3fr 1fr 1fr; }
}
@media (min-width: 1041px) {
    .foot-top { grid-template-columns: 1.4fr 1fr 1fr 1fr 1fr; }
}

.foot-brand { }
.foot-brand .foot-logo {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 12px;
    text-decoration: none;
    color: var(--fg-light);
}
.foot-brand .foot-logo svg { width: 36px; height: 36px; }
.foot-brand .foot-logo-text { font-size: 1.125rem; font-weight: 700; }

.foot-brand .foot-desc {
    font-size: 0.875rem;
    line-height: 1.6;
    color: var(--dark-muted);
    margin-bottom: 16px;
    max-width: 32ch;
}
.foot-brand .foot-phone {
    display: block;
    font-family: var(--f-mono);
    font-size: 1rem;
    font-weight: 500;
    color: var(--fg-light);
    text-decoration: none;
    margin-bottom: 6px;
}
.foot-brand .foot-phone:hover { color: var(--accent-text); }
.foot-brand .foot-email {
    font-size: 0.875rem;
    color: var(--dark-muted);
    text-decoration: none;
}
.foot-brand .foot-email:hover { color: var(--fg-light); }

.foot-col { }
.foot-col-title {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--dark-muted);
    margin-bottom: 12px;
    min-height: 2.4em; /* резерв для переноса */
}
.foot-col a {
    display: block;
    padding: 5px 0;
    font-size: 0.875rem;
    color: rgba(255,255,255,.75);
    text-decoration: none;
    transition: color var(--dur) var(--ease);
    min-height: 40px; /* тач-цель */
    display: flex;
    align-items: center;
}
.foot-col a:hover { color: var(--fg-light); }

/* Гео-полоса */
.foot-geo {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    padding: 20px 0;
    border-top: 1px solid rgba(255,255,255,.08);
}
.foot-geo a {
    font-size: 0.8125rem;
    color: rgba(255,255,255,.55);
    text-decoration: none;
    padding: 4px 12px;
    border: 1px solid rgba(255,255,255,.1);
    border-radius: 100px;
    transition: all var(--dur) var(--ease);
}
.foot-geo a:hover {
    border-color: rgba(255,255,255,.3);
    color: var(--fg-light);
}

/* Призыв к отзывам */
.foot-cta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px 24px;
    padding: 20px 0;
    border-top: 1px solid rgba(255,255,255,.08);
}
.foot-cta span {
    font-size: 0.9375rem;
    color: rgba(255,255,255,.7);
}
.foot-cta .btn {
    white-space: nowrap;
}

/* Нижняя строка */
.foot-bottom {
    border-top: 1px solid rgba(255,255,255,.08);
    padding: 20px 0;
    font-size: 0.75rem;
    color: rgba(255,255,255,.62);
    display: flex;
    flex-wrap: wrap;
    gap: 8px 24px;
    align-items: center;
}
.foot-bottom a {
    color: rgba(255,255,255,.62);
    text-decoration: none;
}
.foot-bottom a:hover { color: rgba(255,255,255,.7); }

.foot-disclaimer {
    font-size: 0.6875rem;
    color: rgba(255,255,255,.62);
    padding: 12px 0 20px;
    line-height: 1.5;
}

/* ─── Плавающая кнопка ────────────────────────────────── */
.fab {
    position: fixed;
    bottom: 20px;
    right: 20px;
    z-index: 50;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: var(--accent);
    color: var(--on-accent);
    border: none;
    cursor: pointer;
    box-shadow: 0 4px 16px rgba(162,75,42,.3);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all var(--dur) var(--ease);
    opacity: 0;
    transform: translateY(20px);
}
.fab.visible { opacity: 1; transform: translateY(0); }
.fab:hover { background: var(--accent-hover); box-shadow: 0 6px 24px rgba(162,75,42,.4); }

/* ─── Анимация появления ──────────────────────────────── */
.reveal { opacity: 0; transform: translateY(20px); transition: opacity .5s var(--ease), transform .5s var(--ease); }
.reveal.in { opacity: 1; transform: translateY(0); }

/* Без JS — всё видимо */
.no-js .reveal { opacity: 1; transform: none; }

/* Принудительный показ через 2 с */
@keyframes force-show { to { opacity: 1; transform: none; } }

/* ─── Страницы услуг (money) ──────────────────────────── */
.service-hero {
    padding: 0 0 var(--gap-section);
}
.service-intro {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--gap);
    align-items: start;
}
@media (min-width: 641px) {
    .service-intro { grid-template-columns: 1fr 1fr; }
}

.service-prices {
    background: var(--panel);
    border-radius: 12px;
    padding: 24px;
}
.service-prices dt {
    font-size: 0.875rem;
    color: var(--muted);
    margin-bottom: 4px;
}
.service-prices dd {
    font-family: var(--f-mono);
    font-weight: 500;
    font-size: 1.25rem;
    margin-bottom: 16px;
}
.service-prices dd:last-child { margin-bottom: 0; }

/* ─── Каталог проектов ────────────────────────────────── */
.project-card {
    background: var(--white);
    border: 1px solid var(--line);
    border-radius: 12px;
    overflow: hidden;
    text-decoration: none;
    color: inherit;
    transition: all var(--dur) var(--ease);
}
.project-card:hover {
    border-color: var(--accent);
    box-shadow: 0 4px 20px rgba(35,31,28,.06);
    color: inherit;
}

.project-card { display: block; }
.project-card img.pc-img { display: block; width: 100%; height: auto; object-fit: cover; }
.project-card .pc-img {
    aspect-ratio: 4/3;
    background: var(--panel);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--muted);
    font-size: 0.8125rem;
}

.project-card .pc-body { padding: 16px 20px 20px; }
.project-card .pc-name {
    font-size: 1rem;
    font-weight: 600;
    margin-bottom: 4px;
}
.project-card .pc-meta {
    font-size: 0.8125rem;
    color: var(--muted);
    margin-bottom: 8px;
}
.project-card .pc-price {
    font-family: var(--f-mono);
    font-weight: 500;
    font-size: 0.9375rem;
}

/* Фильтры каталога */
.filters {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 32px;
}
.filter-btn {
    padding: 8px 16px;
    font-family: var(--f-body);
    font-size: 0.875rem;
    font-weight: 500;
    border: 1px solid var(--line);
    border-radius: 100px;
    background: transparent;
    color: var(--fg);
    cursor: pointer;
    transition: all var(--dur) var(--ease);
}
.filter-btn:hover { border-color: var(--fg); }
.filter-btn.active {
    background: var(--fg);
    border-color: var(--fg);
    color: var(--bg);
}

/* ─── Гео-страницы ────────────────────────────────────── */
.geo-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}
.geo-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 18px;
    background: var(--white);
    border: 1px solid var(--line);
    border-radius: 100px;
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--fg);
    text-decoration: none;
    transition: all var(--dur) var(--ease);
}
.geo-chip:hover { border-color: var(--accent); color: var(--accent-text); }
.geo-chip.active {
    background: var(--accent);
    border-color: var(--accent);
    color: var(--on-accent);
}

/* ─── Утилиты ─────────────────────────────────────────── */
.text-center { text-align: center; }
.text-muted { color: var(--muted); }
.mt-xs { margin-top: 8px; }
.mt-sm { margin-top: 16px; }
.mt-md { margin-top: 24px; }
.mt-lg { margin-top: 40px; }
.mb-0 { margin-bottom: 0; }
.gap-sm { gap: 12px; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; }
.visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; }

.mb-sm { margin-bottom: 16px; }

/* ─── Оформление, вынесенное из разметки страниц (05.10.2026) ───
   Перенесено из style="" один в один; !important держит прежний приоритет инлайна. */
.is-0617d8 { font-size:1.5rem !important; color:var(--accent-text) !important; margin-bottom:8px !important; }
.is-1e035f { font-size:0.8125rem !important; color:var(--muted) !important; }
.is-40c7c8 { font-size:0.9375rem !important; color:var(--muted) !important; line-height:1.6 !important; }
.is-4a2278 { color:var(--muted) !important; font-size:0.9375rem !important; line-height:1.6 !important; }
.is-52f887 { color:var(--fg-light) !important; margin-bottom:16px !important; }
.is-62ca75 { display:flex !important; align-items:center !important; gap:8px !important; font-size:0.9375rem !important; color:var(--dark-muted) !important; }
.is-6f34e9 { display:flex !important; align-items:flex-start !important; gap:8px !important; font-size:0.9375rem !important; color:var(--fg) !important; }
.is-739855 { color:var(--fg) !important; margin-bottom:6px !important; }
.is-879081 { font-size:0.875rem !important; color:var(--muted) !important; margin-top:4px !important; }
.is-9667cb { font-size:0.9375rem !important; color:var(--muted) !important; line-height:1.6 !important; margin-bottom:12px !important; }
.is-98072b { position:absolute !important; top:-1px !important; left:50% !important; transform:translateX(-50%) !important; background:var(--accent) !important; color:var(--on-accent) !important; font-size:0.6875rem !important; font-weight:600 !important; text-transform:uppercase !important; letter-spacing:0.05em !important; padding:4px 16px !important; border-radius:0 0 8px 8px !important; }
.is-a38c06 { font-size:0.875rem !important; color:var(--muted) !important; line-height:1.5 !important; }
.is-a96dc4 { margin-top:12px !important; font-size:0.8125rem !important; color:var(--dark-muted) !important; }
.is-c3f7fe { color:var(--muted) !important; font-size:0.9375rem !important; line-height:1.6 !important; margin-bottom:16px !important; }
.is-d2e582 { color:var(--muted) !important; font-size:0.875rem !important; line-height:1.6 !important; }
.is-d70428 { font-size:0.8125rem !important; color:rgba(255,255,255,.62) !important; padding:4px 0 !important; margin-right:4px !important; }
.is-e14c04 { max-width:72ch !important; color:var(--muted) !important; font-size:0.9375rem !important; line-height:1.7 !important; }
.is-e19e3f { color:var(--fg) !important; margin-bottom:8px !important; }
.is-e1c5f0 { color:var(--dark-muted) !important; margin-bottom:24px !important; }
.is-e20df6 { color:var(--fg) !important; margin-bottom:16px !important; }
.is-ee47d4 { display:flex !important; align-items:center !important; gap:6px !important; font-size:0.875rem !important; color:var(--muted) !important; }
.is-f780f2 { color:var(--accent-text) !important; }

/* ─── Блок отзывов ────────────────────────────────────── */
.otzyvy-block { padding-bottom: 0; }
.otzyvy-empty { max-width: 720px; border-radius: 12px; padding: 32px 24px; }
.otzyvy-lead { font-size: 1.0625rem; line-height: 1.7; color: var(--fg); }
.otzyvy-note { font-size: 0.9375rem; line-height: 1.6; color: var(--muted); }
.otzyv blockquote { font-size: 0.9375rem; line-height: 1.7; color: var(--fg); }
.otzyv figcaption { margin-top: 16px; font-size: 0.875rem; color: var(--muted); }
.otzyv figcaption b { color: var(--fg); font-weight: 600; }
.otzyv figcaption span { display: block; }

/* ─── Галерея объектов ────────────────────────────────── */
.gallery { gap: 24px var(--gap); }

/* ─── Схемы: рисунок с номерами, подписи — списком под ним ─ */
.shema { margin: 40px 0 0; max-width: 880px; padding: 24px; background: var(--panel); border-radius: 12px; color: var(--fg); }
.shema-svg { width: 100%; max-width: 420px; height: auto; display: block; margin: 0 auto; }
/* Под тремя карточками цен блок стоит по центру ряда, а не прижат влево (замечание 05.10.2026). */
.shema--c { margin-inline: auto; }
.shema-legend { margin: 16px 0 0 1.25em; display: flex; flex-direction: column; gap: 8px; font-size: 0.9375rem; line-height: 1.5; color: var(--fg); }
.shema-legend li::marker { font-family: var(--f-mono); font-weight: 600; color: var(--accent-text); }
.dark .shema { background: var(--dark-panel); }
.sx-wood   { fill: #D9A86C; stroke: #8B5E34; stroke-width: 2; }
.sx-ring   { fill: none; stroke: #8B5E34; stroke-width: 1.5; opacity: .55; }
.sx-glue   { fill: none; stroke: #8B5E34; stroke-width: 2; }
.sx-core   { fill: #8B5E34; }
.sx-plaster { fill: #EDE6DA; stroke: #6A6258; stroke-width: 1.5; }
.sx-brick  { fill: #B9653F; }
.sx-joint  { fill: none; stroke: #EDE6DA; stroke-width: 3; }
.sx-insul  { fill: #F2D98A; stroke: #A08A3E; stroke-width: 1.5; }
.sx-wave   { fill: none; stroke: #A08A3E; stroke-width: 2; }
.sx-facing { fill: #8B3F22; }
.sx-joint-l { fill: none; stroke: #F3EEE6; stroke-width: 3; }
.sx-k1  { fill: #9C948A; }
.sx-k2  { fill: #A24B2A; }
.sx-k2w { fill: #3C3631; }
.sx-k3  { fill: none; stroke: #D98B6A; stroke-width: 4; stroke-linecap: round; }
.sx-lead { fill: none; stroke: #6A6258; stroke-width: 1.5; stroke-dasharray: 4 4; }
.sx-num circle, .sx-num { fill: var(--accent); }
.sx-num-t text { fill: #FFFFFF; font-family: var(--f-mono); font-size: 27px; font-weight: 600; text-anchor: middle; }
.dark .sx-lead { stroke: var(--dark-muted); }

/* ─── Карточка проекта: планировки, фасады, характеристики ─── */
.photo.plan img { aspect-ratio: auto; object-fit: contain; background: var(--white); border: 1px solid var(--line); }
.specs { display: grid; grid-template-columns: 1fr; gap: 0; max-width: 720px; }
@media (min-width: 641px) { .specs { grid-template-columns: 1fr 1fr; column-gap: 32px; } }
.specs > div { display: flex; justify-content: space-between; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--line); }
.specs dt { color: var(--muted); font-size: 0.875rem; }
.specs dd { margin: 0; font-weight: 500; text-align: right; }

/* ─── Построенные дома: главное фото + миниатюры ─── */
.house-main { display: block; }
.house-thumbs {
    display: grid; grid-auto-flow: column; grid-auto-columns: calc((100% - 16px) / 3);
    gap: 8px; margin-top: 8px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: thin;
}
.house-thumbs > a { scroll-snap-align: start; }
.house-thumbs img { border-radius: 8px; }
.house-title { margin-top: 12px; }
.project-card .pc-garage { color: var(--accent-text); }
