/* Шрифты системные, внешние подключения не используются: браузер посетителя
   не обращается к сторонним серверам (раньше это был Google Fonts — запрос
   уходил на каждой странице ещё до уведомления о cookie). Стеки с кириллическими
   заменами — в --serif, --sans, --mono ниже.

   Как вернуть фирменные шрифты со своего сервера (Fraunces, Inter и IBM Plex
   Mono распространяются по лицензии SIL OFL 1.1): положить файлы .woff2
   в assets/fonts/ (подробности — assets/fonts/README.txt), раскомментировать
   блок ниже и поставить имя шрифта первым в своей переменной:
   --serif:'Fraunces', Georgia, …; --sans:'Inter', system-ui, …;
   --mono:'IBM Plex Mono', ui-monospace, …  Затем поднять CSS_VERSION
   в scripts/site_shell.py и пересобрать сайт.

@font-face{font-family:'Fraunces';src:url('assets/fonts/Fraunces-VariableFont.woff2') format('woff2');font-weight:300 600;font-style:normal;font-display:swap;}
@font-face{font-family:'Fraunces';src:url('assets/fonts/Fraunces-Italic-VariableFont.woff2') format('woff2');font-weight:400;font-style:italic;font-display:swap;}
@font-face{font-family:'Inter';src:url('assets/fonts/Inter-VariableFont.woff2') format('woff2');font-weight:400 600;font-style:normal;font-display:swap;}
@font-face{font-family:'IBM Plex Mono';src:url('assets/fonts/IBMPlexMono-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap;}
@font-face{font-family:'IBM Plex Mono';src:url('assets/fonts/IBMPlexMono-Medium.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap;}
*/

:root{
  --ink:#161c24;
  --ink-soft:#2b3444;
  --paper:#f6f1e6;
  --paper-2:#efe8d7;
  --white:#fffdf8;
  --brass:#9c7a3c;
  --brass-light:#c7a565;
  --brass-text:#7a5c28;
  --sage:#54614f;
  --line:#d9d0b8;
  /* Граница интерактивных элементов. --line (1,51:1 к белому) годится для
     декоративных разделителей, но для полей ввода WCAG требует 3:1 —
     иначе границу поля почти не видно. Этот тон даёт 3,72:1. */
  --line-strong:#8f8266;
  --text:#242a25;
  --text-soft:#5b6259;
  --serif:Georgia, 'PT Serif', Cambria, 'Noto Serif', 'DejaVu Serif', 'Times New Roman', serif;
  --sans:system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', 'Liberation Sans', sans-serif;
  --mono:ui-monospace, 'SF Mono', Menlo, Consolas, 'PT Mono', 'DejaVu Sans Mono', 'Liberation Mono', monospace;
  /* Текст ошибок форм на светлом фоне: 6,18:1 на --paper, 5,70:1 на --paper-2,
     6,85:1 на --white. На тёмной полосе призыва — свой цвет, см. .form-note--error. */
  --danger:#a3311f;
}

*{margin:0;padding:0;box-sizing:border-box;}

/* Липкая шапка сверху и уведомление о cookie снизу не должны закрывать элемент
   в фокусе и цель якорной ссылки (WCAG 2.4.11, техника C43). Значения —
   запас по высоте шапки; js/main.js уточняет их по факту и добавляет отступ
   снизу, пока видно уведомление о cookie. */
html{scroll-behavior:smooth;scroll-padding-top:150px;}

a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible{
  outline:2px solid var(--brass);
  outline-offset:2px;
}

@media (prefers-reduced-motion: reduce){
  *{animation-duration:0.01ms !important;transition-duration:0.01ms !important;scroll-behavior:auto !important;}
}

body{
  background:var(--paper);
  color:var(--text);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.6;
}

a{color:inherit;text-decoration:none;}

img{max-width:100%;display:block;}

.wrap{max-width:1180px;margin:0 auto;padding:0 32px;}

/* ---------- Header / letterhead ---------- */
.letterhead{
  background:var(--paper);
  border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:50;
  backdrop-filter:blur(4px);
}
/* Открытое мобильное меню — поверх уведомления о cookie (класс ставит js/main.js). */
.letterhead.menu-open{z-index:70;}
.letterhead-inner{
  display:flex;align-items:center;justify-content:space-between;
  padding:22px 32px 18px;
  border-bottom:3px double var(--ink);
}
.brand{
  font-family:var(--serif);
  font-size:1.5rem;
  font-weight:500;
  letter-spacing:0.01em;
  color:var(--ink);
  display:block;
  text-decoration:none;
}
/* При наведении — тёмный цвет: светлая латунь давала 3,54:1. */
.brand:hover small{color:var(--ink);}
.brand small{
  display:block;
  font-family:var(--mono);
  font-size:0.62rem;
  letter-spacing:0.16em;
  color:var(--brass-text);
  text-transform:uppercase;
  margin-top:3px;
}
nav.primary{display:flex;gap:26px;align-items:center;}
nav.primary a{
  font-size:0.86rem;
  letter-spacing:0.03em;
  color:var(--text-soft);
  position:relative;
  padding:4px 0;
  transition:color .2s ease;
}
nav.primary a:hover, nav.primary a.active{color:var(--ink);}
nav.primary a.active::after{
  content:'';position:absolute;left:0;right:0;bottom:-2px;height:2px;background:var(--brass);
}
.nav-cta{
  font-family:var(--mono);
  font-size:0.72rem;
  letter-spacing:0.05em;
  border:1px solid var(--ink);
  padding:9px 18px;
  color:var(--ink) !important;
  text-transform:uppercase;
}
.nav-cta:hover{background:var(--ink);color:var(--white) !important;}

/* ---------- Mobile nav toggle ---------- */
.nav-toggle{
  display:none;
  flex-direction:column;
  justify-content:center;
  gap:5px;
  width:34px;height:34px;
  background:none;
  border:1px solid var(--line);
  cursor:pointer;
  padding:0;
}
.nav-toggle span{
  display:block;
  width:16px;height:1px;
  background:var(--ink);
  margin:0 auto;
  transition:transform .2s ease, opacity .2s ease;
}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(6px) rotate(45deg);}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0;}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-6px) rotate(-45deg);}

.mast-strip{
  font-family:var(--mono);
  font-size:0.68rem;
  letter-spacing:0.08em;
  color:var(--text-soft);
  padding:9px 32px;
  display:flex;justify-content:space-between;
  text-transform:uppercase;
}
/* Ссылки шапки и подвала — полным --text-soft: 5,59:1 на --paper и 5,15:1
   на --paper-2. С opacity 0.85 выходило 4,07:1 и 3,81:1 — ниже 4,5:1.
   Приглушение оставлено только в тёмной карточке контактов (11,24:1). */
