/* =============================================================================
   advokat-sotnikov.ru — шаблон cassiopeia_adv (дочерний Cassiopeia, Joomla 5), media/css/user.css
   Дизайн: концепция 1 «Современная классика» + доработки судей (graft из концепций 2 и 3):
   чернильно-синяя шапка с логотипом владельца, тёплый «бумажный» фон, бордо и золото эмблемы,
   заголовки — системная антиква, текст — системный гротеск, интерфейс — Montserrat VF (OFL, локально),
   иконки — Font Awesome 6 из ядра Joomla. Ни одного правила из JA University / T3. GPL-2.0-or-later.
   Разметка — ядро Joomla 5.4.9 / Cassiopeia (index.php не переопределяется); новые блоки — с префиксом adv-.
   ============================================================================= */

/* ---------- 0. Шрифт интерфейса: Montserrat VF (SIL OFL 1.1, файл лицензии — ../fonts/OFL-Montserrat.txt) ---------- */
@font-face {
  font-family: "Montserrat";
  src: url("../fonts/Montserrat-VF.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

/* ---------- 1. Токены ---------- */
:root {
  /* палитра: чернильно-синий + бордо и золото эмблемы с логотипа (контраст посчитан для WCAG AA) */
  --adv-ink: #0e1a2b;          /* шапка, подвал, заголовки; 15.9:1 на paper */
  --adv-ink-2: #15243a;
  --adv-ink-3: #0a1422;        /* подвал */
  --adv-ink-line: #2a3b54;     /* тонкие линии на тёмном */
  --adv-paper: #f7f4ee;        /* тёплый фон страницы */
  --adv-paper-2: #efe9df;
  --adv-surface: #ffffff;
  --adv-text: #1c2330;         /* 14.4:1 на paper */
  --adv-muted: #5b6472;        /* 5.5:1 на paper, 6.0:1 на белом */
  --adv-rule: #ddd4c4;
  --adv-rule-strong: #c9bda8;
  --adv-accent: #8e1c17;       /* бордо эмблемы; 8.2:1 на paper, белый на нём 9.0:1 */
  --adv-accent-hover: #6e140f;
  --adv-accent-tint: #f6ebe8;
  --adv-gold: #c5b58f;         /* золото эмблемы — только на тёмном, 8.6:1 на ink */
  --adv-gold-text: #7a5f2e;    /* «золото» для текста на светлом, 5.5:1 */
  --adv-on-ink: #ece7dd;       /* 13.8:1 на ink */
  --adv-on-ink-muted: #aab3c2; /* 8.3:1 на ink */
  --adv-input-border: #8a93a3; /* 3.1:1 (WCAG 1.4.11) */

  --adv-font-serif: Georgia, "Times New Roman", "Noto Serif", "PT Serif", "DejaVu Serif", serif;
  --adv-font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif;
  --adv-font-ui: "Montserrat", var(--adv-font-sans);

  --adv-container: 1200px;
  --adv-gutter: clamp(16px, 4vw, 40px);
  --adv-measure: 36em;          /* строка текста ~65–72 знака */
  --adv-aside: 320px;
  --adv-aside-gap: 64px;
  --adv-band-pad: clamp(56px, 8vw, 112px);
  --adv-radius: 2px;
  --adv-brand-h: 88px;          /* верхняя строка шапки (≥992) — уезжает при прокрутке */
  --adv-nav-h: 56px;            /* строка меню (≥992) — остаётся на экране */
  --adv-head-m: 64px;           /* шапка на телефоне */
  --adv-shadow: 0 1px 2px rgba(14, 26, 43, .06), 0 12px 32px rgba(14, 26, 43, .10);
  --adv-ease: cubic-bezier(.2, .7, .2, 1);

  /* переменные Cassiopeia / Bootstrap — чтобы элементы ядра были в той же гамме */
  --cassiopeia-color-primary: var(--adv-ink);
  --cassiopeia-color-link: var(--adv-accent);
  --cassiopeia-color-hover: var(--adv-accent-hover);
  --cassiopeia-font-family-body: var(--adv-font-sans);
  --cassiopeia-font-family-headings: var(--adv-font-serif);
  --cassiopeia-font-weight-headings: 400;
  --body-bg: var(--adv-paper);
  --body-color: var(--adv-text);
  --link-color: var(--adv-accent);
  --link-color-rgb: 142, 28, 23;
  --link-hover-color: var(--adv-accent-hover);
  --link-hover-color-rgb: 110, 20, 15;

  /* капча ALTCHA (plg_captcha_altcha 2.1.3): внешний вид — её переменными */
  --altcha-color-base: #fff;
  --altcha-color-border: var(--adv-input-border);
  --altcha-color-border-focus: var(--adv-ink);
  --altcha-color-text: var(--adv-text);
  --altcha-color-active: var(--adv-accent);
  --altcha-color-error-text: var(--adv-accent);
  --altcha-color-footer-bg: transparent;
  --altcha-border-radius: 2px;
  --altcha-max-width: 320px;
}

/* ---------- 2. База и типографика ---------- */
html { scroll-padding-top: calc(var(--adv-head-m) + 16px); -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--adv-paper);
  color: var(--adv-text);
  font-family: var(--adv-font-sans);
  font-size: 1.0625rem;
  line-height: 1.65;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}
@media (min-width: 768px) { body { font-size: 1.125rem; } }

h1, h2, h3, h4, .h1, .h2, .h3 {
  font-family: var(--adv-font-serif);
  font-weight: 400;
  color: var(--adv-ink);
  line-height: 1.18;
  letter-spacing: -.005em;
  margin: 0 0 .6em;
  text-wrap: balance;
}
h1, .h1 { font-size: clamp(2rem, 1.45rem + 2.2vw, 3rem); }
h2, .h2 { font-size: clamp(1.625rem, 1.35rem + 1.1vw, 2.25rem); }
h3, .h3 { font-size: clamp(1.25rem, 1.15rem + .4vw, 1.4375rem); }
h4 { font-size: 1.125rem; }
p { margin: 0 0 1em; }
a { color: var(--adv-accent); text-decoration-thickness: 1px; text-underline-offset: .2em; }
a:hover { color: var(--adv-accent-hover); }
strong, b { font-weight: 700; }
img { max-width: 100%; height: auto; }
:focus-visible { outline: 2px solid var(--adv-accent); outline-offset: 3px; border-radius: 1px; }
.container-header :focus-visible, .adv-band--ink :focus-visible, .container-footer :focus-visible,
.adv-card--feature :focus-visible { outline-color: var(--adv-gold); }
::selection { background: var(--adv-accent); color: #fff; }
.adv-nowrap { white-space: nowrap; }

/* «Перейти к содержанию» (ставит user.js; класс ядра visually-hidden-focusable) */
.adv-skip:focus, .adv-skip:focus-visible {
  position: fixed; left: 16px; top: 12px; z-index: 2000;
  padding: 10px 16px; background: var(--adv-surface); color: var(--adv-ink);
  font-family: var(--adv-font-ui); font-weight: 600; font-size: .9375rem; text-decoration: none;
  box-shadow: var(--adv-shadow);
}

/* надпись-«капитель» над заголовками */
.adv-eyebrow {
  display: flex; align-items: center; gap: .75rem;
  margin: 0 0 1rem;
  font-family: var(--adv-font-ui); font-size: .75rem; font-weight: 600;
  letter-spacing: .16em; line-height: 1.4; text-transform: uppercase;
  color: var(--adv-accent);
}
.adv-eyebrow::before { content: ""; flex: 0 0 32px; height: 1px; background: currentColor; }

/* иконки — Font Awesome 6 Free из ядра Joomla (joomla-fontawesome) */
.adv-ico::before {
  display: inline-block; width: 1.25em; text-align: center;
  font-family: "Font Awesome 6 Free"; font-weight: 900; font-style: normal; line-height: 1;
  -webkit-font-smoothing: antialiased;
}
.adv-ico--phone::before { content: "\f095"; }
.adv-ico--mail::before { content: "\f0e0"; }
.adv-ico--pin::before { content: "\f3c5"; }
.adv-ico--arrow::before { content: "\f061"; }
.adv-ico--up::before { content: "\f062"; }
.adv-ico--scale::before { content: "\f24e"; }

/* ---------- 3. Кнопки (adv-btn и .btn-primary ядра) ---------- */
.adv-btn, .btn.btn-primary {
  display: inline-flex; align-items: center; justify-content: center; gap: .6em;
  min-height: 48px; padding: 0 1.5rem;
  font-family: var(--adv-font-ui); font-size: .9375rem; font-weight: 600; letter-spacing: .01em; line-height: 1.2;
  text-decoration: none; white-space: nowrap; cursor: pointer;
  border: 1px solid transparent; border-radius: var(--adv-radius);
  transition: background-color .2s var(--adv-ease), color .2s var(--adv-ease), border-color .2s var(--adv-ease);
}
.adv-btn--accent, .btn.btn-primary { background: var(--adv-accent); border-color: var(--adv-accent); color: #fff; }
.adv-btn--accent:hover, .btn.btn-primary:hover, .btn.btn-primary:focus { background: var(--adv-accent-hover); border-color: var(--adv-accent-hover); color: #fff; }
/* фокус кнопок ядра (.btn-primary: «Отправить», «Поиск») — рамка в палитре вместо кольца Bootstrap; на тёмном — золото */
.btn.btn-primary:focus-visible { outline: 2px solid var(--adv-accent); outline-offset: 3px; box-shadow: none; }
.container-header .btn.btn-primary:focus-visible, .container-footer .btn.btn-primary:focus-visible,
.adv-band--ink .btn.btn-primary:focus-visible { outline-color: var(--adv-gold); }
.adv-btn--outline { border-color: var(--adv-ink); color: var(--adv-ink); background: transparent; }
.adv-btn--outline:hover { background: var(--adv-ink); color: #fff; }
.adv-btn--gold { border-color: var(--adv-gold); color: var(--adv-gold); background: transparent; }
.adv-btn--gold:hover { background: var(--adv-gold); color: var(--adv-ink); }
.adv-btn .adv-ico::before { width: auto; }
@media (max-width: 419.98px) {   /* узкие телефоны: длинная подпись кнопки (номер, e-mail) переносится, а не обрезается */
  .adv-btn { max-width: 100%; padding-inline: 1rem; white-space: normal; text-align: center; }
}

.adv-link-arrow {
  display: inline-flex; align-items: center; gap: .55em; min-height: 32px;
  font-family: var(--adv-font-ui); font-size: .8125rem; font-weight: 600;
  letter-spacing: .12em; text-transform: uppercase; text-decoration: none; color: var(--adv-accent);
}
.adv-link-arrow::after { content: "\f061"; font-family: "Font Awesome 6 Free"; font-weight: 900; transition: transform .2s var(--adv-ease); }
.adv-link-arrow:hover::after { transform: translateX(4px); }

/* ---------- 4. Шапка: .container-header (Cassiopeia) ----------
   телефон: одна строка 64 px (логотип · звонок · бургер), приклеена;
   ≥992: две строки — [логотип | адрес, e-mail] 88 px и [меню | телефон] 56 px;
   при прокрутке верхняя строка уезжает, строка меню остаётся (sticky с top: -88px). */
.container-header {
  position: sticky !important;   /* Cassiopeia ниже 992 px ставит relative !important — шапка с кнопкой звонка нужна и на телефоне */
  top: 0; z-index: 1030;
  display: grid;
  grid-template-columns: [full-start] minmax(var(--adv-gutter), 1fr) [main-start] minmax(0, var(--adv-container)) [main-end] minmax(var(--adv-gutter), 1fr) [full-end];
  align-items: center;
  min-height: var(--adv-head-m);
  background: var(--adv-ink); background-image: none; box-shadow: none;
  color: var(--adv-on-ink);
  font-family: var(--adv-font-ui);
}
.container-header > .grid-child { grid-column: main-start / main-end; grid-row: 1; width: auto; max-width: none; margin: 0; padding: 0; }
.container-header > .grid-child:not(.container-below-top):not(.container-nav) { justify-self: start; }   /* логотип */
.container-header .navbar-brand { display: block; margin: 0; padding: 10px 0; line-height: 0; font-size: 1rem; }
.container-header .brand-logo { display: inline-block; }
.container-header .brand-logo img { display: block; width: auto; height: 44px; }
.container-header .container-below-top { display: none; }
.container-header > .container-nav { justify-self: end; display: flex; flex-wrap: nowrap; align-items: center; gap: 8px; margin: 0; padding: 0; }
.container-header .navbar { position: static; padding: 0; margin: 0; }
.container-header .container-search { order: -1; display: flex; align-items: center; margin: 0; }

/* кнопка «позвонить» в шапке (позиция search): на телефоне — квадрат 44×44 с иконкой */
.adv-header-call { min-height: 44px; width: 44px; padding: 0; }
.adv-header-call .adv-header-call__text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

/* бургер (navbar-toggler + span.icon-menu ядра) */
.container-header .navbar-toggler {
  display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; padding: 0;
  border: 1px solid var(--adv-ink-line); border-radius: var(--adv-radius);
  background: transparent; color: var(--adv-on-ink); cursor: pointer;
}
.container-header .navbar-toggler:hover { border-color: var(--adv-gold); color: #fff; }
.container-header .navbar-toggler:focus { box-shadow: none; }
/* фокус с клавиатуры: Bootstrap убирает outline у .navbar-toggler — возвращаем золотую рамку (8.6:1 на ink) */
.container-header .navbar-toggler:focus-visible { outline: 2px solid var(--adv-gold); outline-offset: 3px; box-shadow: none; }

/* фокус в меню: ядро (metismenu) рисует на :focus пунктир 1px #ced4da — на белой панели его не видно (~1,4:1).
   Вместо него — сплошная рамка 2px: золото на тёмном, бордо в белом выпадающем списке (≥992, см. раздел ниже). */
.container-header .metismenu.mod-menu .metismenu-item > a:focus,
.container-header .metismenu.mod-menu .metismenu-item > button:focus { outline: none; }
.container-header .metismenu.mod-menu .metismenu-item > a:focus-visible,
.container-header .metismenu.mod-menu .metismenu-item > button:focus-visible { outline: 2px solid var(--adv-gold); outline-offset: 2px; }
.container-header .navbar-toggler .icon-menu::before {
  content: "\f0c9"; font-family: "Font Awesome 6 Free"; font-weight: 900; font-size: 1.125rem; line-height: 1;
}
.container-header .navbar-toggler[aria-expanded="true"] .icon-menu::before { content: "\f00d"; }

/* стрелка подменю (button.mm-toggler ядра) — шеврон FA вместо треугольника и подчёркивания Cassiopeia */
.container-header .metismenu.mod-menu .mm-toggler::after { content: none; display: none; }
.container-header .metismenu.mod-menu .metismenu-item > .mm-toggler::before {
  content: "\f078"; position: static; display: inline-block; width: auto; height: auto; margin: 0;
  opacity: 1; background: none;
  font-family: "Font Awesome 6 Free"; font-weight: 900; font-size: .75rem; line-height: 1;
  transition: transform .2s var(--adv-ease);
}
.container-header .metismenu.mod-menu .metismenu-item > .mm-toggler[aria-expanded="true"]::before { transform: rotate(180deg); }

/* меню на телефоне и планшете: тёмная панель под шапкой */
@media (max-width: 991.98px) {
  .container-header .navbar-collapse {
    position: absolute; top: 100%; left: 0; right: 0;
    max-height: calc(100dvh - var(--adv-head-m)); overflow-y: auto; overscroll-behavior: contain;
    padding: 8px var(--adv-gutter) 28px;
    background: var(--adv-ink); border-top: 1px solid var(--adv-ink-line);
    box-shadow: 0 24px 40px rgba(0, 0, 0, .28);
  }
  .container-header .metismenu.mod-menu { display: block; margin: 0; padding: 0; list-style: none; }
  .container-header .metismenu.mod-menu .metismenu-item {
    display: flex; flex-wrap: wrap; align-items: center; padding: 0; font-size: inherit; line-height: 1.35;
    border-bottom: 1px solid var(--adv-ink-line);
  }
  .container-header .metismenu.mod-menu .metismenu-item > a {
    flex: 1 1 0; min-height: 52px; display: flex; align-items: center; padding: 8px 0;
    color: var(--adv-on-ink); font-size: 1.0625rem; font-weight: 500;
    white-space: normal; overflow: visible; text-decoration: none;
  }
  .container-header .metismenu.mod-menu .metismenu-item.active > a,
  .container-header .metismenu.mod-menu .metismenu-item > a:hover { color: #fff; text-decoration: none; }
  .container-header .metismenu.mod-menu .metismenu-item.level-1.active > a::before {
    content: ""; width: 3px; align-self: stretch; margin: 6px 12px 6px 0; background: var(--adv-gold);
  }
  .container-header .metismenu.mod-menu .mm-toggler {
    justify-content: center; width: 44px; height: 44px; flex: 0 0 44px;
    border: 1px solid var(--adv-ink-line); border-radius: var(--adv-radius); color: var(--adv-on-ink);
  }
  .container-header .metismenu.mod-menu .mm-collapse {
    position: static; flex-basis: 100%; margin: 0 0 14px; padding: 0 0 0 16px; list-style: none;
    background: transparent; box-shadow: none; border-left: 1px solid var(--adv-gold);
  }
  .container-header .metismenu.mod-menu .mm-collapse .metismenu-item { border: 0; }
  .container-header .metismenu.mod-menu .mm-collapse .metismenu-item > a { min-height: 44px; font-size: 1rem; color: var(--adv-on-ink-muted); }
  .container-header .metismenu.mod-menu .mm-collapse .metismenu-item > a:hover,
  .container-header .metismenu.mod-menu .mm-collapse .metismenu-item.current > a { color: #fff; }
}

@media (min-width: 992px) {
  html { scroll-padding-top: calc(var(--adv-nav-h) + 24px); }
  .container-header {
    top: calc(-1 * var(--adv-brand-h));
    grid-template-rows: var(--adv-brand-h) var(--adv-nav-h);
  }
  .container-header .navbar-brand { padding: 16px 0; }
  .container-header .brand-logo img { height: 56px; }
  .container-header .container-below-top { display: block; grid-row: 1; justify-self: end; }
  .container-header > .container-nav {
    grid-row: 2; grid-column: full-start / full-end; justify-self: stretch; align-self: stretch;
    justify-content: space-between; align-items: stretch; gap: 24px;
    padding-inline: max(var(--adv-gutter), calc((100% - var(--adv-container)) / 2));
    border-top: 1px solid var(--adv-ink-line);
  }
  .container-header .container-search { order: 0; }
  .container-header .navbar-toggler { display: none; }
  .container-header .navbar-collapse { display: flex; align-items: stretch; height: 100%; }
  .container-header .metismenu.mod-menu { display: flex; flex: 0 1 auto; align-items: stretch; margin: 0 0 0 -14px; padding: 0; list-style: none; }
  .container-header .metismenu.mod-menu .metismenu-item.level-1 { position: relative; display: flex; align-items: center; padding: 0; font-size: inherit; }
  .container-header .metismenu.mod-menu .metismenu-item.level-1 > a {
    position: relative; display: flex; align-items: center; height: var(--adv-nav-h); padding: 0 14px;
    color: var(--adv-on-ink); font-size: .9375rem; font-weight: 500; white-space: nowrap; overflow: visible; text-decoration: none;
  }
  .container-header .metismenu.mod-menu .metismenu-item.level-1.parent > a { padding-right: 4px; }
  .container-header .metismenu.mod-menu .metismenu-item.level-1 > a::after {
    content: ""; display: block; position: absolute; left: 14px; right: 14px; bottom: 0; height: 2px; margin: 0;
    opacity: 1; background: var(--adv-gold); transform: scaleX(0); transform-origin: left; transition: transform .25s var(--adv-ease);
  }
  .container-header .metismenu.mod-menu .metismenu-item.level-1.parent > a::after { right: 4px; }
  .container-header .metismenu.mod-menu .metismenu-item.level-1 > a:hover,
  .container-header .metismenu.mod-menu .metismenu-item.level-1.active > a { color: #fff; text-decoration: none; }
  .container-header .metismenu.mod-menu .metismenu-item.level-1 > a:hover::after,
  .container-header .metismenu.mod-menu .metismenu-item.level-1.active > a::after { transform: scaleX(1); background: var(--adv-gold); left: 14px; }
  .container-header .metismenu.mod-menu .metismenu-item.level-1.parent > a:hover::after,
  .container-header .metismenu.mod-menu .metismenu-item.level-1.parent.active > a::after { right: 4px; }
  .container-header .metismenu.mod-menu .metismenu-item.level-1 > .mm-toggler {
    display: flex; align-items: center; justify-content: center;
    width: 28px; height: var(--adv-nav-h); padding: 0; margin-right: 6px;
    border: 0; background: transparent; color: var(--adv-on-ink-muted); cursor: pointer;
  }
  .container-header .metismenu.mod-menu .metismenu-item.parent:hover > .mm-toggler { color: #fff; }
  /* выпадающий список «Виды услуг»: по наведению, с клавиатуры (:focus-within) и по кнопке-стрелке */
  .container-header .metismenu.mod-menu .metismenu-item.level-1 > .mm-collapse {
    position: absolute; top: 100%; left: 0; z-index: 10;
    width: max-content; min-width: 280px; max-width: 360px;
    margin: 0; padding: 8px 0; list-style: none;
    background: var(--adv-surface); border-top: 2px solid var(--adv-accent); box-shadow: var(--adv-shadow);
  }
  .container-header .metismenu.mod-menu .metismenu-item.parent:hover > .mm-collapse,
  .container-header .metismenu.mod-menu .metismenu-item.parent:focus-within > .mm-collapse { display: block; }
  .container-header .metismenu.mod-menu .mm-collapse .metismenu-item { display: block; padding: 0; font-size: inherit; }
  .container-header .metismenu.mod-menu .mm-collapse .metismenu-item > a {
    display: block; padding: 11px 22px; color: var(--adv-text);
    font-size: .9375rem; font-weight: 500; line-height: 1.35; text-decoration: none; white-space: normal; overflow: visible;
  }
  .container-header .metismenu.mod-menu .mm-collapse .metismenu-item > a:hover,
  .container-header .metismenu.mod-menu .mm-collapse .metismenu-item.current > a { background: var(--adv-paper); color: var(--adv-accent); text-decoration: none; }
  /* белый выпадающий список: рамка фокуса бордо (8.9:1 на белом), внутри пункта — не выходит за край панели */
  .container-header .metismenu.mod-menu .mm-collapse .metismenu-item > a:focus-visible { outline-color: var(--adv-accent); outline-offset: -3px; }
  /* звонок: кнопка с номером */
  .adv-header-call { width: auto; min-height: 40px; padding: 0 1rem; align-self: center; }
  .adv-header-call .adv-header-call__text { position: static; width: auto; height: auto; overflow: visible; clip-path: none; }
}
@media (min-width: 992px) and (max-width: 1199.98px) {
  .container-header .metismenu.mod-menu .metismenu-item.level-1 > a { padding: 0 10px; font-size: .875rem; }
  .container-header .metismenu.mod-menu .metismenu-item.level-1 > a::after,
  .container-header .metismenu.mod-menu .metismenu-item.level-1 > a:hover::after,
  .container-header .metismenu.mod-menu .metismenu-item.level-1.active > a::after { left: 10px; right: 10px; }
  .container-header .metismenu.mod-menu { margin-left: -10px; }
  .adv-header-call { width: 40px; padding: 0; }
  .adv-header-call .adv-header-call__text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
}

/* верхняя строка (позиция below-top): адрес и e-mail */
.adv-topline { margin: 0; padding: 0; list-style: none; display: flex; gap: 28px; font-size: .8125rem; color: var(--adv-on-ink-muted); }
.adv-topline li { display: flex; align-items: center; gap: .5em; }
.adv-topline .adv-ico::before { color: var(--adv-gold); }
.adv-topline a { color: var(--adv-on-ink); text-decoration: none; }
.adv-topline a:hover { color: #fff; text-decoration: underline; }

/* ---------- 5. Сетка страницы: .site-grid (Cassiopeia) — области grid-template-areas сброшены ---------- */
.site-grid {
  display: grid;
  grid-template-columns: [full-start] minmax(var(--adv-gutter), 1fr) [main-start] minmax(0, var(--adv-container)) [main-end] minmax(var(--adv-gutter), 1fr) [full-end];
  grid-template-areas: none;
  gap: 0;
}
.site-grid > [class^="container-"], .site-grid > [class*=" container-"] {
  grid-area: auto; grid-column: main-start / main-end; width: 100%; max-width: none; min-width: 0; margin: 0; column-gap: 0;
}
.site-grid > .full-width { grid-column: full-start / full-end; }
.site-grid > .container-component { display: block; padding-block: clamp(24px, 4vw, 48px) var(--adv-band-pad); }
.site-grid > .container-component > *, .site-grid > .container-sidebar-right > * { margin-top: 0; margin-bottom: 0; }
.adv-wrap { width: min(100% - 2 * var(--adv-gutter), var(--adv-container)); margin-inline: auto; }

/* полосы на всю ширину (модули bottom-a / bottom-b главной) */
.site-grid > .container-bottom-a, .site-grid > .container-bottom-b { grid-column: full-start / full-end; display: block; }
.site-grid > .container-bottom-a > *, .site-grid > .container-bottom-b > * { margin: 0; }
.adv-band { padding-block: var(--adv-band-pad); }
.adv-band--surface { background: var(--adv-surface); border-block: 1px solid var(--adv-rule); }
.adv-band--ink { background: var(--adv-ink); color: var(--adv-on-ink); }
.adv-band--ink h2, .adv-band--ink h3 { color: #fff; }
.adv-band--ink .adv-eyebrow { color: var(--adv-gold); }
.adv-section__title { margin-bottom: .5em; }
.adv-section__intro { color: var(--adv-muted); max-width: 46ch; }

/* внутренние страницы с правой колонкой (body.has-sidebar-right ставит Cassiopeia) */
@media (min-width: 1100px) {
  body.has-sidebar-right .site-grid {
    grid-template-columns: [full-start] minmax(var(--adv-gutter), 1fr) [main-start] minmax(0, calc(var(--adv-container) - var(--adv-aside) - var(--adv-aside-gap))) [comp-end] var(--adv-aside-gap) [side-start] var(--adv-aside) [main-end] minmax(var(--adv-gutter), 1fr) [full-end];
  }
  body.has-sidebar-right .site-grid > .container-component { grid-column: main-start / comp-end; grid-row: 1; }
  body.has-sidebar-right .site-grid > .container-sidebar-right { grid-column: side-start / main-end; grid-row: 1; }
}

/* ---------- 6. Главная: hero (позиция banner, mod_custom) ----------
   ≥900: текст слева, портрет справа в «паспарту» (кадр 4:5 высотой ~425 px из исходника 960×400 — увеличение ≤1,07);
   <900: имя → реестровые номера → кнопки (звонок виден на первом экране) → строка из ст. 154 → портрет. */
.container-banner { margin: 0; }
.container-banner .mod-custom { margin: 0; }
.adv-hero { background: var(--adv-paper); padding-block: clamp(28px, 5vw, 88px) clamp(48px, 7vw, 112px); overflow-x: clip; }
.adv-hero__inner { width: min(100% - 2 * var(--adv-gutter), var(--adv-container)); margin-inline: auto; display: grid; gap: 36px; }
.adv-hero__text { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; }
.adv-hero__title { font-size: clamp(2.375rem, 1.6rem + 3.2vw, 4.25rem); line-height: 1.04; letter-spacing: -.02em; margin: 0 0 1.5rem; text-wrap: initial; }
.adv-hero__title .adv-eyebrow { margin-bottom: 1.25rem; font-size: .75rem; letter-spacing: .16em; line-height: 1.4; }
.adv-hero__surname { display: block; }
.adv-hero__reg { margin: 0 0 1.75rem; width: 100%; max-width: 620px; }
.adv-hero__reg-caption {
  display: flex; gap: .55rem; align-items: baseline; margin: 0 0 .75rem;
  font-family: var(--adv-font-ui); font-size: .8125rem; font-weight: 500; line-height: 1.45; color: var(--adv-muted);
}
.adv-hero__reg-caption .adv-ico::before { color: var(--adv-gold-text); width: auto; }
.adv-hero__facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 24px; margin: 0; padding: 0; list-style: none; }
.adv-hero__facts li { padding-top: .6rem; border-top: 1px solid var(--adv-rule-strong); }
.adv-hero__num { display: block; font-family: var(--adv-font-serif); font-size: 1.375rem; line-height: 1.2; color: var(--adv-ink); font-variant-numeric: lining-nums; }
.adv-hero__who { display: block; margin-top: .2rem; font-family: var(--adv-font-ui); font-size: .8125rem; font-weight: 500; line-height: 1.4; color: var(--adv-muted); }
.adv-hero__lead {
  margin: 0 0 2rem; max-width: 34ch;
  font-family: var(--adv-font-serif); font-style: italic; font-size: clamp(1.1875rem, 1rem + .7vw, 1.5rem); line-height: 1.45;
  color: var(--adv-text);
  padding-left: 1.25rem; border-left: 1px solid var(--adv-accent);
}
.adv-hero__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 1.25rem; }
.adv-hero__photo { position: relative; margin: 0; isolation: isolate; }
.adv-hero__photo img { position: relative; z-index: 1; display: block; width: 100%; height: 100%; object-fit: cover; background: #eceef0; }
/* тёмный блок со сдвигом и тонкая золотая рамка — «паспарту» портрета */
.adv-hero__photo::before { content: ""; position: absolute; z-index: 0; inset: 12px -10px -12px 10px; background: var(--adv-ink); }
.adv-hero__photo::after { content: ""; position: absolute; z-index: 2; inset: -8px 8px 8px -8px; border: 1px solid var(--adv-gold); pointer-events: none; }

@media (max-width: 899.98px) {
  .adv-hero__actions { order: 3; width: 100%; }
  .adv-hero__actions .adv-btn { flex: 1 1 100%; }
  .adv-hero__lead { order: 4; margin: .75rem 0 1.25rem; }
  .adv-hero__text > .adv-link-arrow { order: 5; }
  /* портрет после текста: кадр 16:10 по ширине экрана (исходник уменьшается, не увеличивается); края отступают от поля */
  .adv-hero__photo { aspect-ratio: 16 / 10; margin: 8px 10px 12px 8px; }
  .adv-hero__photo img { object-position: 92% 0; }
}
@media (min-width: 900px) {
  .adv-hero__inner { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); align-items: center; gap: clamp(40px, 6vw, 96px); }
  .adv-hero__photo { aspect-ratio: 4 / 5; width: 100%; max-width: 340px; justify-self: end; margin-right: 24px; }
  .adv-hero__photo img { object-position: 84% 0; }
  .adv-hero__photo::before { inset: 24px -24px -24px 24px; }
  .adv-hero__photo::after { inset: -14px 14px 14px -14px; }
}

/* Класс страницы adv-home (пункт меню «Главная») Joomla ставит и на страницы без своего пункта меню (поиск, ошибка 404),
   поэтому правила главной привязаны к связке .adv-home.view-article. */
/* ---------- 7. Главная: статья 154 (компонент; заголовок скрыт show_title=0) и подпись раздела (позиция main-top) ---------- */
body.adv-home.view-article .site-grid > .container-component {
  grid-column: full-start / full-end;
  padding: var(--adv-band-pad) max(var(--adv-gutter), calc((100% - var(--adv-container)) / 2));
  background: var(--adv-surface); border-block: 1px solid var(--adv-rule);
}
.adv-intro-label h2.adv-eyebrow { font-family: var(--adv-font-ui); font-size: .75rem; color: var(--adv-accent); margin-bottom: 1.25rem; }
@media (min-width: 992px) {
  body.adv-home.view-article .site-grid > .container-component { display: grid; grid-template-columns: 280px minmax(0, 1fr); column-gap: clamp(48px, 6vw, 96px); align-items: start; }
  body.adv-home.view-article .container-component > #system-message-container { grid-column: 2; grid-row: 1; }
  body.adv-home.view-article .container-component > main { grid-column: 2; grid-row: 2; }
  body.adv-home.view-article .container-component > .adv-intro-label { grid-column: 1; grid-row: 1 / span 2; position: sticky; top: calc(var(--adv-nav-h) + 32px); }
  .adv-intro-label::after {
    content: "§"; display: block; margin-top: 1.5rem;
    font-family: var(--adv-font-serif); font-size: 7.5rem; line-height: 1; color: var(--adv-rule);
  }
}
body.adv-home.view-article .com-content-article__body > p:first-child {
  font-family: var(--adv-font-serif); font-size: clamp(1.25rem, 1.05rem + .8vw, 1.6875rem); line-height: 1.42;
  color: var(--adv-ink); margin-bottom: 1.25em; max-width: 30em;
}

/* ---------- 8. Внутренние страницы: тёмная полоса заголовка (крошки + h1) ----------
   Полоса во всю ширину окна рисуется border-image с выносом 100vmax (позиции крошек и заголовка стоят в колонке,
   сделать их полноширинными нельзя); вынос border-image не создаёт горизонтальной прокрутки. */
body:not(.adv-home.view-article) .site-grid > .container-component { padding-top: 0; }
body:not(.adv-home.view-article) .container-component > .mod-breadcrumbs__wrapper,
body:not(.adv-home.view-article) .container-component > #system-message-container,
body:not(.adv-home.view-article) .com-content-article > .page-header,
body:not(.adv-home.view-article) .com-content-category .content-category > h1,
body:not(.adv-home.view-article) .adv-contact > .page-header,
body:not(.adv-home.view-article) .com-finder > h1 {
  border-image: conic-gradient(var(--adv-ink) 0 0) fill 0 / / 0 100vmax;
  color: var(--adv-on-ink);
}
body:not(.adv-home.view-article) .container-component > .mod-breadcrumbs__wrapper { margin: 0; padding: clamp(24px, 3vw, 40px) 0 12px; }
body:not(.adv-home.view-article) .container-component > #system-message-container { margin: 0; }
body:not(.adv-home.view-article) .container-component > #system-message-container:not(:empty) { padding: 8px 0 16px; }
body:not(.adv-home.view-article) .com-content-article > .page-header,
body:not(.adv-home.view-article) .adv-contact > .page-header,
body:not(.adv-home.view-article) .com-content-category .content-category > h1,
body:not(.adv-home.view-article) .com-finder > h1 {
  position: relative; margin: 0 0 clamp(32px, 4vw, 48px); padding: 4px 0 clamp(40px, 4vw, 60px);
}
body:not(.adv-home.view-article) .com-content-article > .page-header h1,
body:not(.adv-home.view-article) .adv-contact > .page-header h1 { margin: 0; max-width: 24ch; color: #fff; }
body:not(.adv-home.view-article) .com-content-category .content-category > h1,
body:not(.adv-home.view-article) .com-finder > h1 { color: #fff; }
body:not(.adv-home.view-article) .com-content-article > .page-header::after,
body:not(.adv-home.view-article) .adv-contact > .page-header::after,
body:not(.adv-home.view-article) .com-content-category .content-category > h1::after,
body:not(.adv-home.view-article) .com-finder > h1::after {
  content: ""; position: absolute; left: 0; bottom: clamp(24px, 2.5vw, 36px); width: 64px; height: 2px; background: var(--adv-gold);
}

/* навигационная цепочка (mod_breadcrumbs) на тёмной полосе; у ol в ядре px-3 py-2 с !important */
.mod-breadcrumbs.breadcrumb { padding: 0 !important; margin: 0; background: none; }
.mod-breadcrumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 0; list-style: none; font-family: var(--adv-font-ui); font-size: .8125rem; font-weight: 500; line-height: 1.5; color: var(--adv-on-ink-muted); }
.mod-breadcrumbs__divider, .mod-breadcrumbs__here { display: none; }
.mod-breadcrumbs .breadcrumb-item + .breadcrumb-item { padding-left: 0; }
.mod-breadcrumbs .breadcrumb-item + .breadcrumb-item::before { content: "/"; float: none; padding: 0 .6em; color: #5d6b80; }
.mod-breadcrumbs a { color: var(--adv-on-ink); text-decoration: none; }
.mod-breadcrumbs a:hover { color: var(--adv-gold); text-decoration: underline; }
.mod-breadcrumbs .active { color: var(--adv-gold); }
/* фокус на тёмной полосе: золотая рамка (8.6:1 на ink); бордо по умолчанию дало бы ~1,9:1 (WCAG 1.4.11 требует 3:1) */
.mod-breadcrumbs a:focus-visible { outline-color: var(--adv-gold); }

/* ---------- 9. Текст материала (com_content article) ---------- */
.com-content-article__body { overflow-wrap: break-word; }
.com-content-article__body > :where(p, ul, ol, h2, h3, h4, blockquote, dl) { max-width: var(--adv-measure); }
.com-content-article__body [style*="justify"] { text-align: left !important; }   /* выключка по ширине из старого редактора → по левому краю */
.com-content-article__body [align="justify"] { text-align: left; }
.com-content-article__body strong { color: var(--adv-ink); }
.com-content-article__body :where(ul, ol) { padding-left: 1.4em; margin: 0 0 1.25em; }
.com-content-article__body li { margin: .45em 0; padding-left: .25em; }
.com-content-article__body li::marker { color: var(--adv-accent); font-family: var(--adv-font-ui); font-weight: 600; }
.com-content-article__body h2 { font-size: clamp(1.375rem, 1.2rem + .7vw, 1.75rem); margin: 2em 0 .6em; }
.com-content-article__body h3 { margin: 1.75em 0 .5em; }
.com-content-article__body h4 { font-family: var(--adv-font-ui); font-size: .8125rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; margin: 2em 0 .75em; }
.com-content-article__body a { text-decoration: underline; }
.com-content-article__body img { height: auto; }
.com-content-article__body table:not(.adv-price) { display: block; max-width: 100%; overflow-x: auto; }
/* фото в новостях (img.img-border align=left): обтекание с отступом; на телефоне — над текстом */
.com-content-article__body img.img-border, .com-content-article__body img[align="left"] {
  float: left; max-width: min(45%, 300px); margin: .35em 1.5em 1em 0; border: 1px solid var(--adv-rule); background: #fff; padding: 4px;
}
.com-content-article__body img[align="right"] { float: right; max-width: min(45%, 300px); margin: .35em 0 1em 1.5em; }
.com-content-article__body::after { content: ""; display: table; clear: both; }
@media (max-width: 575.98px) {
  .com-content-article__body img.img-border, .com-content-article__body img[align="left"], .com-content-article__body img[align="right"] {
    float: none; display: block; max-width: 100%; margin: 0 0 1.25em;
  }
}

/* ---------- 10. Таблица прайса: table.adv-price (статья 148) ----------
   ≥640 — таблица, тёмная строка заголовков приклеивается под шапкой, строки чередуются по цвету;
   <640 — строка становится карточкой: [№ в плашке · цена справа] / название / единица измерения (с подписью).
   Роли ARIA (table/row/cell) ставит user.js — семантика таблицы сохраняется и при display:grid. */
.adv-price {
  width: 100%; float: none; margin: 2rem 0 0;
  border-collapse: separate; border-spacing: 0;
  background: var(--adv-surface); border: 1px solid var(--adv-rule);
  font-size: .9375rem; line-height: 1.5; font-variant-numeric: tabular-nums;
}
.adv-price td { padding: 14px 16px; border-bottom: 1px solid var(--adv-rule); vertical-align: top; text-align: left; }
.adv-price td p { margin: 0; text-align: left; }
.adv-price td p + p { margin-top: .45em; }
.adv-price tr:last-child td { border-bottom: 0; }
.adv-price tr:first-child td {
  position: sticky; top: var(--adv-head-m); z-index: 2;
  padding-block: 14px; background: var(--adv-ink); color: var(--adv-on-ink); border-bottom: 0;
  font-family: var(--adv-font-ui); font-size: .6875rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase;
}
.adv-price tr:first-child td strong { color: inherit; font-weight: 600; }
.adv-price td:first-child { width: 3.5rem; padding-right: 4px; font-family: var(--adv-font-ui); font-size: .8125rem; font-weight: 600; color: var(--adv-muted); }
.adv-price td:nth-child(3) { width: 9.5rem; color: var(--adv-muted); }
.adv-price td:nth-child(4) { width: 12.5rem; font-weight: 700; color: var(--adv-ink); }
.adv-price tr:nth-child(odd):not(:first-child) td { background: #fbfaf6; }
.adv-price tr:not(:first-child):hover td { background: var(--adv-accent-tint); }
@media (min-width: 992px) { .adv-price tr:first-child td { top: var(--adv-nav-h); } }
@media (max-width: 639.98px) {
  .adv-price, .adv-price tbody { display: block; width: 100%; }
  .adv-price { margin-top: 1.5rem; border: 0; background: transparent; font-size: 1rem; }
  .adv-price tr:first-child { display: none; }
  .adv-price tr {
    display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 8px 14px; align-items: start;
    padding: 16px; background: var(--adv-surface);
    border: 1px solid var(--adv-rule); border-bottom-width: 0;
  }
  .adv-price tr:last-child { border-bottom-width: 1px; }
  .adv-price td, .adv-price td:first-child, .adv-price td:nth-child(3), .adv-price td:nth-child(4),
  .adv-price tr:nth-child(odd):not(:first-child) td, .adv-price tr:not(:first-child):hover td {
    display: block; width: auto; padding: 0; border: 0; background: none;
  }
  .adv-price tr:nth-child(n):not(:first-child) td:first-child {
    grid-column: 1; grid-row: 1; justify-self: start; padding: 2px 8px; border-radius: var(--adv-radius);
    background: var(--adv-ink); color: #fff; font-size: .8125rem; line-height: 1.5;
  }
  .adv-price td:nth-child(4) { grid-column: 2; grid-row: 1; justify-self: end; text-align: right; color: var(--adv-accent); font-family: var(--adv-font-ui); font-size: .9375rem; }
  .adv-price td:nth-child(4) p { text-align: right; }
  .adv-price td:nth-child(2) { grid-column: 1 / -1; grid-row: 2; color: var(--adv-ink); font-weight: 500; }
  .adv-price td:nth-child(3) { grid-column: 1 / -1; grid-row: 3; font-size: .875rem; }
  .adv-price td:nth-child(3) p { display: inline; }
  .adv-price td:nth-child(3)::before { content: "Единица измерения: "; font-family: var(--adv-font-ui); font-size: .75rem; color: var(--adv-muted); }
  /* пустые ячейки (строка 26) — класс ставит user.js; специфичность выше, чем у правил display:block выше */
  .adv-price tr:nth-child(n):not(:first-child) td.adv-empty { display: none; }
}

/* ---------- 11. Модули главной: «Виды услуг» (bottom-a, mod_custom) и «Истории из практики» (bottom-a, mod_articles) ---------- */
.adv-services__grid { display: grid; gap: 20px; grid-template-columns: minmax(0, 1fr); counter-reset: adv-svc; }
@media (min-width: 640px) { .adv-services__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .adv-services__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; } }
.adv-services__head { padding: 8px 8px 24px 0; }
.adv-services__head .adv-link-arrow { margin-top: .5rem; }

.adv-card {
  position: relative; display: flex; flex-direction: column;
  padding: clamp(24px, 2.6vw, 36px);
  background: var(--adv-surface); border: 1px solid var(--adv-rule);
  counter-increment: adv-svc;
  transition: border-color .2s var(--adv-ease), box-shadow .25s var(--adv-ease), transform .25s var(--adv-ease);
}
.adv-card:hover { border-color: var(--adv-rule-strong); box-shadow: var(--adv-shadow); transform: translateY(-2px); }
.adv-card__num {
  display: block; margin-bottom: 1.25rem; padding-bottom: .9rem; border-bottom: 1px solid var(--adv-rule);
  font-family: var(--adv-font-serif); font-size: 1.125rem; letter-spacing: .12em; color: var(--adv-gold-text);
}
.adv-card__num::before { content: counter(adv-svc, upper-roman); }   /* римские цифры I–V — счётчиком CSS */
.adv-card__title { margin: 0 0 .75rem; font-size: clamp(1.25rem, 1.15rem + .35vw, 1.4375rem); line-height: 1.22; }
.adv-card__link { color: var(--adv-ink); text-decoration: none; }
.adv-card__link::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.adv-card:hover .adv-card__link { color: var(--adv-accent); }
.adv-card__text { margin: 0 0 1.5rem; font-size: .9375rem; line-height: 1.6; color: var(--adv-muted); }
.adv-card__more { margin-top: auto; }
.adv-card--feature { background: var(--adv-ink); border-color: var(--adv-ink); }
.adv-card--feature .adv-card__num { color: var(--adv-gold); border-color: var(--adv-ink-line); }
.adv-card--feature .adv-card__link { color: #fff; }
.adv-card--feature:hover .adv-card__link { color: var(--adv-gold); }
.adv-card--feature .adv-card__text { color: var(--adv-on-ink-muted); }
.adv-card--feature .adv-link-arrow { color: var(--adv-gold); }

.adv-stories__grid { display: grid; gap: 24px 64px; }
@media (min-width: 992px) { .adv-stories__grid { grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); } }
.adv-stories__list { margin: 0; padding: 0; list-style: none; counter-reset: adv-story; border-bottom: 1px solid var(--adv-rule); }
.adv-stories__list li { counter-increment: adv-story; border-top: 1px solid var(--adv-rule); }
.adv-stories__list a {
  display: grid; grid-template-columns: 2.5rem minmax(0, 1fr) auto; gap: 12px; align-items: baseline;
  padding: 20px 4px; color: var(--adv-ink); text-decoration: none;
  font-family: var(--adv-font-serif); font-size: clamp(1.0625rem, 1rem + .3vw, 1.25rem); line-height: 1.35;
}
.adv-stories__list a::before {
  content: counter(adv-story, decimal-leading-zero);
  font-family: var(--adv-font-ui); font-size: .75rem; font-weight: 600; letter-spacing: .08em; color: var(--adv-gold-text);
}
.adv-stories__list a::after {
  content: "\f061"; font-family: "Font Awesome 6 Free"; font-weight: 900; font-size: .875rem; color: var(--adv-accent);
  transition: transform .2s var(--adv-ease);
}
.adv-stories__list a:hover { color: var(--adv-accent); }
.adv-stories__list a:hover::after { transform: translateX(4px); }

/* страница-список «Истории из практики» (com_content category, макет list): строки как на главной, без дат */
.com-content-category__table { width: 100%; margin: 0; border-collapse: collapse; background: none; counter-reset: adv-story; --table-bg: transparent; --table-striped-bg: transparent; --table-hover-bg: transparent; }
.com-content-category__table.table > :not(caption) > * > * { padding: 0; background: none; box-shadow: none; border: 0; }
.com-content-category__table tbody tr { counter-increment: adv-story; border-top: 1px solid var(--adv-rule); }
.com-content-category__table tbody tr:last-child { border-bottom: 1px solid var(--adv-rule); }
.com-content-category__table .list-title a {
  display: grid; grid-template-columns: 2.5rem minmax(0, 1fr) auto; gap: 12px; align-items: baseline;
  padding: 20px 4px; color: var(--adv-ink); text-decoration: none;
  font-family: var(--adv-font-serif); font-weight: 400; font-size: clamp(1.0625rem, 1rem + .3vw, 1.25rem); line-height: 1.35;
}
.com-content-category__table .list-title a::before { content: counter(adv-story, decimal-leading-zero); font-family: var(--adv-font-ui); font-size: .75rem; font-weight: 600; letter-spacing: .08em; color: var(--adv-gold-text); }
.com-content-category__table .list-title a::after { content: "\f061"; font-family: "Font Awesome 6 Free"; font-weight: 900; font-size: .875rem; color: var(--adv-accent); }
.com-content-category__table .list-title a:hover { color: var(--adv-accent); }

/* ---------- 12. Контакты на главной (bottom-b, mod_custom — текст модуля 92 как есть) ---------- */
.adv-contacts__grid { display: grid; gap: 40px; margin-top: 2.5rem; }
@media (min-width: 768px) { .adv-contacts__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1100px) { .adv-contacts__grid { grid-template-columns: minmax(0, 5fr) minmax(0, 4fr) minmax(0, 3fr); gap: 56px; } }
.adv-contacts__people p { margin: 0; padding: 20px 0; border-top: 1px solid var(--adv-ink-line); color: var(--adv-on-ink-muted); font-size: .9375rem; }
.adv-contacts__people p:last-child { border-bottom: 1px solid var(--adv-ink-line); }
.adv-contacts__people strong { display: block; margin-bottom: .25rem; font-family: var(--adv-font-serif); font-weight: 400; font-size: 1.375rem; line-height: 1.25; color: #fff; }
.adv-contacts .contact-list { margin: 0; padding: 0; list-style: none; }
.adv-contacts .contact-list li {
  position: relative; padding: 20px 0 20px 54px; min-height: 80px; border-top: 1px solid var(--adv-ink-line);
  font-size: 1.0625rem; color: #fff;
}
.adv-contacts .contact-list li:last-child { border-bottom: 1px solid var(--adv-ink-line); }
.adv-contacts .contact-list li::before {
  position: absolute; left: 0; top: 20px; display: grid; place-items: center; width: 40px; height: 40px;
  border: 1px solid var(--adv-ink-line); border-radius: 50%; color: var(--adv-gold);
  font-family: "Font Awesome 6 Free"; font-weight: 900; font-size: .9375rem; content: "\f095";
}
.adv-contacts .contact-list li.email::before { content: "\f0e0"; }
.adv-contacts .contact-list strong {
  display: block; font-family: var(--adv-font-ui); font-size: .6875rem; font-weight: 600; letter-spacing: .16em;
  text-transform: uppercase; color: var(--adv-on-ink-muted);
}
.adv-contacts .contact-list a { color: #fff; text-decoration: none; border-bottom: 1px solid var(--adv-gold); white-space: nowrap; }
.adv-contacts .contact-list a:hover { color: var(--adv-gold); }
.adv-contacts__cta { display: flex; flex-direction: column; gap: 12px; align-items: stretch; }
@media (min-width: 768px) and (max-width: 1099.98px) { .adv-contacts__cta { grid-column: 1 / -1; flex-direction: row; flex-wrap: wrap; } }

/* ---------- 13. Правая колонка внутренних страниц (sidebar-right): карточка связи и подменю «Виды услуг» ---------- */
.site-grid > .container-sidebar-right { display: block; padding-bottom: var(--adv-band-pad); }
@media (min-width: 1100px) {
  /* карточка «наезжает» на тёмную полосу заголовка и остаётся на экране при прокрутке */
  .site-grid > .container-sidebar-right { position: sticky; top: calc(var(--adv-nav-h) + 24px); z-index: 3; align-self: start; margin-top: clamp(32px, 3vw, 44px); padding-bottom: 32px; }
}
.adv-aside-contact {
  padding: 28px; background: var(--adv-surface); color: var(--adv-text);
  border: 1px solid var(--adv-rule); border-top: 3px solid var(--adv-accent); box-shadow: var(--adv-shadow);
}
.adv-aside-contact__title, .adv-subnav__title {
  margin: 0 0 1rem; font-family: var(--adv-font-ui); font-size: .75rem; font-weight: 600; letter-spacing: .16em;
  line-height: 1.4; text-transform: uppercase; color: var(--adv-accent);
}
.adv-aside-contact p { margin: 0; }
.adv-aside-contact p.adv-aside-contact__phone { margin-bottom: .35rem; font-family: var(--adv-font-serif); font-size: 1.5rem; line-height: 1.3; }
.adv-aside-contact__phone a { color: var(--adv-ink); text-decoration: none; white-space: nowrap; }
.adv-aside-contact__mail { font-size: .9375rem; }
.adv-aside-contact__mail a { color: var(--adv-accent); white-space: nowrap; }
.adv-aside-contact p.adv-aside-contact__addr { margin-top: .75rem; padding-top: .75rem; border-top: 1px solid var(--adv-rule); font-size: .875rem; line-height: 1.5; color: var(--adv-muted); }
.adv-aside-contact .adv-btn { width: 100%; margin-top: 1.25rem; }
.container-sidebar-right > .adv-subnav { margin-top: 28px; padding: 20px 0 0; border-top: 2px solid var(--adv-ink); }
.adv-subnav__title { color: var(--adv-muted); }
.adv-subnav .mod-menu { display: block; margin: 0; padding: 0; list-style: none; }
.adv-subnav .mod-menu li { border-bottom: 1px solid var(--adv-rule); }
.adv-subnav .mod-menu a {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 48px; padding: 10px 0 10px 14px;
  border-left: 2px solid transparent; color: var(--adv-ink); text-decoration: none; font-size: 1rem; line-height: 1.35;
}
.adv-subnav .mod-menu a:hover { color: var(--adv-accent); border-left-color: var(--adv-rule-strong); }
.adv-subnav .mod-menu .current > a { color: var(--adv-accent); border-left-color: var(--adv-accent); font-weight: 600; }

/* ---------- 14. Страница «Контакты» (переопределение com_contact) и форма ---------- */
/* колонка ограничена шириной экрана (minmax(0,1fr)): без этого неявная колонка auto растягивалась по неразрывным строкам misc
   и на 320–375 px появлялась прокрутка вбок */
.adv-contact__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 40px; }
.adv-contact__grid > * { min-width: 0; }
@media (min-width: 992px) { .adv-contact__grid { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(48px, 6vw, 88px); align-items: start; } }
.adv-contact__person { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 20px; align-items: center; margin: 0 0 24px 8px; }
.adv-contact__photo { position: relative; margin: 0; aspect-ratio: 4 / 5; }
.adv-contact__photo img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 80% 0; background: #eceef0; }
.adv-contact__photo::after { content: ""; position: absolute; inset: -6px 6px 6px -6px; border: 1px solid var(--adv-gold); pointer-events: none; }
.adv-contact__person .contact-name { margin: 0; font-size: clamp(1.375rem, 1.2rem + .6vw, 1.75rem); }
.adv-contact__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 32px; }
@media (max-width: 575.98px) { .adv-contact__actions .adv-btn { flex: 1 1 100%; } }
.contact-miscinfo > h3 { margin: 0 0 .5rem; font-family: var(--adv-font-ui); font-size: .75rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--adv-muted); }
/* поле misc как есть; оформление одним гротеском (без антиквы внутри текста) */
.contact-miscinfo .info-block { position: relative; padding: 22px 0 22px 60px; border-top: 1px solid var(--adv-rule); line-height: 1.6; font-size: 1rem; }
.contact-miscinfo .info-block:last-child { border-bottom: 1px solid var(--adv-rule); }
.contact-miscinfo .info-block::before {
  content: "\f0c0"; position: absolute; left: 0; top: 22px;
  display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%;
  background: var(--adv-ink); color: var(--adv-gold);
  font-family: "Font Awesome 6 Free"; font-weight: 900; font-size: .9375rem;
}
.contact-miscinfo .info-block.icon3::before { content: "\f095"; }
.contact-miscinfo .info-block h4 { margin: 0 0 .5rem; font-family: var(--adv-font-sans); font-size: 1rem; font-weight: 600; line-height: 1.45; letter-spacing: 0; color: var(--adv-ink); }
.contact-miscinfo .info-block h4:first-child { margin-bottom: .6rem; font-family: var(--adv-font-ui); font-size: .75rem; letter-spacing: .14em; text-transform: uppercase; color: var(--adv-accent); }
/* подписи («Телефон(мобильный ):») переносятся; неразрывен только номер телефона (a.adv-nowrap ставит переопределение);
   e-mail без пробелов — переносится, только если не помещается в строку целиком */
.contact-miscinfo .info-block strong { font-weight: 600; color: var(--adv-ink); }
.contact-miscinfo a.adv-nowrap { white-space: nowrap; }
.contact-miscinfo joomla-hidden-mail, .contact-miscinfo a[href^="mailto:"] { overflow-wrap: anywhere; }
@media (max-width: 575.98px) {
  .contact-miscinfo .info-block { padding-left: 46px; }
  .contact-miscinfo .info-block::before { width: 34px; height: 34px; font-size: .8125rem; }
}

.adv-contact__form {
  padding: clamp(24px, 4vw, 48px); background: var(--adv-surface);
  border: 1px solid var(--adv-rule); border-top: 2px solid var(--adv-accent);
}
.adv-contact__form-title { margin-bottom: .35rem; }
.com-contact__form form { margin: 0; }
.com-contact__form fieldset { margin: 0; padding: 0; border: 0; min-width: 0; }
.adv-form__note { margin: 0 0 1.5rem; font-size: .875rem; color: var(--adv-muted); }
.adv-form__note .red, .com-contact__form .star { color: var(--adv-accent); }
.com-contact__form .control-group { margin: 0 0 20px; }
.com-contact__form .control-label { float: none; width: auto; padding: 0; text-align: left; }
.com-contact__form .controls { margin: 0; }
.com-contact__form .control-label label {
  display: block; margin-bottom: 6px; padding: 0;
  font-family: var(--adv-font-ui); font-size: .875rem; font-weight: 600; color: var(--adv-ink);
}
.com-contact__form .form-control {
  display: block; width: 100%; max-width: none; min-height: 48px; padding: 11px 14px;
  font: inherit; font-size: 1rem; line-height: 1.5; color: var(--adv-text);
  background: #fff; border: 1px solid var(--adv-input-border); border-radius: var(--adv-radius);
  transition: border-color .15s, box-shadow .15s;
}
.com-contact__form textarea.form-control { min-height: 168px; resize: vertical; }
.com-contact__form .form-control:hover { border-color: var(--adv-ink); }
/* фокус полей — сплошная рамка бордо 2px, как у остальных элементов (8.9:1 на белом); прежний ореол (бордо 22 %)
   был светлее 3:1 и почти не отличался от наведения */
.com-contact__form .form-control:focus { outline: 2px solid var(--adv-accent); outline-offset: 2px; border-color: var(--adv-ink); box-shadow: none; }
.com-contact__form .form-control.invalid { border-color: var(--adv-accent); }
.com-contact__form fieldset.checkboxes { margin: 0; padding: 0; border: 0; }
.com-contact__form .form-check { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 12px; align-items: start; margin: 0; padding: 0; font-size: .9375rem; line-height: 1.5; }
.com-contact__form .form-check-inline { display: grid; margin: 0; }
.com-contact__form .form-check .form-check-input { float: none; width: 20px; height: 20px; margin: 2px 0 0; border-color: var(--adv-input-border); accent-color: var(--adv-accent); }
.com-contact__form .form-check-input:checked { background-color: var(--adv-accent); border-color: var(--adv-accent); }
/* фокус галочки — рамка в палитре сайта вместо синеватого кольца Bootstrap */
.com-contact__form .form-check-input:focus { box-shadow: none; border-color: var(--adv-ink); }
.com-contact__form .form-check-input:focus-visible { outline: 2px solid var(--adv-accent); outline-offset: 2px; }
.com-contact__form .form-check-label { color: var(--adv-text); }
.adv-form__captcha { margin: 4px 0 24px; }
.adv-form__captcha .control-group { margin: 0; }
.adv-form__captcha altcha-widget { display: block; font-family: var(--adv-font-sans); font-size: .9375rem; }
.com-contact__form .btn.btn-primary { min-width: 220px; margin-top: 4px; }
.com-contact__form .invalid, .com-contact__form label.invalid { color: var(--adv-accent); }
@media (max-width: 575.98px) { .com-contact__form .btn.btn-primary { width: 100%; } }

/* системные сообщения (joomla-alert) */
#system-message-container { margin: 0; }
#system-message-container joomla-alert { margin: 0; border-radius: var(--adv-radius); font-size: .9375rem; color: var(--adv-text); }
#system-message-container joomla-alert .alert-message { color: var(--adv-text); }

/* ---------- 15. Подвал: .container-footer (Cassiopeia) ----------
   модули позиции footer (стиль System-html5 у каждого): бренд и контакты · «Разделы» (mod_menu) ·
   «Виды услуг» (mod_menu, уровень 2) · «Поиск по сайту» (mod_finder) · копирайт (mod_footer) · «Наверх». */
.container-footer {
  margin: 0; background: var(--adv-ink-3); background-image: none; color: var(--adv-on-ink-muted);
  border-top: 1px solid var(--adv-ink-line); font-size: .9375rem;
}
.container-footer > .grid-child {
  position: relative; display: grid; grid-template-columns: minmax(0, 1fr); gap: 40px; align-items: start;
  width: min(100% - 2 * var(--adv-gutter), var(--adv-container)); max-width: none; margin-inline: auto; padding: 64px 0 0;
}
@media (min-width: 768px) { .container-footer > .grid-child { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1100px) { .container-footer > .grid-child { grid-template-columns: minmax(0, 4fr) minmax(0, 2.6fr) minmax(0, 2.8fr) minmax(0, 3fr); gap: 48px; } }
.container-footer .moduletable { margin: 0; }
.adv-footer__brand img { display: block; height: 56px; width: auto; margin-bottom: 20px; }
.adv-footer__brand p { margin: 0 0 .35rem; max-width: 36ch; }
.adv-footer__title { margin: 0 0 1rem; font-family: var(--adv-font-ui); font-size: .6875rem; font-weight: 600; letter-spacing: .16em; line-height: 1.4; text-transform: uppercase; color: var(--adv-gold); }
.container-footer .mod-menu { display: block; margin: 0; padding: 0; list-style: none; }
.container-footer .mod-menu li { margin: 0 0 .6rem; padding: 0; }
.container-footer a:not(.btn) { color: var(--adv-on-ink); text-decoration: none; }
.container-footer a:not(.btn):hover, .container-footer a:not(.btn):focus { color: #fff; text-decoration: underline; text-underline-offset: .2em; }
.container-footer .mod-menu .current > a { color: var(--adv-gold); text-decoration: none; }
.mod-finder label.finder { display: block; margin-bottom: .6rem; color: var(--adv-on-ink-muted); font-size: .875rem; line-height: 1.5; }
.mod-finder { display: block; width: 100%; }
.mod-finder__search { display: flex; flex-wrap: nowrap; width: 100%; }
.mod-finder__search .form-control {
  flex: 1 1 auto; min-width: 0; min-height: 44px; padding: 8px 12px;
  font: inherit; font-size: 1rem; color: var(--adv-text); background: #fff;
  border: 1px solid #fff; border-radius: var(--adv-radius) 0 0 var(--adv-radius);
}
.mod-finder__search .btn {
  display: grid; place-items: center; width: 48px; min-height: 44px; padding: 0; font-size: 0;
  border: 1px solid var(--adv-gold); border-radius: 0 var(--adv-radius) var(--adv-radius) 0;
  background: var(--adv-gold); color: var(--adv-ink); cursor: pointer;
}
.mod-finder__search .btn .icon-search { font-size: 1rem; }
.mod-finder__search .btn:hover { background: #fff; border-color: #fff; color: var(--adv-ink); }
/* поле поиска в подвале: золотая рамка фокуса (на тёмном) вместо кольца Bootstrap */
.container-footer .mod-finder__search .form-control:focus { box-shadow: none; border-color: #fff; }
.container-footer .mod-finder__search .form-control:focus-visible { outline: 2px solid var(--adv-gold); outline-offset: 2px; z-index: 3; }
.container-footer .adv-footer__copy {
  grid-column: 1 / -1; margin-top: 16px; padding: 20px 0 28px; border-top: 1px solid var(--adv-ink-line); font-size: .8125rem;
}
.container-footer .mod-footer .footer2 { display: none; }   /* MOD_FOOTER_LINE2 — пробел */
.container-footer .adv-footer__top { grid-column: 1 / -1; margin-top: -40px; padding-bottom: 28px; }
@media (min-width: 576px) {
  .container-footer .adv-footer__copy { padding-right: 140px; }
  .container-footer .adv-footer__top { position: absolute; right: 0; bottom: 28px; margin: 0; padding: 0; }
}
.adv-top { display: inline-flex; align-items: center; gap: .5em; font-family: var(--adv-font-ui); font-weight: 600; letter-spacing: .08em; text-transform: uppercase; font-size: .75rem; }
.container-footer .awesomplete > ul { color: var(--adv-text); }

/* ---------- 16. Страница ошибки (error.php Cassiopeia: h1.page-header + .card) и поиск по сайту (com_finder) ---------- */
.error_site .site-grid > .container-component { padding-top: 0; }
.error_site .container-component > h1.page-header {
  position: relative; margin: 0 0 clamp(32px, 4vw, 48px); padding: clamp(32px, 4vw, 56px) 0 clamp(40px, 4vw, 60px);
  border-image: conic-gradient(var(--adv-ink) 0 0) fill 0 / / 0 100vmax; color: #fff;
}
.error_site .container-component > h1.page-header::after { content: ""; position: absolute; left: 0; bottom: clamp(24px, 2.5vw, 36px); width: 64px; height: 2px; background: var(--adv-gold); }
.error_site .container-component > .card { max-width: 46em; padding: clamp(20px, 3vw, 36px); background: var(--adv-surface); border: 1px solid var(--adv-rule); border-top: 2px solid var(--adv-accent); border-radius: 0; }
.error_site .card-body { padding: 0; }
.error_site .card .btn-secondary { display: inline-flex; align-items: center; gap: .5em; min-height: 44px; padding: 0 1.25rem; font-family: var(--adv-font-ui); font-weight: 600; font-size: .9375rem; color: var(--adv-ink); background: transparent; border: 1px solid var(--adv-ink); border-radius: var(--adv-radius); }
.error_site .card .btn-secondary:hover { background: var(--adv-ink); color: #fff; }
.error_site .card blockquote { margin: 0; color: var(--adv-muted); }
.error_site .card .badge { background: var(--adv-accent) !important; }

.com-finder #search-form, .com-finder .com-finder__form { margin-bottom: 2rem; }
.com-finder .form-control:focus { box-shadow: none; border-color: var(--adv-ink); }
.com-finder .form-control:focus-visible { outline: 2px solid var(--adv-accent); outline-offset: 2px; z-index: 3; }
.com-finder .com-finder__results-list { padding: 0; list-style: none; }
.com-finder .result__item { padding: 20px 0; border-top: 1px solid var(--adv-rule); }
.com-finder .result__title { margin: .25rem 0 .5rem; font-size: 1.25rem; }
.com-finder .result__title-url { display: block; font-size: .8125rem; color: var(--adv-muted); }
.com-finder .result__title-text { font-family: var(--adv-font-serif); }
.com-finder .result__description { max-width: var(--adv-measure); color: var(--adv-text); }
.com-finder .result__date, .com-finder .result__taxonomy { display: none; }   /* без дат и таксономии (решение владельца) */

/* ---------- 17. Доступность, движение, печать ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}
@media print {
  .container-header, .container-footer, .container-sidebar-right, .container-bottom-a, .container-bottom-b,
  .container-banner, .mod-breadcrumbs__wrapper, .adv-skip, .adv-intro-label { display: none !important; }
  body { background: #fff; color: #000; font-size: 11pt; }
  .site-grid { display: block; }
  .site-grid > .container-component { padding: 0 !important; background: none !important; border: 0 !important; }
  body:not(.adv-home.view-article) .com-content-article > .page-header, body:not(.adv-home.view-article) .adv-contact > .page-header,
  body:not(.adv-home.view-article) .com-content-category .content-category > h1 { border-image: none; padding: 0; margin: 0 0 12pt; }
  body:not(.adv-home.view-article) .com-content-article > .page-header h1, body:not(.adv-home.view-article) .adv-contact > .page-header h1 { color: #000; }
  .com-content-article > .page-header::after { display: none !important; }
  .com-content-article__body > * { max-width: none !important; }
  .adv-price, .adv-price tbody { display: table !important; }
  .adv-price tbody { display: table-row-group !important; }
  .adv-price tr { display: table-row !important; break-inside: avoid; }
  .adv-price tr:first-child { display: table-row !important; }
  .adv-price td { display: table-cell !important; position: static !important; padding: 4pt 6pt !important; border: 1px solid #999 !important; background: none !important; color: #000 !important; }
  .adv-price td:nth-child(3)::before { content: none !important; }
  a { color: #000; text-decoration: none; }
}

/* ---------- 1.0.2: правки по повторной проверке ---------- */
.adv-footer__brand a { display: inline-block; }                     /* рамка фокуса у логотипа в подвале (внутри блочная картинка) */
.adv-skip:focus-visible { outline-color: var(--adv-gold); }         /* «Перейти к содержанию» на тёмной шапке */
.btn.btn-secondary:focus-visible { outline: 2px solid var(--adv-accent); outline-offset: 3px; box-shadow: none; }