.mast-strip a,
footer li a,
.contact-info-card .value a{
  text-decoration:underline;
  text-underline-offset:2px;
  text-decoration-color:currentColor;
}
.contact-info-card .value a{opacity:0.85;}
/* Светлая латунь читается только на тёмном фоне. В шапке (--paper) она даёт
   2,07:1, в подвале (--paper-2) — 1,91:1; там нужен тёмный --brass-text
   (5,50:1 и 5,07:1). В карточке контактов фон тёмный, и там светлая латунь
   наоборот уместна — 7,34:1, поэтому правило разделено. */
.mast-strip a:hover,
footer li a:hover{
  opacity:1;
  color:var(--brass-text);
}
.contact-info-card .value a:hover{
  opacity:1;
  color:var(--brass-light);
}

/* ---------- Docket / signature element ---------- */
.docket{
  font-family:var(--mono);
  font-size:0.72rem;
  letter-spacing:0.1em;
  color:var(--brass-text);
  text-transform:uppercase;
  display:inline-flex;
  align-items:center;
  gap:10px;
  margin-bottom:18px;
}
.docket::before{
  content:'';
  width:22px;height:1px;
  background:var(--brass);
}

/* ---------- Hero ---------- */
.hero{
  padding:96px 0 80px;
  border-bottom:1px solid var(--line);
  position:relative;
}
.hero-grid{
  display:grid;
  grid-template-columns:1.3fr 0.9fr;
  gap:60px;
  align-items:end;
}
.hero h1{
  font-family:var(--serif);
  font-weight:400;
  font-size:clamp(2.6rem, 4.6vw, 4.1rem);
  line-height:1.05;
  color:var(--ink);
  letter-spacing:-0.01em;
}
.hero h1 em{font-style:italic;color:var(--brass);font-weight:400;}
.hero p.lede{
  margin-top:26px;
  font-size:1.08rem;
  color:var(--text-soft);
  max-width:46ch;
}
.hero-actions{display:flex;gap:16px;margin-top:36px;}
.btn{
  display:inline-block;
  padding:14px 26px;
  font-size:0.88rem;
  letter-spacing:0.02em;
  border:1px solid var(--ink);
}
.btn-solid{background:var(--ink);color:var(--white);}
/* Белый текст на --brass даёт 3,93:1 — ниже нормы. На --brass-text: 6,10:1. */
.btn-solid:hover{background:var(--brass-text);border-color:var(--brass-text);}
.btn-line{color:var(--ink);}
/* Для текста берём --brass-text (5,50:1); --brass (3,54:1) остаётся рамке,
   которой достаточно 3:1. */
.btn-line:hover{border-color:var(--brass);color:var(--brass-text);}

.hero-panel{
  border:1px solid var(--line);
  background:var(--white);
  padding:30px;
}
.hero-panel .docket{margin-bottom:22px;}
.hero-panel ul{list-style:none;}
.hero-panel li{
  display:flex;justify-content:space-between;
  padding:13px 0;
  border-bottom:1px solid var(--line);
  font-size:0.92rem;
}
.hero-panel li:last-child{border-bottom:none;}
.hero-panel li span:last-child{
  font-family:var(--mono);
  font-size:0.78rem;
  color:var(--brass-text);
}

/* ---------- Section basics ---------- */
section{padding:78px 0;}
.section-head{
  display:flex;justify-content:space-between;align-items:flex-end;
  margin-bottom:46px;
  gap:24px;
  flex-wrap:wrap;
}
.section-head h2{
  font-family:var(--serif);
  font-weight:400;
  font-size:clamp(1.8rem,2.8vw,2.5rem);
  color:var(--ink);
  max-width:16ch;
}
.section-head p{color:var(--text-soft);max-width:38ch;font-size:0.95rem;}

.divider{border:none;border-top:1px solid var(--line);}

/* ---------- Practice / services grid ---------- */
.practice-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1px;
  background:var(--line);
  border:1px solid var(--line);
}
.practice-card{
  background:var(--paper);
  padding:34px 30px;
  transition:background .2s ease;
}
.practice-card:hover{background:var(--white);}
.practice-card .docket{font-size:0.65rem;}
.practice-card h3{
  font-family:var(--serif);
  font-size:1.3rem;
  font-weight:500;
  color:var(--ink);
  margin:6px 0 12px;
}
.practice-card p{color:var(--text-soft);font-size:0.9rem;}
.practice-card a{display:block;color:inherit;}
.practice-card a:hover h3{color:var(--brass-text);}   /* 6,10:1 на белом фоне карточки */

/* ---------- Stats strip ---------- */
.stats{
  background:var(--ink);
  color:var(--paper);
}
.stats .wrap{
  display:grid;grid-template-columns:repeat(4,1fr);
  padding:56px 32px;
}
.stat{border-left:1px solid rgba(246,241,230,0.18);padding:0 28px;}
.stat:first-child{border-left:none;padding-left:0;}
.stat .num{
  font-family:var(--serif);
  font-size:2.6rem;
  color:var(--brass-light);
}
.stat .label{
  font-family:var(--mono);
  font-size:0.68rem;
  letter-spacing:0.08em;
  text-transform:uppercase;
  color:#c9c3b2;
  margin-top:8px;
}

/* ---------- Team ---------- */
.team-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:36px;
}
.team-card{border-top:2px solid var(--ink);padding-top:20px;}
.team-photo{
  aspect-ratio:4/5;
  background:linear-gradient(160deg,var(--paper-2),var(--line));
  margin-bottom:18px;
  position:relative;
  overflow:hidden;
}
.team-photo::after{
  content:attr(data-initials);
  content:attr(data-initials) / "";
  position:absolute;inset:0;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);
  font-size:3.4rem;
  color:rgba(22,28,36,0.18);
}
.team-card h3{font-family:var(--serif);font-size:1.15rem;font-weight:500;color:var(--ink);}
.team-card .role{
  font-family:var(--mono);
  font-size:0.7rem;
  letter-spacing:0.06em;
  text-transform:uppercase;
  color:var(--brass-text);
  margin:5px 0 12px;
}
.team-card p{font-size:0.88rem;color:var(--text-soft);}

/* ---------- Quote / testimonial ---------- */
.quote-block{
  background:var(--paper-2);
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.quote-block blockquote{
  font-family:var(--serif);
  font-style:italic;
  font-size:clamp(1.4rem,2.4vw,2rem);
  color:var(--ink);
  max-width:26ch;
  line-height:1.4;
}
.quote-block cite{
  display:block;
  font-family:var(--mono);
  font-style:normal;
  font-size:0.78rem;
  color:var(--text-soft);
  margin-top:22px;
}

/* ---------- Process / steps ---------- */
.process{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:30px;
}
.step .num{
  font-family:var(--serif);
  font-size:1rem;
  color:var(--brass-text);
  border:1px solid var(--brass);
  width:34px;height:34px;
  display:flex;align-items:center;justify-content:center;
  margin-bottom:18px;
}
.step h3{font-family:var(--serif);font-weight:500;font-size:1.08rem;color:var(--ink);margin-bottom:8px;}
.step p{font-size:0.87rem;color:var(--text-soft);}

/* ---------- CTA band ---------- */
.cta-band{
  background:var(--ink);
  color:var(--paper);
  text-align:center;
}
.cta-band h2{
  font-family:var(--serif);
  font-weight:400;
  font-size:clamp(1.8rem,3.4vw,2.8rem);
  max-width:22ch;
  margin:0 auto 28px;
}
/* Полоса призыва тёмная, кнопка на ней — светлая латунь с тёмным текстом:
   7,34:1. Прежний вариант (белый текст на --brass) давал 3,93:1,
   а при наведении — 2,30:1. */
.cta-band .btn-solid{background:var(--brass-light);border-color:var(--brass-light);color:var(--ink);}
.cta-band .btn-solid:hover{background:#dcc08d;border-color:#dcc08d;color:var(--ink);}
.cta-band .btn-line{color:var(--paper);border-color:rgba(246,241,230,0.5);}

/* ---------- Footer ---------- */
footer{
  background:var(--paper-2);
  border-top:3px double var(--ink);
  padding:56px 0 30px;
}
.footer-grid{
  display:grid;
  grid-template-columns:1.4fr 1fr 1fr 1fr;
  gap:36px;
  margin-bottom:40px;
}
.footer-brand{font-family:var(--serif);font-size:1.3rem;color:var(--ink);}
.footer-brand p{font-size:0.85rem;color:var(--text-soft);margin-top:12px;max-width:32ch;}
footer h2{
  font-family:var(--mono);
  font-size:0.68rem;
  letter-spacing:0.1em;
  text-transform:uppercase;
  color:var(--brass-text);
  margin-bottom:16px;
}
footer ul{list-style:none;}
footer li{margin-bottom:10px;font-size:0.87rem;color:var(--text-soft);}
footer li a:hover{color:var(--ink);}
.footer-bottom{
  border-top:1px solid var(--line);
  padding-top:22px;
  display:flex;justify-content:space-between;
  font-family:var(--mono);
  font-size:0.72rem;
  color:var(--text-soft);
  text-transform:uppercase;
  letter-spacing:0.04em;
}
/* Ссылки на политику и согласие выглядят ссылками, а не обычным текстом. */
.footer-bottom a{text-decoration:underline;text-underline-offset:2px;}
.footer-bottom a:hover{color:var(--ink);}
/* «Настройки cookie» — кнопка, которая снова открывает уведомление
   (js/main.js). Оформлена как ссылка там, где стоит. */
button[data-cookie-settings]{
  background:none;border:0;padding:0;margin:0;
  font:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;
  text-decoration:underline;text-underline-offset:2px;cursor:pointer;
}
button[data-cookie-settings]:hover{color:var(--ink);}
/* Сведения об исполнителе в подвале (разметка — scripts/site_shell.py).
   --text-soft на --paper-2 — 5,15:1. */
.footer-requisites{padding-top:14px;font-size:0.8rem;line-height:1.55;color:var(--text-soft);}
.footer-requisites a{text-decoration:underline;text-underline-offset:2px;}

/* ---------- Page header (inner pages) ---------- */
.page-header{
  padding:64px 0 54px;
  border-bottom:1px solid var(--line);
}
.page-header h1{
  font-family:var(--serif);
  font-weight:400;
  font-size:clamp(2.2rem,4vw,3.2rem);
  color:var(--ink);
}
.page-header p{margin-top:18px;color:var(--text-soft);max-width:52ch;}

/* ---------- Contact ---------- */
.contact-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:60px;
}
.field{margin-bottom:22px;}
.field label{
  display:block;
  font-family:var(--mono);
  font-size:0.68rem;
  letter-spacing:0.08em;
  text-transform:uppercase;
  color:var(--text-soft);
  margin-bottom:8px;
}
.field input,.field textarea,.field select{
  width:100%;
  background:var(--white);
  border:1px solid var(--line-strong);
  padding:13px 14px;
  font-family:var(--sans);
  font-size:0.94rem;
  color:var(--text);
}
.field input:focus,.field textarea:focus,.field select:focus{
  outline:2px solid var(--brass);
  outline-offset:1px;
}
.contact-info-card{
  background:var(--ink);
  color:var(--paper);
  padding:38px;
}
.contact-info-card .docket{color:var(--brass-light);}
.contact-info-card h3{font-family:var(--serif);font-size:1.3rem;margin-bottom:22px;font-weight:500;}
.contact-info-card .row{
  padding:16px 0;
  border-bottom:1px solid rgba(246,241,230,0.15);
}
.contact-info-card .row:last-child{border-bottom:none;}
.contact-info-card .row .label{
  font-family:var(--mono);
  font-size:0.66rem;
  letter-spacing:0.08em;
  text-transform:uppercase;
  color:#a49b83;
}
.contact-info-card .row .value{margin-top:6px;font-size:0.95rem;}

.map-block{
  margin-top:26px;
  border:1px solid var(--line);
  background:
    repeating-linear-gradient(0deg, var(--paper-2), var(--paper-2) 1px, transparent 1px, transparent 32px),
    repeating-linear-gradient(90deg, var(--paper-2), var(--paper-2) 1px, transparent 1px, transparent 32px),
    var(--paper);
  height:220px;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);
  font-size:0.75rem;
  color:var(--text-soft);
  letter-spacing:0.05em;
}

/* ---------- Values grid (about) ---------- */
.values-grid{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:1px;
  background:var(--line);
  border:1px solid var(--line);
}
.value-card{background:var(--paper);padding:36px;}
.value-card h3{font-family:var(--serif);font-size:1.25rem;font-weight:500;color:var(--ink);margin-bottom:10px;}
.value-card p{font-size:0.9rem;color:var(--text-soft);}

/* ---------- Timeline (about) ---------- */
.timeline{border-left:1px solid var(--line);margin-left:8px;}
.tl-item{
  position:relative;
  padding:0 0 40px 36px;
}
.tl-item::before{
  content:'';
  position:absolute;left:-5px;top:4px;
  width:9px;height:9px;
  border-radius:50%;
  background:var(--brass);
}
.tl-item .yr{font-family:var(--mono);font-size:0.75rem;color:var(--brass-text);letter-spacing:0.06em;}
.tl-item h3{font-family:var(--serif);font-size:1.1rem;color:var(--ink);margin:6px 0 6px;font-weight:500;}
.tl-item p{font-size:0.89rem;color:var(--text-soft);max-width:52ch;}

/* ---------- Services detail list ---------- */
.service-detail{
  display:grid;
  grid-template-columns:0.9fr 1.6fr;
  gap:44px;
  padding:44px 0;
  border-bottom:1px solid var(--line);
}
.service-detail:first-of-type{padding-top:0;}
.service-detail h3{
  font-family:var(--serif);
  font-size:1.55rem;
  font-weight:500;
  color:var(--ink);
}
.service-detail .items{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px 30px;
  margin-top:20px;
}
.service-detail .items div{
  font-size:0.87rem;
  color:var(--text-soft);
  padding-left:16px;
  position:relative;
}
.service-detail .items div::before{
  content:'—';
  content:'—' / "";
  position:absolute;left:0;color:var(--brass-text);
}
.service-detail p.desc{color:var(--text-soft);font-size:0.95rem;max-width:60ch;}

/* ---------- Blog ---------- */
.blog-featured{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:50px;
  align-items:center;
  padding-bottom:64px;
  border-bottom:1px solid var(--line);
}
.blog-featured-media{
  aspect-ratio:4/3;
  background:linear-gradient(155deg,var(--ink),var(--ink-soft));
  position:relative;
  overflow:hidden;
}
.blog-featured-media::after{
  content:attr(data-tag);
  content:attr(data-tag) / "";
  position:absolute;inset:0;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);
  font-style:italic;
  font-size:1.3rem;
  color:rgba(246,241,230,0.35);
  text-align:center;
  padding:20px;
}
.blog-featured h3{
  font-family:var(--serif);
  font-weight:500;
  font-size:clamp(1.6rem,2.6vw,2.2rem);
  color:var(--ink);
  line-height:1.15;
  margin:14px 0 16px;
}
.blog-featured p{color:var(--text-soft);font-size:0.98rem;max-width:52ch;}
.blog-meta{
  font-family:var(--mono);
  font-size:0.7rem;
  letter-spacing:0.06em;
  text-transform:uppercase;
  color:var(--text-soft);
  display:flex;gap:14px;
  margin-top:20px;
}
.blog-meta .cat{color:var(--brass-text);}

.blog-filters{
  display:flex;gap:10px;flex-wrap:wrap;
  margin-bottom:40px;
}
.blog-filters span,
.blog-filters .filter{
  font-family:var(--mono);
  font-size:0.7rem;
  letter-spacing:0.05em;
  text-transform:uppercase;
  padding:8px 16px;
  border:1px solid var(--line);
  color:var(--text-soft);
  background:none;
  cursor:pointer;
  transition:border-color 0.2s ease, color 0.2s ease;
}
.blog-filters .filter:hover{border-color:var(--brass);color:var(--brass-text);}
.blog-filters span.active,
.blog-filters .filter.active{
  border-color:var(--ink);
  color:var(--ink);
  background:var(--white);
}

.blog-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1px;
  background:var(--line);
  border:1px solid var(--line);
}
/* Карточки объявлены как display:flex, и это перебивало атрибут hidden —
   фильтр по рубрикам «работал», но ни одна карточка не пряталась. */
[hidden]{display:none !important;}

/* ---------- Уведомление о cookie ---------- */
.cookie-note{
  position:fixed; left:16px; right:16px; bottom:16px; z-index:60;
  max-width:760px; margin:0 auto;
  max-height:calc(100vh - 32px); overflow-y:auto;
  display:flex; flex-wrap:wrap; gap:14px 20px; align-items:center;
  justify-content:space-between;
  background:var(--white); border:1px solid var(--line-strong);
  border-radius:4px; padding:16px 18px;
  box-shadow:0 8px 32px rgba(22,28,36,0.14);
}
.cookie-note p{margin:0; flex:1 1 320px; font-size:0.88rem; line-height:1.5; color:var(--text-soft);}
.cookie-note a{color:var(--brass-text); text-decoration:underline;}
/* Строка «Сейчас аналитика включена/выключена» — её добавляет js/main.js,
   когда уведомление открыто из «Настроек cookie». */
.cookie-note .cookie-note__state{flex:1 1 100%; color:var(--text); font-size:0.85rem;}
.cookie-note .cookie-note__state:empty{display:none;}
.cookie-note__actions{display:flex; gap:10px; flex:0 0 auto;}
.cookie-note .btn{padding:9px 18px; font-size:0.8rem;}
@media (max-width:560px){
  .cookie-note{left:8px; right:8px; bottom:8px; padding:12px 14px; gap:10px;}
  .cookie-note p{font-size:0.8rem; line-height:1.45;}
  .cookie-note__actions{width:100%;}
  .cookie-note__actions .btn{flex:1;}
}

.blog-card{
  background:var(--paper);
  display:flex;flex-direction:column;
  transition:background 0.2s ease;
}
.blog-card > a{display:flex;flex-direction:column;height:100%;color:inherit;}
.blog-card:hover{background:var(--white);}
.blog-card:hover h3{color:var(--brass-text);}
.blog-featured h3 a:hover,
.service-detail h3 a:hover{color:var(--brass-text);}
.blog-card-media{
  aspect-ratio:16/10;
  background:linear-gradient(150deg,var(--paper-2),var(--line));
  position:relative;
}
.blog-card-media::after{
  content:attr(data-num);
  content:attr(data-num) / "";
  position:absolute;inset:0;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);
  font-size:2.2rem;
  color:rgba(22,28,36,0.14);
}
.blog-card-body{padding:26px 26px 30px;flex:1;display:flex;flex-direction:column;}
.blog-card .blog-meta{margin-top:0;margin-bottom:12px;}
.blog-card h3{
  font-family:var(--serif);
  font-weight:500;
  font-size:1.15rem;
  color:var(--ink);
  line-height:1.25;
  margin-bottom:10px;
}
.blog-card p{font-size:0.87rem;color:var(--text-soft);flex:1;}
.blog-card .read-more{
  margin-top:16px;
  font-family:var(--mono);
  font-size:0.72rem;
  letter-spacing:0.05em;
  text-transform:uppercase;
  color:var(--brass-text);
}
.blog-card:hover .read-more{color:var(--ink);}

.newsletter{
  background:var(--paper-2);
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.newsletter .wrap{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:40px;
  flex-wrap:wrap;
}
.newsletter h3{
  font-family:var(--serif);
  font-weight:500;
  font-size:1.5rem;
  color:var(--ink);
  max-width:20ch;
}
.newsletter p{color:var(--text-soft);font-size:0.9rem;margin-top:8px;max-width:36ch;}
/* Форма подписки переносится на новые строки: в один ряд поле, кнопка
   и подпись согласия не помещались, и на 320 px появлялась горизонтальная
   прокрутка (WCAG 1.4.10). Рамка поля — --line-strong: 3,10:1 к --paper-2
   и 3,72:1 к полю (было 1,26:1 и 1,51:1). */
.newsletter-form{display:flex;flex-wrap:wrap;gap:0;flex:0 1 380px;max-width:100%;min-width:0;}
.newsletter-form input{
  flex:1 1 180px;
  min-width:0;
  background:var(--white);
  border:1px solid var(--line-strong);
  border-right:none;
  padding:13px 16px;
  font-family:var(--sans);
  font-size:0.9rem;
}
.newsletter-form input[type="checkbox"]{flex:0 0 auto;}
.newsletter-form button{
  flex:0 0 auto;
  background:var(--ink);
  color:var(--white);
  border:1px solid var(--ink);
  padding:13px 22px;
  font-size:0.85rem;
  cursor:pointer;
}
.newsletter-form > label,
.newsletter-form .form-note{flex:1 1 100%;min-width:0;}
/* Белый текст на --brass давал 3,93:1, на --brass-text — 6,10:1. */
.newsletter-form button:hover{background:var(--brass-text);border-color:var(--brass-text);}

/* ---------- Checklist ---------- */
.checklist-grid{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:1px;
  background:var(--line);
  border:1px solid var(--line);
  margin-top:20px;
}
.checklist-card{background:var(--paper);padding:34px 32px;}
.checklist-card .docket{font-size:0.65rem;}
.checklist-card h3{
  font-family:var(--serif);
  font-size:1.35rem;
  font-weight:500;
  color:var(--ink);
  margin:6px 0 20px;
}
.checklist-card ul{list-style:none;}
.checklist-card li{
  display:flex;
  gap:12px;
  padding:11px 0;
  border-top:1px solid var(--line);
  font-size:0.92rem;
  color:var(--text);
}
.checklist-card li:first-of-type{border-top:none;}
.checklist-card li .tick{
  flex:0 0 auto;
  width:18px;height:18px;
  border:1px solid var(--brass);
  color:var(--brass-text);
  display:flex;align-items:center;justify-content:center;
  font-size:0.65rem;
  margin-top:2px;
}

.online-banner{
  background:var(--ink);
  color:var(--paper);
  padding:34px 38px;
  display:flex;
  align-items:center;
  gap:26px;
  margin-bottom:56px;
}
.online-banner .dot{
  flex:0 0 auto;
  width:12px;height:12px;border-radius:50%;
  background:#7d9a72;
  box-shadow:0 0 0 4px rgba(125,154,114,0.2);
}
.online-banner p{font-size:1rem;line-height:1.55;max-width:70ch;}
.online-banner strong{color:var(--brass-light);font-weight:500;}

/* ---------- Responsive ---------- */
@media (max-width:1060px){
  .nav-toggle{display:flex;}
  nav.primary{
    display:none;
    position:absolute;
    top:100%;left:0;right:0;
    background:var(--paper);
    border-bottom:1px solid var(--line);
    flex-direction:column;
    align-items:stretch;
    gap:0;
    padding:8px 0 16px;
  }
  /* Меню едет вместе с липкой шапкой, поэтому его хвост нельзя открыть
     прокруткой страницы. Высота ограничена окном, дальше меню прокручивается
     само; js/main.js уточняет max-height по фактической высоте шапки. */
  nav.primary.open{
    display:flex;
    max-height:calc(100vh - 140px);
    max-height:calc(100dvh - 140px);
    overflow-y:auto;
    overscroll-behavior:contain;
  }
  nav.primary a{
    padding:14px 32px;
    border-top:1px solid var(--line);
  }
  nav.primary a.active::after{display:none;}
  nav.primary a.active{color:var(--brass-text);}
  .nav-cta{
    margin:12px 32px 0;
    text-align:center;
  }
  .letterhead-inner{position:relative;}
  .mast-strip{flex-direction:column;gap:4px;text-align:center;padding:10px 24px;}
  .hero-grid{grid-template-columns:1fr;}
  .practice-grid{grid-template-columns:1fr;}
  .team-grid{grid-template-columns:1fr 1fr;}
  .stats .wrap{grid-template-columns:1fr 1fr;gap:28px;}
  .process{grid-template-columns:1fr 1fr;}
  .footer-grid{grid-template-columns:1fr 1fr;}
  .contact-grid{grid-template-columns:1fr;}
  .values-grid{grid-template-columns:1fr;}
  .service-detail{grid-template-columns:1fr;}
  .blog-featured{grid-template-columns:1fr;}
  .blog-grid{grid-template-columns:1fr 1fr;}
  .checklist-grid{grid-template-columns:1fr;}
  .online-banner{flex-direction:column;align-items:flex-start;}
  .newsletter .wrap{flex-direction:column;align-items:flex-start;}
  .newsletter-form{flex:1 1 100%;width:100%;}
  html{scroll-padding-top:180px;}
}
@media (max-width:560px){
  .team-grid{grid-template-columns:1fr;}
  .stats .wrap{grid-template-columns:1fr;}
  .process{grid-template-columns:1fr;}
  .footer-grid{grid-template-columns:1fr;}
  .service-detail .items{grid-template-columns:1fr;}
  .blog-grid{grid-template-columns:1fr;}
  .hero{padding:64px 0 56px;}
  section{padding:56px 0;}
  .hero-actions{flex-direction:column;align-items:stretch;}
  .hero-actions .btn{text-align:center;}
  .letterhead-inner{padding:16px 20px;}
  .brand{font-size:1.15rem;}
  html{scroll-padding-top:120px;}
}
/* Низкое окно — телефон в альбомной ориентации или зум 400% (320×256):
   липкая шапка съела бы до половины высоты, поэтому здесь она прокручивается
   вместе со страницей и не закрывает ни содержимое, ни элемент в фокусе. */
@media (max-height:500px){
  .letterhead{position:relative;}
  html{scroll-padding-top:16px;}
}

.breadcrumbs{
  font-family:var(--mono);
  font-size:0.78rem;
  color:var(--text-soft);
  padding:14px 0 0;
}
.breadcrumbs a{color:var(--text-soft);text-decoration:none;}
.breadcrumbs a:hover{color:var(--brass-text);text-decoration:underline;}
/* Прозрачность — только у разделителей «/». Раньше она доставалась и
   названию текущей страницы (span.current): 3,53:1 вместо 11,11:1. */
.breadcrumbs span{margin:0 6px;}
.breadcrumbs span:not(.current),
.breadcrumbs .sep{opacity:0.6;}
.breadcrumbs .current{color:var(--ink-soft);opacity:1;}


/* ============================================================
   Дополнительные компоненты: статьи, услуги, цены, FAQ, кейсы
   ============================================================ */

/* --- Служебное --- */
.skip-link{
  position:absolute;left:-9999px;top:0;z-index:200;
  background:var(--ink);color:var(--white);
  padding:12px 20px;font-family:var(--mono);font-size:0.78rem;
  letter-spacing:0.06em;text-transform:uppercase;
}
.skip-link:focus{left:0;}

/* --- Проза: статьи блога, услуги, документы --- */
.prose{max-width:calc(72ch + 64px);margin:0 auto;padding:0 32px;}
.prose > *:first-child{margin-top:0;}
.prose p{color:var(--text-soft);margin-bottom:18px;font-size:1.02rem;line-height:1.72;}
.prose h2{
  font-family:var(--serif);font-weight:500;font-size:1.55rem;color:var(--ink);
  margin:52px 0 16px;line-height:1.25;
}
.prose h3{
  font-family:var(--serif);font-weight:500;font-size:1.2rem;color:var(--ink);
  margin:34px 0 12px;
}
.prose h2:first-child, .prose h3:first-child{margin-top:0;}
.prose ul, .prose ol{margin:0 0 20px 22px;color:var(--text-soft);}
.prose li{margin-bottom:9px;line-height:1.65;}
.prose li::marker{color:var(--brass);}
/* Номера в нумерованных списках — текст, и на них ссылаются («пункты 6–10»):
   --brass-text даёт 5,50:1 на --paper и 6,10:1 на белом. Точки <ul>
   декоративные и остаются светлой латунью. */
.prose ol li::marker{color:var(--brass-text);}
.prose strong{color:var(--ink);font-weight:600;}
.prose a{color:var(--brass-text);text-decoration:underline;text-underline-offset:2px;}
/* Наведение — тёмный цвет и толще подчёркивание: светлая латунь давала 3,54:1. */
.prose a:hover{color:var(--ink);text-decoration-thickness:2px;}
.prose .updated,
.prose .lead-meta{
  font-family:var(--mono);font-size:0.75rem;color:var(--text-soft);
  text-transform:uppercase;letter-spacing:0.05em;
}
.prose blockquote{
  border-left:2px solid var(--brass);
  padding:4px 0 4px 24px;margin:28px 0;
  font-family:var(--serif);font-size:1.15rem;font-style:italic;color:var(--ink-soft);
}
.prose hr{border:none;border-top:1px solid var(--line);margin:44px 0;}

/* --- Выноска / предупреждение --- */
.callout{
  background:var(--white);
  border:1px solid var(--line);
  border-left:3px solid var(--brass);
  padding:24px 26px;margin:28px 0;
}
.callout .docket{margin-bottom:10px;}
.callout p{margin-bottom:0;font-size:0.95rem;}
.callout p + p{margin-top:12px;}

/* --- Правовая база --- */
.law-refs{
  background:var(--paper-2);
  padding:24px 26px;margin:28px 0;
  font-size:0.92rem;
}
.law-refs .docket{margin-bottom:12px;}
.law-refs ul{list-style:none;margin:0;}
.law-refs li{
  margin-bottom:8px;padding-left:18px;position:relative;
  color:var(--text-soft);line-height:1.55;
}
.law-refs li::before{
  content:"§";
  content:"§" / "";
  position:absolute;left:0;top:0;
  font-family:var(--mono);color:var(--brass-text);font-size:0.85rem;
}

/* --- Оглавление --- */
.toc{
  border:1px solid var(--line);
  background:var(--white);
  padding:24px 26px;margin:0 0 40px;
}
.toc .docket{margin-bottom:14px;}
.toc ol{list-style:none;margin:0;counter-reset:toc;}
.toc li{
  counter-increment:toc;margin-bottom:9px;
  padding-left:30px;position:relative;font-size:0.93rem;
}
.toc li::before{
  content:counter(toc,decimal-leading-zero);
  content:counter(toc,decimal-leading-zero) / "";
  position:absolute;left:0;top:1px;
  font-family:var(--mono);font-size:0.72rem;color:var(--brass-text);   /* 6,10:1 на белом */
}
.toc a{color:var(--text-soft);text-decoration:none;}
.toc a:hover{color:var(--brass-text);text-decoration:underline;}

/* --- Шапка статьи --- */
.article-head{padding:56px 0 0;}
.article-head .wrap{max-width:calc(72ch + 64px);}
.article-head h1{
  font-family:var(--serif);font-weight:400;
  font-size:clamp(1.9rem,4vw,2.9rem);line-height:1.12;color:var(--ink);
  margin:18px 0 0;letter-spacing:-0.01em;
}
.article-head .standfirst{
  margin-top:20px;color:var(--text-soft);font-size:1.08rem;line-height:1.65;
}
.article-head .blog-meta{margin-top:22px;}
.article-rule{border:none;border-top:1px solid var(--line);margin:40px 0 0;}

/* --- Подпись автора --- */
.author-box{
  display:flex;gap:20px;align-items:flex-start;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  padding:26px 0;margin:48px 0 0;
}
.author-box .mark{
  flex:0 0 54px;height:54px;
  border:1px solid var(--brass);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-size:1.25rem;color:var(--brass-text);
}
.author-box h3{
  font-family:var(--serif);font-weight:500;font-size:1.05rem;color:var(--ink);margin-bottom:6px;
}
.author-box p{font-size:0.88rem;color:var(--text-soft);margin:0;}

/* --- Похожие материалы --- */
.related-grid{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:1px;background:var(--line);border:1px solid var(--line);
}
.related-grid a{
  background:var(--paper);padding:26px 24px;display:block;
  transition:background 0.2s ease;
}
.related-grid a:hover{background:var(--white);}
.related-grid .cat{
  font-family:var(--mono);font-size:0.68rem;letter-spacing:0.08em;
  text-transform:uppercase;color:var(--brass-text);
}
.related-grid h3{
  font-family:var(--serif);font-weight:500;font-size:1.02rem;
  color:var(--ink);margin-top:10px;line-height:1.35;
}

/* --- FAQ --- */
.faq-list{border-top:1px solid var(--line);}
.faq-item{border-bottom:1px solid var(--line);}
.faq-item summary{
  cursor:pointer;list-style:none;
  padding:22px 46px 22px 0;position:relative;
  font-family:var(--serif);font-size:1.1rem;font-weight:500;color:var(--ink);
  line-height:1.4;
}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item summary::after{
  content:"+";
  content:"+" / "";
  position:absolute;right:8px;top:18px;
  font-family:var(--mono);font-size:1.3rem;color:var(--brass);
}
.faq-item[open] summary::after{content:"–";content:"–" / "";}
.faq-item summary:hover{color:var(--brass-text);}
.faq-item .answer{padding:0 46px 26px 0;}
.faq-item .answer p{color:var(--text-soft);font-size:0.95rem;line-height:1.7;margin-bottom:12px;}
.faq-item .answer p:last-child{margin-bottom:0;}
.faq-item .answer ul{margin:0 0 12px 20px;color:var(--text-soft);font-size:0.95rem;}
.faq-item .answer li{margin-bottom:7px;}
.faq-item .answer a{color:var(--brass-text);text-decoration:underline;}

/* --- Прайс --- */
.price-table{
  border:1px solid var(--line);background:var(--white);
  margin-bottom:28px;
}
.price-head{
  display:flex;align-items:baseline;justify-content:space-between;gap:20px;
  padding:22px 28px;background:var(--paper-2);
  border-bottom:1px solid var(--line);
}
.price-head h3{font-family:var(--serif);font-size:1.25rem;font-weight:500;color:var(--ink);}
.price-head .docket{flex:0 0 auto;}
.price-row{
  display:grid;grid-template-columns:1fr 200px;
  gap:24px;align-items:baseline;
  padding:18px 28px;border-bottom:1px solid var(--line);
}
.price-row:last-child{border-bottom:none;}
.price-row .name{font-size:0.97rem;color:var(--ink-soft);}
.price-row .name small{
  display:block;margin-top:5px;font-size:0.85rem;color:var(--text-soft);line-height:1.5;
}
.price-row .cost{
  font-family:var(--mono);font-size:0.95rem;color:var(--brass-text);
  text-align:right;
}
.price-row .cost em{
  font-style:normal;display:block;font-size:0.72rem;
  color:var(--text-soft);text-transform:uppercase;letter-spacing:0.05em;margin-top:4px;
}

/* --- Кейсы --- */
.case-grid{
  display:grid;grid-template-columns:repeat(2,1fr);
  gap:1px;background:var(--line);border:1px solid var(--line);
}
.case-card{background:var(--paper);padding:34px 32px;}
.case-card .docket{margin-bottom:14px;}
.case-card h3{
  font-family:var(--serif);font-size:1.2rem;font-weight:500;
  color:var(--ink);margin-bottom:12px;line-height:1.3;
}
.case-card .case-row{
  display:grid;grid-template-columns:110px 1fr;gap:14px;
  padding:11px 0;border-top:1px solid var(--line);font-size:0.9rem;
}
.case-card .case-row .k{
  font-family:var(--mono);font-size:0.68rem;letter-spacing:0.07em;
  text-transform:uppercase;color:var(--text-soft);padding-top:3px;
}
.case-card .case-row .v{color:var(--text-soft);line-height:1.55;}
.case-card .case-row .v strong{color:var(--brass-text);font-weight:500;}

/* --- Хаб услуг --- */
.svc-index{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:1px;background:var(--line);border:1px solid var(--line);
  margin-bottom:40px;
}
.svc-index a{
  background:var(--paper);padding:24px 22px;display:block;
  transition:background 0.2s ease;
}
.svc-index a:hover{background:var(--white);}
.svc-index a:hover h3{color:var(--brass-text);}
.svc-index .docket{font-size:0.63rem;}
.svc-index h3{
  font-family:var(--serif);font-size:1.08rem;font-weight:500;
  color:var(--ink);margin-top:9px;
}
.svc-index p{font-size:0.85rem;color:var(--text-soft);margin-top:7px;line-height:1.5;}

/* --- Ссылка "все материалы" --- */
.more-link{
  display:inline-block;margin-top:26px;
  font-family:var(--mono);font-size:0.76rem;letter-spacing:0.07em;
  text-transform:uppercase;color:var(--brass-text);
  border-bottom:1px solid var(--line);padding-bottom:3px;
}
.more-link:hover{border-color:var(--brass);color:var(--ink);}   /* текст: 15,21:1 вместо 3,54:1 */

/* --- Страница 404 --- */
.err-page{
  min-height:52vh;display:flex;align-items:center;
  padding:80px 0;
}
.err-page .code{
  font-family:var(--mono);font-size:0.8rem;letter-spacing:0.12em;
  color:var(--brass-text);text-transform:uppercase;
}
.err-page h1{
  font-family:var(--serif);font-weight:400;font-size:clamp(2rem,5vw,3.2rem);
  color:var(--ink);margin:18px 0;line-height:1.1;
}
.err-page p{color:var(--text-soft);max-width:52ch;margin-bottom:30px;}

/* --- Адаптив новых компонентов --- */
@media (max-width:1060px){
  .related-grid{grid-template-columns:1fr 1fr;}
  .svc-index{grid-template-columns:1fr 1fr;}
}
@media (max-width:900px){
  .case-grid{grid-template-columns:1fr;}
  .price-row{grid-template-columns:1fr;gap:8px;}
  .price-row .cost{text-align:left;}
  .price-row .cost em{display:inline;margin-left:8px;}
}
@media (max-width:640px){
  .related-grid{grid-template-columns:1fr;}
  .svc-index{grid-template-columns:1fr;}
}
@media (max-width:560px){
  .wrap{padding:0 20px;}
  .prose{padding:0 20px;}
  .price-head, .price-row{padding-left:20px;padding-right:20px;}
  .case-card{padding:26px 22px;}
  .case-card .case-row{grid-template-columns:1fr;gap:4px;}
  .author-box{flex-direction:column;gap:14px;}
  .prose h2{font-size:1.35rem;margin-top:40px;}
  .faq-item summary{font-size:1rem;padding-right:36px;}
  .faq-item .answer{padding-right:0;}
}

/* --- Текст документов (политика конфиденциальности и т.п.) --- */
.policy-body{max-width:calc(72ch + 64px);margin:0 auto;padding:64px 32px 96px;}
.policy-body h2{font-family:var(--serif);font-weight:500;font-size:1.4rem;color:var(--ink);margin:44px 0 14px;}
.policy-body h2:first-of-type{margin-top:24px;}
.policy-body p{color:var(--text-soft);margin-bottom:14px;}
.policy-body ul{margin:0 0 14px 22px;color:var(--text-soft);}
.policy-body li{margin-bottom:8px;}
.policy-body a{color:var(--brass-text);text-decoration:underline;}
.policy-body .updated{font-family:var(--mono);font-size:0.75rem;color:var(--text-soft);text-transform:uppercase;letter-spacing:0.05em;}
@media (max-width:560px){ .policy-body{padding:44px 20px 64px;} }

/* Оговорка в подвале: информационный характер материалов и отсутствие оферты.
   Стоит на всех страницах — раньше дисклеймер был только в статьях блога. */
.footer-disclaimer{
  border-top:0;
  padding-top:10px;
  font-size:0.76rem;
  line-height:1.5;
  color:var(--text-soft);   /* 5,15:1 на --paper-2; с opacity 0.85 было 3,81:1 */
  text-transform:none;      /* длинный текст капсом читается хуже */
  letter-spacing:0.01em;
}

/* ---------- Компактная форма в блоке призыва ----------
   Блок тёмный (--ink), поэтому поля светлые с тёмным текстом,
   а подсказки и подпись согласия — приглушённо-светлые. */
.cta-form{max-width:760px;margin:0 auto 22px;text-align:left;}
.cta-form__row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;}
/* Поле с подписью: подпись над полем видна всегда, а не только пока поле
   пустое (WCAG 3.3.2). Поле в колонке не растягивается по высоте. */
.cta-form__field{flex:1 1 200px;display:flex;flex-direction:column;gap:6px;min-width:0;}
.cta-form__label{font-size:0.8rem;color:#c9c3b2;}   /* 9,74:1 на --ink */
.cta-form__row > input{flex:1 1 200px;}             /* разметка без подписей из кеша */
.cta-form__row input{
  background:var(--white);
  border:1px solid var(--line-strong);
  padding:13px 14px;
  font-family:var(--sans);
  font-size:0.95rem;
  color:var(--text);
}
.cta-form__field input{flex:0 0 auto;width:100%;}
.cta-form__row input::placeholder{color:#6b675f;}   /* 5,54:1 на --white; было 4,22:1 */
.cta-form__row .btn{flex:0 0 auto;cursor:pointer;border-color:var(--brass-light);background:var(--brass-light);color:var(--ink);}
.cta-form__row .btn:hover{background:#dcc08d;border-color:#dcc08d;color:var(--ink);}
.cta-form__trap{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;}
.cta-form__agree{
  display:flex;gap:9px;align-items:flex-start;
  margin-top:12px;font-size:0.78rem;line-height:1.45;color:#c9c3b2;
}
.cta-form__agree input{margin-top:3px;flex:0 0 auto;accent-color:var(--brass-light);}
.cta-form__agree a{color:var(--brass-light);text-decoration:underline;}
.cta-band .form-note{color:#e8e2d4;margin-top:14px;font-size:0.9rem;}
@media (max-width:560px){
  .cta-form__row .btn{flex:1 1 100%;}
}
/* ---------- Сообщения и ошибки форм ----------
   Цвет сообщения задаёт класс, который ставит js/main.js. Раньше цвет ошибки
   задавался инлайн (#a3311f) и на тёмной полосе призыва давал 2,46:1.
   Ошибка отмечена ещё и полосой слева, чтобы смысл не держался на одном цвете. */
.form-note--ok{color:var(--sage);}                     /* 5,83:1 на --paper */
.form-note--error{color:var(--danger);border-left:3px solid currentColor;padding-left:10px;}
.cta-band .form-note--ok{color:#e8e2d4;}               /* 13,27:1 на --ink */
.cta-band .form-note--error{color:#f4a896;}            /* 8,88:1 на --ink */
.form-note:focus{outline:none;}
.form-note:focus-visible{outline:2px solid var(--brass);outline-offset:2px;}

/* Поле, которое сервер вернул с ошибкой (aria-invalid ставит js/main.js). */
.contact-form [aria-invalid="true"]{border-color:var(--danger);box-shadow:0 0 0 1px var(--danger);}
.cta-band .contact-form [aria-invalid="true"]{border-color:#f4a896;box-shadow:0 0 0 2px #f4a896;}
.contact-form input[type="checkbox"][aria-invalid="true"]{outline:2px solid var(--danger);outline-offset:2px;}
.cta-band .contact-form input[type="checkbox"][aria-invalid="true"]{outline-color:#f4a896;}

/* Строка о политике под формой на «Контактах»: без галочки, просто ссылка. */
.form-policy{margin:0 0 18px;font-size:0.85rem;line-height:1.5;color:var(--text-soft);}
.form-policy a{color:var(--brass-text);text-decoration:underline;text-underline-offset:2px;}

/* Текст только для скринридера (например, счётчик статей в фильтре блога). */
.visually-hidden{
  position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;
}

/* ---------- Пометка для владельца: «заполнить перед публикацией» ----------
   Заметна на любом фоне (светлом и тёмном): свой фон и рамка.
   Текст #6b1d0c на #fff1a8 — 10,19:1. Перед публикацией пометок быть не должно. */
.fill-me{
  display:inline;
  background:#fff1a8;
  color:#6b1d0c;
  border:1px dashed #a3311f;
  border-radius:2px;
  padding:0 4px;
  font-family:var(--sans);
  font-size:0.9em;
  font-style:normal;
  font-weight:600;
  letter-spacing:normal;
  text-transform:none;
  -webkit-box-decoration-break:clone;
  box-decoration-break:clone;
}

/* Кнопки мессенджеров — всегда на экране, справа внизу (владелец, 30.09.2026).
   Ниже баннера cookie и шторок: они перекрывают кнопки, пока открыты. */
.float-chat{position:fixed;right:16px;bottom:16px;z-index:55;display:flex;flex-direction:column;gap:10px;}
.float-chat a{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  color:#fff;text-decoration:none;box-shadow:0 4px 14px rgba(0,0,0,.2);
  font:700 13px/1 system-ui,-apple-system,"Segoe UI",sans-serif;letter-spacing:.02em;}
.float-chat a:hover{filter:brightness(1.08);}
.float-chat a:focus-visible{outline:3px solid var(--brass);outline-offset:3px;}
.float-chat .fc-tg{background:#2481CC;}
.float-chat .fc-max{background:var(--ink);}
.float-chat svg{width:26px;height:26px;fill:currentColor;}
@media (max-width:600px){.float-chat{right:12px;bottom:12px;}.float-chat a{width:48px;height:48px;}}
@media print{.float-chat{display:none;}}
