/* =====================================================================
   ElevenHouse · дизайн-система «Тепло» · eh.css
   Токены, база и все компоненты. Единственное место, где разрешены
   hex-цвета и размеры шрифта числами. Страницы пользуются только var(--…).

   Подключение (в <head>):
     <link rel="preconnect" href="https://fonts.googleapis.com">
     <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
     <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Geologica:wght,CRSV,SHRP@100..900,0..1,0..100&display=swap">
     <link rel="stylesheet" href="../system/eh.css">
   и первой строкой <body> (или в <head> с defer):
     <script src="../system/eh.js"></script>
   Ссылки на шрифт в <head> ускоряют первый кадр. Если их нет, шрифт
   всё равно подключится через @import ниже (тот же адрес, без двойной загрузки).

   Имена: блок .eh-x, часть .eh-x__y, вариант .eh-x--z, состояние .is-*
   или ARIA (aria-selected, aria-pressed, aria-checked, aria-current,
   aria-invalid, aria-busy, aria-expanded, disabled).
   Классы .is-hover / .is-focus / .is-active — только для статичных
   макетов состояний (в продукте их ставит браузер).
   ===================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Geologica:wght,CRSV,SHRP@100..900,0..1,0..100&display=swap');

/* =====================================================================
   1. ТОКЕНЫ
   ===================================================================== */
:root{
  /* ---- Цвет: основа ---- */
  --bg:#F6F0E4;            /* фон страниц — слоновая кость */
  --surface:#FFFDF8;       /* карточки, окна, поля — тёплый белый */
  --sunken:#EFE7D7;        /* утопленные блоки, наведение, счётчики — песок */
  --line-1:#E6DCCB;        /* тихий разделитель, контур карточки */
  --line-2:#D8CDB8;        /* заметный разделитель, неактивный контур */
  --line-3:#948871;        /* контур поля и элемента управления — 3,1 : 1 к фону, 3,4 : 1 к белому */
  --hairline:rgba(20,32,55,.08);

  /* ---- Цвет: текст. Два уровня + плейсхолдер + неактивное ---- */
  --ink:#142037;           /* основной текст — 14,3 : 1 */
  --ink-2:#5A6173;         /* вторичный текст, подсказки — 5,5 : 1 */
  --ink-3:#646A7A;         /* плейсхолдеры в полях — 4,8 : 1 (близок к --ink-2, отдельным уровнем не считаем) */
  --ink-off:#868B97;       /* только неактивное: выключенные кнопки и поля, занятое время — 3 : 1 */
  --on-ink:#FFFDF8;        /* текст на синем */

  /* ---- Цвет: действие (синий) ---- */
  --action:#142037;
  --action-hover:#2B3B5E;
  --action-press:#0C1526;
  --on-action:#FFFDF8;

  /* ---- Цвет: золото — только «выбрано / сейчас» и фирменные знаки ---- */
  --gold:#E2CA79;          /* заливка выбранного времени, точка «сейчас», 11-й дом */
  --gold-soft:#F5EACB;     /* подложка выбранного чипа, пункта меню, выделение текста */
  --gold-soft-hover:#EFDFB2;
  --gold-edge:#9C7E2C;     /* контур выбранного — 3,4 : 1 к фону */
  --gold-ink:#7F6118;      /* золото для текста и значков на светлом — 5,1 : 1 */
  --brand-gold-light:#A97E1B; /* золотая «h» логотипа на светлом (3,25 : 1 к фону) — только логотип; на синем «h» — --gold */

  /* ---- Цвет: состояния (не совпадают с золотом) ---- */
  --ok:#2F6B48;    --ok-bg:#E2EEDF;
  --warn:#8F4410;  --warn-bg:#FCE1C5;
  --err:#A3443A;   --err-bg:#F6E0DB;   --err-hover:#8A3830;  --err-press:#7D3229;
  --info:#2B5584;  --info-bg:#E1EAF6;

  /* ---- Цвет: темы — подложка / текст ---- */
  --t-love:#F3DFDA;    --t-love-ink:#7A3E37;     /* Отношения */
  --t-career:#E7E1D3;  --t-career-ink:#5A5040;   /* Карьера и деньги */
  --t-purpose:#E4E0F0; --t-purpose-ink:#4A4373;  /* Предназначение */
  --t-move:#DCE6F0;    --t-move-ink:#2D4A68;     /* Переезд */
  --t-year:#E2E8D4;    --t-year-ink:#48582E;     /* Год вперёд */
  --t-kids:#D6E8E5;    --t-kids-ink:#285A54;     /* Дети */

  /* ---- Цвет: практики — значок / подложка. Только внутри бейджа практики (.eh-practice) и точки
     чипа «Кто нужен». Текст, кнопки, фоны и состояния цветом практик не красим. 4,5–7,6 : 1 ---- */
  --p-astro:#2E3F8F;  --p-astro-bg:#E2E6F6;    /* астрология — «Ночное небо» */
  --p-tarot:#8E3159;  --p-tarot-bg:#F5E1E8;    /* таро — «Гранат» */
  --p-numer:#1C6A72;  --p-numer-bg:#DCEEEF;    /* нумерология — «Морская волна» */
  --p-matrix:#7C3B8C; --p-matrix-bg:#F0E2F3;   /* матрица судьбы — «Аметист» */
  --p-hd:#965A34;     --p-hd-bg:#F7E6DA;       /* Дизайн человека — «Терракота» */
  --p-runes:#5B5A50;  --p-runes-bg:#E8E6DF;    /* руны — «Камень» */

  /* ---- Реклама и приоритет в каталоге — без золота. Песок на карточке значит только «реклама» ---- */
  --promo-edge:var(--line-2);        /* #D8CDB8 — кромка 1 px рекламной карточки */
  --promo-tag-bg:var(--sunken);      /* #EFE7D7 — капсула «Реклама» */
  --promo-tag-ink:var(--ink-2);      /* #5A6173 — 5,1 : 1 к капсуле */
  /* значок подписки (.eh-status) — синяя плашка и знак «eh» слоновой костью, 16 : 1 (при наведении 10,9 : 1), без слова тарифа.
     С 22 октября приоритет по подписке выделяет он, а не линия сверху: --prio-line и --acard-accent удалены */
  --status-bg:var(--action);         /* #142037 */
  --status-ink:var(--on-ink);        /* #FFFDF8 */
  --status-ring:var(--surface);      /* кольцо 2 px, когда значок сидит на крае фото */

  /* ---- Подарки от экспертов (раздел 34) — роза-ягода, без золота (золото — «выбрано / сейчас»).
     Различаем ФОРМОЙ, а не только цветом (v3.9): подарок всегда контурный — белый круг или капсула с кромкой, без заливки,
     и при наведении тоже (только кромка толще). Залитые розовые формы — это бейдж таро (круг) и метка «Отношения» (капсула);
     «Реклама» — песок, подписка — синяя плашка, «Проверенный …» — золото. Розовой кромкой целую карточку не обводим:
     так выглядит поле с ошибкой. --gift-bg в знаке больше не используем (оставлен для совместимости и пояснений) ---- */
  --gift-ink:#8A3A4A;                /* значок и слова подарка — 7,4 : 1 к белому, 6,6 : 1 к фону, 6,3 : 1 к --gift-bg */
  --gift-edge:#B86A78;               /* кромка значка и карточки-подарка — 3,9 : 1 к белому, 3,5 : 1 к фону */
  --gift-bg:#F8E6E8;                 /* (до v3.9 — подложка при наведении и круг в сообщении; знак теперь только контурный) */

  /* ---- Графики и полосы: одна синяя шкала от тёмного к светлому ---- */
  --chart-1:#142037;                 /* основной ряд, «израсходовано» */
  --chart-2:#6E7FA6;                 /* второй шаг, «отложено» — 4 : 1 к белому */
  --chart-track:#DDE2EC;             /* дорожка, «свободно» */
  --chart-wash:rgba(20,32,55,.08);   /* заливка под линией */

  /* ---- Тёмная тема того, что создаёт платформа (письма, PDF, чеки) — палитра «Ночь» ---- */
  --gen-dark-bg:#0E1829; --gen-dark-card:#142037; --gen-dark-plate:#1A2843; --gen-dark-line:#2B3C5C;
  --gen-dark-ink:#F6F0E4; --gen-dark-ink-2:#B3BACA; --gen-dark-action:#F6F0E4; --gen-dark-on-action:#142037;
  /* состояния на тёмном (комната консультации S3, потом комната эксперта): «слабая связь» 6 : 1, точка «идёт видеозапись» 4,6 : 1 */
  --warn-on-dark:color-mix(in srgb,var(--warn) 55%,var(--gen-dark-ink));
  --rec-on-dark:color-mix(in srgb,var(--err) 72%,var(--gen-dark-ink));

  /* ---- Цвет: затемнение под окнами и шторками — тёплое, фон остаётся слоновой костью ---- */
  --scrim:rgba(43,36,24,.2);
  --scrim-dark:color-mix(in srgb,var(--gen-dark-bg) 62%,transparent);  /* под окнами поверх тёмной комнаты: тёплое там не видно */

  /* ---- Фото астрологов: одна цветокоррекция на всех ---- */
  --photo-grade:saturate(.88) sepia(.06);

  /* ---- Значки внутри полей (data-URI, цвет #142037) ---- */
  --img-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23142037' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 10l5 5 5-5'/%3E%3C/svg%3E");
  --img-check:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5.5 12.5l4.25 4.25L18.5 8'/%3E%3C/svg%3E");
  --img-dash:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round'%3E%3Cpath d='M7 12h10'/%3E%3C/svg%3E");

  /* ---- Шрифт: 7 размеров, ничего мельче 13 px, межстрочные кратны 4 (у подписей — 18).
     Однокруглая «а» (ось CRSV 1) — только от 20 px: h1–h3, .eh-title, имена астрологов. ---- */
  --font:'Geologica','Helvetica Neue',Arial,sans-serif;
  --fs-h1:48px;      --lh-h1:56px;       /* заголовок страницы */
  --fs-h2:32px;      --lh-h2:40px;       /* заголовок раздела */
  --fs-title:24px;   --lh-title:32px;    /* имя в карточке, заголовок окна */
  --fs-h3:20px;      --lh-h3:28px;       /* заголовок блока, лид */
  --fs-body:16px;    --lh-body:24px;     /* основной текст */
  --fs-small:14px;   --lh-small:20px;    /* вторичный текст, кнопки 40 */
  --fs-caption:13px; --lh-caption:18px;  /* подписи, бейджи, подсказки */
  --lh-num:24px;                         /* цены и числа дат: 20 px на одной строке с 24 */
  --w-light:300; --w-book:350; --w-regular:400; --w-medium:450; --w-strong:500;
  --ls-h1:-.022em; --ls-h2:-.016em; --ls-title:-.012em; --ls-h3:-.006em;

  /* ---- Отступы: шаг 4, имя = px / 4 ---- */
  --s-0h:2px; --s-1:4px; --s-1h:6px; --s-2:8px; --s-2h:10px; --s-3:12px; --s-3h:14px;
  --s-4:16px; --s-4h:18px; --s-5:20px; --s-6:24px; --s-7:28px; --s-8:32px; --s-9:36px;
  --s-10:40px; --s-12:48px; --s-14:56px; --s-16:64px; --s-18:72px; --s-20:80px;
  --s-24:96px; --s-30:120px;

  /* ---- Радиусы ---- */
  --r-xs:8px;      /* пункты меню, подсказки, kbd */
  --r-sm:12px;     /* поля, пункты меню кабинета */
  --r-md:16px;     /* блоки внутри карточек, даты, сообщения */
  --r-lg:24px;     /* карточки, окна, шторки */
  --r-xl:32px;     /* крупные панели публичных страниц */
  --r-pill:999px;  /* кнопки, чипы, бейджи */
  --r-round:50%;   /* аватары клиентов */
  --r-photo:30%;   /* фото астрологов — скруглённый квадрат */

  /* ---- Тени: подкрашены синим ---- */
  --sh-1:0 1px 2px rgba(20,32,55,.05),0 2px 8px rgba(20,32,55,.04);
  --sh-2:0 1px 2px rgba(20,32,55,.04),0 10px 28px rgba(20,32,55,.07);
  --sh-3:0 2px 6px rgba(20,32,55,.06),0 24px 56px rgba(20,32,55,.14);
  --sh-4:0 4px 12px rgba(20,32,55,.08),0 32px 80px rgba(20,32,55,.22);
  --sh-edge-start:10px 0 12px -10px rgba(20,32,55,.22);   /* край прокрутки таблицы слева */
  --sh-edge-end:-10px 0 12px -10px rgba(20,32,55,.22);    /* и справа */
  /* фокус — один на всё: синяя линия 2 px с зазором 2 px */
  --focus:2px solid var(--ink);
  --focus-err:2px solid var(--err);
  --ring:0 0 0 2px var(--bg),0 0 0 4px var(--ink);       /* то же кольцо тенью — где нельзя outline */
  --ring-err:0 0 0 2px var(--bg),0 0 0 4px var(--err);

  /* ---- Движение ---- */
  --dur-1:120ms;   /* наведение, нажатие */
  --dur-2:200ms;   /* меню, подсказки, окна */
  --dur-3:320ms;   /* шторки, всплывающие сообщения */
  --ease:cubic-bezier(.2,.8,.2,1);
  --ease-in:cubic-bezier(.4,0,1,1);

  /* ---- Слои ---- */
  --z-sticky:10; --z-header:20; --z-chat:25; --z-dropdown:30; --z-cookie:35; --z-sheet:40;
  --z-modal:50; --z-popover:60; --z-toast:70; --z-tooltip:80;

  /* ---- Размеры элементов управления ---- */
  --h-xs:32px; --h-sm:40px; --h-md:48px; --h-lg:56px; --h-xl:64px;
  --h-touch:44px;         /* минимальная зона нажатия: кнопка-иконка, время, пункт меню кабинета */
  --h-chip-sm:28px;       /* маленькая метка темы, точка в чипе */
  --logo-h:22px;          /* логотип в меню кабинета */
  --logo-h-lg:26px;       /* логотип в шапке публичных страниц */

  /* ---- Раскладка ---- */
  --w-content:1280px;     /* контент публичных страниц (1440 − 2 × 80) */
  --w-narrow:800px;       /* формы по шагам, оформление записи */
  --w-text:640px;         /* длинный текст, документы */
  --w-sidebar:256px;      /* левое меню кабинета и админки */
  --w-sheet:480px;        /* шторка справа */
  --w-sheet-wide:640px;   /* широкая шторка: запись, «Записать клиента» */
  --w-modal-sm:440px;     /* окно подтверждения */
  --w-modal:520px;        /* окно с формой */
  --w-modal-lg:720px;     /* большое окно */
  --w-toast:400px;
  --w-chat:400px;         /* панель сообщений клиента (eh-chat.js) */
  --w-menu:240px;
  --w-aside:240px;        /* колонка подписей, боковая колонка внутри блока */
  --w-card:400px;         /* минимум карточки эксперта в сетке каталога */
  --h-header:80px;        /* шапка публичных страниц */
  --h-bar:72px;           /* верхняя строка кабинета */
  --gutter:clamp(24px,5.56vw,80px);   /* поле страницы: 80 на 1440, 57 на 1024 */
}

/* =====================================================================
   2. БАЗА
   ===================================================================== */
*,*::before,*::after{box-sizing:border-box}
*{margin:0;padding:0}
html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;-webkit-text-size-adjust:100%}
body{min-height:100vh;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-book);font-variation-settings:'CRSV' 0,'SHRP' 0;font-variant-numeric:proportional-nums}
img,video,canvas{display:block;max-width:100%}
button,input,select,textarea{font:inherit;color:inherit;letter-spacing:inherit;font-variation-settings:inherit}
code,kbd,samp,pre{font-family:var(--font);font-size:inherit}
button{background:none;border:0;cursor:pointer;text-align:inherit}
button:disabled{cursor:not-allowed}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none}
table{border-collapse:collapse}
hr{border:0}
fieldset{border:0;min-width:0}
legend{padding:0}
[hidden]{display:none !important}

h1,h2,h3,h4{font-weight:var(--w-book);text-wrap:balance}
h1{font-size:var(--fs-h1);line-height:var(--lh-h1);font-weight:var(--w-light);letter-spacing:var(--ls-h1);font-variation-settings:'CRSV' 1,'SHRP' 0}
h2{font-size:var(--fs-h2);line-height:var(--lh-h2);letter-spacing:var(--ls-h2);font-variation-settings:'CRSV' 1,'SHRP' 0}
h3{font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:var(--w-medium);letter-spacing:var(--ls-h3);font-variation-settings:'CRSV' 1,'SHRP' 0}
h4{font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium)}
p{text-wrap:pretty}
b,strong{font-weight:var(--w-medium)}

/* Ссылка в тексте без класса выглядит как ссылка */
a:not([class]){font-weight:var(--w-medium);text-decoration:underline;text-decoration-color:var(--line-3);text-decoration-thickness:1.5px;text-underline-offset:4px;transition:text-decoration-color var(--dur-1)}
a:not([class]):hover{text-decoration-color:var(--ink)}

::selection{background:var(--gold-soft);color:var(--ink)}

/* Видимый фокус с клавиатуры — у всего интерактивного */
:focus-visible{outline:var(--focus);outline-offset:2px}
:focus:not(:focus-visible){outline:none}

/* Полосы прокрутки — тонкие и тёплые */
*{scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:var(--r-pill);border:3px solid transparent;background-clip:padding-box}
::-webkit-scrollbar-thumb:hover{background-color:var(--line-3)}

html.eh-lock{overflow:hidden}
.is-focus{outline:var(--focus);outline-offset:2px}

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

/* ---- Текстовые стили (для элементов, которые не заголовки) ---- */
.eh-h1{font-size:var(--fs-h1);line-height:var(--lh-h1);font-weight:var(--w-light);letter-spacing:var(--ls-h1);font-variation-settings:'CRSV' 1,'SHRP' 0}
.eh-h2{font-size:var(--fs-h2);line-height:var(--lh-h2);font-weight:var(--w-book);letter-spacing:var(--ls-h2);font-variation-settings:'CRSV' 1,'SHRP' 0}
.eh-title{font-size:var(--fs-title);line-height:var(--lh-title);font-weight:var(--w-book);letter-spacing:var(--ls-title);font-variation-settings:'CRSV' 1,'SHRP' 0}
.eh-h3{font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:var(--w-medium);letter-spacing:var(--ls-h3);font-variation-settings:'CRSV' 1,'SHRP' 0}
.eh-intro{font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:var(--w-light);color:var(--ink-2)}
.eh-body{font-size:var(--fs-body);line-height:var(--lh-body)}
.eh-small{font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-caption{font-size:var(--fs-caption);line-height:var(--lh-caption)}
.eh-label{font-size:var(--fs-caption);line-height:var(--lh-caption);font-weight:var(--w-strong);color:var(--ink-2)}
.eh-strong{font-weight:var(--w-medium)}
.eh-muted{color:var(--ink-2)}
.eh-faint{color:var(--ink-3)}
.eh-crsv{font-variation-settings:'CRSV' 1,'SHRP' 0}
.eh-tnum{font-variant-numeric:tabular-nums}
/* сумма: не рвётся, цифры табличные. Пробелы в суммах — неразрывные: 62&nbsp;400&nbsp;₽ */
.eh-money{white-space:nowrap;font-variant-numeric:tabular-nums}
.eh-text-ok{color:var(--ok)} .eh-text-warn{color:var(--warn)} .eh-text-err{color:var(--err)} .eh-text-info{color:var(--info)}
.eh-nowrap{white-space:nowrap}
.eh-truncate{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0}
.eh-sr{position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ---- Утилиты раскладки ---- */
.eh-container{width:100%;max-width:calc(var(--w-content) + var(--gutter) * 2);margin-inline:auto;padding-inline:var(--gutter)}
.eh-container--narrow{max-width:calc(var(--w-narrow) + var(--gutter) * 2)}
.eh-container--text{max-width:calc(var(--w-text) + var(--gutter) * 2)}
.eh-stack{display:flex;flex-direction:column;gap:var(--gap,var(--s-4))}
.eh-row{display:flex;align-items:center;gap:var(--gap,var(--s-3))}
.eh-cluster{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap,var(--s-2))}
.eh-between{display:flex;align-items:center;justify-content:space-between;gap:var(--gap,var(--s-4))}
.eh-grid{display:grid;gap:var(--gap,var(--s-6));grid-template-columns:repeat(var(--cols,3),minmax(0,1fr))}
.eh-grid--2{--cols:2} .eh-grid--3{--cols:3} .eh-grid--4{--cols:4}
.eh-grid--fill{grid-template-columns:repeat(auto-fill,minmax(var(--min,280px),1fr))}
.eh-gap-1{--gap:var(--s-1)} .eh-gap-2{--gap:var(--s-2)} .eh-gap-3{--gap:var(--s-3)} .eh-gap-4{--gap:var(--s-4)}
.eh-gap-6{--gap:var(--s-6)} .eh-gap-8{--gap:var(--s-8)} .eh-gap-12{--gap:var(--s-12)}
.eh-grow{flex:1;min-width:0}
.eh-push{margin-left:auto}

/* =====================================================================
   3. ИКОНКИ — линейные, сетка 24, обводка 1,5
   <svg class="eh-icon"><use href="#i-calendar"/></svg>
   ===================================================================== */
.eh-icon{display:inline-block;vertical-align:middle;width:24px;height:24px;flex:none;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.eh-icon--16{width:16px;height:16px}
.eh-icon--18{width:18px;height:18px}
.eh-icon--20{width:20px;height:20px}
.eh-icon--32{width:32px;height:32px}
.eh-icon--fill{fill:currentColor}
.eh-icon--star{fill:var(--gold);stroke:var(--gold-edge);stroke-width:1}
.eh-icon--star-empty{fill:none;stroke:var(--line-3);stroke-width:1.25}
.eh-rosette{display:inline-block;vertical-align:middle;width:20px;height:20px;flex:none}
.eh-rosette--16{width:16px;height:16px} .eh-rosette--24{width:24px;height:24px} .eh-rosette--32{width:32px;height:32px} .eh-rosette--40{width:40px;height:40px}
/* номер дома внутри круга домов (#g-wheel, viewBox 0 0 200 200): <text class="eh-wheel-num" x="47" y="47.5"
   dominant-baseline="central">11</text>. Всегда 14 px: --art-k — во сколько раз круг больше 200 */
.eh-wheel-num{font-family:var(--font);font-size:calc(var(--fs-small) / var(--art-k,1));font-weight:var(--w-strong);fill:var(--ink);text-anchor:middle}

/* знак «eh»: <svg class="eh-mark eh-mark--24"><use href="#g-mark"/></svg>. Синий на светлом, слоновая кость
   на тёмном (--ivory), золотой — только на синем (--gold). Размер — по высоте, ширина = высота × 1,4906.
   Меньше 16 px в высоту не бывает (исключение — значок подписки, 14 px на синей капсуле); свободное поле — ¼ высоты.
   Знак — «Доработанный текущий», чистовой (assets/mark-eh-navy.svg, 22 октября) */
.eh-mark{--mark-h:24px;display:inline-block;vertical-align:middle;flex:none;width:calc(var(--mark-h) * 1.4906);height:var(--mark-h);color:var(--ink);fill:currentColor}
.eh-mark--16{--mark-h:16px} .eh-mark--20{--mark-h:20px} .eh-mark--24{--mark-h:24px}
.eh-mark--32{--mark-h:32px} .eh-mark--40{--mark-h:40px} .eh-mark--64{--mark-h:64px}
.eh-mark--gold{color:var(--gold)}
.eh-mark--ivory{color:var(--bg)}
.eh-mark--clear{margin:calc(var(--mark-h) / 4)}

/* =====================================================================
   4. КНОПКИ
   ===================================================================== */
.eh-btn{--btn-h:var(--h-md);position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);height:var(--btn-h);padding:0 var(--s-6);border-radius:var(--r-pill);font-size:var(--fs-body);line-height:1;font-weight:var(--w-medium);white-space:nowrap;text-decoration:none;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color var(--dur-1),box-shadow var(--dur-1),color var(--dur-1),transform var(--dur-1)}
.eh-btn .eh-icon{width:20px;height:20px;margin-left:calc(var(--s-1) * -1)}
.eh-btn:active:not(:disabled),.eh-btn.is-active{transform:translateY(1px)}

.eh-btn--primary{background:var(--action);color:var(--on-action)}
.eh-btn--primary:hover,.eh-btn--primary.is-hover{background:var(--action-hover)}
.eh-btn--primary:active,.eh-btn--primary.is-active{background:var(--action-press)}

.eh-btn--secondary{background:var(--surface);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line-3)}
.eh-btn--secondary:hover,.eh-btn--secondary.is-hover{box-shadow:inset 0 0 0 1.5px var(--ink)}
.eh-btn--secondary:active,.eh-btn--secondary.is-active{background:var(--sunken);box-shadow:inset 0 0 0 1.5px var(--ink)}
.eh-btn--secondary[aria-expanded="true"]{background:var(--sunken)}

.eh-btn--quiet{background:transparent;color:var(--ink);padding:0 var(--s-4)}
.eh-btn--quiet:hover,.eh-btn--quiet.is-hover{background:var(--sunken)}
.eh-btn--quiet:active,.eh-btn--quiet.is-active{background:var(--line-1)}

.eh-btn--danger{background:var(--err);color:var(--on-ink)}
.eh-btn--danger:hover,.eh-btn--danger.is-hover{background:var(--err-hover)}
.eh-btn--danger:active,.eh-btn--danger.is-active{background:var(--err-press)}

/* тихая опасная — «Отменить консультацию» в тексте карточки */
.eh-btn--danger-quiet{background:transparent;color:var(--err);padding:0 var(--s-4)}
.eh-btn--danger-quiet:hover,.eh-btn--danger-quiet.is-hover{background:var(--err-bg)}

/* кнопка, которая выглядит как ссылка */
.eh-btn--link{--btn-h:auto;padding:0;border-radius:var(--r-xs);background:none;color:var(--ink);font-weight:var(--w-medium);line-height:var(--lh-body);text-decoration:underline;text-decoration-color:var(--line-3);text-decoration-thickness:1.5px;text-underline-offset:4px}
.eh-btn--link:hover,.eh-btn--link.is-hover{text-decoration-color:var(--ink)}
.eh-btn--link:active{transform:none}

/* размеры */
.eh-btn--lg{--btn-h:var(--h-lg);padding:0 var(--s-7)}
.eh-btn--sm{--btn-h:var(--h-sm);padding:0 var(--s-4h);font-size:var(--fs-small)}
.eh-btn--sm .eh-icon{width:18px;height:18px}
.eh-btn--xs{--btn-h:var(--h-xs);padding:0 var(--s-3h);font-size:var(--fs-small);gap:var(--s-1h)}
.eh-btn--xs .eh-icon{width:16px;height:16px}
.eh-btn--quiet.eh-btn--sm,.eh-btn--quiet.eh-btn--xs,.eh-btn--danger-quiet.eh-btn--sm,.eh-btn--danger-quiet.eh-btn--xs{padding:0 var(--s-3)}
.eh-btn--block{display:flex;width:100%}
/* тихая кнопка ровно по краю колонки: текст встаёт на линию с соседним текстом */
.eh-btn--flush{margin-inline:calc(var(--s-4) * -1)}
.eh-btn--flush.eh-btn--sm,.eh-btn--flush.eh-btn--xs{margin-inline:calc(var(--s-3) * -1)}
.eh-btn--flush.eh-btn--link{margin-inline:0}

/* неактивная — рядом всегда пишем, почему */
.eh-btn:disabled,.eh-btn[aria-disabled="true"]{background:var(--sunken);color:var(--ink-off);box-shadow:none;cursor:not-allowed;transform:none}
.eh-btn--quiet:disabled,.eh-btn--quiet[aria-disabled="true"],.eh-btn--link:disabled,.eh-btn--danger-quiet:disabled{background:transparent;color:var(--ink-off)}

/* загрузка: aria-busy="true" — дуга цветом текста кнопки, без золота */
.eh-btn[aria-busy="true"]{cursor:progress;pointer-events:none}
.eh-btn[aria-busy="true"]::before{content:"";width:18px;height:18px;flex:none;border-radius:var(--r-round);border:2px solid color-mix(in srgb,currentColor 24%,transparent);border-top-color:currentColor;animation:eh-spin .8s linear infinite;margin-left:calc(var(--s-1) * -1)}
.eh-btn--primary[aria-busy="true"]{background:var(--action-hover)}
.eh-btn--danger[aria-busy="true"]{background:var(--err-hover)}
.eh-btn[aria-busy="true"] > .eh-icon{display:none}

/* кнопка-иконка */
.eh-iconbtn{position:relative;display:inline-grid;place-items:center;width:var(--h-touch);height:var(--h-touch);flex:none;border-radius:var(--r-round);color:var(--ink);transition:background-color var(--dur-1),box-shadow var(--dur-1)}
.eh-iconbtn .eh-icon{width:20px;height:20px}
.eh-iconbtn:hover,.eh-iconbtn.is-hover{background:var(--sunken)}
.eh-iconbtn:active,.eh-iconbtn.is-active{background:var(--line-1)}
.eh-iconbtn--sm{width:36px;height:36px}
.eh-iconbtn--md{width:var(--h-sm);height:var(--h-sm)}
.eh-iconbtn--sm .eh-icon{width:18px;height:18px}
.eh-iconbtn--raised{background:var(--surface);box-shadow:var(--sh-1)}
.eh-iconbtn--raised:hover,.eh-iconbtn--raised.is-hover{background:var(--surface);box-shadow:var(--sh-2),inset 0 0 0 1px var(--line-2)}
.eh-iconbtn--outline{box-shadow:inset 0 0 0 1px var(--line-3)}
.eh-iconbtn--outline:hover,.eh-iconbtn--outline.is-hover{background:var(--surface);box-shadow:inset 0 0 0 1.5px var(--ink)}
.eh-iconbtn:disabled{color:var(--ink-off);background:transparent;box-shadow:inset 0 0 0 1px var(--line-2)}
.eh-iconbtn:not(.eh-iconbtn--outline):disabled{box-shadow:none}
.eh-iconbtn[aria-pressed="true"]{color:var(--gold-ink)}
.eh-iconbtn[aria-pressed="true"] .eh-icon{fill:var(--gold);stroke:var(--gold-edge)}

/* точка «есть новое» и счётчик на кнопке-иконке */
.eh-dot{position:absolute;top:10px;right:11px;width:8px;height:8px;border-radius:var(--r-round);background:var(--ink);box-shadow:0 0 0 2px var(--dot-ring,var(--bg))}
.eh-dot--err{background:var(--err)}
.eh-iconbtn .eh-count{position:absolute;top:2px;right:0;box-shadow:0 0 0 2px var(--dot-ring,var(--bg))}

/* ссылка */
.eh-link{color:var(--ink);font-weight:var(--w-medium);text-decoration:underline;text-decoration-color:var(--line-3);text-decoration-thickness:1.5px;text-underline-offset:4px;border-radius:var(--s-0h);cursor:pointer;transition:text-decoration-color var(--dur-1)}
.eh-link:hover,.eh-link.is-hover{text-decoration-color:var(--ink)}
.eh-link--quiet{color:var(--ink-2);font-weight:var(--w-book)}
.eh-link--quiet:hover{color:var(--ink)}
.eh-link--danger{color:var(--err);text-decoration-color:color-mix(in srgb,var(--err) 45%,transparent)}
.eh-link--danger:hover{text-decoration-color:var(--err)}
.eh-link .eh-icon{width:16px;height:16px;margin-left:var(--s-0h);vertical-align:-2px}
button.eh-link{font:inherit;font-weight:var(--w-medium)}

/* ← Назад */
.eh-back{display:inline-flex;align-items:center;gap:var(--s-1h);height:var(--h-sm);padding:0 var(--s-3) 0 var(--s-2);margin-left:calc(var(--s-2) * -1);border-radius:var(--r-pill);font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium);color:var(--ink-2);transition:color var(--dur-1),background-color var(--dur-1)}
.eh-back .eh-icon{width:18px;height:18px}
.eh-back:hover,.eh-back.is-hover{color:var(--ink);background:var(--sunken)}

/* клавиша */
.eh-kbd{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 var(--s-1h);border-radius:var(--r-xs);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-2),inset 0 -2px 0 var(--line-1);font-family:var(--font);font-size:var(--fs-caption);line-height:1;font-weight:var(--w-medium);color:var(--ink-2);white-space:nowrap}

/* =====================================================================
   5. ПОЛЯ
   ===================================================================== */
.eh-field{display:grid;gap:var(--s-2);align-content:start;min-width:0}
.eh-field__label{font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium);color:var(--ink)}
.eh-field__opt{font-weight:var(--w-book);color:var(--ink-2)}
.eh-field__hint{font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-field__error{display:flex;gap:var(--s-1h);align-items:flex-start;font-size:var(--fs-caption);line-height:var(--lh-caption);font-weight:var(--w-medium);color:var(--err)}
.eh-field__error .eh-icon{width:16px;height:16px;margin-top:1px}
.eh-field__row{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s-3)}
.eh-field__counter{font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2);font-variant-numeric:tabular-nums}

.eh-input,.eh-textarea,.eh-select,.eh-inputgroup{width:100%;min-width:0;border:0;border-radius:var(--r-sm);background:var(--surface);color:var(--ink);font-size:var(--fs-body);line-height:var(--lh-body);box-shadow:inset 0 0 0 1px var(--line-3);transition:box-shadow var(--dur-1),background-color var(--dur-1)}
.eh-input,.eh-select{height:var(--h-md);padding:0 var(--s-4)}
.eh-input::placeholder,.eh-textarea::placeholder,.eh-inputgroup input::placeholder{color:var(--ink-3);opacity:1}
.eh-input:hover,.eh-textarea:hover,.eh-select:hover,.eh-inputgroup:hover,
.eh-input.is-hover,.eh-inputgroup.is-hover{box-shadow:inset 0 0 0 1px var(--ink-2)}
/* фокус поля — как у всего остального: синяя линия с зазором, плюс рамка становится синей */
.eh-input:focus,.eh-textarea:focus,.eh-select:focus,.eh-inputgroup:focus-within,
.eh-input.is-focus,.eh-textarea.is-focus,.eh-inputgroup.is-focus{outline:var(--focus);outline-offset:2px;box-shadow:inset 0 0 0 1.5px var(--ink)}
.eh-input[aria-invalid="true"],.eh-textarea[aria-invalid="true"],.eh-select[aria-invalid="true"],.eh-inputgroup:has([aria-invalid="true"]),.eh-inputgroup.is-error{box-shadow:inset 0 0 0 1.5px var(--err)}
.eh-input[aria-invalid="true"]:focus,.eh-textarea[aria-invalid="true"]:focus,.eh-select[aria-invalid="true"]:focus,.eh-inputgroup:has([aria-invalid="true"]):focus-within{outline:var(--focus-err);box-shadow:inset 0 0 0 1.5px var(--err)}
/* неактивно — песок и рамка; только чтение — без рамки, как текст (см. .eh-readonly) */
.eh-input:disabled,.eh-textarea:disabled,.eh-select:disabled,.eh-inputgroup:has(input:disabled){background:var(--sunken);color:var(--ink-off);box-shadow:inset 0 0 0 1px var(--line-2);cursor:not-allowed}
.eh-input:disabled::placeholder,.eh-textarea:disabled::placeholder{color:var(--ink-off)}
.eh-input:read-only:not(:disabled),.eh-inputgroup:has(input:read-only:not(:disabled)){background:transparent;box-shadow:none;padding-inline:var(--s-2);margin-inline:calc(var(--s-2) * -1);width:calc(100% + var(--s-4));cursor:default}
.eh-input:read-only:not(:disabled):focus-visible{outline:var(--focus);outline-offset:0}

/* значение только для чтения: подпись над, значение текстом и «Копировать» */
.eh-readonly{display:flex;align-items:center;gap:var(--s-3);min-height:var(--h-md);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink)}
.eh-readonly__value{min-width:0;font-weight:var(--w-medium);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.eh-readonly .eh-btn{flex:none}
.eh-input--tnum{font-variant-numeric:tabular-nums}
.eh-input--lg{height:var(--h-lg)}

.eh-textarea{display:block;min-height:120px;padding:var(--s-3) var(--s-4);resize:vertical}
.eh-select{appearance:none;-webkit-appearance:none;padding-right:var(--s-12);background-image:var(--img-chevron);background-repeat:no-repeat;background-position:right var(--s-3h) center;background-size:20px;cursor:pointer}

/* поле со значком, префиксом или суффиксом */
.eh-inputgroup{display:flex;align-items:center;gap:var(--s-2h);height:var(--h-md);padding:0 var(--s-4);cursor:text}
.eh-inputgroup > input{flex:1;min-width:0;height:100%;border:0;background:none;outline:none;font-size:var(--fs-body);color:var(--ink)}
.eh-inputgroup > input:focus-visible{outline:none}
.eh-inputgroup > .eh-icon{width:20px;height:20px;color:var(--ink-2)}
.eh-inputgroup__affix{color:var(--ink-2);white-space:nowrap;font-variant-numeric:tabular-nums}
.eh-inputgroup__affix--sep{padding-right:var(--s-2h);box-shadow:inset -1px 0 0 var(--line-2)}
.eh-inputgroup .eh-iconbtn{margin-right:calc(var(--s-2h) * -1)}

/* поиск */
.eh-search{display:flex;align-items:center;gap:var(--s-2h);height:var(--h-md);padding:0 var(--s-2) 0 var(--s-4);border-radius:var(--r-pill);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-3);transition:box-shadow var(--dur-1)}
.eh-search:hover,.eh-search.is-hover{box-shadow:inset 0 0 0 1px var(--ink-2)}
.eh-search:focus-within,.eh-search.is-focus{outline:var(--focus);outline-offset:2px;box-shadow:inset 0 0 0 1.5px var(--ink)}
.eh-search:has(.eh-search__clear:focus-visible,.eh-btn:focus-visible){outline:none}
.eh-search:has(input[aria-invalid="true"]){box-shadow:inset 0 0 0 1.5px var(--err)}
.eh-search:has(input[aria-invalid="true"]):focus-within{outline:var(--focus-err);box-shadow:inset 0 0 0 1.5px var(--err)}
.eh-search > .eh-icon{width:20px;height:20px;color:var(--ink-2)}
.eh-search > input{flex:1;min-width:0;height:100%;border:0;background:none;outline:none;font-size:var(--fs-body);color:var(--ink)}
.eh-search > input::placeholder{color:var(--ink-3);opacity:1}
.eh-search > input::-webkit-search-cancel-button{display:none}
.eh-search__clear{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:var(--r-round);color:var(--ink-2)}
.eh-search__clear:hover{background:var(--sunken);color:var(--ink)}
.eh-search__clear .eh-icon{width:18px;height:18px}
.eh-search > input:placeholder-shown ~ .eh-search__clear{display:none}
.eh-search .eh-kbd{margin-right:var(--s-1h)}
.eh-search--hero{height:var(--h-xl);padding:0 var(--s-2) 0 var(--s-6);gap:var(--s-3);box-shadow:var(--sh-1),inset 0 0 0 1px var(--line-3)}
.eh-search--hero:focus-within{box-shadow:var(--sh-1),inset 0 0 0 1.5px var(--ink)}
.eh-search--hero > .eh-icon{width:24px;height:24px;color:var(--ink)}
.eh-search--hero > input{font-size:var(--fs-body)}

/* код из 6 цифр */
.eh-code{display:flex;gap:var(--s-2);align-items:center}
.eh-code__cell{width:48px;height:56px;border:0;border-radius:var(--r-sm);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-3);text-align:center;font-size:var(--fs-title);line-height:1;font-weight:var(--w-medium);font-variant-numeric:tabular-nums;color:var(--ink);caret-color:var(--ink);transition:box-shadow var(--dur-1)}
.eh-code__cell:hover{box-shadow:inset 0 0 0 1px var(--ink-2)}
.eh-code__cell:focus,.eh-code__cell.is-focus{outline:var(--focus);outline-offset:2px;box-shadow:inset 0 0 0 1.5px var(--ink)}
.eh-code__cell:nth-child(3){margin-right:var(--s-2)}
.eh-code.is-error .eh-code__cell,.eh-code[aria-invalid="true"] .eh-code__cell{box-shadow:inset 0 0 0 1.5px var(--err)}
.eh-code.is-done .eh-code__cell{background:var(--ok-bg);box-shadow:inset 0 0 0 1.5px var(--ok)}
.eh-code.is-error .eh-code__cell:focus{outline:var(--focus-err)}
.eh-code__cell:disabled{background:var(--sunken);color:var(--ink-off);box-shadow:inset 0 0 0 1px var(--line-2)}

/* =====================================================================
   6. ФЛАЖОК, РАДИО, ПЕРЕКЛЮЧАТЕЛЬ
   <label class="eh-choice"><input type="checkbox" class="eh-checkbox">
     <span class="eh-choice__text">Текст<span class="eh-choice__hint">…</span></span></label>
   ===================================================================== */
.eh-choice{display:flex;align-items:flex-start;gap:var(--s-3);cursor:pointer;font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink)}
.eh-choice__text{display:grid;gap:var(--s-0h);min-width:0}
.eh-choice__hint{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-choice--between{justify-content:space-between}
.eh-choice--between .eh-choice__text{order:-1;flex:1}
.eh-choice:has(input:disabled){cursor:not-allowed}
.eh-choice:has(input:disabled) > .eh-choice__text{color:var(--ink-2)}

.eh-checkbox,.eh-radio,.eh-switch{appearance:none;-webkit-appearance:none;flex:none;display:inline-grid;place-items:center;margin:var(--s-0h) 0;background:var(--surface);box-shadow:inset 0 0 0 1.5px var(--line-3);cursor:pointer;transition:background-color var(--dur-1),box-shadow var(--dur-1)}
.eh-checkbox{width:20px;height:20px;border-radius:var(--s-1h)}
.eh-radio{width:20px;height:20px;border-radius:var(--r-round)}
.eh-checkbox::after{content:"";width:16px;height:16px;background:var(--ink);-webkit-mask:var(--img-check) center/16px no-repeat;mask:var(--img-check) center/16px no-repeat;opacity:0;transform:scale(.6);transition:opacity var(--dur-1),transform var(--dur-2) var(--ease)}
.eh-radio::after{content:"";width:8px;height:8px;border-radius:var(--r-round);background:var(--ink);opacity:0;transform:scale(.4);transition:opacity var(--dur-1),transform var(--dur-2) var(--ease)}
.eh-checkbox:hover,.eh-radio:hover,.eh-checkbox.is-hover,.eh-radio.is-hover{box-shadow:inset 0 0 0 1.5px var(--ink)}
.eh-checkbox:checked,.eh-radio:checked,.eh-checkbox:indeterminate{background:var(--gold);box-shadow:inset 0 0 0 1.5px var(--ink)}
.eh-checkbox:checked::after,.eh-radio:checked::after,.eh-checkbox:indeterminate::after{opacity:1;transform:none}
.eh-checkbox:indeterminate::after{-webkit-mask-image:var(--img-dash);mask-image:var(--img-dash)}
.eh-checkbox[aria-invalid="true"],.eh-radio[aria-invalid="true"]{box-shadow:inset 0 0 0 1.5px var(--err)}
.eh-checkbox:disabled,.eh-radio:disabled,.eh-switch:disabled{background:var(--sunken);box-shadow:inset 0 0 0 1.5px var(--line-2);cursor:not-allowed}
.eh-checkbox:disabled:checked,.eh-radio:disabled:checked{background:var(--line-2)}
.eh-checkbox:disabled::after,.eh-radio:disabled::after{background:var(--ink-3)}
.eh-checkbox.is-focus,.eh-radio.is-focus,.eh-switch.is-focus{outline:var(--focus);outline-offset:2px}
/* ошибка у флажка — всегда со строкой .eh-field__error под ним (aria-describedby) */
.eh-choice + .eh-field__error{margin-top:calc(var(--s-2) * -1);padding-left:calc(20px + var(--s-3))}

/* переключатель: <input type="checkbox" role="switch" class="eh-switch"> */
.eh-switch{position:relative;width:44px;height:24px;border-radius:var(--r-pill);display:inline-block}
.eh-switch::after{content:"";position:absolute;top:4px;left:4px;width:16px;height:16px;border-radius:var(--r-round);background:var(--line-3);transition:transform var(--dur-2) var(--ease),background-color var(--dur-1)}
.eh-switch:hover,.eh-switch.is-hover{box-shadow:inset 0 0 0 1.5px var(--ink)}
.eh-switch:checked{background:var(--gold);box-shadow:inset 0 0 0 1.5px var(--ink)}
.eh-switch:checked::after{transform:translateX(20px);background:var(--ink)}
.eh-switch:disabled::after{background:var(--line-2)}
.eh-switch:disabled:checked{background:var(--line-2);box-shadow:inset 0 0 0 1.5px var(--line-3)}
.eh-switch:disabled:checked::after{background:var(--ink-3)}

/* карточка выбора (услуга, формат, способ оплаты) */
.eh-option{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--s-1) var(--s-4);padding:var(--s-4) var(--s-5);border-radius:var(--r-lg);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-3);cursor:pointer;transition:box-shadow var(--dur-1)}
.eh-option:hover,.eh-option.is-hover{box-shadow:inset 0 0 0 1.5px var(--ink)}
.eh-option > input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
/* название услуги — везде одинаково: 16/24, medium, обычная «а» (как .eh-scard__name) */
.eh-option__title{font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium);font-variation-settings:'CRSV' 0,'SHRP' 0}
.eh-option__text{grid-column:1;font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-option__meta{grid-column:1;display:flex;flex-wrap:wrap;gap:var(--s-1) var(--s-4);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-option__meta span{display:inline-flex;align-items:center;gap:var(--s-1h)}
.eh-option__meta .eh-icon{width:16px;height:16px}
.eh-option__aside{grid-column:2;grid-row:1;justify-self:end;font-weight:var(--w-medium);font-variant-numeric:tabular-nums;white-space:nowrap}
.eh-option__tick{grid-column:2;grid-row:2 / span 2;align-self:end;justify-self:end;width:22px;height:22px;border-radius:var(--r-round);box-shadow:inset 0 0 0 1.5px var(--line-3);display:grid;place-items:center}
.eh-option__tick::after{content:"";width:14px;height:14px;background:var(--ink);-webkit-mask:var(--img-check) center/14px no-repeat;mask:var(--img-check) center/14px no-repeat;opacity:0}
.eh-option:has(input:checked),.eh-option.is-selected{box-shadow:inset 0 0 0 1.5px var(--gold-edge),0 0 0 4px var(--gold-soft)}
.eh-option:has(input:checked) .eh-option__tick,.eh-option.is-selected .eh-option__tick{background:var(--gold);box-shadow:inset 0 0 0 1.5px var(--ink)}
.eh-option:has(input:checked) .eh-option__tick::after,.eh-option.is-selected .eh-option__tick::after{opacity:1}
.eh-option:has(input:focus-visible){outline:var(--focus);outline-offset:3px}
.eh-option:has(input:disabled){background:var(--bg);cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--line-1)}
.eh-option:has(input:disabled) .eh-option__title{color:var(--ink-2)}

/* =====================================================================
   7. СЕГМЕНТЫ И ЧИПЫ
   ===================================================================== */
/* сегменты: role="tablist" + role="tab" aria-selected, или role="radiogroup" + role="radio" aria-checked */
.eh-seg{display:inline-flex;align-items:center;gap:var(--s-0h);height:var(--h-sm);padding:var(--s-1);border-radius:var(--r-pill);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-3)}
.eh-field > .eh-seg,.eh-field__row > .eh-seg{justify-self:start}
.eh-seg__item{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-1h);height:var(--h-xs);padding:0 var(--s-3h);border-radius:var(--r-pill);font-size:var(--fs-small);line-height:1;color:var(--ink-2);white-space:nowrap;transition:background-color var(--dur-1),color var(--dur-1),box-shadow var(--dur-1)}
.eh-seg__item .eh-icon{width:16px;height:16px}
.eh-seg__item:hover,.eh-seg__item.is-hover{color:var(--ink);background:var(--sunken)}
.eh-seg__item[aria-selected="true"],.eh-seg__item[aria-checked="true"],.eh-seg__item[aria-pressed="true"],.eh-seg__item.is-selected{background:var(--gold-soft);color:var(--ink);font-weight:var(--w-medium);box-shadow:inset 0 0 0 1.5px var(--gold-edge)}
.eh-seg__item[aria-selected="true"] .eh-icon,.eh-seg__item[aria-checked="true"] .eh-icon{color:var(--gold-ink)}
.eh-seg__item:focus-visible{outline-offset:0}
.eh-seg__item:disabled{color:var(--ink-off);background:transparent;text-decoration:line-through}
.eh-seg--lg{height:var(--h-md)}
.eh-seg--lg .eh-seg__item{height:var(--h-sm);padding:0 var(--s-4h);font-size:var(--fs-body)}
.eh-seg--block{display:flex;width:100%}
.eh-seg--block .eh-seg__item{flex:1}

/* чип-фильтр: <button class="eh-chip" aria-pressed="false"> */
.eh-chip{display:inline-flex;align-items:center;gap:var(--s-2);height:var(--h-sm);padding:0 var(--s-4);border-radius:var(--r-pill);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-3);font-size:var(--fs-small);line-height:1;font-weight:var(--w-regular);color:var(--ink);white-space:nowrap;cursor:pointer;transition:background-color var(--dur-1),box-shadow var(--dur-1)}
.eh-chip > .eh-icon{width:18px;height:18px;color:var(--ink-2)}
.eh-chip:hover,.eh-chip.is-hover{box-shadow:inset 0 0 0 1.5px var(--ink-2)}
/* выбранный: светлое золото, синяя рамка и галочка — отличается и без цвета */
.eh-chip[aria-pressed="true"],.eh-chip[aria-checked="true"],.eh-chip.is-selected{background:var(--gold-soft);box-shadow:inset 0 0 0 1.5px var(--ink);font-weight:var(--w-medium);padding-left:var(--s-3)}
.eh-chip[aria-pressed="true"]::before,.eh-chip[aria-checked="true"]::before,.eh-chip.is-selected::before{content:"";width:16px;height:16px;flex:none;margin-right:calc(var(--s-1) * -1);background:var(--gold-ink);-webkit-mask:var(--img-check) center/16px no-repeat;mask:var(--img-check) center/16px no-repeat}
.eh-chip[aria-pressed="true"]:hover,.eh-chip.is-selected:hover{background:var(--gold-soft-hover)}
.eh-chip[aria-pressed="true"] > .eh-icon,.eh-chip.is-selected > .eh-icon{color:var(--gold-ink)}
.eh-chip:disabled,.eh-chip[aria-disabled="true"]{background:transparent;color:var(--ink-off);box-shadow:inset 0 0 0 1px var(--line-2);cursor:not-allowed}
.eh-chip--sm{height:var(--h-xs);padding:0 var(--s-3);gap:var(--s-1h)}
.eh-chip--sm[aria-pressed="true"],.eh-chip--sm.is-selected{padding-left:var(--s-2h)}
.eh-chip--sm > .eh-icon{width:16px;height:16px}
/* чип, открывающий меню */
.eh-chip--select{padding-right:var(--s-2h)}
.eh-chip--select > .eh-icon:last-child{color:var(--ink);transition:transform var(--dur-2) var(--ease)}
.eh-chip--select[aria-expanded="true"] > .eh-icon:last-child{transform:rotate(180deg)}
/* чип темы с пастельной точкой */
.eh-chip--topic{padding-left:var(--s-1h)}
.eh-chip--topic[aria-pressed="true"],.eh-chip--topic.is-selected{padding-left:var(--s-2h)}
.eh-chip__dot{display:inline-grid;place-items:center;width:var(--h-chip-sm);height:var(--h-chip-sm);flex:none;border-radius:var(--r-round);background:var(--tone-bg,var(--sunken));color:var(--tone-ink,var(--ink))}
.eh-chip__dot .eh-icon{width:16px;height:16px}
/* применённый фильтр с крестиком */
.eh-chip__remove{display:inline-grid;place-items:center;width:24px;height:24px;margin-right:calc(var(--s-2) * -1);border-radius:var(--r-round);color:var(--ink-2)}
.eh-chip__remove:hover{background:var(--sunken);color:var(--ink)}
.eh-chip__remove .eh-icon{width:16px;height:16px}

/* тона тем — задают --tone-bg / --tone-ink для меток, точек и инициалов */
.eh-t-love{--tone-bg:var(--t-love);--tone-ink:var(--t-love-ink)}
.eh-t-career{--tone-bg:var(--t-career);--tone-ink:var(--t-career-ink)}
.eh-t-purpose{--tone-bg:var(--t-purpose);--tone-ink:var(--t-purpose-ink)}
.eh-t-move{--tone-bg:var(--t-move);--tone-ink:var(--t-move-ink)}
.eh-t-year{--tone-bg:var(--t-year);--tone-ink:var(--t-year-ink)}
.eh-t-kids{--tone-bg:var(--t-kids);--tone-ink:var(--t-kids-ink)}
.eh-t-neutral{--tone-bg:var(--sunken);--tone-ink:var(--ink)}

/* метка темы (не нажимается) */
.eh-topic{display:inline-flex;align-items:center;gap:var(--s-2);height:var(--h-sm);padding:0 var(--s-4) 0 var(--s-3);border-radius:var(--r-pill);background:var(--tone-bg,var(--sunken));color:var(--tone-ink,var(--ink));font-size:var(--fs-small);line-height:1;font-weight:var(--w-medium);white-space:nowrap}
.eh-topic .eh-icon{width:18px;height:18px}
.eh-topic--sm{height:var(--h-chip-sm);padding:0 var(--s-2h) 0 var(--s-2);gap:var(--s-1h);font-size:var(--fs-caption)}
.eh-topic--sm .eh-icon{width:16px;height:16px}
a.eh-topic:hover{box-shadow:inset 0 0 0 1.5px var(--tone-ink,var(--ink))}

/* =====================================================================
   8. СТАТУСЫ, ПРОВЕРКА, СЧЁТЧИКИ
   ===================================================================== */
/* бейдж: точка + слово */
.eh-badge{--bb:var(--sunken);--bi:var(--ink-2);--bd:var(--ink-3);display:inline-flex;align-items:center;gap:var(--s-1h);height:24px;padding:0 var(--s-2h) 0 var(--s-2);border-radius:var(--r-pill);background:var(--bb);color:var(--bi);font-size:var(--fs-caption);line-height:1;font-weight:var(--w-strong);white-space:nowrap;font-variant-numeric:tabular-nums}
.eh-badge::before{content:"";width:6px;height:6px;flex:none;border-radius:var(--r-round);background:var(--bd)}
.eh-badge--ok{--bb:var(--ok-bg);--bi:var(--ok);--bd:var(--ok)}
.eh-badge--warn{--bb:var(--warn-bg);--bi:var(--warn);--bd:var(--warn)}
.eh-badge--err{--bb:var(--err-bg);--bi:var(--err);--bd:var(--err)}
.eh-badge--info{--bb:var(--info-bg);--bi:var(--info);--bd:var(--info)}
.eh-badge--neutral{--bb:var(--sunken);--bi:var(--ink-2);--bd:var(--ink-3)}
/* «сейчас» — единственный бейдж с золотом */
.eh-badge--now{--bb:var(--gold-soft);--bi:var(--ink);--bd:var(--gold)}
/* точка в кольце; при появлении кольцо один раз мягко расходится — без бесконечной пульсации */
.eh-badge--now::before{width:8px;height:8px;box-shadow:0 0 0 1.5px var(--gold-edge);animation:eh-now 1.2s var(--ease) 1}
.eh-badge--lg{height:28px;padding:0 var(--s-3) 0 var(--s-2h);font-size:var(--fs-small)}
.eh-badge--plain{background:transparent;padding:0}
/* в узком месте (статус страницы в меню) — переносится, точка по первой строке */
.eh-badge--wrap{height:auto;min-height:24px;padding-block:var(--s-0h);border-radius:var(--r-sm);white-space:normal;align-items:flex-start;line-height:var(--lh-caption)}
.eh-badge--wrap::before{margin-top:var(--s-1h)}

/* счётчик в меню и вкладках */
.eh-count{display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 var(--s-2);border-radius:var(--r-pill);background:var(--sunken);color:var(--ink);font-size:var(--fs-caption);line-height:1;font-weight:var(--w-strong);font-variant-numeric:tabular-nums}
.eh-count--strong{background:var(--ink);color:var(--on-ink)}
.eh-count--sm{min-width:20px;height:20px;padding:0 var(--s-1h)}

/* метка «Проверенный астролог» */
.eh-verified{display:inline-flex;align-items:center;gap:var(--s-1h);min-height:var(--h-chip-sm);border-radius:var(--r-pill);color:var(--ink-2);font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium);white-space:nowrap}
.eh-verified .eh-rosette{width:20px;height:20px}
.eh-verified > .eh-icon{width:16px;height:16px;color:var(--ink-3);transition:transform var(--dur-1)}
button.eh-verified,a.eh-verified{padding:0 var(--s-2) 0 var(--s-1);margin-left:calc(var(--s-1) * -1);cursor:pointer;transition:background-color var(--dur-1),color var(--dur-1)}
button.eh-verified:hover,a.eh-verified:hover,.eh-verified.is-hover{background:var(--sunken);color:var(--ink)}
button.eh-verified:hover > .eh-icon,a.eh-verified:hover > .eh-icon{transform:translateX(2px)}
.eh-verified--lg{font-size:var(--fs-body);line-height:var(--lh-body);gap:var(--s-2)}
.eh-verified--lg .eh-rosette{width:24px;height:24px}

/* бейдж практики — круг с цветом и значком практики:
   <span class="eh-practice eh-practice--24 eh-p-tarot is-verified" role="img" aria-label="Таро, проверено ElevenHouse">
     <svg class="eh-icon"><use href="#i-p-tarot"/></svg><svg class="eh-practice__state"><use href="#i-verified"/></svg></span>
   Розетка в правом нижнем углу — проверено; часы на песке — на проверке (только кабинет и админка);
   --other — первая буква названия на песке, без розетки. Значок — две трети круга.
   Кольцо вокруг уголка — цвета фона: --pb-ring (по умолчанию слоновая кость, в карточках и окнах — белый) */
.eh-practice{--pb:24px;--pb-state:12px;--pb-sw:2;position:relative;display:inline-grid;place-items:center;width:var(--pb);height:var(--pb);flex:none;border-radius:var(--r-round);background:var(--tone-bg,var(--sunken));color:var(--tone-ink,var(--ink));vertical-align:middle}
.eh-practice > .eh-icon{width:calc(var(--pb) * 2 / 3);height:calc(var(--pb) * 2 / 3);stroke-width:var(--pb-sw)}
.eh-practice--20{--pb:20px;--pb-state:10px;--pb-sw:2.25}
.eh-practice--24{--pb:24px;--pb-state:12px;--pb-sw:2}
.eh-practice--32{--pb:32px;--pb-state:14px;--pb-sw:1.75}
.eh-practice--40{--pb:40px;--pb-state:16px;--pb-sw:1.5}
.eh-practice--56{--pb:56px;--pb-state:16px;--pb-sw:1.25}
.eh-practice__state{position:absolute;right:calc(var(--pb-state) * -.3);bottom:calc(var(--pb-state) * -.3);width:var(--pb-state);height:var(--pb-state);border-radius:var(--r-round);background:var(--pb-ring,var(--bg));box-shadow:0 0 0 2px var(--pb-ring,var(--bg))}
.eh-practice__state--pending{display:grid;place-items:center;background:var(--sunken);color:var(--ink)}
.eh-practice__state--pending > .eh-icon{width:85%;height:85%;stroke-width:2.5}
.eh-practice__letter{font-size:var(--fs-caption);line-height:1;font-weight:var(--w-strong)}
.eh-practice--32 .eh-practice__letter{font-size:var(--fs-body)}
.eh-practice--40 .eh-practice__letter{font-size:var(--fs-h3)}
.eh-practice--56 .eh-practice__letter{font-size:var(--fs-title)}
.eh-practice[tabindex]{cursor:default}
.eh-practice[tabindex]:focus-visible{outline-offset:1px}
.eh-p-astro{--tone-bg:var(--p-astro-bg);--tone-ink:var(--p-astro)}
.eh-p-tarot{--tone-bg:var(--p-tarot-bg);--tone-ink:var(--p-tarot)}
.eh-p-numer{--tone-bg:var(--p-numer-bg);--tone-ink:var(--p-numer)}
.eh-p-matrix{--tone-bg:var(--p-matrix-bg);--tone-ink:var(--p-matrix)}
.eh-p-hd{--tone-bg:var(--p-hd-bg);--tone-ink:var(--p-hd)}
.eh-p-runes{--tone-bg:var(--p-runes-bg);--tone-ink:var(--p-runes)}
.eh-p-other{--tone-bg:var(--sunken);--tone-ink:var(--ink)}
.eh-card,.eh-scard,.eh-menu,.eh-modal,.eh-sheet,.eh-table,.eh-popover,.eh-option{--pb-ring:var(--surface)}
/* ряд практик: <span class="eh-practices" data-eh-max="3" data-eh-roving=".eh-practice, .eh-practices__more">.
   Лишнее eh.js прячет в «+N» (одна остановка Tab на ряд, список — в подсказке и по касанию) */
.eh-practices{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--s-1h);vertical-align:middle}
.eh-practices--20{gap:var(--s-1)}
.eh-practices__more{display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 var(--s-1h);border-radius:var(--r-pill);box-shadow:inset 0 0 0 1px var(--line-2);font-size:var(--fs-caption);line-height:1;font-weight:var(--w-medium);color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.eh-practices--20 .eh-practices__more{min-width:20px;height:20px;padding:0 var(--s-1)}
.eh-practices--32 .eh-practices__more{min-width:32px;height:32px}
button.eh-practices__more{cursor:pointer;transition:color var(--dur-1),box-shadow var(--dur-1)}
button.eh-practices__more:hover{color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink-2)}
.eh-acard .eh-practices,.eh-scard .eh-practices,.eh-card--link .eh-practices,.eh-notice .eh-practices{position:relative;z-index:1}
/* строка «кто»: «Проверенный таролог» и ряд бейджей. Не обрезается: длинная специализация занимает строку, значки переносятся */
.eh-who{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-1h) var(--s-3)}
.eh-who > .eh-verified{white-space:normal}
/* чип «Кто нужен»: <button class="eh-chip eh-chip--practice"><span class="eh-chip__dot eh-p-tarot">значок</span>Таролог</button> */
.eh-chip--practice{padding-left:var(--s-1h)}
.eh-chip--practice[aria-pressed="true"],.eh-chip--practice[aria-checked="true"],.eh-chip--practice.is-selected{padding-left:var(--s-2h)}

/* метки на карточке: заслуженный факт и отметка условия эксперта.
   Значок и слова цветом вторичного текста, без подложки — не капсула на песке (это «Реклама»), не зелёные, не золотые */
.eh-fact,.eh-term{display:inline-flex;align-items:center;gap:var(--s-1h);font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-book);color:var(--ink-2)}
.eh-fact > .eh-icon,.eh-term > .eh-icon{width:18px;height:18px;flex:none}
/* отметка условия — кнопка: по нажатию точное условие («Бесплатная отмена — до пн 26 октября, 19:00») */
.eh-term{position:relative;min-height:var(--h-xs);margin-inline:calc(var(--s-1) * -1);padding:0 var(--s-1);border-radius:var(--r-xs);cursor:pointer;text-align:left;transition:color var(--dur-1),background-color var(--dur-1)}
.eh-term > span{text-decoration:underline dotted;text-decoration-color:var(--line-3);text-decoration-thickness:1.5px;text-underline-offset:4px}
.eh-term:hover{color:var(--ink);background:var(--sunken)}
/* компактная — только значок (карточка каталога), слово — в подсказке и для экранного диктора; зона нажатия 44 */
.eh-term--icon{justify-content:center;width:var(--h-xs);height:var(--h-xs);min-height:0;margin:0;padding:0;border-radius:var(--r-round)}
.eh-term--icon::before{content:"";position:absolute;inset:calc((var(--h-touch) - var(--h-xs)) / -2)}
.eh-term--icon > .eh-icon{width:20px;height:20px}
/* «Бесплатная отмена и перенос» — оба значка в одной кнопке */
.eh-term--pair{gap:var(--s-1)}
.eh-term--icon.eh-term--pair{width:auto;padding-inline:var(--s-1h);border-radius:var(--r-pill)}
/* легенда значков условий — рядом с часовым поясом над карточками: значок на карточке без слова, здесь он назван */
.eh-termlegend{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-1) var(--s-4);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-termlegend > span{display:inline-flex;align-items:center;gap:var(--s-1h)}
.eh-termlegend .eh-icon{width:20px;height:20px;flex:none;color:var(--ink)}
/* значок подписки в легенде — тот же, что на карточке (36 × 24), не нажимается */
.eh-termlegend .eh-status{margin-block:calc(var(--s-0h) * -1)}
/* формат услуги: значок и слово, параметр — вторым цветом. Одинаково в карточке, строке услуги, отзыве, меню */
.eh-fmt{display:inline-flex;align-items:center;gap:var(--s-1h);min-width:0;vertical-align:middle}
.eh-fmt > .eh-icon{width:18px;height:18px;flex:none;color:var(--ink)}
.eh-fmt i{font-style:normal;color:var(--ink-2)}

/* номер в кружке: части шаблона, шаги, легенды */
.eh-num{display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 var(--s-1);flex:none;border-radius:var(--r-pill);background:var(--ink);color:var(--on-ink);font-size:var(--fs-caption);line-height:1;font-weight:var(--w-strong);font-variant-numeric:tabular-nums}

/* =====================================================================
   9. РЕЙТИНГ И АВАТАРЫ
   ===================================================================== */
.eh-rating{display:inline-flex;align-items:center;gap:var(--s-1);font-weight:var(--w-medium);font-variant-numeric:tabular-nums;color:var(--ink);white-space:nowrap}
.eh-rating > .eh-icon{width:16px;height:16px}
.eh-rating__count{color:var(--ink-2);font-weight:var(--w-book);margin-left:var(--s-1)}
.eh-rating--new{color:var(--ink-2);font-weight:var(--w-medium)}
.eh-rating--new > .eh-icon{color:var(--ink)}
.eh-rating--lg{font-size:var(--fs-h3);line-height:var(--lh-h3);gap:var(--s-2)}
.eh-rating--lg > .eh-icon{width:22px;height:22px}
.eh-stars{display:inline-flex;gap:var(--s-0h)}
.eh-stars .eh-icon{width:18px;height:18px}
.eh-stars--sm .eh-icon{width:14px;height:14px}
.eh-stars--lg .eh-icon{width:24px;height:24px}

/* аватар: <img class="eh-avatar"> или <span class="eh-avatar eh-t-love">НК</span> */
.eh-avatar{--size:40px;display:inline-grid;place-items:center;width:var(--size);height:var(--size);flex:none;border-radius:var(--r-round);overflow:hidden;object-fit:cover;background:var(--tone-bg,var(--sunken));color:var(--tone-ink,var(--ink));font-size:var(--fs-small);line-height:1;font-weight:var(--w-strong);letter-spacing:.01em;user-select:none}
.eh-avatar--24{--size:24px;font-size:var(--fs-caption)}
.eh-avatar--32{--size:32px;font-size:var(--fs-caption)}
.eh-avatar--40{--size:40px}
.eh-avatar--48{--size:48px;font-size:var(--fs-body)}
.eh-avatar--56{--size:56px;font-size:var(--fs-h3)}
.eh-avatar--72{--size:72px;font-size:var(--fs-title)}
.eh-avatar--96{--size:96px;font-size:var(--fs-h2)}
/* астролог — скруглённый квадрат и общая цветокоррекция */
.eh-avatar--pro{border-radius:var(--r-photo)}
img.eh-avatar--pro{filter:var(--photo-grade)}
.eh-avatars{display:inline-flex;align-items:center}
.eh-avatars > .eh-avatar{box-shadow:0 0 0 3px var(--avatar-ring,var(--surface));position:relative}
.eh-avatars > .eh-avatar + .eh-avatar{margin-left:calc(var(--size) * -.28)}
/* аватар ElevenHouse — только у сотрудников: «Поддержка ElevenHouse», категория «Платформа», «Мы обновили правила».
   Синий круг и золотой знак «eh» шириной 60 %: <span class="eh-avatar eh-avatar--40 eh-avatar--brand"><svg class="eh-mark">… */
.eh-avatar--brand{background:var(--action);color:var(--gold)}
.eh-avatar--brand > .eh-mark{width:60%;height:calc(var(--size) * .6 / 1.4906);color:var(--gold)}
/* знак на лице близкого (K1 «Нужно сделать», K7 карточки людей): кольца у партнёра, росток у ребёнка.
   <span class="eh-avatar-wrap eh-t-love"><span class="eh-avatar eh-avatar--40 eh-t-love">А</span><span class="eh-avatar__mark"><svg class="eh-icon">…</svg></span></span>
   Цвет — тон лица (--tone-ink); у 56 и больше — .eh-avatar__mark--lg */
.eh-avatar-wrap{position:relative;display:inline-grid;flex:none}
.eh-avatar__mark{position:absolute;right:calc(var(--s-1) * -1);bottom:calc(var(--s-1) * -1);display:grid;place-items:center;width:var(--s-5);height:var(--s-5);border-radius:var(--r-round);background:var(--surface);box-shadow:var(--sh-1);color:var(--tone-ink,var(--ink))}
.eh-avatar__mark .eh-icon{width:var(--s-3h);height:var(--s-3h)}
.eh-avatar__mark--lg{width:var(--s-6);height:var(--s-6)}
.eh-avatar__mark--lg .eh-icon{width:var(--s-4);height:var(--s-4)}

/* =====================================================================
   10. КАРТОЧКИ
   ===================================================================== */
.eh-card{position:relative;background:var(--surface);border-radius:var(--r-lg);padding:var(--s-6);box-shadow:inset 0 0 0 1px var(--line-1)}
.eh-card--lg{padding:var(--s-8)}
.eh-card--sm{padding:var(--s-4) var(--s-5);border-radius:var(--r-md)}
/* тень — только у того, с чем можно действовать */
.eh-card--raised{box-shadow:var(--sh-2)}
.eh-card--sunken{background:var(--bg);box-shadow:none}
.eh-card--link{box-shadow:var(--sh-2);cursor:pointer;transition:box-shadow var(--dur-2)}
.eh-card--link:hover,.eh-card--link.is-hover{box-shadow:var(--sh-3)}
.eh-card--link:has(.eh-stretched:focus-visible){outline:var(--focus);outline-offset:3px}
.eh-card.is-selected{box-shadow:inset 0 0 0 1.5px var(--gold-edge),0 0 0 4px var(--gold-soft)}
.eh-card__head{display:flex;justify-content:space-between;align-items:center;gap:var(--s-4);margin-bottom:var(--s-4)}
.eh-card__title{font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:var(--w-medium);letter-spacing:var(--ls-h3);font-variation-settings:'CRSV' 1,'SHRP' 0}
.eh-card__foot{display:flex;justify-content:space-between;align-items:center;gap:var(--s-4);margin-top:var(--s-4);padding-top:var(--s-4);border-top:1px solid var(--line-1)}
.eh-card__foot > :last-child{flex:none;white-space:nowrap}
.eh-card__foot > :first-child{min-width:0}

/* «Выбрана» — галочка и слово цветом золота-чернил */
.eh-picked{display:inline-flex;align-items:center;gap:var(--s-1);font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium);color:var(--gold-ink);white-space:nowrap}
.eh-picked .eh-icon{width:16px;height:16px;stroke-width:2}

/* ---- карточка услуги: страница астролога, «Услуги», оформление записи ---- */
.eh-scard{position:relative;display:flex;flex-direction:column;gap:var(--s-1);background:var(--surface);border-radius:var(--r-lg);padding:var(--s-6);box-shadow:inset 0 0 0 1px var(--line-1)}
.eh-scard--link{box-shadow:var(--sh-2);cursor:pointer;transition:box-shadow var(--dur-2)}
.eh-scard--link:hover,.eh-scard--link.is-hover{box-shadow:var(--sh-3)}
.eh-scard--link:has(.eh-stretched:focus-visible){outline:var(--focus);outline-offset:3px}
.eh-scard.is-selected{box-shadow:inset 0 0 0 1.5px var(--gold-edge),0 0 0 4px var(--gold-soft)}
.eh-scard__name{font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium);font-variation-settings:'CRSV' 0,'SHRP' 0;letter-spacing:0}
.eh-scard__text{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-scard__meta{display:flex;flex-wrap:wrap;gap:var(--s-1) var(--s-4);margin-top:var(--s-2);margin-bottom:var(--s-4);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-scard__meta > span{display:inline-flex;align-items:center;gap:var(--s-1h)}
.eh-scard__meta .eh-icon{width:16px;height:16px}
.eh-scard__foot{display:flex;justify-content:space-between;align-items:center;gap:var(--s-4);margin-top:auto;padding-top:var(--s-4);border-top:1px solid var(--line-1)}
.eh-scard__foot > :last-child{flex:none;white-space:nowrap}
.eh-scard .eh-btn,.eh-scard .eh-iconbtn{position:relative;z-index:1}

/* ---- показатель: «Доход за октябрь» — подпись, число, изменение, подвал ---- */
.eh-stat{display:flex;flex-direction:column;background:var(--surface);border-radius:var(--r-lg);padding:var(--s-6);box-shadow:inset 0 0 0 1px var(--line-1)}
.eh-stat__head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s-3);margin-bottom:var(--s-2)}
.eh-stat__label{font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium);color:var(--ink-2)}
.eh-stat__value{font-size:var(--fs-title);line-height:var(--lh-title);font-weight:var(--w-book);letter-spacing:var(--ls-title);font-variant-numeric:tabular-nums;white-space:nowrap}
.eh-stat__delta{margin-top:var(--s-1);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-stat__delta > b{font-weight:var(--w-medium);white-space:nowrap}
.eh-stat__delta--up > b{color:var(--ok)}
.eh-stat__delta--down > b{color:var(--err)}
.eh-stat__foot{display:flex;justify-content:space-between;align-items:center;gap:var(--s-4);margin-top:auto;padding-top:var(--s-4);border-top:1px solid var(--line-1);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-stat__delta + .eh-stat__foot,.eh-stat__value + .eh-stat__foot{margin-top:var(--s-4)}
.eh-stat__foot > :last-child{flex:none;white-space:nowrap;color:var(--ink);font-weight:var(--w-medium);font-variant-numeric:tabular-nums}
/* ссылка, растянутая на всю карточку; кнопки внутри — поверх неё */
.eh-stretched::after{content:"";position:absolute;inset:0;border-radius:inherit;z-index:0}
.eh-stretched:focus-visible{outline:none}
.eh-card--link .eh-btn,.eh-card--link .eh-iconbtn,.eh-card--link .eh-link:not(.eh-stretched){position:relative;z-index:1}

.eh-price{font-size:var(--fs-h3);line-height:var(--lh-num);font-weight:var(--w-medium);font-variant-numeric:tabular-nums;white-space:nowrap}
.eh-price small{display:block;margin-top:var(--s-0h);font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-book);color:var(--ink-2)}
.eh-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-1) var(--s-4);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-meta > span{display:inline-flex;align-items:center;gap:var(--s-1h)}
.eh-meta .eh-icon{width:16px;height:16px}

/* список «подпись — значение» */
.eh-dl{display:grid;grid-template-columns:minmax(120px,max-content) minmax(0,1fr);gap:var(--s-3) var(--s-6);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-dl dt{color:var(--ink-2)}
.eh-dl dd{color:var(--ink);font-variant-numeric:tabular-nums}

/* циферблат «ближайшее окно» — рисует eh.js по data-time="18:30" */
.eh-dial{display:inline-block;vertical-align:middle;width:22px;height:22px;flex:none}
.eh-dial svg{width:100%;height:100%;overflow:visible;fill:none;stroke-linecap:round}
.eh-dial__ticks{stroke:var(--ink-3);stroke-width:1.5}
.eh-dial__hand{stroke:var(--ink);stroke-width:1.5}
.eh-dial__win{fill:var(--gold);stroke:var(--ink);stroke-width:1.2}
.eh-dial--40{width:40px;height:40px}

/* ---- карточка эксперта: каталог, главная, страницы тем и практик, «Похожие», превью в A27, A37, A40 ----
   Три вида: обычная · --prio (приоритет по подписке: значок подписки — знак «eh» без слова — на нижнем крае фото, __status) ·
   --ad (реклама: песочная кромка и капсула «Реклама» с «i» на верхней рамке). Один платный вид: --ad важнее --prio.
   Внутри не больше трёх меток: «Проверенный …» с бейджами (__who), один факт (__fact), одно условие у окна
   (__terms). Уже 320 px — два бейджа и две метки. Золото — только розетка, звезда и циферблат окна.
   Низ «услуга — окно — цена» (__deal) прижат к низу: в ряду сетки окна, цены и кнопки стоят на одной линии. */
.eh-acard{position:relative;display:flex;flex-direction:column;min-width:0;container:acard / inline-size;background:var(--surface);border-radius:var(--r-lg);padding:var(--s-6);box-shadow:var(--sh-2);cursor:pointer;transition:box-shadow var(--dur-2)}
.eh-acard:hover,.eh-acard.is-hover{box-shadow:var(--sh-3)}
.eh-acard:has(.eh-acard__link:focus-visible){outline:var(--focus);outline-offset:3px}
/* приоритет по подписке: рамка и тень как у обычной — выделяет только значок подписки на крае фото (__status).
   Своё оформление эксперта (Team Pro, Studio) на карточку каталога не переносим: значок один у всех */
/* .eh-status ниже в файле задаёт position:relative — поэтому два класса */
.eh-acard > .eh-acard__status{--acard-pic:72px;position:absolute;z-index:1;left:calc(var(--s-6) + var(--acard-pic) / 2);top:calc(var(--s-6) + var(--acard-pic) - var(--s-1));transform:translate(-50%,-50%);box-shadow:0 0 0 2px var(--status-ring)}
.eh-acard--ad{box-shadow:inset 0 0 0 1px var(--promo-edge),var(--sh-2)}
.eh-acard--ad:hover,.eh-acard--ad.is-hover{box-shadow:inset 0 0 0 1px var(--promo-edge),var(--sh-3)}
.eh-acard.is-selected,.eh-acard.is-selected:hover{box-shadow:inset 0 0 0 2px var(--gold-edge),0 0 0 4px var(--gold-soft)}
.eh-acard__top{display:grid;grid-template-columns:72px minmax(0,1fr);gap:var(--s-4);align-items:start}
.eh-acard__photo{width:72px;height:72px;border-radius:var(--r-photo);object-fit:cover;background:var(--sunken);filter:var(--photo-grade)}
span.eh-acard__photo{--size:72px;filter:none;font-size:var(--fs-title)}
.eh-acard__head{min-width:0}
/* ♡ в углу стоит напротив имени: место под него держит имя, строки статистики идут на всю ширину */
.eh-acard__name{padding-right:var(--s-10);font-size:var(--fs-title);line-height:var(--lh-title);font-weight:var(--w-book);letter-spacing:var(--ls-title);font-variation-settings:'CRSV' 1,'SHRP' 0}
.eh-acard__link{color:inherit}
.eh-acard__link::after{content:"";position:absolute;inset:0;border-radius:inherit}
.eh-acard__link:focus-visible{outline:none}
/* статистика — всегда две строки: «★ 4,9 · 212 отзывов» / «11 лет практики · Команда «Луна»» — имена в ряду на одной высоте */
.eh-acard__stats{display:grid;margin-top:var(--s-0h);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-acard__stat{display:flex;align-items:center;gap:var(--s-2);min-width:0;white-space:nowrap}
.eh-acard__stat > *{flex:none}
.eh-acard__team{position:relative;z-index:1;flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;color:inherit;border-radius:var(--r-xs)}
.eh-acard__team:hover{color:var(--ink);text-decoration:underline;text-decoration-color:var(--line-3);text-underline-offset:var(--s-1)}
/* угол: капсула «Реклама» сидит на верхней рамке наполовину над кромкой, ♡ — внутри под ней */
.eh-acard__corner{position:absolute;top:var(--s-3);right:var(--s-3);z-index:1;display:flex;flex-direction:column;align-items:flex-end}
.eh-acard__corner > .eh-adtag{margin:calc((var(--s-3) + 12px) * -1) var(--s-1) 0 0}
.eh-acard__fav{color:var(--ink-2)}
.eh-acard__fav .eh-icon{width:22px;height:22px}
.eh-acard__who{margin-top:var(--s-3)}
.eh-acard__fact{display:flex;margin-top:var(--s-2)}
.eh-acard__tags{display:flex;flex-wrap:wrap;gap:var(--s-1h);margin-top:var(--s-3)}
/* низ: услуга (формат значком и словом, «Ещё: …») → окно → цена и кнопка */
.eh-acard__deal{display:grid;gap:var(--s-2);margin-top:auto;padding-top:var(--s-4)}
.eh-acard__offer{display:grid;min-width:0}
.eh-acard__fmt{display:flex;align-items:center;gap:var(--s-2);min-width:0;font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink)}
.eh-acard__fmt > .eh-icon{width:18px;height:18px;flex:none}
.eh-acard__fmt > span{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.eh-acard__fmt i{font-style:normal;color:var(--ink-2)}
.eh-acard__more{padding-left:calc(18px + var(--s-2));overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
/* окно: подпись над временем — одинаково у всех карточек и при любой ширине («Ближайшее окно», «Срок», «Начало») */
.eh-acard__slot{display:flex;align-items:center;gap:var(--s-3);min-height:var(--h-touch);padding:var(--s-1h) var(--s-3h);border-radius:var(--r-sm);background:var(--bg);color:var(--ink-2)}
.eh-acard__slot:has(.eh-acard__terms){padding-right:var(--s-1h)}
.eh-acard__when{display:grid;min-width:0}
.eh-acard__whenl{font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-acard__when b{overflow:hidden;font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink);font-weight:var(--w-medium);white-space:nowrap;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
.eh-acard__slot.is-none b{color:var(--ink-2);font-weight:var(--w-book)}
/* одно условие у ближайшего окна — компактным значком; слово и точное условие — в подсказке по нажатию */
.eh-acard__terms{position:relative;z-index:1;display:inline-flex;margin-left:auto}
.eh-acard__foot{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);padding-top:var(--s-1)}
.eh-acard__foot .eh-btn{position:relative;z-index:1}
.eh-acard__foot .eh-price{min-width:0}
.eh-acard .eh-practices{--pb-ring:var(--surface)}
@container acard (max-width:319px){
  .eh-acard__top{grid-template-columns:56px minmax(0,1fr);gap:var(--s-3)}
  .eh-acard__photo{width:56px;height:56px}
  span.eh-acard__photo{--size:56px}
  .eh-acard > .eh-acard__status{--acard-pic:56px}
  .eh-acard:has(.eh-acard__terms) .eh-acard__fact{display:none}
  .eh-acard__foot{flex-wrap:wrap;row-gap:var(--s-3)}
}
/* заготовка при загрузке — та же разметка, ярусы и высота, что у карточки: после загрузки ничего не прыгает */
.eh-acard--skel{cursor:default}
.eh-acard--skel:hover{box-shadow:var(--sh-2)}
.eh-acard--skel .eh-skel--text,.eh-acard--skel .eh-skel--title{display:inline-block;vertical-align:middle;margin:0}
.eh-acard--skel .eh-acard__who{display:flex;align-items:center;min-height:var(--h-chip-sm)}
.eh-acard--skel .eh-acard__fact,.eh-acard--skel .eh-acard__stat,.eh-acard--skel .eh-acard__fmt{display:flex;align-items:center;height:var(--lh-small)}
.eh-acard--skel .eh-acard__fmt,.eh-acard--skel .eh-acard__more{padding-left:0}
.eh-acard--skel .eh-acard__slot{background:var(--sunken);animation:eh-pulse 1.6s ease-in-out infinite}
.eh-acard--skel .eh-acard__when{visibility:hidden}
.eh-acard__skpill{height:var(--h-chip-sm);width:calc(var(--s-24) + var(--s-4))}
.eh-acard__skprice{height:var(--s-6);width:30%}
.eh-acard__skbtn{height:var(--h-sm);width:calc(var(--s-30) + var(--s-4))}

/* капсула «Реклама» с «i»: <button class="eh-adtag" data-eh-popover="#ad-1" aria-label="Реклама. Сведения о рекламодателе">.
   24 px на вид, зона нажатия 44. Песок и цвет вторичного текста — без золота и без пастелей */
.eh-adtag{position:relative;display:inline-flex;align-items:center;gap:var(--s-1);height:24px;padding:0 var(--s-1) 0 var(--s-2h);border-radius:var(--r-pill);background:var(--promo-tag-bg);box-shadow:inset 0 0 0 1px var(--promo-edge);color:var(--promo-tag-ink);font-size:var(--fs-caption);line-height:1;font-weight:var(--w-medium);white-space:nowrap;cursor:pointer;transition:color var(--dur-1),box-shadow var(--dur-1)}
.eh-adtag::before{content:"";position:absolute;inset:-10px -4px}
.eh-adtag > .eh-icon{width:16px;height:16px}
.eh-adtag:hover,.eh-adtag[aria-expanded="true"]{color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink-2)}
/* капсула в пояснениях («Как мы сортируем», G11, G12) — тот же вид, не нажимается */
.eh-adtag--static{cursor:default}
.eh-adtag--static::before{content:none}
.eh-adtag--static:hover{color:var(--promo-tag-ink);box-shadow:inset 0 0 0 1px var(--promo-edge)}

/* значок подписки: eh.status() → <button class="eh-status" data-eh-tip="…" data-eh-tip-toggle data-eh-tip-pos="below"
   aria-label="Карточка выше по подписке ElevenHouse"><svg class="eh-mark"><use href="#g-mark"/></svg></button>.
   Только знак ElevenHouse «eh», без слова тарифа (решение владельца 22 октября: ни «Pro», ни «Plus», ни «Studio»).
   Отмечает место карточки — «выше по подписке», а не человека: нет значка — место по качеству. Синяя плашка 36 × 24
   и знак слоновой костью — без золота (это розетка «Проверенный …») и без песка («Реклама»). Знак — символ #g-mark
   21 × 14 (1,4906 : 1) по центру капсулы, как в assets/status-badge.svg: при 16 px знак упирается в края капсулы,
   поле и контраст ему даёт сама капсула. Заменили знак — значок обновился сам. Зона нажатия 44. Слов нет — смысл в подписи для экранного
   диктора и в подсказке по наведению, фокусу и нажатию (открывается вниз). В пояснениях и легенде — --static */
.eh-status{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:none;width:36px;height:24px;padding:0;border-radius:var(--r-pill);background:var(--status-bg);color:var(--status-ink);line-height:1;vertical-align:middle}
.eh-status > .eh-mark{--mark-h:14px;width:21px;height:14px;color:inherit}
button.eh-status{cursor:pointer;transition:background-color var(--dur-1)}
button.eh-status::before{content:"";position:absolute;inset:-10px -4px}
button.eh-status:hover{background:var(--action-hover)}
button.eh-status:focus-visible{outline:var(--focus);outline-offset:2px}
.eh-status--static{cursor:default}

/* подсказка со ссылками: <div class="eh-popover" id="…" hidden> + кнопка data-eh-popover="#…" */
.eh-popover{position:fixed;z-index:var(--z-popover);width:max-content;max-width:min(352px,calc(100vw - var(--s-4)));padding:var(--s-4) var(--s-5) var(--s-5);background:var(--surface);border-radius:var(--r-md);box-shadow:var(--sh-3),inset 0 0 0 1px var(--line-1);color:var(--ink);font-size:var(--fs-small);line-height:var(--lh-small);text-align:left;cursor:auto;opacity:0;transform:translateY(-4px);transition:opacity var(--dur-2) var(--ease),transform var(--dur-2) var(--ease)}
.eh-popover.is-open{opacity:1;transform:none}
/* не помещается ни под кнопкой, ни над ней — max-height из eh.js и прокрутка внутри */
.eh-popover:not(.eh-popover--static){overflow-y:auto;overscroll-behavior:contain}
.eh-popover:focus{outline:none}
.eh-popover:focus-visible{outline:var(--focus);outline-offset:2px}
.eh-popover--static{position:relative;z-index:auto;opacity:1;transform:none}
.eh-popover__title{font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium)}
/* содержимое подсказки «i»: рекламодатель, ИНН, erid, почему вижу, «Как устроена реклама» (G11), «Пожаловаться» (G12) */
/* пары «подпись — значение»: <dl><div><dt><dd></div>…</dl>. Подпись — 40 % строки: длинная «Идентификатор рекламы»
   переносится на две строки, а не сжимает значения. В узкой подсказке (уже ~290 px, стайлгайд в три колонки)
   значение уходит под подпись целиком — ИНН и erid не ломаются посередине */
.eh-adinfo__facts{display:grid;gap:var(--s-1);margin-top:var(--s-2)}
.eh-adinfo__facts > div{display:flex;flex-wrap:wrap;column-gap:var(--s-3)}
.eh-adinfo__facts dt{flex:1 1 40%;color:var(--ink-2)}
.eh-adinfo__facts dd{flex:999 1 160px;min-width:0;overflow-wrap:anywhere}
.eh-adinfo__why{margin-top:var(--s-3);color:var(--ink-2)}
.eh-adinfo__links{display:flex;flex-wrap:wrap;gap:var(--s-2) var(--s-5);margin-top:var(--s-3);padding-top:var(--s-3);border-top:1px solid var(--line-1)}

/* строка человека в списке: «Похожие» строками, «Кто был в команде», «Мои эксперты» */
.eh-prow{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:var(--s-3) var(--s-6);padding-block:var(--s-4);border-radius:var(--r-sm)}
.eh-prow + .eh-prow{border-top:1px solid var(--line-1)}
.eh-prow:has(.eh-stretched:focus-visible){outline:var(--focus);outline-offset:var(--s-1)}
.eh-prow .eh-btn,.eh-prow .eh-practices{position:relative;z-index:1}
.eh-prow__main{display:grid;gap:var(--s-0h);min-width:0}
.eh-prow__name{font-weight:var(--w-medium)}
.eh-prow__name a{color:inherit}
.eh-prow__slot{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2);white-space:nowrap}
.eh-prow__slot b{margin-left:var(--s-1);color:var(--ink);font-weight:var(--w-medium)}
@container (max-width:760px){.eh-prow{grid-template-columns:auto minmax(0,1fr) auto}.eh-prow__slot{display:none}}
/* строка, которая нажимается целиком (K7 «Кто видит»: строка — подпись переключателя): подсветка при наведении на всю строку,
   разделитель — по ширине содержимого (концы линии не загибаются по скруглению), .is-target — строка, к которой привела ссылка */
.eh-prow--hover{margin-inline:calc(var(--s-3) * -1);padding-inline:var(--s-3);cursor:pointer;transition:background-color var(--dur-1)}
.eh-prow--hover + .eh-prow--hover{border-top:0}
.eh-prow--hover + .eh-prow--hover::before{content:"";position:absolute;top:0;left:var(--s-3);right:var(--s-3);border-top:1px solid var(--line-1)}
.eh-prow--hover:hover{background:var(--bg)}
.eh-prow--hover.is-target{background:var(--bg);box-shadow:inset 0 0 0 1px var(--line-2)}
@media (prefers-reduced-motion:reduce){.eh-prow--hover{transition:none}}

/* ---- строка консультации ---- */
/* Колонки: время · аватар · кто и услуга (сжимается последней) · формат · действие (по содержимому, до 320).
   Ширина списка < 960 — формат только значком; < 680 — действие уходит второй строкой. */
.eh-clist{display:grid;container-type:inline-size}
.eh-crow{display:grid;grid-template-columns:84px 40px minmax(200px,1fr) max-content fit-content(320px);gap:var(--s-4);align-items:center;padding:var(--s-3h) 0;border-top:1px solid var(--line-1);min-width:0}
.eh-clist > .eh-crow:first-child{border-top:0}
.eh-crow__time b{display:block;font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium);font-variant-numeric:tabular-nums}
.eh-crow__time span{display:block;font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2);font-variant-numeric:tabular-nums}
.eh-crow__who{min-width:0}
.eh-crow__who b{display:block;font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.eh-crow__who a{border-radius:var(--s-0h);text-decoration:none;font-weight:inherit}
.eh-crow__who a:hover{text-decoration:underline;text-decoration-color:var(--line-3);text-decoration-thickness:1.5px;text-underline-offset:4px}
.eh-crow__who span{display:block;font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.eh-crow__fmt{display:flex;align-items:center;gap:var(--s-2);min-width:0;font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-crow__fmt .eh-icon{width:18px;height:18px;flex:none}
.eh-crow__end{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--s-2) var(--s-3);white-space:nowrap;min-width:0}
.eh-crow__end .eh-money{font-weight:var(--w-medium)}
.eh-crow__ic{display:grid;place-items:center;width:var(--h-sm);height:var(--h-sm);border-radius:var(--r-round);background:var(--sunken);color:var(--ink)}
.eh-crow__ic .eh-icon{width:20px;height:20px}
.eh-crow--window .eh-crow__ic{background:transparent;border:1px dashed var(--line-3);color:var(--ink-2)}
.eh-crow--window .eh-crow__time b{color:var(--ink-2);font-weight:var(--w-regular)}
.eh-crow--task .eh-crow__ic{border-radius:var(--r-sm)}
.eh-crow.is-now .eh-crow__time b::after{content:"";display:inline-block;width:6px;height:6px;margin-left:var(--s-1h);vertical-align:3px;border-radius:var(--r-round);background:var(--gold);box-shadow:0 0 0 1.5px var(--gold-edge)}
.eh-crow.is-past{color:var(--ink-2)}
.eh-crow.is-past .eh-crow__who b{font-weight:var(--w-regular)}
.eh-crow.is-cancelled .eh-crow__time b,.eh-crow.is-cancelled .eh-crow__who > span{text-decoration:line-through;text-decoration-color:var(--ink-3);color:var(--ink-2)}
/* отменённая — зачёркнуты дата и услуга, а не человек (K2) */
.eh-crow.is-cancelled .eh-crow__who b{color:var(--ink-2)}
/* список с общими колонками: формат, статус и действие начинаются на одном x во всех строках.
   <div class="eh-clist eh-clist--cols"> > .eh-crow > … __fmt __end(статус) __act(действие) */
.eh-clist--cols > .eh-crow{grid-template-columns:calc(var(--s-20) + var(--s-1)) var(--s-10) minmax(0,1fr) calc(var(--w-aside) - var(--s-16)) calc(var(--w-aside) - var(--s-16)) calc(var(--s-24) + var(--s-3))}
.eh-clist--cols .eh-crow__end{justify-content:flex-start}
.eh-crow__act{display:flex;justify-content:flex-end;min-width:0}
@container (max-width:960px){.eh-clist--cols > .eh-crow{grid-template-columns:var(--s-18) var(--s-10) minmax(0,1fr) var(--s-5) calc(var(--w-aside) - var(--s-16)) calc(var(--s-24) + var(--s-3))}}
@container (max-width:680px){.eh-clist--cols > .eh-crow{grid-template-columns:var(--s-16) var(--s-10) minmax(0,1fr) var(--s-5)}.eh-clist--cols .eh-crow__end,.eh-clist--cols .eh-crow__act{grid-column:3 / -1;justify-content:flex-start}}
/* узкий список (колонка «Сегодня», 1280 с меню): формат — только значком, слово остаётся для экранного диктора и в подсказке */
@container (max-width:960px){
  .eh-crow{grid-template-columns:72px 40px minmax(140px,1fr) 20px fit-content(320px);gap:var(--s-3)}
  .eh-crow__fmt > span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
}
/* совсем узкий: действие второй строкой под именем */
@container (max-width:680px){
  .eh-crow{grid-template-columns:64px 40px minmax(0,1fr) 20px;row-gap:var(--s-2)}
  .eh-crow__end{grid-column:3 / -1;justify-content:flex-start}
}

/* =====================================================================
   11. ТАБЛИЦА
   <div class="eh-table-wrap">
     <div class="eh-table-bar">поиск и чипы</div>
     <div class="eh-table-bulk" hidden>Выбрано: <b data-eh-selected-count></b> … <button data-eh-clear-selection></div>
     <div class="eh-table-scroll"><table class="eh-table">…</table></div>
     <div class="eh-table-foot">Показано 5 из 1 240 · «Показать ещё»</div>
   </div>
   Правило: статус и сумма видны всегда. Колонки по важности:
     .is-optional    — колонка прячется, когда таблице меньше 1040 px;
     .is-optional-sm — меньше 760 px;
     .is-narrow / .is-narrow-sm — фрагмент внутри ячейки, виден только в узкой таблице
                       (например, астролог второй строкой под клиентом).
   Флажок (.is-check) и действия (.is-action) прилипают к краям, при прокрутке
   у них появляется тень. Строка открывается ссылкой .eh-table__link (клик по строке — тоже).
   ===================================================================== */
.eh-table-wrap{container-type:inline-size;background:var(--surface);border-radius:var(--r-lg);box-shadow:inset 0 0 0 1px var(--line-1);max-width:100%;overflow:clip}
.eh-table-scroll{overflow-x:auto;overscroll-behavior-x:contain}
.eh-table-bar,.eh-table-bulk{display:flex;align-items:center;gap:var(--s-2) var(--s-3);flex-wrap:wrap;min-height:calc(var(--h-sm) + var(--s-4) * 2);padding:var(--s-4) var(--s-6);border-bottom:1px solid var(--line-1)}
.eh-table-bar .eh-search{width:280px;max-width:100%;height:var(--h-sm)}
/* выбраны строки: полоса действий встаёт на место фильтров */
.eh-table-bulk{background:var(--gold-soft);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-table-bulk__count{font-weight:var(--w-medium);font-variant-numeric:tabular-nums;margin-right:var(--s-2)}
.eh-table-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);padding:var(--s-3) var(--s-6);border-top:1px solid var(--line-1);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-table{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-table th{position:sticky;top:0;z-index:2;background:var(--surface);text-align:left;vertical-align:bottom;padding:var(--s-3) var(--s-4);border-bottom:1px solid var(--line-2);font-size:var(--fs-caption);line-height:var(--lh-caption);font-weight:var(--w-strong);color:var(--ink-2);white-space:nowrap}
.eh-table td{padding:var(--s-3h) var(--s-4);border-bottom:1px solid var(--line-1);vertical-align:middle;background:var(--surface);transition:background-color var(--dur-1)}
.eh-table th:first-child,.eh-table td:first-child{padding-left:var(--s-6)}
.eh-table th:last-child,.eh-table td:last-child{padding-right:var(--s-6)}
.eh-table tbody tr:last-child td{border-bottom:0}
.eh-table .is-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.eh-table .is-check{width:20px;padding-right:var(--s-1)}
.eh-table .is-check > .eh-checkbox{vertical-align:middle;margin:0}
.eh-table .is-action{width:1%;text-align:right;white-space:nowrap}
/* края прилипают: флажок слева, действия справа */
.eh-table .is-check,.eh-table .is-sticky-start{position:sticky;left:0;z-index:1}
.eh-table .is-action,.eh-table .is-sticky-end{position:sticky;right:0;z-index:1}
.eh-table th.is-check,.eh-table th.is-sticky-start,.eh-table th.is-action,.eh-table th.is-sticky-end{z-index:3}
.eh-table-scroll.has-more-start .eh-table :is(.is-check,.is-sticky-start){box-shadow:var(--sh-edge-start)}
.eh-table-scroll.has-more-end .eh-table :is(.is-action,.is-sticky-end){box-shadow:var(--sh-edge-end)}
.eh-table__main{display:block;font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--ink)}
.eh-table__main--sm{font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-table__sub{display:block;color:var(--ink-2)}
.eh-table__person{display:flex;align-items:center;gap:var(--s-3);min-width:0}
.eh-table__person .eh-table__main,.eh-table .eh-tnum,.eh-table .eh-money,.eh-table .eh-badge{white-space:nowrap}
/* ссылка, которая открывает строку */
.eh-table__link{color:var(--ink);font-weight:var(--w-medium);text-decoration:underline;text-decoration-color:var(--line-3);text-decoration-thickness:1.5px;text-underline-offset:4px;border-radius:var(--s-0h)}
.eh-table__link:hover{text-decoration-color:var(--ink)}
.eh-table tbody tr:has(.eh-table__link){cursor:pointer}
/* фокус на ссылке строки — рамка вокруг всей строки (тенями ячеек: прилипшие колонки перекрыли бы outline строки) */
.eh-table tbody tr:has(.eh-table__link:focus-visible) td{background:var(--bg);box-shadow:inset 0 2px 0 var(--ink),inset 0 -2px 0 var(--ink)}
.eh-table tbody tr:has(.eh-table__link:focus-visible) td:first-child{box-shadow:inset 2px 0 0 var(--ink),inset 0 2px 0 var(--ink),inset 0 -2px 0 var(--ink)}
.eh-table tbody tr:has(.eh-table__link:focus-visible) td:last-child{box-shadow:inset -2px 0 0 var(--ink),inset 0 2px 0 var(--ink),inset 0 -2px 0 var(--ink)}
.eh-table__link:focus-visible{outline:none}
.eh-table .is-check .eh-checkbox,.eh-table .is-action .eh-iconbtn{position:relative;z-index:1}
.eh-table--hover tbody tr:hover td,.eh-table tbody tr.is-hover td{background:var(--bg)}
/* выбранная строка: светлое золото и полоса слева */
.eh-table tbody tr[aria-selected="true"] td{background:var(--gold-soft)}
.eh-table tbody tr[aria-selected="true"] td:first-child{background:linear-gradient(var(--gold-edge),var(--gold-edge)) left / 3px 100% no-repeat,var(--gold-soft)}
.eh-table--compact td{padding-top:var(--s-2h);padding-bottom:var(--s-2h)}
/* сортировка: <th aria-sort="descending"><button class="eh-table__sort">Сумма<svg…i-chev-down/></button></th> */
.eh-table__sort{display:inline-flex;align-items:center;gap:var(--s-1);margin:calc(var(--s-1) * -1) calc(var(--s-1h) * -1);padding:var(--s-1) var(--s-1h);border-radius:var(--r-xs);font:inherit;color:inherit}
.eh-table__sort:hover{color:var(--ink);background:var(--sunken)}
.eh-table__sort .eh-icon{width:14px;height:14px;opacity:.55;transition:transform var(--dur-1)}
.eh-table th[aria-sort="ascending"],.eh-table th[aria-sort="descending"]{color:var(--ink)}
.eh-table th[aria-sort="ascending"] .eh-icon,.eh-table th[aria-sort="descending"] .eh-icon{opacity:1}
.eh-table th[aria-sort="ascending"] .eh-icon{transform:rotate(180deg)}
.eh-table th.is-num .eh-table__sort{flex-direction:row-reverse}
/* узкая таблица: прячем второстепенное, аватар, разрешаем перенос */
.eh-table .is-narrow,.eh-table .is-narrow-sm{display:none}
@container (max-width:1040px){
  .eh-table .is-optional{display:none}
  .eh-table .is-narrow{display:block}
  .eh-table__person > .eh-avatar{display:none}
  .eh-table__person .eh-table__main{white-space:normal}
  .eh-table th,.eh-table td{padding-inline:var(--s-3)}
  .eh-table th:first-child,.eh-table td:first-child{padding-left:var(--s-5)}
  .eh-table th:last-child,.eh-table td:last-child{padding-right:var(--s-4)}
  .eh-table-bar,.eh-table-bulk,.eh-table-foot{padding-inline:var(--s-5)}
}
/* клетка «включено и не выключается» (K12 «что и куда»: письма о консультациях приходят всегда) — галочка цветом текста
   и слово, а не серая недоступная клетка: <span class="eh-always" role="img" aria-label="Почта: … — приходят всегда">✓ всегда</span> */
.eh-always{display:inline-flex;align-items:center;gap:var(--s-1);min-height:var(--h-touch);font-size:var(--fs-caption);line-height:var(--lh-caption);font-weight:var(--w-medium);color:var(--ink)}
.eh-always .eh-icon{width:var(--s-4);height:var(--s-4)}
@container (max-width:760px){
  .eh-table .is-optional-sm{display:none}
  .eh-table .is-narrow-sm{display:block}
  .eh-table th,.eh-table td{padding-inline:var(--s-2h)}
  .eh-table-bar .eh-search{width:100%}
}

/* =====================================================================
   12. НАВИГАЦИЯ: вкладки, пункты меню кабинета, ссылки шапки
   ===================================================================== */
.eh-tabs{display:flex;align-items:flex-end;gap:var(--s-7);box-shadow:inset 0 -1px 0 var(--line-1);overflow-x:auto;scrollbar-width:none}
.eh-tabs::-webkit-scrollbar{display:none}
.eh-tab{display:inline-flex;align-items:center;gap:var(--s-2);height:var(--h-md);padding:0 var(--s-0h);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink-2);white-space:nowrap;border-radius:var(--r-xs) var(--r-xs) 0 0;transition:color var(--dur-1),box-shadow var(--dur-1)}
.eh-tab:hover,.eh-tab.is-hover{color:var(--ink);box-shadow:inset 0 -2px 0 var(--line-2)}
.eh-tab[aria-selected="true"],.eh-tab[aria-current="page"],.eh-tab.is-selected{color:var(--ink);font-weight:var(--w-medium);box-shadow:inset 0 -2px 0 var(--ink)}
.eh-tab:focus-visible{outline-offset:-2px}
.eh-tab .eh-count{height:22px;min-width:22px}
.eh-tab:disabled{color:var(--ink-off)}
.eh-tabs--sm{gap:var(--s-6)}
.eh-tabs--sm .eh-tab{height:var(--h-sm);font-size:var(--fs-small)}
.eh-tabpanel:focus-visible{outline-offset:4px;border-radius:var(--r-xs)}

/* пункт левого меню кабинета */
.eh-sidenav{display:grid;gap:var(--s-0h)}
.eh-navitem{display:flex;align-items:center;gap:var(--s-3);height:var(--h-touch);padding:0 var(--s-3);border-radius:var(--r-sm);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink-2);white-space:nowrap;transition:background-color var(--dur-1),color var(--dur-1)}
.eh-navitem > .eh-icon{width:20px;height:20px}
.eh-navitem:hover,.eh-navitem.is-hover{background:var(--sunken);color:var(--ink)}
.eh-navitem[aria-current="page"],.eh-navitem[aria-current="true"],.eh-navitem.is-current{background:var(--surface);color:var(--ink);font-weight:var(--w-medium);box-shadow:var(--sh-1)}
.eh-navitem .eh-count{margin-left:auto}
/* текущий пункт без счётчика — золотая точка справа */
.eh-navitem[aria-current]:not([aria-current="false"]):not(:has(.eh-count))::after,.eh-navitem.is-current:not(:has(.eh-count))::after{content:"";margin-left:auto;width:6px;height:6px;flex:none;border-radius:var(--r-round);background:var(--gold);box-shadow:0 0 0 1px var(--gold-edge)}
.eh-navitem--sm{height:36px;font-size:var(--fs-small);line-height:var(--lh-small);gap:var(--s-2h)}
.eh-navitem--sm > .eh-icon{width:18px;height:18px}
.eh-navgroup{padding:var(--s-4) var(--s-3) var(--s-1h);font-size:var(--fs-caption);line-height:var(--lh-caption);font-weight:var(--w-strong);color:var(--ink-2)}

/* ссылка шапки публичных страниц */
.eh-toplink{position:relative;display:inline-flex;align-items:center;height:var(--h-sm);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink-2);white-space:nowrap;border-radius:var(--r-xs);transition:color var(--dur-1)}
.eh-toplink:hover,.eh-toplink.is-hover{color:var(--ink)}
.eh-toplink[aria-current="page"],.eh-toplink.is-current{color:var(--ink);font-weight:var(--w-medium)}
.eh-toplink[aria-current="page"]::after,.eh-toplink.is-current::after{content:"";position:absolute;left:50%;bottom:-6px;width:5px;height:5px;border-radius:var(--r-round);background:var(--gold);box-shadow:0 0 0 1px var(--gold-edge);transform:translateX(-50%)}
.eh-toplink .eh-icon{width:18px;height:18px;margin-left:var(--s-1)}
.eh-toplink--quiet{font-size:var(--fs-small)}

/* =====================================================================
   13. ВЫПАДАЮЩЕЕ МЕНЮ И ПОДСКАЗКА
   Триггер: <button data-eh-menu="#id" aria-haspopup="menu">
   Меню:    <div class="eh-menu" id="id" role="menu" hidden>
              <button class="eh-menu__item" role="menuitem">…</button>
   ===================================================================== */
.eh-menu{position:fixed;z-index:var(--z-popover);min-width:var(--w-menu);max-width:360px;max-height:min(480px,calc(100vh - 32px));overflow:auto;padding:var(--s-1h);display:grid;gap:var(--s-0h);background:var(--surface);border-radius:var(--r-md);box-shadow:var(--sh-3),inset 0 0 0 1px var(--line-1);opacity:0;transform:translateY(-4px);transition:opacity var(--dur-2) var(--ease),transform var(--dur-2) var(--ease)}
.eh-menu.is-open{opacity:1;transform:none}
.eh-menu--static{position:relative;opacity:1;transform:none;z-index:auto}
.eh-menu__item{display:flex;align-items:center;gap:var(--s-3);width:100%;min-height:var(--h-sm);padding:var(--s-2) var(--s-3);border-radius:var(--r-xs);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink);text-align:left;white-space:nowrap;cursor:pointer}
.eh-menu__item > .eh-icon{width:20px;height:20px;color:var(--ink-2)}
.eh-menu__item:hover,.eh-menu__item.is-hover{background:var(--sunken)}
.eh-menu__item:focus-visible{background:var(--sunken);outline:none;box-shadow:inset 0 0 0 1.5px var(--ink)}
.eh-menu__item[aria-checked="true"],.eh-menu__item.is-selected{background:var(--gold-soft);font-weight:var(--w-medium)}
.eh-menu__item[aria-checked="true"]::after,.eh-menu__item.is-selected::after{content:"";margin-left:auto;width:18px;height:18px;flex:none;background:var(--gold-ink);-webkit-mask:var(--img-check) center/18px no-repeat;mask:var(--img-check) center/18px no-repeat}
.eh-menu__item[aria-checked="true"]:focus-visible{box-shadow:inset 0 0 0 1.5px var(--ink)}
/* «вы здесь» в меню аккаунта клиента (K10 «Оплаты и чеки», K12 «Настройки»): выбранное — мягким золотом, без галочки */
.eh-menu__item[aria-current="page"]{background:var(--gold-soft);font-weight:var(--w-medium)}
.eh-menu__item[aria-current="page"] > .eh-icon{color:var(--ink)}
.eh-menu__item[aria-disabled="true"],.eh-menu__item:disabled{color:var(--ink-off);cursor:not-allowed;background:transparent}
.eh-menu__item[aria-disabled="true"] > .eh-icon{color:var(--ink-off)}
.eh-menu__item--danger{color:var(--err)}
.eh-menu__item--danger > .eh-icon{color:var(--err)}
.eh-menu__item--danger:hover,.eh-menu__item--danger:focus-visible{background:var(--err-bg)}
.eh-menu__text{display:grid;min-width:0;white-space:normal}
.eh-menu__hint{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2);font-weight:var(--w-book)}
.eh-menu__kbd{margin-left:auto;display:inline-flex;gap:var(--s-1)}
.eh-menu__sep{height:1px;margin:var(--s-1) calc(var(--s-1h) * -1);background:var(--line-1)}
.eh-menu__label{padding:var(--s-2) var(--s-3) var(--s-1);font-size:var(--fs-caption);line-height:var(--lh-caption);font-weight:var(--w-strong);color:var(--ink-2)}
.eh-menu__head{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-3) var(--s-3)}

/* подсказка: data-eh-tip="Текст" на любом элементе */
.eh-tooltip{position:fixed;z-index:var(--z-tooltip);max-width:280px;padding:var(--s-1h) var(--s-2h);border-radius:var(--r-xs);background:var(--ink);color:var(--on-ink);font-size:var(--fs-caption);line-height:var(--lh-caption);font-weight:var(--w-regular);box-shadow:var(--sh-2);pointer-events:none;opacity:0;transform:translateY(2px);transition:opacity var(--dur-1),transform var(--dur-1)}
.eh-tooltip.is-open{opacity:1;transform:none}
/* широкая подсказка (data-eh-tip-wide): две строки вместо четырёх, перенос — «\n» в тексте (значок подписки) */
.eh-tooltip--wide{max-width:min(432px,calc(100vw - var(--s-4)));white-space:pre-line}
.eh-tooltip--static{position:relative;display:inline-block;opacity:1;transform:none}
/* структурная подсказка (data-eh-tip-rich, v3.9 — условия подарка): заголовок жирным, дальше строки; слова не висят по одному */
.eh-tooltip--rich{display:grid;gap:var(--s-0h);padding:var(--s-2) var(--s-3);white-space:normal;text-wrap:pretty}
.eh-tooltip--rich .eh-tooltip__title{font-weight:var(--w-strong)}
.eh-tooltip--rich .eh-tooltip__line + .eh-tooltip__line{color:color-mix(in srgb,var(--on-ink) 82%,var(--ink))}

/* =====================================================================
   14. ОКНО И ШТОРКА
   <div class="eh-modal" id="m" role="dialog" aria-modal="true" aria-labelledby="m-t" hidden>
     <div class="eh-modal__panel"> head / body / foot </div></div>
   Открыть: data-eh-open="#m"; закрыть: data-eh-close, Esc, клик по фону.
   ===================================================================== */
/* затемнение — отдельным слоем ::before, чтобы сообщения внутри окна не мигали вместе с ним */
.eh-modal,.eh-sheet{position:fixed;inset:0}
.eh-modal::before,.eh-sheet::before{content:"";position:fixed;inset:0;background:var(--scrim);opacity:0;transition:opacity var(--dur-2) var(--ease)}
.eh-modal.is-open::before,.eh-sheet.is-open::before{opacity:1}
.eh-modal{z-index:var(--z-modal);display:grid;place-items:center;padding:var(--s-8);overflow:auto}
.eh-sheet{z-index:var(--z-sheet)}

.eh-modal__panel{position:relative;width:100%;max-width:var(--w-modal);max-height:calc(100vh - var(--s-16));display:flex;flex-direction:column;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--sh-4);opacity:0;transform:translateY(12px) scale(.985);transition:transform var(--dur-3) var(--ease),opacity var(--dur-2) var(--ease)}
.eh-modal.is-open .eh-modal__panel{transform:none;opacity:1}
.eh-modal--sm .eh-modal__panel{max-width:var(--w-modal-sm)}
.eh-modal--lg .eh-modal__panel{max-width:var(--w-modal-lg)}
.eh-modal__panel:focus,.eh-sheet__panel:focus{outline:none}
.eh-modal__head{display:flex;align-items:flex-start;gap:var(--s-4);padding:var(--s-6) var(--s-5) 0 var(--s-8)}
.eh-modal__title{flex:1;padding-top:var(--s-1h);font-size:var(--fs-title);line-height:var(--lh-title);font-weight:var(--w-book);letter-spacing:var(--ls-title);font-variation-settings:'CRSV' 1,'SHRP' 0}
.eh-modal__body{padding:var(--s-5) var(--s-8) var(--s-6);overflow:auto;min-height:0}
/* тело начинается с текста (подтверждение) — ближе к заголовку */
.eh-modal__body--text{padding-top:var(--s-3)}
.eh-modal__body > p + p{margin-top:var(--s-3)}
.eh-modal__foot{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-8) var(--s-7)}
.eh-modal__foot--between{justify-content:space-between}
.eh-modal__art{display:block;width:64px;height:64px;margin-bottom:var(--s-4)}

.eh-sheet__panel{position:absolute;top:var(--s-3);right:var(--s-3);bottom:var(--s-3);width:min(var(--w-sheet),calc(100vw - var(--s-6)));display:flex;flex-direction:column;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--sh-4);transform:translateX(calc(100% + var(--s-6)));transition:transform var(--dur-3) var(--ease)}
.eh-sheet.is-open .eh-sheet__panel{transform:none}
.eh-sheet--wide .eh-sheet__panel{width:min(var(--w-sheet-wide),calc(100vw - var(--s-6)))}
.eh-sheet__head{display:flex;align-items:flex-start;gap:var(--s-3);padding:var(--s-5) var(--s-5) var(--s-4) var(--s-8);border-bottom:1px solid var(--line-1)}
.eh-sheet__head .eh-back{margin:0 0 var(--s-1) calc(var(--s-2) * -1)}
.eh-sheet__titles{flex:1;min-width:0;padding-top:var(--s-1h)}
.eh-sheet__mark{margin-top:var(--s-1h);flex:none}
.eh-sheet__title{font-size:var(--fs-title);line-height:var(--lh-title);font-weight:var(--w-book);letter-spacing:var(--ls-title);font-variation-settings:'CRSV' 1,'SHRP' 0}
.eh-sheet__sub{margin-top:var(--s-1);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-sheet__body{flex:1;min-height:0;overflow:auto;padding:var(--s-6) var(--s-8)}
.eh-sheet__section + .eh-sheet__section{margin-top:var(--s-8)}
.eh-sheet__label{margin-bottom:var(--s-3);font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium);color:var(--ink)}
.eh-sheet__foot{display:flex;align-items:center;justify-content:flex-end;gap:var(--s-2);padding:var(--s-4) var(--s-6) var(--s-4) var(--s-8);border-top:1px solid var(--line-1)}
.eh-sheet__summary{flex:1;min-width:0;font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-sheet__summary b{display:block;color:var(--ink);font-size:var(--fs-body);line-height:var(--lh-body)}
.eh-sheet__summary.is-warn b{color:var(--warn)}
.eh-sheet__summary.is-err b{color:var(--err)}
/* заголовок шага в шторке — на ступень крупнее подписи поля */
.eh-sheet__step{font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--ink)}

/* «Закрыть без сохранения?» — data-eh-guard на окне или шторке.
   Если внутри что-то изменили, Esc, фон, крестик и «Отмена» не закрывают сразу,
   а показывают эту полосу на месте кнопок подвала. Фокус — на «Вернуться». */
.eh-guard{display:flex;align-items:center;gap:var(--s-3);flex:1;min-width:0;flex-wrap:wrap}
.eh-guard > .eh-icon{width:20px;height:20px;color:var(--warn);flex:none}
.eh-guard__text{flex:1 1 240px;min-width:0;font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-guard__text b{display:block;color:var(--ink);font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium)}
.eh-guard__actions{display:flex;gap:var(--s-2);flex:none;margin-left:auto}
.is-guarding > :not(.eh-guard){display:none !important}
.is-guarding{background:var(--warn-bg);border-top-color:transparent;animation:eh-guard-in var(--dur-2) var(--ease)}
.eh-modal__foot.is-guarding{margin:0 var(--s-3) var(--s-3);padding:var(--s-4) var(--s-5);border-radius:var(--r-md)}
.eh-sheet__foot.is-guarding{border-radius:0 0 var(--r-lg) var(--r-lg)}

/* =====================================================================
   15. СООБЩЕНИЯ: всплывающие (window.ehToast) и полосы-объявления
   ===================================================================== */
/* стопка внизу справа; когда открыта шторка — левее её панели, чтобы не закрывать подвал */
.eh-toasts{--toast-right:var(--s-6);position:fixed;right:var(--toast-right);bottom:var(--s-6);z-index:var(--z-toast);display:flex;flex-direction:column;align-items:flex-end;gap:var(--s-2);width:min(var(--w-toast),calc(100vw - var(--toast-right) - var(--s-6)));pointer-events:none;transition:right var(--dur-3) var(--ease)}
html.eh-has-sheet .eh-toasts{--toast-right:calc(var(--w-sheet) + var(--s-3) + var(--s-4))}
html.eh-has-sheet-wide .eh-toasts{--toast-right:calc(var(--w-sheet-wide) + var(--s-3) + var(--s-4))}
.eh-toast{--tone:var(--ink-2);pointer-events:auto;display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:var(--s-3);align-items:start;width:100%;padding:var(--s-3h) var(--s-2) var(--s-3h) var(--s-4);background:var(--surface);border-radius:var(--r-md);box-shadow:var(--sh-3),inset 0 0 0 1px var(--line-1);color:var(--ink)}
.eh-toasts .eh-toast{animation:eh-toast-in var(--dur-3) var(--ease) both}
/* уже показано — анимацию снимаем, чтобы при переносе стопки в окно сообщение не въезжало заново */
.eh-toasts .eh-toast.is-shown{animation:none}
.eh-toasts .eh-toast.is-leaving{animation:eh-toast-out var(--dur-2) var(--ease-in) both}
.eh-toast__icon{width:24px;height:24px;color:var(--tone)}
.eh-toast__body{min-width:0;padding-top:var(--s-0h)}
.eh-toast__title{font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium)}
.eh-toast__text{margin-top:var(--s-0h);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-toast__actions{display:flex;flex-wrap:wrap;gap:var(--s-4);margin-top:var(--s-2);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-toast__close{margin:calc(var(--s-1h) * -1) 0}
.eh-toast--ok{--tone:var(--ok)}
.eh-toast--warn{--tone:var(--warn)}
.eh-toast--err{--tone:var(--err)}
.eh-toast--info{--tone:var(--info)}
.eh-toast--neutral{--tone:var(--ink)}

/* полоса-объявление внутри страницы */
.eh-banner{--tone:var(--ink-2);--tone-bg-b:var(--sunken);display:flex;align-items:flex-start;gap:var(--s-3);padding:var(--s-3h) var(--s-3) var(--s-3h) var(--s-4);border-radius:var(--r-md);background:var(--tone-bg-b);color:var(--ink);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-banner > .eh-icon{width:20px;height:20px;margin-top:var(--s-0h);color:var(--tone)}
.eh-banner__body{flex:1;min-width:0;padding-top:var(--s-0h)}
.eh-banner__title{display:block;font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium);margin-bottom:var(--s-0h)}
.eh-banner__actions{display:flex;align-items:center;gap:var(--s-2);flex:none}
.eh-banner__close{margin:calc(var(--s-2) * -1) calc(var(--s-1) * -1) calc(var(--s-2) * -1) 0}
.eh-banner--info{--tone:var(--info);--tone-bg-b:var(--info-bg)}
.eh-banner--warn{--tone:var(--warn);--tone-bg-b:var(--warn-bg)}
.eh-banner--err{--tone:var(--err);--tone-bg-b:var(--err-bg)}
.eh-banner--ok{--tone:var(--ok);--tone-bg-b:var(--ok-bg)}
.eh-banner--neutral{--tone:var(--ink);--tone-bg-b:var(--sunken)}
.eh-banner--outline{background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-2)}
/* во всю ширину над страницей (техработы, «Так видят клиенты») */
.eh-banner--bar{border-radius:0;align-items:center;justify-content:center;padding:var(--s-2h) var(--gutter);min-height:var(--h-md)}
.eh-banner--bar > .eh-icon{margin-top:0}
.eh-banner--bar .eh-banner__body{flex:0 1 auto;padding-top:0}
/* полоса текстом от края содержимого («Нет соединения», «К списанию») */
.eh-banner--bar.eh-banner--start{justify-content:flex-start;padding-inline:max(var(--gutter),calc((100% - var(--w-content)) / 2))}
.eh-banner--bar.eh-banner--start .eh-banner__body{flex:1 1 auto}

/* =====================================================================
   16. ПУСТЫЕ СОСТОЯНИЯ, ЗАГРУЗКА, ШАГИ
   ===================================================================== */
.eh-empty{display:grid;justify-items:center;align-content:center;text-align:center;gap:var(--s-2);padding:var(--s-12) var(--s-6)}
.eh-empty__art{--art-k:.44;width:88px;height:88px;margin-bottom:var(--s-3);color:var(--ink)}
.eh-empty__title{font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:var(--w-medium);letter-spacing:var(--ls-h3);font-variation-settings:'CRSV' 1,'SHRP' 0}
.eh-empty__text{max-width:420px;color:var(--ink-2)}
.eh-empty__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--s-2);margin-top:var(--s-4)}
.eh-empty--page{padding:var(--s-20) var(--s-6);gap:var(--s-3)}
.eh-empty--page .eh-empty__art{--art-k:.84;width:168px;height:168px;margin-bottom:var(--s-6)}
.eh-empty--page .eh-empty__title{font-size:var(--fs-h2);line-height:var(--lh-h2);font-weight:var(--w-book);letter-spacing:var(--ls-h2)}
.eh-empty--page .eh-empty__text{font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:var(--w-light);max-width:520px}
.eh-empty--page .eh-empty__actions{margin-top:var(--s-6)}
.eh-empty__foot{margin-top:var(--s-6);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-empty__foot .eh-btn--link{font-size:var(--fs-small);line-height:var(--lh-small)}   /* «или добавить заранее» — в размер строки (K10) */
/* в строку — внутри блока или списка */
.eh-empty--inline{display:flex;justify-items:start;text-align:left;align-items:center;gap:var(--s-4);padding:var(--s-4) var(--s-5);border-radius:var(--r-md);box-shadow:inset 0 0 0 1px var(--line-1)}
.eh-empty--inline .eh-empty__art{width:40px;height:40px;margin:0;flex:none}
.eh-empty--inline .eh-empty__title{font-size:var(--fs-body);line-height:var(--lh-body);font-variation-settings:'CRSV' 0,'SHRP' 0;letter-spacing:0}
.eh-empty--inline .eh-empty__text{font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-empty--inline .eh-empty__actions{margin:0 0 0 auto}
/* блок не загрузился — остальное работает: значок ошибки, что не загрузили, «Повторить», код для поддержки */
.eh-empty.is-error .eh-empty__art{color:var(--err)}
.eh-empty--inline.is-error{box-shadow:inset 0 0 0 1px var(--line-2)}
.eh-empty--inline.is-error > .eh-icon{width:24px;height:24px;flex:none;color:var(--err)}
.eh-empty__code{font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2);font-variant-numeric:tabular-nums}
/* пусто в клетке сетки карточек (мало экспертов, «Каталог пополняется»): иллюстрация 80 px, поля карточки */
.eh-empty--cell{padding:var(--s-8) var(--s-10);border-radius:var(--r-lg);gap:var(--s-6)}
.eh-empty--cell .eh-empty__art{width:80px;height:80px}
.eh-empty--cell .eh-empty__text{max-width:var(--w-modal);margin-top:var(--s-1)}

/* загрузка: заготовки */
.eh-skel{display:block;background:var(--sunken);border-radius:var(--r-xs);animation:eh-pulse 1.6s ease-in-out infinite}
.eh-skel--text{height:12px;margin:var(--s-1h) 0;border-radius:var(--r-pill)}
.eh-skel--title{height:20px;width:60%;margin:var(--s-1) 0;border-radius:var(--r-pill)}
.eh-skel--circle{border-radius:var(--r-round)}
.eh-skel--photo{border-radius:var(--r-photo)}
.eh-skel--pill{border-radius:var(--r-pill)}
.eh-skel--block{border-radius:var(--r-sm)}
.eh-skel--w30{width:30%} .eh-skel--w45{width:45%} .eh-skel--w55{width:55%} .eh-skel--w70{width:70%} .eh-skel--w85{width:85%}
.eh-skel--on-surface{background:var(--sunken)}
[aria-busy="true"] > .eh-skel:nth-child(2n){animation-delay:.15s}

/* спиннер — тонкий круг и дуга цветом текста; золота в загрузке нет */
.eh-spinner{position:relative;display:inline-block;width:24px;height:24px;flex:none;border-radius:var(--r-round);box-shadow:inset 0 0 0 1px var(--line-2);color:var(--ink)}
.eh-spinner::after{content:"";position:absolute;inset:0;border-radius:var(--r-round);border:2px solid transparent;border-top-color:currentColor;animation:eh-spin .9s linear infinite}
.eh-spinner--lg{width:40px;height:40px}
.eh-spinner--lg::after{border-width:3px}
.eh-loading{display:inline-flex;align-items:center;gap:var(--s-3);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}

/* шаги: <ol class="eh-steps"><li class="eh-step is-done">…<li class="eh-step" aria-current="step"> */
.eh-steps{display:flex;align-items:center;gap:var(--s-3)}
.eh-step{display:flex;align-items:center;gap:var(--s-2h);flex:1;min-width:0;font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-step:last-child{flex:0 0 auto}
.eh-step::after{content:"";flex:1;min-width:var(--s-4);height:1.5px;border-radius:var(--r-pill);background:var(--line-2)}
.eh-step:last-child::after{display:none}
.eh-step__mark{display:grid;place-items:center;width:28px;height:28px;flex:none;border-radius:var(--r-round);background:var(--surface);box-shadow:inset 0 0 0 1.5px var(--line-3);font-size:var(--fs-caption);line-height:1;font-weight:var(--w-strong);font-variant-numeric:tabular-nums;color:var(--ink-2)}
.eh-step__mark .eh-icon{width:16px;height:16px;stroke-width:2}
.eh-step__label{white-space:nowrap}
.eh-step.is-done{color:var(--ink)}
.eh-step.is-done::after{background:var(--ink)}
.eh-step.is-done .eh-step__mark{background:var(--ink);color:var(--on-ink);box-shadow:none}
.eh-step[aria-current="step"],.eh-step.is-current{color:var(--ink);font-weight:var(--w-medium)}
.eh-step[aria-current="step"] .eh-step__mark,.eh-step.is-current .eh-step__mark{background:var(--gold);color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--ink)}
.eh-step.is-problem .eh-step__mark{background:var(--err-bg);color:var(--err);box-shadow:inset 0 0 0 1.5px var(--err)}
/* вертикальные шаги — чек-лист «До каталога 2 шага» */
.eh-steps--vertical{flex-direction:column;align-items:stretch;gap:0}
.eh-steps--vertical .eh-step{position:relative;align-items:flex-start;flex:none;gap:var(--s-3);padding-bottom:var(--s-5)}
.eh-steps--vertical .eh-step:last-child{padding-bottom:0}
.eh-steps--vertical .eh-step::after{position:absolute;left:13.25px;top:32px;bottom:4px;width:1.5px;height:auto;min-width:0;flex:none}
.eh-steps--vertical .eh-step__body{display:grid;gap:var(--s-0h);padding-top:var(--s-1)}
.eh-steps--vertical .eh-step__label{white-space:normal;font-size:var(--fs-body);line-height:var(--lh-body)}
.eh-steps--vertical .eh-step__hint{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2);font-weight:var(--w-book)}

/* полоса прогресса */
.eh-progress{position:relative;height:6px;border-radius:var(--r-pill);background:var(--sunken);overflow:hidden;box-shadow:inset 0 0 0 1px var(--line-1)}
.eh-progress__bar{position:absolute;inset:0 auto 0 0;width:var(--value,0%);border-radius:inherit;background:var(--ink);transition:width var(--dur-3) var(--ease)}

/* «Как это работает» / «Как это проходит» — шаги рядом: знак доверия (розетка, циферблат, значок) или номер .eh-num,
   заголовок 16, текст 14. <ol class="eh-how" style?> > li.eh-how__step > .eh-how__sign | .eh-num + .eh-how__title + .eh-how__text.
   Колонок — --cols (по умолчанию 3), промежуток — --gap */
.eh-how{display:grid;grid-template-columns:repeat(var(--cols,3),minmax(0,1fr));gap:var(--gap,var(--s-10))}
.eh-how--4{--cols:4}
.eh-how__step{display:grid;gap:var(--s-2);align-content:start;justify-items:start}
.eh-how__sign{display:grid;place-items:center;width:var(--s-14);height:var(--s-14);margin-bottom:var(--s-2);border-radius:var(--r-round);background:var(--bg)}
.eh-how__sign > .eh-rosette,.eh-how__sign > .eh-dial{width:32px;height:32px}
.eh-how__sign > .eh-icon{width:28px;height:28px;color:var(--ink)}
.eh-how__title{font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium);letter-spacing:0;font-variation-settings:normal}
.eh-how__text{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-how__text b{font-weight:var(--w-medium);color:var(--ink)}

/* «Показать ещё» */
.eh-more{display:grid;justify-items:center;gap:var(--s-3);padding:var(--s-8) 0 var(--s-4)}
.eh-more__count{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2);font-variant-numeric:tabular-nums}

/* разделитель */
.eh-divider{display:block;height:1px;margin:var(--s-6) 0;background:var(--line-1);border:0}
.eh-divider--strong{background:var(--line-2)}
.eh-divider--tight{margin:var(--s-3) 0}
.eh-divider--vertical{display:inline-block;width:1px;height:24px;margin:0 var(--s-2);vertical-align:middle}
.eh-divider--label{display:flex;align-items:center;gap:var(--s-4);height:auto;background:none;font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-divider--label::before,.eh-divider--label::after{content:"";flex:1;height:1px;background:var(--line-1)}

/* =====================================================================
   17. ВЫБОР ДАТЫ И ВРЕМЕНИ
   ===================================================================== */
.eh-datepick{display:grid;gap:var(--s-5)}
.eh-datepick__head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4)}
.eh-datepick__month{font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:var(--w-medium);font-variation-settings:'CRSV' 1,'SHRP' 0}
.eh-datepick__nav{display:flex;gap:var(--s-1)}
.eh-dates{display:flex;gap:var(--s-2);overflow-x:auto;padding:var(--s-1);margin:calc(var(--s-1) * -1);scrollbar-width:none}
.eh-dates::-webkit-scrollbar{display:none}
.eh-date{display:inline-grid;justify-items:center;align-content:center;gap:0;width:68px;height:80px;flex:none;border-radius:var(--r-md);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-3);color:var(--ink);cursor:pointer;transition:background-color var(--dur-1),box-shadow var(--dur-1)}
.eh-date__wd{font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-date__d{font-size:var(--fs-h3);line-height:var(--lh-num);font-weight:var(--w-regular);font-variant-numeric:tabular-nums}
.eh-date__n{font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2);white-space:nowrap}
.eh-date:hover,.eh-date.is-hover{box-shadow:inset 0 0 0 1.5px var(--ink)}
.eh-date[aria-pressed="true"],.eh-date[aria-selected="true"],.eh-date[aria-checked="true"],.eh-date.is-selected{background:var(--gold);box-shadow:inset 0 0 0 1.5px var(--ink)}
.eh-date[aria-pressed="true"] .eh-date__wd,.eh-date[aria-pressed="true"] .eh-date__n,.eh-date[aria-selected="true"] .eh-date__wd,.eh-date[aria-selected="true"] .eh-date__n,.eh-date[aria-checked="true"] .eh-date__wd,.eh-date[aria-checked="true"] .eh-date__n,.eh-date.is-selected .eh-date__wd,.eh-date.is-selected .eh-date__n{color:var(--ink)}
.eh-date[aria-pressed="true"] .eh-date__d,.eh-date[aria-selected="true"] .eh-date__d,.eh-date[aria-checked="true"] .eh-date__d,.eh-date.is-selected .eh-date__d{font-weight:var(--w-strong)}
/* день без окон: виден, но приглушён — «нет окон» словом */
.eh-date.is-empty{background:transparent;box-shadow:none;outline:1px dashed var(--line-3);outline-offset:-1px}
.eh-date.is-empty:focus-visible{outline:var(--focus);outline-offset:2px}
.eh-date.is-empty .eh-date__d,.eh-date.is-empty .eh-date__wd,.eh-date.is-empty .eh-date__n{color:var(--ink-3)}
.eh-date.is-empty:hover{outline-color:var(--ink)}
.eh-date.is-empty[aria-pressed="true"],.eh-date.is-empty[aria-checked="true"],.eh-date.is-empty.is-selected{background:var(--sunken);box-shadow:inset 0 0 0 1.5px var(--ink);outline-color:transparent}
.eh-date.is-empty[aria-pressed="true"]:focus-visible{outline:var(--focus)}
.eh-date:disabled,.eh-date[aria-disabled="true"]{background:transparent;box-shadow:none;cursor:not-allowed}
.eh-date:disabled .eh-date__d,.eh-date:disabled .eh-date__wd{color:var(--ink-off)}

.eh-times{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:var(--s-2)}
.eh-times__group + .eh-times__group{margin-top:var(--s-5)}
.eh-times__label{margin-bottom:var(--s-2h);font-size:var(--fs-caption);line-height:var(--lh-caption);font-weight:var(--w-strong);color:var(--ink-2)}
.eh-time{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;height:var(--h-touch);padding:0 var(--s-3);border-radius:var(--r-pill);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-3);font-size:var(--fs-body);line-height:1;font-weight:var(--w-regular);font-variant-numeric:tabular-nums;color:var(--ink);cursor:pointer;transition:background-color var(--dur-1),box-shadow var(--dur-1)}
.eh-time:hover,.eh-time.is-hover{box-shadow:inset 0 0 0 1.5px var(--ink)}
.eh-time[aria-pressed="true"],.eh-time[aria-checked="true"],.eh-time[aria-selected="true"],.eh-time.is-selected{background:var(--gold);box-shadow:inset 0 0 0 1.5px var(--ink);font-weight:var(--w-strong)}
/* занято — зачёркнуто, а не скрыто */
.eh-time:disabled,.eh-time[aria-disabled="true"],.eh-time.is-busy{background:transparent;box-shadow:inset 0 0 0 1px var(--line-2);color:var(--ink-off);text-decoration:line-through;text-decoration-thickness:1px;font-weight:var(--w-book);cursor:not-allowed}
/* пересечение с другой записью (кабинет астролога): нельзя выбрать, подписано словом в самой кнопке
   и строкой .eh-times__note под сеткой. <button class="eh-time is-conflict" aria-disabled="true">15:00<small>пересечение</small> */
.eh-time small{display:block;margin-top:var(--s-0h);font-size:var(--fs-caption);line-height:1;font-weight:var(--w-regular);text-decoration:none}
.eh-time.is-conflict{padding:0 var(--s-1);background:transparent;box-shadow:inset 0 0 0 1px var(--warn);color:var(--warn);text-decoration:none;cursor:not-allowed;font-weight:var(--w-medium)}
.eh-time.is-conflict:hover{box-shadow:inset 0 0 0 1.5px var(--warn)}
/* нажали на пересечение — заливка только у него; выбранное золотом остаётся самым заметным */
.eh-time.is-conflict[aria-pressed="true"]{background:var(--warn-bg);box-shadow:inset 0 0 0 2px var(--warn);font-weight:var(--w-strong)}
/* сетка с пересечениями — колонки от 96 px, чтобы поместилось «пересечение» */
.eh-times--wide{grid-template-columns:repeat(auto-fill,minmax(var(--s-24),1fr))}
.eh-times__note{display:flex;align-items:flex-start;gap:var(--s-2);margin-top:var(--s-3);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--warn)}
.eh-times__note .eh-icon{width:18px;height:18px;flex:none;margin-top:1px}
.eh-times__note b{font-weight:var(--w-medium)}
.eh-tz{display:flex;align-items:center;gap:var(--s-2);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-tz .eh-icon{width:16px;height:16px}
.eh-nowin{display:flex;align-items:center;gap:var(--s-4);padding:var(--s-4) var(--s-5);border-radius:var(--r-md);background:var(--bg)}
.eh-nowin__art{width:40px;height:40px;flex:none}
.eh-nowin__text{flex:1;font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-nowin__text b{display:block;color:var(--ink);font-size:var(--fs-body);line-height:var(--lh-body)}

/* =====================================================================
   18. ОБОЛОЧКИ РОЛЕЙ И ШАБЛОНЫ СТРАНИЦ — разметку собирает eh-shell.js
   Шапка сайта (гость, клиент), подвал, кабинет эксперта и админка, шторка уведомлений,
   плашка cookie, шаблоны страниц (.eh-page, .eh-pagehead, .eh-split, .eh-settings, .eh-savebar…)
   ===================================================================== */
.eh-portal{display:contents}
.eh-skip{position:fixed;left:var(--s-4);top:var(--s-3);z-index:var(--z-tooltip);padding:var(--s-2h) var(--s-5);border-radius:var(--r-pill);background:var(--action);color:var(--on-action);font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium);transform:translateY(calc(-100% - var(--s-6)));transition:transform var(--dur-2) var(--ease)}
.eh-skip:focus{transform:none}
eh-site-header{display:block;position:sticky;top:0;z-index:var(--z-header)}
.eh-sitehead{background:var(--bg);box-shadow:inset 0 -1px 0 var(--line-1)}
.eh-sitehead__in{--head-gap:var(--s-12);--nav-gap:var(--s-8);--brand-h:var(--logo-h-lg);--end-gap:var(--s-2);display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;column-gap:var(--head-gap);height:var(--h-header)}
.eh-sitehead--client .eh-sitehead__in{--head-gap:var(--s-10);--nav-gap:var(--s-6)}
@media (max-width:1439px){.eh-sitehead__in{--head-gap:var(--s-8);--nav-gap:var(--s-6)}.eh-sitehead--client .eh-sitehead__in{--head-gap:var(--s-6);--nav-gap:var(--s-5)}}
@media (max-width:1365px){.eh-sitehead--client .eh-sitehead__in{--nav-gap:var(--s-4);--brand-h:var(--logo-h);--end-gap:var(--s-1)}.eh-sitehead--client .eh-sitehead__me{margin-left:0;gap:var(--s-1);padding-right:var(--s-1h)}.eh-sitehead--client .eh-sitehead__me > .eh-icon{width:var(--s-4);height:var(--s-4)}}
@media (max-width:1199px){.eh-sitehead__in,.eh-sitehead--client .eh-sitehead__in{--head-gap:var(--s-6);--nav-gap:var(--s-4);--brand-h:var(--logo-h)}}
/* телефон: логотип «Доработанный текущий» на 11 px шире прежнего — зазоры шапки уже, чтобы шапка не вылезала за экран */
@media (max-width:599px){.eh-sitehead__in,.eh-sitehead--client .eh-sitehead__in{--head-gap:var(--s-3)}}
.eh-sitehead__brand{display:inline-flex;align-items:center;height:var(--h-sm);border-radius:var(--r-xs)}
.eh-sitehead__brand img{height:var(--brand-h);width:auto}
.eh-sitehead__nav{min-width:0}
.eh-sitehead__list{display:flex;align-items:center;gap:var(--nav-gap);width:max-content}
.eh-sitehead__list .eh-toplink{gap:var(--s-1h)}
.eh-sitehead__list .eh-toplink > .eh-icon{margin-left:calc(var(--s-1) * -1);transition:transform var(--dur-2) var(--ease)}
.eh-sitehead__list .eh-toplink[aria-expanded="true"] > .eh-icon{transform:rotate(180deg)}
.eh-sitehead__list .eh-toplink--quiet{color:var(--ink-2)}
.eh-sitehead__end{display:flex;align-items:center;gap:var(--end-gap)}
.eh-sitehead__me{display:inline-flex;align-items:center;gap:var(--s-1h);height:var(--h-touch);padding:0 var(--s-2h) 0 var(--s-0h);margin-left:var(--s-1);border-radius:var(--r-pill);color:var(--ink);transition:background-color var(--dur-1)}
.eh-sitehead__me:hover,.eh-sitehead__me[aria-expanded="true"]{background:var(--sunken)}
.eh-sitehead__me > .eh-icon{color:var(--ink-2);transition:transform var(--dur-2) var(--ease)}
.eh-sitehead__me[aria-expanded="true"] > .eh-icon{transform:rotate(180deg)}
.eh-menu.eh-menu--grid{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--s-1);max-width:calc(100vw - var(--s-8));width:calc(var(--w-menu) * 2 + var(--s-6))}
.eh-menu.eh-menu--wide{width:calc(var(--w-menu) * 2 + var(--s-30) + var(--s-10))}
.eh-menu--grid > .eh-menu__sep,.eh-menu--grid > .eh-menu__label,.eh-menu--grid > .is-wide{grid-column:1 / -1}
.eh-menu__item .eh-chip__dot{margin:calc(var(--s-1) * -1) 0}
.eh-menu__item .eh-menu__dot{width:var(--s-8);height:var(--s-8);margin:0}
.eh-menu__item .eh-menu__text b{font-weight:var(--w-medium)}
.eh-menu__head .eh-menu__text b{font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium)}
eh-site-footer{display:block}
.eh-sitefoot{margin-top:var(--s-24);border-top:1px solid var(--line-1);container-type:inline-size}
.eh-sitefoot__grid{display:grid;grid-template-columns:minmax(0,1.35fr) repeat(5,minmax(0,1fr));gap:var(--s-10) var(--s-6);padding:var(--s-14) 0 var(--s-12)}
.eh-sitefoot__brand{display:inline-flex;border-radius:var(--r-xs)}
.eh-sitefoot__brand img{height:var(--logo-h-lg);width:auto}
.eh-sitefoot__about{margin-top:var(--s-4);max-width:calc(var(--w-aside) + var(--s-10));font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-sitefoot__title{margin-bottom:var(--s-3);font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium);color:var(--ink)}
.eh-sitefoot__list{display:grid;gap:var(--s-2h)}
.eh-sitefoot__link{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2);border-radius:var(--s-0h);text-decoration:none;text-align:left;transition:color var(--dur-1)}
.eh-sitefoot__link:hover{color:var(--ink);text-decoration:underline;text-decoration-color:var(--line-3);text-decoration-thickness:1.5px;text-underline-offset:4px}
.eh-sitefoot__bottom{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-3) var(--s-6);padding:var(--s-5) 0 var(--s-8);border-top:1px solid var(--line-1);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-sitefoot--compact{margin-top:var(--s-16)}
.eh-sitefoot--compact .eh-sitefoot__bottom{border-top:0}
.eh-sitefoot__bottom ul{display:flex;flex-wrap:wrap;gap:var(--s-2) var(--s-6)}
/* реквизиты ООО «Финекст» — последней строкой подвала, на всю ширину ряда */
.eh-sitefoot__legal{flex-basis:100%}
@container (max-width:1180px){.eh-sitefoot__grid{grid-template-columns:repeat(5,minmax(0,1fr))}.eh-sitefoot__brandcol{grid-column:1 / -1;display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s-2) var(--s-8)}.eh-sitefoot__about{margin-top:0;max-width:none}}
@container (max-width:760px){.eh-sitefoot__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.eh-cookie{position:fixed;left:0;right:0;bottom:var(--s-4);z-index:var(--z-cookie);display:flex;align-items:center;gap:var(--s-3) var(--s-6);width:min(var(--w-content),calc(100% - var(--s-8)));margin-inline:auto;padding:var(--s-3) var(--s-3) var(--s-3) var(--s-6);background:var(--surface);border-radius:var(--r-pill);box-shadow:var(--sh-3),inset 0 0 0 1px var(--line-1);animation:eh-toast-in var(--dur-3) var(--ease) both}
.eh-cookie__text{flex:1;min-width:0;font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink)}
.eh-cookie__text a{white-space:nowrap}
.eh-cookie__actions{flex:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-2)}
.eh-cookie__actions .eh-btn{width:100%}
html.eh-has-cookie body{padding-bottom:calc(var(--eh-cookie-h,var(--s-16)) + var(--s-8))}
html.eh-has-cookie{scroll-padding-bottom:calc(var(--eh-cookie-h,var(--s-16)) + var(--s-8))}
html.eh-has-cookie .eh-toasts{bottom:calc(var(--eh-cookie-h,var(--s-16)) + var(--s-4) + var(--s-3))}
@media (max-width:900px){.eh-cookie{flex-wrap:wrap;border-radius:var(--r-lg);padding:var(--s-4) var(--s-5)}.eh-cookie__actions{width:100%}}
.eh-cookie__choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-2);margin-top:var(--s-5)}
.eh-cookie__choice{width:100%;height:auto;min-height:var(--btn-h);padding-block:var(--s-2);white-space:normal;line-height:var(--lh-small)}
.eh-cookie__choice > .eh-icon{display:none}
.eh-cookie__choice[aria-pressed="true"],.eh-cookie__choice[aria-pressed="true"]:hover{background:var(--gold-soft);box-shadow:inset 0 0 0 1.5px var(--gold-edge)}
.eh-cookie__choice[aria-pressed="true"] > .eh-icon{display:inline-block;color:var(--gold-ink)}
.eh-cookie__now{margin-top:var(--s-3);font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
eh-work-shell,eh-admin-shell{display:block}
.eh-app{--side-w:var(--w-sidebar);--side-x:var(--s-4);--page-x:var(--s-8);--nav-h:var(--h-touch);display:grid;grid-template-columns:var(--side-w) minmax(0,1fr);min-height:100vh}
@media (min-width:1600px){.eh-app{--page-x:var(--s-12)}}
@media (max-width:1199px){.eh-app{--side-w:calc(var(--w-sidebar) - var(--s-12));--side-x:var(--s-3);--page-x:var(--s-6)}.eh-app:not(.is-collapsed) .eh-side__head{padding-left:var(--s-2)}.eh-app:not(.is-collapsed) .eh-side__logo{height:var(--s-5)}.eh-app:not(.is-collapsed) .eh-side__who > .eh-icon{display:none}.eh-app:not(.is-collapsed) .eh-side__who .eh-avatar{--size:var(--s-8)}.eh-side__steps{padding-inline:var(--s-3)}}
.eh-app.is-collapsed{--side-w:calc(var(--h-touch) + var(--s-4) * 2);--side-x:var(--s-4)}
.eh-side{position:sticky;top:0;align-self:start;height:100vh;display:flex;flex-direction:column;padding:var(--s-6) var(--side-x) var(--s-4);border-right:1px solid var(--line-1);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}
.eh-side.is-overflow:not(.is-end){-webkit-mask-image:linear-gradient(to bottom,var(--ink) calc(100% - var(--s-14)),transparent);mask-image:linear-gradient(to bottom,var(--ink) calc(100% - var(--s-14)),transparent)}
@media (max-height:820px){.eh-app{--nav-h:var(--h-sm)}.eh-side{padding-top:var(--s-4)}.eh-side__head{margin-bottom:var(--s-4)}.eh-side__foot{padding-top:var(--s-3);gap:var(--s-2)}.eh-side__steps-hint{display:none}}
.eh-side__head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2);min-height:var(--h-touch);margin-bottom:var(--s-8);padding-left:var(--s-3)}
.eh-side__brand{display:inline-flex;align-items:center;min-height:var(--h-sm);border-radius:var(--r-xs)}
.eh-side__logo{height:var(--logo-h);width:auto}
.eh-side__toggle{color:var(--ink-2);margin-right:calc(var(--s-1) * -1)}
.eh-side .eh-navitem{position:relative;height:var(--nav-h)}
.eh-side__label{min-width:0;overflow:hidden;text-overflow:ellipsis}
.eh-side__foot{margin-top:auto;display:grid;gap:var(--s-3);padding-top:var(--s-6)}
.eh-side__steps{display:grid;gap:var(--s-2);padding:var(--s-3) var(--s-4) var(--s-3h);border-radius:var(--r-md);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-1);color:var(--ink);transition:box-shadow var(--dur-1)}
.eh-side__steps:hover{box-shadow:inset 0 0 0 1px var(--line-3)}
.eh-side__steps b{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2);font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium)}
.eh-side__steps-hint{font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-side__stepsmini{display:none;flex-direction:column;align-items:center;gap:var(--s-0h);padding:var(--s-2) 0 var(--s-1h);border-radius:var(--r-sm);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-1);color:var(--ink);font-size:var(--fs-caption);line-height:var(--lh-caption);font-weight:var(--w-medium);white-space:nowrap}
.eh-side__stepsmini:hover{box-shadow:inset 0 0 0 1px var(--line-3)}
.eh-side__me{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-1h);padding-top:var(--s-3);border-top:1px solid var(--line-1)}
.eh-side__who{display:flex;align-items:center;gap:var(--s-2h);width:100%;min-width:0;min-height:var(--h-md);padding:var(--s-1) var(--s-1h);border-radius:var(--r-sm);text-align:left;color:var(--ink);transition:background-color var(--dur-1)}
.eh-side__who:hover,.eh-side__who[aria-expanded="true"]{background:var(--sunken)}
.eh-side__who > .eh-icon{flex:none;color:var(--ink-2);transition:transform var(--dur-2) var(--ease)}
.eh-side__who[aria-expanded="true"] > .eh-icon{transform:rotate(180deg)}
.eh-side__av{position:relative;display:inline-grid;flex:none}
.eh-side__sdot{display:none;position:absolute;right:calc(var(--s-0h) * -1);bottom:calc(var(--s-0h) * -1);width:var(--s-3);height:var(--s-3);border-radius:var(--r-round);background:var(--sd,var(--ink-2));box-shadow:0 0 0 2px var(--bg)}
.eh-side__name{display:grid;flex:1;min-width:0}
.eh-side__name b{font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.eh-side__spec{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-0h) var(--s-1h);min-width:0;margin-top:var(--s-0h);font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-side__spec > span:first-child{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.eh-side__spec--long > span:first-child{white-space:normal}
.eh-side__status{justify-self:start;max-width:100%;margin:0 0 var(--s-1) var(--s-1h);border-radius:var(--r-sm)}
.eh-side__status .eh-badge{height:auto;min-height:var(--s-6);padding-block:var(--s-0h);border-radius:var(--r-sm);white-space:normal;align-items:flex-start}
.eh-side__status .eh-badge::before{margin-top:var(--s-1h)}
.eh-side__status:hover .eh-badge{box-shadow:inset 0 0 0 1px var(--bi)}
.eh-app.is-collapsed .eh-side__head{flex-direction:column;gap:var(--s-3);padding-left:0;margin-bottom:var(--s-6)}
.eh-app.is-collapsed .eh-side__logo{display:none}
.eh-app.is-collapsed .eh-side__mark{display:block}
.eh-app.is-collapsed .eh-side__toggle{margin:0}
.eh-app.is-collapsed .eh-side .eh-navitem{justify-content:center;padding:0}
.eh-app.is-collapsed .eh-side .eh-navitem::after{display:none}
.eh-app.is-collapsed .eh-side__label,.eh-app.is-collapsed .eh-side__name,.eh-app.is-collapsed .eh-side__who > .eh-icon{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.eh-app.is-collapsed .eh-side .eh-navitem .eh-count{position:absolute;top:var(--s-0h);right:calc(var(--s-1) * -1);min-width:var(--s-5);height:var(--s-5);padding:0 var(--s-1h);box-shadow:0 0 0 2px var(--bg)}
.eh-app.is-collapsed .eh-side__steps,.eh-app.is-collapsed .eh-side__status{display:none}
.eh-app.is-collapsed .eh-side__stepsmini{display:flex}
.eh-app.is-collapsed .eh-side__sdot{display:block}
.eh-app.is-collapsed .eh-side__who{justify-content:center;padding:var(--s-0h);min-height:var(--h-touch)}
.eh-app__main{min-width:0;display:flex;flex-direction:column}
.eh-topbar{position:sticky;top:0;z-index:var(--z-sticky);display:flex;align-items:center;gap:var(--s-4);height:var(--h-bar);padding:0 var(--page-x);background:var(--bg);transition:box-shadow var(--dur-2)}
.eh-topbar.is-scrolled{box-shadow:inset 0 -1px 0 var(--line-1)}
.eh-topbar__search{display:flex;align-items:center;gap:var(--s-2h);flex:0 1 calc(var(--w-modal-sm) - var(--s-10));min-width:0;height:var(--h-sm);padding:0 var(--s-2) 0 var(--s-4);border-radius:var(--r-pill);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-3);color:var(--ink-3);font-size:var(--fs-small);line-height:var(--lh-small);text-align:left;cursor:text;transition:box-shadow var(--dur-1)}
.eh-topbar__search:hover{box-shadow:inset 0 0 0 1px var(--ink-2)}
.eh-topbar__search > .eh-icon{color:var(--ink-2)}
.eh-topbar__search > span{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.eh-topbar__tools{margin-left:auto;display:flex;align-items:center;gap:var(--s-1)}
.eh-topbar__tools > .eh-btn{margin-left:var(--s-2)}
.eh-app__content{flex:1;width:100%;max-width:calc(var(--w-content) + var(--page-x) * 2);padding:var(--s-4) var(--page-x) var(--s-16)}
.eh-app__content:focus{outline:none}
.eh-bell:has([data-eh-quiet-count]:not([hidden])) .eh-dot{display:none}
.eh-page{--sticky-top:calc(var(--h-header) + var(--s-6));container-type:inline-size}
.eh-app .eh-page{--sticky-top:calc(var(--h-bar) + var(--s-4))}
.eh-page--site{padding-top:var(--s-12);padding-bottom:var(--s-4)}
.eh-pagehead{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-4) var(--s-8);margin-bottom:var(--s-8)}
.eh-pagehead--tabs{margin-bottom:var(--s-5)}
.eh-pagehead__main{flex:1 1 var(--w-modal-sm);min-width:0}
.eh-pagehead__main > .eh-back{margin-bottom:var(--s-3)}
.eh-pagehead__row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-4)}
.eh-pagehead__sub{margin-top:var(--s-2);color:var(--ink-2)}
.eh-pagehead__meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-1) var(--s-5);margin-top:var(--s-3);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-pagehead__meta > span{display:inline-flex;align-items:center;gap:var(--s-1h)}
.eh-pagehead__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2)}
.eh-pagehead__actions .eh-iconbtn{width:var(--h-sm);height:var(--h-sm)}
.eh-pagetabs{margin-bottom:var(--s-8)}
.eh-filters{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2);margin-bottom:var(--s-6)}
.eh-filters:has(+ .eh-filters){margin-bottom:var(--s-3)}
.eh-filters__end{margin-left:auto;display:flex;align-items:center;gap:var(--s-3);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-split{display:grid;grid-template-columns:minmax(0,1fr) calc(var(--w-aside) + var(--s-20));gap:var(--s-10);align-items:start}
.eh-split__aside{position:sticky;top:var(--sticky-top);display:grid;gap:var(--s-4);min-width:0}
.eh-split__aside > .eh-card{padding:var(--s-6);border-radius:var(--r-lg)}
.eh-split__aside .eh-btn--block,.eh-actions > .eh-btn{height:auto;min-height:var(--btn-h);padding-block:var(--s-2);white-space:normal;text-align:center;line-height:var(--lh-small)}
.eh-facts{display:grid;gap:var(--s-3)}
.eh-facts__row{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--s-1) var(--s-3);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-facts__row:has(.eh-badge){align-items:center}
.eh-facts__row > :first-child{color:var(--ink-2)}
.eh-facts__row > :last-child{text-align:right;font-weight:var(--w-medium);color:var(--ink)}
.eh-facts__note{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-actions{display:grid;gap:var(--s-2)}
.eh-actions > .eh-btn{width:100%}
.eh-page .eh-table-bar{flex-wrap:nowrap}
.eh-page .eh-table-bar > .eh-search{flex:0 0 calc(var(--w-aside) + var(--s-10));width:auto}
.eh-page .eh-table-bar > .eh-cluster{flex:0 1 auto;min-width:0;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding:var(--s-1);margin:calc(var(--s-1) * -1)}
.eh-page .eh-table-bar > .eh-cluster::-webkit-scrollbar{display:none}
.eh-page .eh-table-bar > .eh-cluster.is-overflow:not(.is-end){-webkit-mask-image:linear-gradient(to right,var(--ink) calc(100% - var(--s-10)),transparent);mask-image:linear-gradient(to right,var(--ink) calc(100% - var(--s-10)),transparent)}
.eh-page .eh-table-bar > .eh-cluster > *{flex:none}
.eh-page .eh-table-bar > .eh-push{flex:none;white-space:nowrap}
@container (max-width:760px){.eh-page .eh-table-bar{flex-wrap:wrap}.eh-page .eh-table-bar > .eh-search{flex-basis:100%}}
.eh-settings{display:grid;grid-template-columns:var(--w-aside) minmax(0,1fr);gap:var(--s-12);align-items:start}
.eh-settings__nav{position:sticky;top:var(--sticky-top);display:grid;gap:var(--s-0h)}
.eh-settings__nav .eh-navitem{position:relative;width:100%;text-align:left}
.eh-settings__nav .eh-navitem:is([aria-selected="true"],[aria-current]:not([aria-current="false"])){background:transparent;color:var(--ink);font-weight:var(--w-medium);box-shadow:none}
.eh-settings__nav .eh-navitem:is([aria-selected="true"],[aria-current]:not([aria-current="false"]))::before{content:"";position:absolute;left:0;top:var(--s-2);bottom:var(--s-2);width:2px;border-radius:var(--r-pill);background:var(--ink)}
.eh-settings__nav .eh-navitem[aria-current]:not([aria-current="false"]):not(:has(.eh-count))::after{content:none}
.eh-settings__nav .eh-navitem:hover{background:var(--sunken)}
.eh-settings__group{padding:var(--s-3) var(--s-3) var(--s-1h);font-size:var(--fs-caption);line-height:var(--lh-caption);font-weight:var(--w-strong);color:var(--ink-2)}
.eh-settings__panel{min-width:0;max-width:var(--w-text)}
.eh-settings__panel .eh-section[id]{scroll-margin-top:var(--sticky-top)}
.eh-section + .eh-section{margin-top:var(--s-8);padding-top:var(--s-8);border-top:1px solid var(--line-1)}
.eh-section__head{margin-bottom:var(--s-6)}
.eh-section__head > p{margin-top:var(--s-1);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-form{display:grid;gap:var(--s-5)}
.eh-form__row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-5) var(--s-4)}
.eh-form__foot{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);padding-top:var(--s-2)}
.eh-savebar{position:sticky;bottom:var(--s-4);z-index:var(--z-sticky);display:flex;align-items:center;gap:var(--s-2);margin-top:var(--s-8);padding:var(--s-2) var(--s-2) var(--s-2) var(--s-6);border-radius:var(--r-pill);background:var(--surface);box-shadow:var(--sh-3),inset 0 0 0 1px var(--line-1);animation:eh-guard-in var(--dur-2) var(--ease)}
.eh-savebar__text{flex:1;min-width:0;font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-savebar__text b{color:var(--ink);font-weight:var(--w-medium)}
@container (max-width:1000px){.eh-split{gap:var(--s-8)}.eh-settings{gap:var(--s-8)}}
@container (max-width:760px){.eh-split{grid-template-columns:minmax(0,1fr)}.eh-split__aside{position:static}.eh-settings{grid-template-columns:minmax(0,1fr);gap:var(--s-6)}.eh-settings__group{display:none}}
/* узко (контейнер уже 760: узкое окно, страница рядом с панелью сообщений): разделы — строкой с переносом, без значков, выбранный подчёркнут
   снизу, как .eh-tabs; ничего не обрезается прокруткой (K12, A33) */
@container (max-width:760px){
  .eh-settings__nav{position:static;display:flex;flex-wrap:wrap;gap:var(--s-1) 0;overflow:visible;box-shadow:inset 0 -1px 0 var(--line-1)}
  .eh-settings__nav .eh-navitem{width:auto;padding-inline:var(--s-2)}
  .eh-settings__nav .eh-navitem > .eh-icon{display:none}
  .eh-settings__nav .eh-navitem:is([aria-selected="true"],[aria-current]:not([aria-current="false"]))::before{left:var(--s-2);right:var(--s-2);top:auto;bottom:0;width:auto;height:2px}
}
@container (max-width:560px){.eh-form__row{grid-template-columns:minmax(0,1fr)}}
.eh-notices{display:grid;gap:var(--s-0h)}
.eh-notices__group{padding:var(--s-4) var(--s-4) var(--s-1h) var(--s-6);font-size:var(--fs-caption);line-height:var(--lh-caption);font-weight:var(--w-strong);color:var(--ink-2)}
.eh-notice{position:relative;display:grid;grid-template-columns:var(--s-8) minmax(0,1fr);column-gap:var(--s-3);align-items:start;padding:var(--s-3) var(--s-4) var(--s-3) var(--s-6);border-radius:var(--r-md);transition:background-color var(--dur-1)}
.eh-notice:hover{background:var(--bg)}
.eh-notice:has(.eh-notice__link:focus-visible){outline:var(--focus);outline-offset:-2px}
.eh-notice__ic{display:grid;place-items:center;width:var(--s-8);height:var(--s-8);margin-top:calc(var(--s-1) * -1);border-radius:var(--r-round);background:var(--sunken);color:var(--ink)}
.eh-notice__body{min-width:0}
.eh-notice__head{display:flex;align-items:baseline;gap:var(--s-3)}
.eh-notice__title{flex:1;min-width:0;font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-book);color:var(--ink)}
.eh-notice.is-unread .eh-notice__title{font-weight:var(--w-medium)}
.eh-notice__link{color:inherit;text-decoration:none}
.eh-notice__link::after{content:"";position:absolute;inset:0;border-radius:inherit}
.eh-notice__link:focus-visible{outline:none}
.eh-notice__time{flex:none;font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2);white-space:nowrap;font-variant-numeric:tabular-nums}
.eh-notice__text{margin-top:var(--s-0h);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-notif-sheet .eh-notice__text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.eh-notice__actions{position:relative;z-index:1;display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-4);margin-top:var(--s-2h)}
.eh-notice__done,.eh-notice__gone{position:relative;z-index:1;display:flex;align-items:center;gap:var(--s-1h);margin-top:var(--s-2);font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium);color:var(--ok)}
.eh-notice__gone{font-weight:var(--w-book);color:var(--ink-2)}
.eh-notice__confirm{position:relative;z-index:1;margin-top:var(--s-2h);padding:var(--s-3) var(--s-3) var(--s-3) var(--s-4);border-radius:var(--r-sm);background:var(--sunken)}
.eh-notice__confirm:focus-visible{outline-offset:2px}
.eh-notice__ask{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-notice__ask b{display:block;color:var(--ink);font-weight:var(--w-medium)}
.eh-notice__confirm .eh-notice__actions{margin-top:var(--s-2)}
.eh-notice__dot{position:absolute;left:var(--s-2h);top:calc(var(--s-3) + var(--s-2));width:var(--s-2);height:var(--s-2);border-radius:var(--r-round);background:var(--ink)}
.eh-notice:not(.is-unread) .eh-notice__dot{display:none}
.eh-notice.is-gone .eh-notice__title{color:var(--ink-2)}
.eh-notif-sheet .eh-sheet__head{border-bottom:0;padding-bottom:var(--s-2);padding-left:var(--s-9)}
.eh-notif-sheet__bar{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);padding:var(--s-1) var(--s-5) var(--s-4) var(--s-9);border-bottom:1px solid var(--line-1)}
.eh-notif-sheet .eh-sheet__body{display:flex;flex-direction:column;padding:var(--s-1) var(--s-3) var(--s-5)}
.eh-notif-sheet .eh-sheet__body > .eh-empty{flex:1;padding-bottom:var(--s-16)}
.eh-notif-sheet .eh-sheet__foot{justify-content:space-between;padding-left:var(--s-9)}

/* ---- дополнения к оболочкам (v3) ---- */
/* колокольчик «вы здесь» — на странице уведомлений: подложка как у текущего пункта, золотая точка снизу */
.eh-bell[aria-current="page"]{background:var(--surface);box-shadow:var(--sh-1);--dot-ring:var(--surface)}
.eh-bell[aria-current="page"]::after{content:"";position:absolute;left:50%;bottom:calc(var(--s-1h) * -1);width:var(--s-1h);height:var(--s-1h);border-radius:var(--r-round);background:var(--gold);box-shadow:0 0 0 1px var(--gold-edge);transform:translateX(-50%)}
/* знак «eh» в свёрнутом меню, кольцо бейджей на слоновой кости */
.eh-side{--pb-ring:var(--bg)}
.eh-side__mark{display:none}
.eh-app.is-collapsed .eh-side__mark{display:block}
/* ограниченный кабинет (блокировка, S4): без поиска, «+ Создать» и счётчиков */
.eh-app.is-restricted .eh-topbar__search,.eh-app.is-restricted [data-ehs-tool="create"],.eh-app.is-restricted [data-ehs-tool="help"]{display:none}
.eh-app.is-restricted .eh-topbar__tools{margin-left:auto}
/* слот под верхней строкой кабинета: «Нет соединения», «Плановые работы», «К списанию» */
.eh-app__notice{position:sticky;top:var(--h-bar);z-index:var(--z-sticky)}
.eh-app__notice:empty{display:none}
.eh-app__notice > .eh-banner--bar{padding-inline:var(--page-x)}
.eh-sitehead-notice{position:sticky;top:var(--h-header);z-index:var(--z-sticky)}
.eh-sitehead-notice:empty{display:none}

/* лента уведомлений на странице (S1): разделы слева, лента без ограничения ширины; уже 820 — разделы строкой */
.eh-settings--feed{grid-template-columns:var(--w-sidebar) minmax(0,1fr)}
.eh-settings--feed > .eh-settings__panel{max-width:none}
.eh-settings--feed .eh-notice__text{max-width:var(--w-text)}
@container (max-width:820px){
  .eh-settings--feed{grid-template-columns:minmax(0,1fr);gap:var(--s-5)}
  .eh-settings--feed .eh-settings__nav{position:static;display:flex;flex-wrap:wrap;gap:var(--s-1) 0;overflow:visible}
  .eh-settings--feed .eh-settings__nav .eh-navitem{width:auto;padding:0 var(--s-2)}
  .eh-settings--feed .eh-settings__nav .eh-navitem[aria-selected="true"]::before{left:var(--s-2);right:var(--s-2);top:auto;bottom:0;width:auto;height:var(--s-0h)}
}
/* «Новое» у только что пришедшего — .eh-badge--now перед временем; строка «больше недоступно» не нажимается */
.eh-notice__head > .eh-badge{flex:none;align-self:center}
.eh-notice.is-gone:hover{background:transparent}
.eh-notice.is-gone .eh-notice__ic{color:var(--ink-2)}
/* категория «Платформа» — аватар ElevenHouse: синий круг и золотой знак */
.eh-notice__ic--brand{background:var(--action);color:var(--gold)}
.eh-notice__ic--brand > .eh-mark{width:60%;height:calc(var(--s-8) * .6 / 1.4906)}
/* заготовка строки во время загрузки — та же сетка, что у .eh-notice */
.eh-notice--skel{display:grid;grid-template-columns:var(--s-8) minmax(0,1fr) var(--s-12);column-gap:var(--s-3);align-items:start;padding:var(--s-3) var(--s-4) var(--s-3) var(--s-6)}
.eh-notice--skel > .eh-skel--circle{width:var(--s-8);height:var(--s-8);margin-top:calc(var(--s-1) * -1)}
.eh-skel--w-sm{width:var(--w-sidebar);max-width:100%} .eh-skel--w-md{width:var(--w-modal-sm);max-width:100%}
.eh-skel--w-lg{width:var(--w-modal);max-width:100%} .eh-skel--w-xl{width:var(--w-text);max-width:100%}
/* конец ленты и плашка «N новых уведомлений · Показать» (липнет сверху ленты, места не занимает) */
.eh-notices__end{padding:var(--s-6) var(--s-4) var(--s-2);text-align:center;font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-fresh{position:sticky;top:var(--sticky-top);z-index:var(--z-sticky);height:0;display:flex;justify-content:center}
.eh-fresh > .eh-btn{box-shadow:var(--sh-2),inset 0 0 0 1px var(--line-3)}

/* ---- шторка входа клиента — ehShell.clientLogin: ♡ у гостя, «Написать», «Сообщить, когда появятся окна».
   Всегда вход в аккаунт клиента: телефон или почта → код из 6 цифр → новому клиенту имя, согласие и 18+ ---- */
.eh-login{display:grid;gap:var(--s-6)}
.eh-login[hidden]{display:none}
.eh-login__for{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-4);border-radius:var(--r-md);background:var(--bg)}
.eh-login__for p{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-login__for b{display:block;color:var(--ink);font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium)}
.eh-login .eh-code{margin-top:var(--s-1)}
.eh-login__sent{color:var(--ink-2)}
.eh-login__sent b{color:var(--ink);font-weight:var(--w-medium);white-space:nowrap}
.eh-login__agree{display:grid;gap:var(--s-3)}
.eh-login__back{margin-right:auto;margin-left:calc(var(--s-3) * -1)}

/* =====================================================================
   19. ЗАГРУЗКА КАБИНЕТА И СЛУЖЕБНЫЕ СТРАНИЦЫ
   ===================================================================== */
/* загрузка кабинета дольше 0,4 с: знак «eh» 32 в круге 72, по кругу раз в 1,2 с проходит золотая дуга в 1/12.
   Через 3 с — «Загружаем кабинет…», через 10 с — «Дольше обычного · Обновить». Без движения дуга стоит.
   Внутри страниц — по-прежнему заготовки и .eh-spinner */
.eh-boot{position:fixed;inset:0;z-index:var(--z-tooltip);display:grid;place-content:center;justify-items:center;gap:var(--s-4);background:var(--bg);animation:eh-boot-in var(--dur-2) var(--ease) .4s both}
.eh-boot--static{position:relative;inset:auto;z-index:auto;min-height:calc(var(--s-30) * 2);border-radius:var(--r-lg);animation:none}
.eh-boot__ring{position:relative;display:grid;place-items:center;width:var(--s-18);height:var(--s-18)}
.eh-boot__arc{position:absolute;inset:0;width:100%;height:100%;color:var(--gold);animation:eh-spin 1.2s linear infinite}
.eh-boot__ring > .eh-mark{--mark-h:32px} /* знак 1,49 : 1 — при 40 px задевает круг 72 */
.eh-boot__texts{display:grid;min-height:var(--lh-small)}
.eh-boot__text{grid-area:1 / 1;font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2);text-align:center;visibility:hidden}
.eh-boot__text--3{animation:eh-reveal 1ms 3s forwards,eh-conceal 1ms 10s forwards}
.eh-boot__text--10{animation:eh-reveal 1ms 10s forwards}
.eh-boot.is-wait .eh-boot__text--3,.eh-boot.is-long .eh-boot__text--10{visibility:visible;animation:none}
.eh-boot.is-wait .eh-boot__text--10,.eh-boot.is-long .eh-boot__text--3{visibility:hidden;animation:none}

/* служебная страница (S4, S5, S6): <section class="eh-service"> > .eh-empty.eh-empty--page.
   Иллюстрация — круг домов (#g-wheel) или значок исхода .eh-statusmark; без оболочки (--bare) — знак «eh» 40 px */
.eh-service{display:grid;place-items:center;min-height:calc(100vh - var(--h-header) - var(--s-16))}
.eh-app .eh-service{min-height:calc(100vh - var(--h-bar) - var(--s-20))}
.eh-service > .eh-empty{width:100%}
.eh-service .eh-empty__title:focus{outline:none}
.eh-service .eh-empty__foot{max-width:var(--w-modal)}
.eh-service__code{display:inline-flex;align-items:center;gap:var(--s-1)}
.eh-service__card{width:100%;max-width:var(--w-modal);margin-top:var(--s-3);text-align:left}
.eh-service__card + .eh-empty__actions{margin-top:var(--s-3)}
.eh-service__mark{margin-bottom:var(--s-6)}
.eh-service--top,.eh-app .eh-service--top{display:block;place-items:normal;min-height:0}
.eh-service--top > .eh-empty{padding-top:var(--s-8);padding-bottom:var(--s-12)}
.eh-service--top .eh-empty__art{--art-k:.6;width:var(--s-30);height:var(--s-30);margin-bottom:var(--s-4)}
.eh-service--bare{min-height:100vh;padding-inline:var(--gutter)}
/* значок исхода в круге: круг домов — для тупиков, значок — для результата действия (успех, проверка, сбой) */
.eh-statusmark{display:grid;place-items:center;width:var(--s-14);height:var(--s-14);margin-bottom:var(--s-3);border-radius:var(--r-round);background:var(--sunken);color:var(--ink)}
.eh-statusmark > .eh-icon{width:var(--s-7);height:var(--s-7)}
.eh-statusmark--ok{background:var(--ok-bg);color:var(--ok)}
.eh-statusmark--info{background:var(--info-bg);color:var(--info)}
.eh-statusmark--err{background:var(--err-bg);color:var(--err)}

/* =====================================================================
   20. ВЫБОР С ПОДРОБНОСТЯМИ: строка-вариант, группа вариантов, «выбранное строкой»
   ===================================================================== */
.eh-options{display:grid;gap:var(--s-2)}
.eh-options--loose{gap:var(--s-3)}
.eh-options.is-invalid > .eh-option,.eh-options.is-invalid > .eh-option-wrap > .eh-option{box-shadow:inset 0 0 0 1px var(--err)}
/* вариант-строка: название и мета слева, цена и отметка справа по центру */
.eh-option--row{grid-template-columns:minmax(0,1fr) auto auto;align-items:center;column-gap:var(--s-4);min-height:var(--h-lg);padding:var(--s-3) var(--s-4) var(--s-3) var(--s-5)}
.eh-option--row > .eh-option__main{grid-column:1;grid-row:1;display:grid;gap:var(--s-0h);min-width:0}
.eh-option--row > .eh-option__main--inline{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:var(--s-3)}
.eh-option--row .eh-option__meta,.eh-option--row .eh-option__text{grid-column:auto}
.eh-option--row > .eh-option__aside{grid-column:2;grid-row:1;align-self:center}
.eh-option--row > .eh-option__tick{grid-column:3;grid-row:1;align-self:center}
.eh-option:has(input:disabled) .eh-option__tick{box-shadow:inset 0 0 0 1.5px var(--line-2)}
/* вариант с подробностями выбранного: рамка и ореол — на обёртке, подробности — песочной вставкой внутри */
.eh-option-wrap{border-radius:var(--r-lg)}
.eh-option-wrap.is-on{box-shadow:inset 0 0 0 1.5px var(--gold-edge),0 0 0 4px var(--gold-soft)}
.eh-option-wrap.is-on > .eh-option,.eh-option-wrap.is-on > .eh-option:hover{background:transparent;box-shadow:none}
.eh-option__more{display:grid;gap:var(--s-4);padding:var(--s-4) var(--s-5);border-radius:var(--r-md);background:var(--bg)}
.eh-option-wrap.is-on > .eh-option__more{margin:0 var(--s-2) var(--s-2)}
/* выбранное строкой с «Изменить»: клиент, услуга, время. Поля продолжения — в той же карточке после тонкой линии */
.eh-chosen{display:flex;align-items:center;gap:var(--s-4);min-height:var(--h-lg);padding:var(--s-3) var(--s-3) var(--s-3) var(--s-4);border-radius:var(--r-lg);background:var(--bg);box-shadow:inset 0 0 0 1px var(--line-1)}
.eh-chosen--text{padding-left:var(--s-5)}
.eh-chosen__main{display:grid;flex:1;min-width:0;gap:var(--s-0h)}
.eh-chosen__main b{font-weight:var(--w-medium)}
.eh-chosen__sub{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-0h) var(--s-3);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-chosen__sub > span{display:inline-flex;align-items:center;gap:var(--s-1h)}
.eh-chosen__sub .eh-icon{width:var(--s-4);height:var(--s-4)}
.eh-chosen:has(+ .eh-option__more){border-radius:var(--r-lg) var(--r-lg) 0 0}
.eh-chosen + .eh-option__more{border-radius:0 0 var(--r-lg) var(--r-lg);box-shadow:inset 1px 0 0 var(--line-1),inset -1px 0 0 var(--line-1),inset 0 -1px 0 var(--line-1)}
/* строка происхождения клиента: «Пришла через ElevenHouse» / «Ваш клиент» — значок и слова цветом текста, без золота */
.eh-origin{display:inline-flex;align-items:center;gap:var(--s-1h);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-origin > .eh-icon,.eh-origin > .eh-mark{width:16px;height:16px;flex:none}
.eh-origin > .eh-mark{--mark-h:16px;width:calc(var(--mark-h) * 1.4906);height:var(--mark-h)}

/* =====================================================================
   21. УСЛОВИЯ ОТМЕНЫ: шкала по «Условиям на момент покупки»
   <div class="eh-tscale"><ol class="eh-tscale__bar"><li class="eh-tscale__seg eh-tscale__seg--free is-now">…
   Отрезков столько, сколько разных сумм возврата (1–3). Подписи — дата и сумма; «сейчас» — золотая точка.
   --free — возврат 100 % · --part — часть · --none — ничего. Вид эксперта — те же отрезки с его словами.
   ===================================================================== */
.eh-tscale{display:grid;gap:var(--s-3);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-tscale__bar{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:var(--s-0h)}
.eh-tscale__seg{position:relative;display:grid;align-content:start;gap:var(--s-0h);padding-top:var(--s-5);padding-right:var(--s-2);min-width:0}
.eh-tscale__seg::before{content:"";position:absolute;left:0;right:0;top:var(--s-1h);height:var(--s-2);background:var(--seg,var(--chart-track));box-shadow:inset 0 0 0 1px var(--seg-edge,transparent)}
.eh-tscale__seg:first-child::before{border-radius:var(--r-pill) 0 0 var(--r-pill)}
.eh-tscale__seg:last-child::before{border-radius:0 var(--r-pill) var(--r-pill) 0}
.eh-tscale__seg:only-child::before{border-radius:var(--r-pill)}
.eh-tscale__seg--free{--seg:var(--surface);--seg-edge:var(--line-3)}
.eh-tscale__seg--part{--seg:var(--chart-2)}
.eh-tscale__seg--none{--seg:var(--chart-1)}
/* «сейчас» — золотая точка на полосе и слово перед датой */
.eh-tscale__seg.is-now::after{content:"";position:absolute;left:0;top:calc(var(--s-1h) + var(--s-1) - var(--s-3h) / 2);width:var(--s-3h);height:var(--s-3h);border-radius:var(--r-round);background:var(--gold);box-shadow:0 0 0 1.5px var(--gold-edge),0 0 0 3.5px var(--tscale-ring,var(--surface))}
.eh-tscale__now{font-weight:var(--w-strong);color:var(--ink)}
.eh-tscale__when{color:var(--ink-2);overflow-wrap:anywhere}
.eh-tscale__what{color:var(--ink);font-weight:var(--w-medium)}
.eh-tscale__what .eh-money{font-weight:var(--w-medium)}
.eh-tscale__note{display:flex;align-items:flex-start;gap:var(--s-2);color:var(--ink)}
.eh-tscale__note > .eh-icon{width:18px;height:18px;flex:none;margin-top:1px;color:var(--ink-2)}
.eh-tscale__foot{display:grid;gap:var(--s-1);padding-top:var(--s-3);border-top:1px solid var(--line-1);color:var(--ink-2)}
.eh-tscale__foot p{display:flex;align-items:flex-start;gap:var(--s-2)}
.eh-tscale__foot .eh-icon{width:18px;height:18px;flex:none;margin-top:1px}
/* короткая строка (страница эксперта G4, панель записи) */
.eh-tscale--line{display:flex;align-items:center;gap:var(--s-2);color:var(--ink)}
.eh-tscale--line > .eh-icon{width:18px;height:18px;flex:none;color:var(--ink-2)}
.eh-card--sunken .eh-tscale,.eh-option__more .eh-tscale{--tscale-ring:var(--bg)}

/* =====================================================================
   22. ДЕНЬГИ: кошелёк, расчёт суммы, «К списанию»
   ===================================================================== */
/* кошелёк — верх «Денег» (A23), P12: главная сумма «Доступно к выводу» с главной кнопкой и виды денег */
.eh-wallet{display:grid;gap:var(--s-6)}
.eh-wallet__main{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--s-4) var(--s-8);padding:var(--s-8);border-radius:var(--r-lg);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-1)}
.eh-wallet__label{font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium);color:var(--ink-2)}
.eh-wallet__sum{margin-top:var(--s-1);font-size:var(--fs-h1);line-height:var(--lh-h1);font-weight:var(--w-light);letter-spacing:var(--ls-h1);white-space:nowrap}
.eh-wallet__note{margin-top:var(--s-2);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-wallet__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2)}
.eh-wallet__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s-4)}
.eh-wallet__stats .eh-stat{padding:var(--s-5)}
.eh-wallet__stats .eh-stat__value{font-size:var(--fs-h3);line-height:var(--lh-h3);font-variant-numeric:normal}
.eh-wallet__rows{display:grid;border-radius:var(--r-lg);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-1)}
.eh-wallet__row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-4);padding:var(--s-4) var(--s-6);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-wallet__row + .eh-wallet__row{border-top:1px solid var(--line-1)}
.eh-wallet__row > dt{flex:1 1 var(--w-aside);min-width:0;color:var(--ink)}
.eh-wallet__row > dt small{display:block;font-size:var(--fs-small);color:var(--ink-2)}
.eh-wallet__row > dd{display:flex;align-items:center;gap:var(--s-3);font-weight:var(--w-medium);white-space:nowrap}
@container (max-width:900px){.eh-wallet__stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* расчёт суммы: «Клиент заплатит 4 500 ₽ → комиссия 270 ₽ (6 % · Team Pro) → вам 4 230 ₽» */
.eh-calc{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-3);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-calc > .eh-icon{width:16px;height:16px;flex:none;color:var(--ink-3)}
.eh-calc__step{display:inline-flex;align-items:baseline;gap:var(--s-1h);white-space:nowrap}
.eh-calc__step b{color:var(--ink);font-weight:var(--w-medium);font-variant-numeric:tabular-nums}
.eh-calc__step--you b{font-size:var(--fs-body)}
.eh-calc__why{color:var(--ink-2);font:inherit;text-decoration:underline dotted;text-decoration-color:var(--line-3);text-underline-offset:3px;border-radius:var(--s-0h);cursor:pointer}
.eh-calc__why:hover{color:var(--ink)}
/* льгота: обычная ставка зачёркнута цветом текста, без золота */
.eh-calc__old{color:var(--ink-2);text-decoration:line-through;text-decoration-thickness:1px}
/* ячейка таблицы и строки операций: сумма «вам», под ней — расчёт */
.eh-calc--cell{display:grid;gap:0;justify-items:end;text-align:right}
.eh-calc--cell > b{color:var(--ink);font-size:var(--fs-small);font-weight:var(--w-medium);font-variant-numeric:tabular-nums;white-space:nowrap}
.eh-calc--cell > span{font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2);white-space:nowrap}
/* блок «Расчёт суммы» в карточке записи и шторке */
.eh-calc--block{display:grid;grid-template-columns:repeat(3,minmax(0,auto));justify-content:start;gap:var(--s-1) var(--s-6);padding:var(--s-4) var(--s-5);border-radius:var(--r-md);background:var(--bg)}
.eh-calc--block .eh-calc__step{display:grid;gap:var(--s-0h)}
.eh-calc--block .eh-calc__step b{font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:var(--w-book)}
.eh-calc--block > .eh-icon{display:none}
.eh-calc__note{grid-column:1 / -1;margin-top:var(--s-1);color:var(--ink-2)}

/* =====================================================================
   23. РЕКЛАМНЫЙ КАБИНЕТ: бюджет, прогноз, ставка, рекомендация, графики
   ===================================================================== */
/* бюджет: полоса из трёх отрезков — израсходовано / отложено / свободно; между отрезками 2 px фона */
.eh-budget{display:grid;gap:var(--s-3)}
.eh-budget__bar{display:flex;gap:2px;height:var(--s-2h);border-radius:var(--r-pill);overflow:hidden;background:var(--surface)}
.eh-budget__part{flex:0 0 var(--value,0%);min-width:var(--s-1);background:var(--part,var(--chart-track))}
.eh-budget__part--spent{--part:var(--chart-1)}
.eh-budget__part--held{--part:var(--chart-2)}
.eh-budget__part--free{--part:var(--chart-track);flex:1 1 auto}
.eh-budget__legend{display:flex;flex-wrap:wrap;gap:var(--s-2) var(--s-6);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-budget__legend > div{display:grid;gap:0}
.eh-budget__legend dt{display:inline-flex;align-items:center;gap:var(--s-1h);color:var(--ink-2)}
.eh-budget__legend dt:not(:has(.eh-budget__key)) + dd{padding-left:0}
.eh-budget__legend dd{padding-left:calc(var(--s-3) + var(--s-1h));font-weight:var(--w-medium);color:var(--ink);font-variant-numeric:tabular-nums}
.eh-budget__key{width:var(--s-3);height:var(--s-3);border-radius:var(--s-0h);background:var(--part,var(--chart-track))}
.eh-budget__key--spent{--part:var(--chart-1)} .eh-budget__key--held{--part:var(--chart-2)} .eh-budget__key--free{--part:var(--chart-track);box-shadow:inset 0 0 0 1px var(--line-2)}
/* прогноз — всегда диапазоном и с пометкой «прогноз» */
.eh-forecast{display:grid;gap:var(--s-1)}
.eh-forecast__label{display:flex;align-items:center;gap:var(--s-2);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-forecast__value{font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:var(--w-book);white-space:nowrap}
.eh-forecast__note{font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
/* ставка: .eh-inputgroup «₽ за 1000 показов» + строка рынка */
.eh-bid{max-width:calc(var(--w-aside) + var(--s-10))}
.eh-bid__market{display:flex;flex-wrap:wrap;gap:var(--s-1) var(--s-4);font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-bid__market b{color:var(--ink);font-weight:var(--w-medium)}
/* рекомендация: текст, ожидаемый эффект, «Применить» и «Скрыть». Не больше трёх сразу */
.eh-reco{display:grid;grid-template-columns:var(--s-10) minmax(0,1fr) auto;gap:var(--s-1) var(--s-4);align-items:start;padding:var(--s-4) var(--s-4) var(--s-4) var(--s-5);border-radius:var(--r-md);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-1)}
.eh-reco__ic{display:grid;place-items:center;width:var(--s-10);height:var(--s-10);border-radius:var(--r-round);background:var(--sunken);color:var(--ink)}
.eh-reco__ic > .eh-icon{width:20px;height:20px}
.eh-reco__text{font-size:var(--fs-body);line-height:var(--lh-body)}
.eh-reco__effect{margin-top:var(--s-1);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-reco__actions{display:flex;align-items:center;gap:var(--s-1);align-self:center}
@container (max-width:720px){.eh-reco{grid-template-columns:var(--s-10) minmax(0,1fr)}.eh-reco__actions{grid-column:2}}
/* график расхода или показов по дням — один ряд, одна ось, линия 2 px и тихая сетка */
.eh-chart{position:relative;display:grid;gap:var(--s-3)}
.eh-chart__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--s-2) var(--s-4)}
.eh-chart__title{font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium);color:var(--ink-2)}
.eh-chart__total{font-size:var(--fs-h3);line-height:var(--lh-h3);white-space:nowrap}
.eh-chart__plot{display:block;width:100%;height:calc(var(--s-30) + var(--s-10));overflow:visible}
.eh-chart__grid{stroke:var(--line-1);stroke-width:1;shape-rendering:crispEdges}
.eh-chart__axis{font-family:var(--font);font-size:var(--fs-caption);fill:var(--ink-2)}
.eh-chart__bar{fill:var(--chart-1);pointer-events:none}
.eh-chart__bar.is-forecast{fill:var(--chart-track)}
.eh-chart__hit{fill:transparent;cursor:default}
.eh-chart__hit:hover + .eh-chart__bar,.eh-chart__hit:focus-visible + .eh-chart__bar{fill:var(--chart-2)}
.eh-chart__hit:focus-visible{outline:none;stroke:var(--ink);stroke-width:2}
.eh-chart__line{fill:none;stroke:var(--chart-1);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.eh-chart__area{fill:var(--chart-wash)}
.eh-chart__dot{fill:var(--chart-1);stroke:var(--surface);stroke-width:2}
.eh-chart__table{font-size:var(--fs-small)}

/* =====================================================================
   24. АДМИНКА: правило комиссии, «Проверить расчёт», «Кого затронет»
   ===================================================================== */
/* строка правила комиссии (P35): ручка порядка, название, условия чипами, ставка и границы, период, статус */
.eh-rules{display:grid;border-radius:var(--r-lg);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-1)}
.eh-rule{display:grid;grid-template-columns:var(--h-touch) minmax(0,1fr) minmax(var(--s-24),auto) minmax(var(--s-30),auto);gap:var(--s-1) var(--s-5);align-items:center;padding:var(--s-4) var(--s-6) var(--s-4) var(--s-2)}
.eh-rule + .eh-rule{border-top:1px solid var(--line-1)}
.eh-rule__drag{display:grid;place-items:center;width:var(--h-touch);height:var(--h-touch);border-radius:var(--r-sm);color:var(--ink-2);cursor:grab}
.eh-rule__drag:hover{background:var(--sunken);color:var(--ink)}
.eh-rule__main{display:grid;gap:var(--s-2);min-width:0}
.eh-rule__name{font-weight:var(--w-medium)}
.eh-rule__name a{color:inherit}
.eh-rule__conds{display:flex;flex-wrap:wrap;gap:var(--s-1h)}
.eh-rule__conds .eh-chip{cursor:default}
.eh-rule__rate{display:grid;justify-items:end;text-align:right}
.eh-rule__rate b{font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:var(--w-book);white-space:nowrap}
.eh-rule__rate span,.eh-rule__meta span{font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2);white-space:nowrap}
.eh-rule__meta{display:grid;gap:var(--s-1);justify-items:start}
.eh-rule.is-off .eh-rule__name,.eh-rule.is-off .eh-rule__rate b{color:var(--ink-2)}
.eh-rule.is-base .eh-rule__drag{visibility:hidden}
/* «Проверить расчёт»: поля слева, справа — подошедшие правила с «сработало», расчёт и колонки «сейчас / после» */
.eh-check{display:grid;grid-template-columns:calc(var(--w-aside) + var(--s-12)) minmax(0,1fr);gap:var(--s-8);padding:var(--s-6);border-radius:var(--r-lg);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-1)}
.eh-check__fields{display:grid;gap:var(--s-4);align-content:start}
.eh-check__result{display:grid;gap:var(--s-4);align-content:start;min-width:0}
.eh-check__rules{display:grid;gap:var(--s-1)}
.eh-check__rule{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-check__rule > .eh-icon{width:18px;height:18px;flex:none}
.eh-check__rule.is-hit{background:var(--bg);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line-2)}
.eh-check__rule.is-hit b{font-weight:var(--w-medium)}
.eh-check__rule > .eh-badge{margin-left:auto}
.eh-check__cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-3)}
.eh-check__col{display:grid;gap:var(--s-1);padding:var(--s-4) var(--s-5);border-radius:var(--r-md);background:var(--bg)}
.eh-check__col > span{font-size:var(--fs-caption);line-height:var(--lh-caption);font-weight:var(--w-strong);color:var(--ink-2)}
.eh-check__col > b{font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:var(--w-book);white-space:nowrap}
.eh-check__col > small{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
@container (max-width:900px){.eh-check{grid-template-columns:minmax(0,1fr)}}
/* «Кого затронет» — в диалоге «Опубликовать изменения» */
.eh-affect{display:grid;gap:var(--s-3);padding:var(--s-4) var(--s-5);border-radius:var(--r-md);background:var(--bg)}
.eh-affect__nums{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-3)}
.eh-affect__num b{display:block;font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:var(--w-book);white-space:nowrap}
.eh-affect__num span{font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}

/* =====================================================================
   25. ВСЁ, ЧТО СОЗДАЁТ ПЛАТФОРМА: письмо в ящике, PDF, документ, QR, картинка ссылки, видеозапись, заставка
   Айдентика ElevenHouse на любом тарифе: шапку и подвал не убрать, логотип эксперта — только в блоке автора
   ===================================================================== */
/* строка письма в ящике (витрина писем, превью в P27): синий аватар со знаком, отправитель, тема, время, прехедер */
.eh-mailrow{display:grid;grid-template-columns:var(--s-10) minmax(0,1fr);gap:var(--s-3);width:100%;padding:var(--s-3);border-radius:var(--r-md);text-align:left;color:var(--ink);scroll-margin:var(--s-2);transition:background-color var(--dur-1),box-shadow var(--dur-1)}
.eh-mailrow:hover{background:var(--bg)}
.eh-mailrow[aria-current="true"]{background:var(--gold-soft);box-shadow:inset 0 0 0 1.5px var(--gold-edge)}
.eh-mailrow__body{display:block;min-width:0}
.eh-mailrow__from{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-mailrow__line{display:flex;align-items:baseline;gap:var(--s-2);margin-top:var(--s-0h)}
.eh-mailrow__subj{flex:1 1 auto;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-mailrow__time{flex:none;font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2);font-variant-numeric:tabular-nums}
.eh-mailrow__pre{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:var(--s-0h);font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-mailrow.is-unread .eh-mailrow__from{color:var(--ink);font-weight:var(--w-medium)}
.eh-mailrow.is-unread .eh-mailrow__subj{color:var(--ink);font-weight:var(--w-strong)}
.eh-mailrow.is-unread .eh-mailrow__subj::before{content:"";display:inline-block;width:var(--s-2);height:var(--s-2);margin-right:var(--s-1h);border-radius:var(--r-round);background:var(--ink);vertical-align:middle;transform:translateY(calc(var(--s-0h) * -1))}
/* открытое письмо: полоса действий, заголовки письма и рамка с самим письмом (iframe) */
.eh-mailview{min-width:0;padding:0;scroll-margin-top:var(--s-4)}
.eh-mailview__bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-3) var(--s-6);padding:var(--s-4) var(--s-6);border-bottom:1px solid var(--line-1)}
.eh-mailview__group{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-3)}
.eh-mailview__head{display:grid;gap:var(--s-4);padding:var(--s-6) var(--s-8) var(--s-5)}
.eh-mailview__from{display:flex;align-items:flex-start;gap:var(--s-3);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-mailview__who{min-width:0;padding-top:var(--s-0h)}
.eh-mailview__date{margin-left:auto;padding-top:var(--s-0h);color:var(--ink-2);white-space:nowrap}
.eh-mailview__att{display:inline-flex;align-items:center;gap:var(--s-2);justify-self:start;min-height:var(--h-sm);padding:var(--s-1h) var(--s-4) var(--s-1h) var(--s-3);border-radius:var(--r-sm);box-shadow:inset 0 0 0 1px var(--line-2);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-mailview__att .eh-icon{color:var(--ink-2)}
.eh-mailview__stage{padding:0 var(--s-6) var(--s-6)}
.eh-mailview__frame{display:block;width:100%;border:0;border-radius:var(--r-md);background:var(--bg)}
.eh-mailview__stage.is-phone{display:flex;justify-content:center;padding-top:var(--s-6);padding-bottom:var(--s-8);background:var(--bg)}
.eh-mailview__stage.is-phone .eh-mailview__frame{width:calc(var(--s-30) * 3);border-radius:var(--r-lg);box-shadow:0 0 0 1px var(--line-2),0 0 0 var(--s-2) var(--surface),0 0 0 calc(var(--s-2) + 1px) var(--line-2)}

/* страница PDF ElevenHouse (A15, A35, K8, G16; разбор, расклад, итоги встречи). Макет листа A4 в масштабе:
   обложка с основным логотипом, блок автора, знак «eh» и номер страницы внизу каждой страницы, подвал «Подготовлено на ElevenHouse» */
.eh-pdf{position:relative;display:flex;flex-direction:column;aspect-ratio:210 / 297;width:100%;max-width:calc(var(--w-sheet) - var(--s-12));padding:var(--s-10) var(--s-10) var(--s-6);background:var(--surface);border-radius:var(--r-xs);box-shadow:var(--sh-2);color:var(--ink);font-size:var(--fs-caption);line-height:var(--lh-caption);overflow:hidden}
.eh-pdf--cover{justify-content:space-between;background:var(--bg)}
.eh-pdf__logo{height:var(--s-14);width:auto;align-self:flex-start}
.eh-pdf__kicker{font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium);color:var(--ink-2)}
.eh-pdf__title{margin-top:var(--s-2);font-size:var(--fs-title);line-height:var(--lh-title);font-weight:var(--w-light);letter-spacing:var(--ls-title);font-variation-settings:'CRSV' 1,'SHRP' 0}
.eh-pdf__h{font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium)}
.eh-pdf__text{margin-top:var(--s-2);color:var(--ink)}
.eh-pdf__text + .eh-pdf__text{margin-top:var(--s-1h)}
.eh-pdf__lines{display:grid;gap:var(--s-2);margin-top:var(--s-3)}
.eh-pdf__lines i{display:block;height:var(--s-1h);width:var(--w,100%);border-radius:var(--r-pill);background:var(--line-1)}
/* блок автора: фото (или логотип эксперта на Team Pro и Studio — не крупнее нашего), имя, специализация, акцент из пастелей */
.eh-pdf__author{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-4);border-radius:var(--r-sm);background:var(--surface);box-shadow:inset var(--s-1) 0 0 var(--pdf-accent,var(--line-2))}
.eh-pdf__author img,.eh-pdf__author .eh-avatar{width:var(--s-10);height:var(--s-10);border-radius:var(--r-photo);object-fit:cover}
.eh-pdf__author b{display:block;font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium)}
.eh-pdf__author span{color:var(--ink-2)}
.eh-pdf__author-logo{display:grid;place-items:center;width:var(--s-10);height:var(--s-10);border-radius:var(--r-xs);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-1);font-size:var(--fs-caption);font-weight:var(--w-strong);color:var(--ink-2)}
.eh-pdf__foot{display:flex;align-items:center;gap:var(--s-2);margin-top:auto;padding-top:var(--s-3);border-top:1px solid var(--line-1);color:var(--ink-2)}
.eh-pdf__foot .eh-mark{color:var(--ink)}
.eh-pdf__foot > :last-child{margin-left:auto;font-variant-numeric:tabular-nums}
/* документ ElevenHouse: чек, отчёт за период, акты за комиссию, тариф и рекламу (с расходом по erid), выписка выводов */
.eh-doc{display:grid;gap:var(--s-4);width:100%;max-width:var(--w-modal);padding:var(--s-8);background:var(--surface);border-radius:var(--r-xs);box-shadow:var(--sh-2);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-doc__head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s-4);padding-bottom:var(--s-4);border-bottom:1px solid var(--line-2)}
.eh-doc__head img{height:var(--logo-h);width:auto}
.eh-doc__no{text-align:right;color:var(--ink-2)}
.eh-doc__no b{display:block;font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--ink)}
.eh-doc__table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
.eh-doc__table th{padding:var(--s-1h) 0;border-bottom:1px solid var(--line-1);font-size:var(--fs-caption);line-height:var(--lh-caption);font-weight:var(--w-strong);color:var(--ink-2);text-align:left}
.eh-doc__table td{padding:var(--s-2) 0;border-bottom:1px solid var(--line-1);vertical-align:top}
.eh-doc__table .is-num{text-align:right;white-space:nowrap;padding-left:var(--s-4)}
.eh-doc__total{display:flex;justify-content:space-between;font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium)}
.eh-doc__req{color:var(--ink-2);font-size:var(--fs-caption);line-height:var(--lh-caption)}
/* QR-код страницы со знаком «eh» в центре на белом кружке: коррекция H, знак не больше 20 % площади */
.eh-qr{position:relative;display:inline-grid;place-items:center;width:var(--qr,var(--s-30));aspect-ratio:1;padding:var(--s-3);border-radius:var(--r-md);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-1)}
.eh-qr > img,.eh-qr > svg:first-child{width:100%;height:100%;image-rendering:pixelated}
.eh-qr__mark{position:absolute;display:grid;place-items:center;width:28%;aspect-ratio:1;border-radius:var(--r-round);background:var(--surface)}
.eh-qr__mark > .eh-mark{width:70%;height:auto}
/* картинка ссылки для соцсетей 1200 × 630: фото, имя, специализация, логотип ElevenHouse */
.eh-og{position:relative;display:grid;grid-template-columns:38% minmax(0,1fr);aspect-ratio:1200 / 630;width:100%;max-width:var(--w-modal-lg);border-radius:var(--r-md);overflow:hidden;background:var(--bg);box-shadow:inset 0 0 0 1px var(--line-1)}
.eh-og__photo{width:100%;height:100%;object-fit:cover;filter:var(--photo-grade)}
.eh-og__body{display:flex;flex-direction:column;justify-content:space-between;padding:var(--s-8)}
.eh-og__name{font-size:var(--fs-h2);line-height:var(--lh-h2);font-weight:var(--w-light);letter-spacing:var(--ls-h2);font-variation-settings:'CRSV' 1,'SHRP' 0}
.eh-og__spec{margin-top:var(--s-2);font-size:var(--fs-h3);line-height:var(--lh-h3);color:var(--ink-2)}
.eh-og__logo{height:var(--logo-h-lg);width:auto;align-self:flex-start}
/* знак на видеозаписи и в комнате консультации — слоновая кость в углу */
.eh-videomark{position:relative;aspect-ratio:16 / 9;width:100%;max-width:var(--w-modal);border-radius:var(--r-md);overflow:hidden;background:var(--gen-dark-bg)}
.eh-videomark > img{width:100%;height:100%;object-fit:cover;opacity:.9}
.eh-videomark > .eh-mark{position:absolute;right:var(--s-4);bottom:var(--s-4)}
/* заставка приложения: синий знак 64 pt на слоновой кости */
.eh-splash{display:grid;place-items:center;aspect-ratio:9 / 19;width:calc(var(--s-30) + var(--s-24));border-radius:var(--r-xl);background:var(--bg);box-shadow:inset 0 0 0 1px var(--line-1)}

/* =====================================================================
   26. СЛУЖЕБНАЯ ПОЛОСА МАКЕТОВ — не часть интерфейса: пунктир, метка «Демо», без золота
   ===================================================================== */
.eh-demo{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-5);margin:var(--s-2) var(--s-4);padding:var(--s-2) var(--s-2) var(--s-2) var(--s-4);border:1px dashed var(--line-3);border-radius:var(--r-sm);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-demo__title{font-weight:var(--w-medium)}
.eh-demo__links{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-1) var(--s-4)}
.eh-demo__links a[aria-current]{font-weight:var(--w-medium);color:var(--ink);text-decoration-color:var(--ink)}
.eh-demo__note{flex:1 1 var(--w-aside);min-width:0;font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-demo__end{margin-left:auto;display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2)}

/* =====================================================================
   28. ИНСТРУМЕНТЫ КАБИНЕТА — поиск ⌘K, «+ Создать», «Записать клиента», «Добавить клиента», помощь «?».
   Разметку собирает eh-tools.js; префикс .eht- — только для его окон и шторок
   ===================================================================== */
.eh-modal.eht-cmd{place-items:start center;padding:calc(var(--h-bar) + var(--s-2)) var(--s-6) var(--s-6)}
.eh-modal.eht-cmd.is-anchored{display:block;padding:0}
.eht-cmd .eh-modal__panel{max-width:var(--w-sheet-wide);max-height:calc(100vh - var(--h-bar) - var(--s-8));overflow:hidden}
.eht-cmd.is-anchored .eh-modal__panel{position:absolute;left:var(--eht-x);top:var(--eht-y);width:var(--eht-w);max-width:none;max-height:calc(100vh - var(--eht-y) - var(--s-6))}
.eht-anchor-off{opacity:0}
.eht-cmd__head{display:flex;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-3);border-bottom:1px solid var(--line-1)}
.eht-cmd__search{flex:1;min-width:0}
.eht-cmd__esc{display:inline-flex;align-items:center;justify-content:center;min-width:var(--h-touch);height:var(--h-touch);flex:none;border-radius:var(--r-sm)}
.eht-cmd__esc:hover{background:var(--sunken)}
.eht-cmd__body{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:var(--s-1) var(--s-2) var(--s-3);scroll-padding:var(--s-2)}
.eht-cmd__foot{display:flex;align-items:center;flex-wrap:wrap;gap:var(--s-2) var(--s-5);padding:var(--s-3) var(--s-5);border-top:1px solid var(--line-1);font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eht-cmd__foot > span{display:inline-flex;align-items:center;gap:var(--s-1)}
.eht-cmd__foot .eh-kbd{min-width:var(--s-6)}
.eht-cmd__foot .eh-push{margin-left:auto}
.eht-cmd__empty{display:grid;gap:var(--s-1);padding:var(--s-5) var(--s-3) var(--s-2)}
.eht-cmd__empty b{font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--ink)}
.eht-cmd__empty span{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eht-group + .eht-group{margin-top:var(--s-1)}
.eht-group__label{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-3);padding:var(--s-3) var(--s-3) var(--s-1h);font-size:var(--fs-caption);line-height:var(--lh-caption);font-weight:var(--w-strong);color:var(--ink-2)}
.eht-opt{display:grid;grid-template-columns:var(--s-8) minmax(0,1fr) auto;align-items:center;column-gap:var(--s-3);min-height:var(--h-lg);padding:var(--s-1h) var(--s-3);border-radius:var(--r-sm);color:var(--ink);cursor:pointer;scroll-margin:var(--s-2)}
.eht-opt:hover{background:var(--bg)}
.eht-opt[aria-selected="true"]{background:var(--sunken);box-shadow:inset 0 0 0 1.5px var(--ink)}
.eht-opt__ic{display:grid;place-items:center;width:var(--s-8);height:var(--s-8);border-radius:var(--r-round);background:var(--sunken);color:var(--ink)}
.eht-opt__ic > .eh-icon{width:var(--s-4h);height:var(--s-4h)}
.eht-opt__ic--brand,.eht-opt[aria-selected="true"] .eht-opt__ic--brand{background:var(--action);color:var(--gold)}
.eht-opt__ic--brand > .eh-mark{width:60%;height:calc(var(--s-8) * .6 / 1.4906)}
.eht-opt[aria-selected="true"] .eht-opt__ic{background:var(--surface)}
.eht-opt__main{display:grid;min-width:0}
.eht-opt__title{font-size:var(--fs-body);line-height:var(--lh-body);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.eht-opt__sub{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.eht-opt__end{display:flex;align-items:center;gap:var(--s-2);font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2);white-space:nowrap}
.eht-opt__enter{visibility:hidden}
.eht-opt[aria-selected="true"] .eht-opt__enter{visibility:visible}
.eht-opt--action .eht-opt__title{font-weight:var(--w-medium)}
.eht-mark{background:var(--gold-soft);color:inherit;font-weight:var(--w-medium);border-radius:var(--s-0h)}
.eht-opt[aria-selected="true"] .eht-mark{background:none;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:var(--s-1)}
.eht-book .eh-sheet__body{padding-bottom:var(--s-10)}
.eht-book [data-part][hidden] + .eh-sheet__section{margin-top:0}
.eht-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-3);margin-bottom:var(--s-3)}
.eht-head__aside{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2);white-space:nowrap}
.eht-head .eh-btn{margin-block:calc(var(--s-2) * -1)}
.eht-head--loose{margin-bottom:var(--s-4)}
.eht-head + .eh-field__error{margin:calc(var(--s-1) * -1) 0 var(--s-3)}
.eht-combo__box{position:relative}
.eht-combo__list{position:absolute;left:0;right:0;top:calc(100% + var(--s-1h));z-index:var(--z-popover);max-height:min(calc(var(--s-30) * 3 + var(--s-10)),calc(100vh - var(--s-30) * 3));overflow:auto;padding:var(--s-1h);background:var(--surface);border-radius:var(--r-md);box-shadow:var(--sh-3),inset 0 0 0 1px var(--line-1)}
.eht-combo__list .eht-group__label{padding-top:var(--s-2)}
.eht-combo .eh-field__hint,.eht-combo .eh-field__error{margin-top:var(--s-2)}
.eh-options ~ .eh-option__more{margin-top:var(--s-3)}
.eht-stack{display:grid;gap:var(--s-4)}
.eht-row2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-4)}
.eht-showall{margin-top:var(--s-2)}
.eh-option__more .eh-facts{gap:var(--s-2)}
.eht-note{display:flex;align-items:flex-start;gap:var(--s-2);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eht-note > .eh-icon{width:var(--s-4h);height:var(--s-4h);flex:none;margin-top:var(--s-0h)}
.eht-note b{color:var(--ink);font-weight:var(--w-medium)}
.eht-why{margin-top:var(--s-3)}
.eht-why .eh-link{font-size:inherit}
.eht-why__more{margin-top:var(--s-2);padding-left:calc(var(--s-4h) + var(--s-2));font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eht-when .eh-datepick{gap:var(--s-3)}
.eht-when .eh-datepick__month{font-size:var(--fs-body);line-height:var(--lh-body)}
.eht-when .eh-dates{gap:var(--s-2)}
.eht-when .eh-date{width:auto;flex:1 1 0;min-width:calc(var(--s-16) + var(--s-1))}
.eht-slots{margin-top:var(--s-5)}
.eht-when .eh-times__group + .eh-times__group{margin-top:var(--s-4)}
.eht-when .eh-times__label{text-transform:none}
.eht-when .eh-times{grid-template-columns:repeat(auto-fill,minmax(var(--s-24),1fr))}
.eht-custom{display:flex;align-items:flex-end;flex-wrap:wrap;gap:var(--s-3);margin-top:var(--s-4)}
.eht-custom .eh-field{flex:0 0 calc(var(--w-aside) - var(--s-10))}
.eht-when .eh-times__note{margin-top:var(--s-3)}
.eht-legend{margin-top:var(--s-4)}
.eht-when .eh-tz{margin-top:var(--s-4)}
.eht-when .eh-tz[hidden]{display:none}
.eht-when .eh-nowin{margin-top:var(--s-5)}
.eht-invite{margin-top:var(--s-4)}
.eht-book .eh-sheet__foot{flex-wrap:wrap;row-gap:var(--s-3)}
.eht-book .eh-sheet__summary{flex:1 1 100%}
.eht-book .eh-sheet__summary span{display:block}
.eht-book .eh-sheet__foot > .eh-btn--quiet{margin-left:auto}
.eht-add .eh-btn[hidden]{display:none}
.eht-add .eh-sheet__body{align-content:start}
.eht-tips{display:grid;gap:var(--s-5)}
.eht-tip{display:grid;grid-template-columns:var(--s-10) minmax(0,1fr);column-gap:var(--s-4);align-items:start}
.eht-tip__ic{display:grid;place-items:center;width:var(--s-10);height:var(--s-10);border-radius:var(--r-round);background:var(--sunken);color:var(--ink)}
.eht-tip__ic > .eh-icon{width:var(--s-5);height:var(--s-5)}
.eht-tip__ic > .eh-dial{width:var(--s-6);height:var(--s-6)}
.eht-tip b{display:block;font-weight:var(--w-medium)}
.eht-tip p{margin-top:var(--s-0h);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eht-tip .eh-kbd{vertical-align:baseline;margin:0 var(--s-0h)}
.eht-start{position:relative;display:grid;grid-template-columns:var(--s-10) minmax(0,1fr) auto;column-gap:var(--s-4);align-items:center;margin-top:var(--s-8);padding:var(--s-4);border-radius:var(--r-md);background:var(--bg);box-shadow:inset 0 0 0 1px var(--line-1);transition:box-shadow var(--dur-1)}
.eht-start--first{margin:0 0 var(--s-8)}
.eht-start:hover{box-shadow:inset 0 0 0 1px var(--line-3)}
.eht-start:has(.eht-start__link:focus-visible){outline:var(--focus);outline-offset:3px}
.eht-start .eht-tip__ic{background:var(--surface)}
.eht-start__link{font-weight:var(--w-medium);color:var(--ink)}
.eht-start__link::after{content:"";position:absolute;inset:0;border-radius:inherit}
.eht-start__link:focus-visible{outline:none}
.eht-start p{margin-top:var(--s-0h);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eht-start > .eh-icon{color:var(--ink-2)}
.eht-start .eh-progress{margin-top:var(--s-2)}
.eht-keys{margin-top:var(--s-8)}
.eht-keys h3{margin-bottom:var(--s-3)}
.eht-keys dl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--s-2h) var(--s-4);align-items:center;font-size:var(--fs-small);line-height:var(--lh-small)}
.eht-keys dt{display:flex;gap:var(--s-1)}
.eht-keys dd{color:var(--ink-2)}
.eht-help .eh-sheet__foot{justify-content:space-between}

/* =====================================================================
   29. ПУТЬ КЛИЕНТА: панель записи, строки условий, строка услуги, сводка отзывов
   (G4 «Страница эксперта»; дальше — G14 «Страница услуги», сводка G5 «Оформление записи»)
   ===================================================================== */
/* панель записи — липкая колонка не выше окна: середина (__body) прокручивается, низ (__foot) с условиями и главной
   кнопкой закреплён. eh.fitPanel(el) ставит .is-scroll (есть прокрутка — линия над низом) и .is-more (ниже есть ещё — край тает) */
.eh-bookpanel{position:relative}
.eh-bookpanel{display:flex;flex-direction:column;max-height:calc(100dvh - var(--sticky-top) - var(--s-4));min-width:0;padding:0;overflow:hidden}
.eh-bookpanel__body{display:grid;gap:var(--s-5);min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:var(--s-6) var(--s-6) var(--s-2)}
.eh-bookpanel__foot{display:grid;gap:var(--s-3);flex:none;padding:var(--s-4) var(--s-6) var(--s-6)}
.eh-bookpanel__foot:empty{display:none}
.eh-bookpanel.is-scroll .eh-bookpanel__foot{box-shadow:0 -1px 0 var(--line-1)}
.eh-bookpanel.is-more .eh-bookpanel__body{-webkit-mask-image:linear-gradient(to bottom,var(--ink) calc(100% - var(--s-10)),transparent);mask-image:linear-gradient(to bottom,var(--ink) calc(100% - var(--s-10)),transparent)}
/* шаблон «список + боковая колонка» уже 760 — панель уходит в поток, без своей высоты */
@container (max-width:759px){.eh-bookpanel{max-height:none}}
.eh-bookpanel .eh-btn--block{height:auto;min-height:var(--btn-h);padding-block:var(--s-2);white-space:normal;text-align:center;line-height:var(--lh-small)}
.eh-condlines{display:grid;gap:var(--s-2)}
.eh-condline{display:flex;align-items:flex-start;gap:var(--s-2);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink)}
.eh-condline > .eh-icon{width:var(--s-4h);height:var(--s-4h);flex:none;margin-top:var(--s-0h);color:var(--ink-2)}
.eh-condline--quiet{color:var(--ink-2)}
.eh-condline small{display:block;margin-top:var(--s-1);font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-condline .eh-iconbtn,.eh-paynote .eh-iconbtn{margin-block:calc(var(--s-2h) * -1);color:var(--ink-2)}
.eh-paynote{display:flex;align-items:center;justify-content:center;gap:var(--s-1);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2);text-align:center}
.eh-bookpanel .eh-banner{margin:0}

/* строка услуги в группе (.eh-card.eh-svclist > article.eh-svcrow.eh-option-wrap): бейдж практики · что это (название-ссылка,
   описание, мета: формат · длительность, отметка условия, ближайшее окно) · цена и тихая кнопка по формату. Вся строка
   нажимается; выбранная — .is-on (золотая рамка .eh-option-wrap), недоступная — .is-off, просмотр без записи — .is-static */
.eh-svclist{container:svclist / inline-size}
.eh-svclist{display:grid;padding:var(--s-2)}
.eh-svcrow{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;column-gap:var(--s-4);padding:var(--s-4) var(--s-4) var(--s-4) var(--s-4);border-radius:var(--r-md);cursor:pointer;transition:background-color var(--dur-1)}
.eh-svcrow + .eh-svcrow::before{content:"";position:absolute;left:var(--s-4);right:var(--s-4);top:0;border-top:1px solid var(--line-1)}
.eh-svcrow:hover{background:var(--bg)}
.eh-svcrow.is-on,.eh-svcrow.is-on:hover{background:var(--surface);border-radius:var(--r-md)}
.eh-svcrow:hover::before,.eh-svcrow:hover + .eh-svcrow::before,.eh-svcrow.is-on::before,.eh-svcrow.is-on + .eh-svcrow::before{border-top-color:transparent}
.eh-svcrow.is-static{cursor:default}
.eh-svcrow.is-static:hover{background:none}
.eh-svcrow.is-static:hover::before,.eh-svcrow.is-static:hover + .eh-svcrow::before{border-top-color:var(--line-1)}
.eh-svcrow > .eh-practice{margin-top:var(--s-0h)}
.eh-svcrow__main{display:grid;gap:var(--s-1);align-content:start;min-width:0}
.eh-svcrow__name{font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium);font-variation-settings:'CRSV' 0,'SHRP' 0;letter-spacing:0}
.eh-svcrow__name a{position:relative;z-index:1;border-radius:var(--r-xs);color:var(--ink);text-decoration:underline;text-decoration-color:transparent;text-decoration-thickness:var(--s-0h);text-underline-offset:var(--s-1);transition:text-decoration-color var(--dur-1)}
.eh-svcrow__name a:hover{text-decoration-color:var(--line-3)}
.eh-svcrow__text{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-svcrow .eh-meta{margin-top:var(--s-1);column-gap:var(--s-5)}
.eh-svcrow .eh-meta > span{white-space:nowrap}
.eh-svcrow .eh-meta .eh-term{position:relative;z-index:1;margin-block:calc(var(--s-1h) * -1);white-space:nowrap}
.eh-svcrow__near{color:var(--ink)}
.eh-svcrow__side{display:grid;justify-items:end;align-content:space-between;gap:var(--s-2);text-align:right;min-width:0}
.eh-svcrow__side .eh-price{font-size:var(--fs-body);line-height:var(--lh-body)}
.eh-svcrow__side .eh-price small{white-space:normal}
.eh-svcrow__cta{position:relative;z-index:1;margin-right:calc(var(--s-2) * -1)}
.eh-svcrow__cta .eh-icon{width:var(--s-4);height:var(--s-4)}
.eh-svcrow .eh-picked{min-height:var(--h-sm)}
.eh-svcrow.is-off{cursor:default}
.eh-svcrow.is-off:hover{background:none}
.eh-svcrow.is-off .eh-price,.eh-svcrow.is-off .eh-svcrow__name a{color:var(--ink-2)}
.eh-svcrow__state{display:inline-flex;align-items:center;gap:var(--s-1h);min-height:var(--h-sm);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2);white-space:nowrap}
.eh-svcrow__state .eh-icon{width:var(--s-4);height:var(--s-4)}
@container svclist (max-width:583px){
  .eh-svcrow{grid-template-columns:auto minmax(0,1fr)}
  .eh-svcrow__side{grid-column:2;grid-template-columns:minmax(0,1fr) auto;align-items:center;justify-items:start;text-align:left;margin-top:var(--s-3)}
}

/* сводка отзывов: оценка размером H2 со звездой, число, полосы по оценкам (--v — доля) */
.eh-rsum__num{display:flex;align-items:center;gap:var(--s-2)}
.eh-rsum__num .eh-icon{width:var(--s-6);height:var(--s-6)}
.eh-rsum__count{margin-top:var(--s-1);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-rsum__bars{display:grid;gap:var(--s-1h);margin-top:var(--s-5)}
.eh-rsum__bar{display:grid;grid-template-columns:var(--s-4) minmax(0,1fr) var(--s-8);align-items:center;gap:var(--s-2);font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2);font-variant-numeric:tabular-nums}
.eh-rsum__bar > span:last-child{text-align:right}
.eh-rsum__track{height:var(--s-1h);border-radius:var(--r-pill);background:var(--chart-track);overflow:hidden}
.eh-rsum__fill{display:block;height:100%;width:var(--v);border-radius:inherit;background:var(--chart-1)}

/* =====================================================================
   30. ПУТЬ КЛИЕНТА, ЧАСТЬ 2: части панели записи и сводки, оформление записи (шаги, поля оплаты, «Что будет с деньгами»,
   вертикальная шкала условий, итог), разделы страниц практики, темы, услуги и эксперта.
   Общее для G4, G14, G20, G3, G5, G6, G7 (и разделов G1) — перенесено со страниц 22 октября
   ===================================================================== */

/* ---- 30.1 Панель записи и сводка: услуга с ценой, строка «значок · что · подпись · действие», сообщение, ближайшие окна ---- */
.eh-bookpanel__svc{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--s-1) var(--s-4);align-items:start}
.eh-bookpanel__svc b{font-weight:var(--w-medium)}
.eh-bookpanel__svc .eh-meta,.eh-bookpanel__sub{grid-column:1 / -1}
.eh-bookpanel__sub{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-bookpanel__price{font-weight:var(--w-medium);font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}
.eh-bookpanel__price small{display:block;font-size:var(--fs-caption);line-height:var(--lh-caption);font-weight:var(--w-book);color:var(--ink-2)}
.eh-bookpanel__price s{font-weight:var(--w-book);color:var(--ink-2)}
.eh-bookpanel__price.is-gone{font-weight:var(--w-book);color:var(--ink-2);text-decoration:line-through}
/* строка сводки: когда, что с деньгами — значок 20, главное (b) и подпись (span), справа тихое действие; .is-gone — зачёркнуто */
.eh-sumrow{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--s-1) var(--s-3);align-items:start}
.eh-sumrow > .eh-icon{width:var(--s-5);height:var(--s-5);margin-top:var(--s-0h);color:var(--ink-2)}
.eh-sumrow > div{display:grid;min-width:0}
.eh-sumrow b{font-weight:var(--w-medium)}
.eh-sumrow b.is-gone{font-weight:var(--w-book);color:var(--ink-2);text-decoration:line-through}
.eh-sumrow span{font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-sumrow .eh-btn--link{font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-sumrow__more{grid-column:2 / -1;font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-bookpanel__msg h3{margin-bottom:var(--s-2)}
.eh-bookpanel__msg p{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-bookpanel__msg p + p{margin-top:var(--s-2)}
/* «Ближайшие окна» в панели: подпись и «Все окна», три в ряд; после выбора — строка __alt */
.eh-quick{display:grid;gap:var(--s-2h)}
.eh-quick__head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-3)}
.eh-quick__head .eh-btn--link{font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-quick .eh-times{grid-template-columns:repeat(3,minmax(0,1fr))}
.eh-quick .eh-time{padding:0 var(--s-1)}
.eh-quick__alt{display:none;align-items:center;gap:var(--s-2);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-quick__alt .eh-icon{width:var(--s-4h);height:var(--s-4h);flex:none}
/* «нет окон» с действиями справа; на фоне страницы — светлая подложка с рамкой */
.eh-nowin__actions{display:flex;flex-wrap:wrap;gap:var(--s-2);flex:none}
.eh-nowin--surface{padding:var(--s-5) var(--s-6);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-1)}
.eh-nowin--surface .eh-nowin__text a{color:var(--ink)}

/* ---- 30.2 Сводка записи (G5, G6, G7): кто — как на G4 (имя, «Проверенный астролог», рейтинг), услуга, когда, деньги, итог ---- */
.eh-ordersum .eh-bookpanel__body{gap:var(--s-3h);padding:var(--s-5) var(--s-6) var(--s-3)}
.eh-ordersum .eh-bookpanel__foot{gap:var(--s-1h);padding-top:var(--s-3);padding-bottom:var(--s-5)}
.eh-ordersum__who{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--s-4);align-items:center}
.eh-ordersum__who > div{display:grid;min-width:0}
.eh-ordersum__name{font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:var(--w-medium);letter-spacing:var(--ls-h3);font-variation-settings:'CRSV' 1,'SHRP' 0}
.eh-ordersum__meta{display:flex;flex-wrap:wrap;align-items:center;gap:0 var(--s-3)}
.eh-ordersum__meta .eh-verified{white-space:normal}
.eh-ordersum__meta .eh-rating,.eh-ordersum__meta .eh-link{font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-ordersum__meta .eh-link{display:inline-flex;align-items:center;gap:var(--s-1);color:var(--ink-2)}
.eh-ordersum__meta .eh-link .eh-icon{width:var(--s-3h);height:var(--s-3h)}
.eh-ordersum__sec{display:grid;gap:var(--s-2h);padding-top:var(--s-3h);border-top:1px solid var(--line-1)}
.eh-ordersum__h{font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium);letter-spacing:0;font-variation-settings:'CRSV' 0,'SHRP' 0}
.eh-ordersum .eh-bookpanel__svc .eh-meta{column-gap:var(--s-3)}
.eh-ordersum__no{font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2);font-variant-numeric:tabular-nums}
.eh-ordersum .eh-tscale__note b{font-weight:var(--w-medium)}
.eh-ordersum .eh-tscale__foot{font-size:var(--fs-caption);line-height:var(--lh-caption)}
.eh-ordersum .eh-tscale__foot .eh-icon{width:var(--s-4);height:var(--s-4)}
.eh-ordersum .eh-paynote{justify-content:flex-start;gap:var(--s-2);text-align:left}
.eh-ordersum .eh-paynote > .eh-icon{width:var(--s-4h);height:var(--s-4h);flex:none}
.eh-ordersum.is-off .eh-ordersum__who img{filter:var(--photo-grade) grayscale(.5)}
/* время, которое держим за клиентом: обычный, мало времени (.is-low), время вышло (.is-over с кнопкой) */
.eh-ordersum__hold{display:flex;align-items:flex-start;gap:var(--s-2);padding:var(--s-1h) var(--s-3);border-radius:var(--r-sm);background:var(--bg);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-ordersum__hold > .eh-icon{width:var(--s-4h);height:var(--s-4h);flex:none;margin-top:var(--s-0h)}
.eh-ordersum__hold b{font-weight:var(--w-medium);color:var(--ink);font-variant-numeric:tabular-nums}
.eh-ordersum__hold.is-low{background:var(--warn-bg);color:var(--warn)}
.eh-ordersum__hold.is-low b{color:var(--warn)}
.eh-ordersum__hold.is-over{display:grid;grid-template-columns:auto minmax(0,1fr);background:var(--warn-bg);color:var(--ink)}
.eh-ordersum__hold.is-over > .eh-icon{color:var(--warn)}
.eh-ordersum__hold.is-over .eh-btn{grid-column:2;justify-self:start;margin-top:var(--s-1)}
/* способ оплаты услуги в сводке: разово, пакетом или подпиской — радио строками с ценой и подписью */
.eh-payway{display:grid;gap:var(--s-2);min-width:0;margin:0;padding:0;border:0}
.eh-payway .eh-choice{font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-payway .eh-radio{margin:0}
.eh-payway b{font-weight:var(--w-medium);font-variant-numeric:tabular-nums;white-space:nowrap}
.eh-payway .eh-choice__hint{font-size:var(--fs-caption);line-height:var(--lh-caption)}
/* итог: строки скидок над суммой, сумма размером --fs-title — та же, что на главной кнопке */
.eh-total{display:grid;gap:var(--s-1)}
.eh-total__row{display:flex;justify-content:space-between;gap:var(--s-3);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-total__row > span:last-child{white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--ink)}
.eh-total__sum{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:var(--s-1) var(--s-3)}
.eh-total__sum > span{font-weight:var(--w-medium)}
.eh-total__sum > .eh-badge{align-self:center}
.eh-total__sum b{font-size:var(--fs-title);line-height:var(--lh-title);font-weight:var(--w-medium);font-variant-numeric:tabular-nums;white-space:nowrap}
.eh-total__sum b s{margin-right:var(--s-2);font-size:var(--fs-body);font-weight:var(--w-book);color:var(--ink-2)}
.eh-total__sum small{font-size:var(--fs-small);font-weight:var(--w-book);color:var(--ink-2)}
.eh-total.is-off .eh-total__sum b{color:var(--ink-2)}

/* ---- 30.3 Оформление записи (G5, G7; сводка — G6): шапка без меню, каркас «шаги + закреплённая сводка» ---- */
.eh-sitehead__mid{display:flex;align-items:center;min-width:0;padding-left:var(--s-8);box-shadow:inset 1px 0 0 var(--line-2)}
.eh-sitehead__mid:empty{box-shadow:none}
.eh-sitehead__mid .eh-back{margin-left:0}
.eh-helplink{display:inline-flex;align-items:center;gap:var(--s-1h);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-helplink .eh-icon{width:var(--s-4h);height:var(--s-4h)}
@media (max-width:599px){.eh-sitehead__mid{padding-left:var(--s-3)}.eh-helplink span{display:none}.eh-helplink .eh-icon{width:var(--s-6);height:var(--s-6)}}
/* каркас: слева заголовок (__intro) и шаги или подробности (__main), справа сводка (__aside) — 420 → 400 → 380 px.
   С клавиатуры сводка идёт после заголовка; уже 760 — сводка над шагами, без закрепления */
.eh-checkout{padding-bottom:var(--s-8)}
/* --top: шапка оформления не липкая (G5, G7) — сводка закрепляется у самого верха окна; с шапкой клиента (G6) — под ней */
.eh-checkout--top{--sticky-top:var(--s-6)}
.eh-checkout__grid{--co-aside:calc(var(--w-card) + var(--s-5));display:grid;grid-template-columns:minmax(0,1fr) var(--co-aside);grid-template-rows:auto 1fr;grid-template-areas:"intro aside" "main aside";column-gap:var(--s-16);align-items:start}
.eh-checkout__intro{grid-area:intro;min-width:0;margin-bottom:var(--s-10)}
.eh-checkout__intro h1:focus{outline:none}
.eh-checkout__lead{margin-top:var(--s-3);max-width:var(--w-text)}
.eh-checkout__main{grid-area:main;min-width:0}
.eh-checkout__aside{grid-area:aside;position:sticky;top:var(--sticky-top);min-width:0}
@container (max-width:1179px){.eh-checkout__grid{--co-aside:var(--w-card);column-gap:var(--s-10)}}
@container (max-width:1099px){.eh-checkout__grid{--co-aside:calc(var(--w-card) - var(--s-5));column-gap:var(--s-8)}}
@container (max-width:759px){.eh-checkout__grid{grid-template-columns:minmax(0,1fr);grid-template-rows:none;grid-template-areas:"intro" "aside" "main"}.eh-checkout__aside{position:static;margin-bottom:var(--s-6)}}

/* ---- 30.4 Шаги оформления: отдельные карточки. Номер — .eh-step__mark (текущий — золото, пройденный — галочка, будущий —
   тихий контур), заголовок, выбранное строкой (__val) и «Изменить» (__act). Левый край один: тело отступает на ширину номера ---- */
.eh-stepcards{display:grid;gap:var(--s-4);min-width:0;container:stepcards / inline-size}
.eh-stepcard{border-radius:var(--r-lg);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-1);padding:var(--s-6) var(--s-8);scroll-margin-top:var(--s-6)}
.eh-stepcard.is-active{box-shadow:var(--sh-2);padding-block:var(--s-8)}
.eh-stepcard.is-locked{background:transparent;box-shadow:inset 0 0 0 1px var(--line-2)}
.eh-stepcard__head{display:grid;grid-template-columns:var(--s-7) minmax(0,1fr) auto;column-gap:var(--s-4);align-items:start}
.eh-stepcard__num{display:flex}
.eh-stepcard__num .eh-step{flex:none}
.eh-stepcard.is-locked .eh-step__mark{background:transparent;box-shadow:inset 0 0 0 1.5px var(--line-2)}
.eh-stepcard__titles{min-width:0}
.eh-stepcard__title{font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:var(--w-medium);letter-spacing:var(--ls-h3);font-variation-settings:'CRSV' 1,'SHRP' 0}
.eh-stepcard__title:focus{outline:none}
.eh-stepcard.is-locked .eh-stepcard__title{color:var(--ink-2)}
.eh-stepcard__sub{margin-top:var(--s-1);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-stepcard__val{margin-top:var(--s-1);color:var(--ink)}
.eh-stepcard__val b{font-weight:var(--w-medium)}
.eh-stepcard__val small{display:block;margin-top:var(--s-0h);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-stepcard__val + .eh-stepcard__sub{margin-top:0}
.eh-stepcard__act{align-self:center;font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-stepcard__body{display:grid;gap:var(--s-6);margin-top:var(--s-6);padding-left:calc(var(--s-7) + var(--s-4))}
@container stepcards (max-width:639px){.eh-stepcard{padding-inline:var(--s-6)}}
@container stepcards (max-width:479px){.eh-stepcard__head{grid-template-columns:minmax(0,1fr)}.eh-stepcard__num{margin-bottom:var(--s-2)}.eh-stepcard__body{padding-left:0}.eh-stepcard__act{justify-self:start;margin-top:var(--s-2)}}

/* ---- 30.5 Поля оформления: группа с линией, вопрос к группе (уровнем подписи поля), сетка в две колонки, короткое поле,
   время рождения, действия, заметка; карта, «защищено», промокод, отправка, ошибки над кнопкой ---- */
.eh-fgroup{display:grid;gap:var(--s-5)}
.eh-fgroup + .eh-fgroup{padding-top:var(--s-6);border-top:1px solid var(--line-1)}
.eh-fieldset{display:grid;gap:var(--s-5);min-width:0;margin:0;padding:0;border:0}
.eh-legend{margin-bottom:var(--s-2);padding:0;font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium);color:var(--ink)}
.eh-legend small{display:block;margin-top:var(--s-0h);font-size:var(--fs-caption);line-height:var(--lh-caption);font-weight:var(--w-book);color:var(--ink-2)}
.eh-fgroup > p.eh-legend{margin-bottom:calc(var(--s-3) * -1)}
.eh-fgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-5)}
.eh-fgrid > .is-wide{grid-column:1 / -1}
@container stepcards (max-width:599px){.eh-fgrid{grid-template-columns:minmax(0,1fr)}}
.eh-field--short{max-width:calc(var(--w-aside) + var(--s-30))}
.eh-timefield{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-3)}
.eh-timefield .eh-input{width:calc(var(--s-24) + var(--s-4))}
.eh-seg.is-invalid{box-shadow:inset 0 0 0 1.5px var(--err)}
.eh-formacts{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-3) var(--s-5)}
.eh-formacts__note{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-note{display:flex;align-items:flex-start;gap:var(--s-2);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-note > .eh-icon{width:var(--s-4h);height:var(--s-4h);flex:none;margin-top:var(--s-0h)}
.eh-note b{font-weight:var(--w-medium);color:var(--ink)}
.eh-note .eh-btn--link{font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-note--box{padding:var(--s-3) var(--s-4);border-radius:var(--r-md);background:var(--bg);color:var(--ink)}
/* вход клиента внутри страницы (шаг «Кто вы» в G5 и G7): номер из записи текстом, вход через сервисы — тихими кнопками */
.eh-login__known{color:var(--ink)}
.eh-login__known b{font-weight:var(--w-medium);white-space:nowrap;font-variant-numeric:tabular-nums}
.eh-login__alt{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-3);padding-top:var(--s-5);border-top:1px solid var(--line-1);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-login__alt > span{margin-right:var(--s-1)}
/* способ оплаты: значок 20 в названии варианта; поля карты — номер, срок, CVC и одна общая строка ошибки */
.eh-paytitle{display:inline-flex;align-items:center;gap:var(--s-2h)}
.eh-paytitle > .eh-icon{width:var(--s-5);height:var(--s-5);flex:none}
.eh-cardf{display:grid;grid-template-columns:minmax(0,1fr) calc(var(--s-24) + var(--s-4)) var(--s-24);gap:var(--s-3)}
.eh-cardf > .eh-field__error{grid-column:1 / -1;margin-top:calc(var(--s-1) * -1)}
@container stepcards (max-width:599px){.eh-cardf{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.eh-cardf__num{grid-column:1 / -1}}
.eh-secure{display:flex;align-items:flex-start;gap:var(--s-2);font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-secure .eh-icon{width:var(--s-4);height:var(--s-4);flex:none}
.eh-promo__open{gap:var(--s-2)}
.eh-promo__open .eh-icon{width:var(--s-4h);height:var(--s-4h)}
.eh-promo__row{display:flex;flex-wrap:wrap;gap:var(--s-2)}
.eh-promo__row .eh-input{flex:0 1 calc(var(--w-aside) + var(--s-5))}
.eh-promo--on{display:flex;align-items:center;gap:var(--s-2h);padding:var(--s-3) var(--s-4);border-radius:var(--r-md);background:var(--bg);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-promo--on > .eh-icon{width:var(--s-4h);height:var(--s-4h);flex:none;color:var(--ink-2)}
.eh-promo--on p{flex:1;min-width:0}
.eh-promo--on b{font-weight:var(--w-medium)}
.eh-promo--on .eh-btn--link{font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-submit{display:grid;justify-items:start;gap:var(--s-3)}
.eh-submit .eh-btn--primary.eh-btn--lg{min-width:calc(var(--w-aside) + var(--s-30))}
.eh-submit__note{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
@container stepcards (max-width:519px){.eh-submit{justify-items:stretch}.eh-submit .eh-btn--primary.eh-btn--lg{min-width:0}}
/* над главной кнопкой: «Проверьте 3 поля» (ошибка) или «Сначала выберите другое время» (--wait) */
.eh-formerr{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-1h) var(--s-2);font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium);color:var(--err)}
.eh-formerr > .eh-icon{width:var(--s-4);height:var(--s-4);flex:none}
.eh-formerr .eh-btn--link{font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-formerr:focus{outline:none}
.eh-formerr--wait{flex-wrap:nowrap;align-items:flex-start;color:var(--ink)}
/* отсчёт со значком: значок — по первой строке, на узком экране не отрывается от текста */
.eh-formerr--wait > .eh-icon{margin-top:calc((var(--lh-small) - var(--s-4)) / 2);color:var(--warn)}

/* ---- 30.6 «Что будет с деньгами» (G5): вертикальные шаги на песке, «сейчас» — золотой номер; ниже — что если не подтвердит.
   Путь записи (G6, K3): время подписью над шагом (.eh-step__when) и однократное кольцо «сейчас» (.eh-steps--pulse) ---- */
.eh-moneypath{padding:var(--s-5) var(--s-6);border-radius:var(--r-md);background:var(--bg)}
.eh-moneypath__title{font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium);letter-spacing:0;font-variation-settings:'CRSV' 0,'SHRP' 0}
.eh-moneypath .eh-steps{margin-top:var(--s-4)}
.eh-moneypath .eh-step__label{color:var(--ink)}
.eh-moneypath .eh-step__label b{font-weight:var(--w-strong)}
.eh-moneypath__else{display:flex;align-items:flex-start;gap:var(--s-2);margin-top:var(--s-4);padding-top:var(--s-4);border-top:1px solid var(--line-1);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink)}
.eh-moneypath__else + .eh-moneypath__else{margin-top:var(--s-2);padding-top:0;border-top:0}
.eh-moneypath__else > .eh-icon{width:var(--s-4h);height:var(--s-4h);flex:none;margin-top:var(--s-0h);color:var(--ink-2)}
.eh-steps--vertical .eh-step__body{min-width:0}
.eh-step__when{font-size:var(--fs-caption);line-height:var(--lh-caption);font-weight:var(--w-book);color:var(--ink-2);font-variant-numeric:tabular-nums}
.eh-step__when b{font-weight:var(--w-strong);color:var(--ink)}
.eh-steps--pulse .eh-step[aria-current="step"] .eh-step__mark{position:relative}
.eh-steps--pulse .eh-step[aria-current="step"] .eh-step__mark::after{content:"";position:absolute;inset:0;border-radius:var(--r-round);animation:eh-ring calc(var(--dur-3) * 4) var(--ease) var(--dur-3) 1 both}

/* ---- 30.7 Шкала условий в узкой колонке (сводка 340–420 px): строка на отрезок — «когда» слева, сумма справа,
   полоса слева сверху вниз, золотая точка «сейчас» — на первой строке. Собирает eh.tscale({ …, v: true }) ---- */
.eh-tscale--v .eh-tscale__bar{grid-auto-flow:row;grid-auto-columns:auto;gap:var(--s-0h)}
.eh-tscale--v .eh-tscale__seg{grid-template-columns:minmax(0,1fr) auto;align-items:start;column-gap:var(--s-3);padding:var(--s-1h) 0 var(--s-1h) var(--s-6)}
.eh-tscale--v .eh-tscale__seg::before{right:auto;top:0;bottom:0;width:var(--s-2);height:auto}
.eh-tscale--v .eh-tscale__seg:first-child::before{border-radius:var(--r-pill) var(--r-pill) 0 0}
.eh-tscale--v .eh-tscale__seg:last-child::before{border-radius:0 0 var(--r-pill) var(--r-pill)}
.eh-tscale--v .eh-tscale__seg:only-child::before{border-radius:var(--r-pill)}
.eh-tscale--v .eh-tscale__seg.is-now::after{left:calc((var(--s-2) - var(--s-3h)) / 2);top:calc(var(--s-1h) + (var(--lh-small) - var(--s-3h)) / 2)}
.eh-tscale--v .eh-tscale__when{overflow-wrap:normal}
.eh-tscale--v .eh-tscale__what{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}

/* ---- 30.8 Раскрывающийся блок: «Условия на момент покупки», «Все шаги» — details > summary со значком и стрелкой ---- */
.eh-disclosure summary{display:flex;align-items:center;gap:var(--s-2);min-height:var(--h-sm);font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium);cursor:pointer;list-style:none;border-radius:var(--r-xs)}
.eh-disclosure summary::-webkit-details-marker{display:none}
.eh-disclosure summary > .eh-icon{width:var(--s-4h);height:var(--s-4h);flex:none;color:var(--ink-2)}
.eh-disclosure summary > .eh-icon:last-child{transition:transform var(--dur-2) var(--ease)}
.eh-disclosure[open] summary > .eh-icon:last-child{transform:rotate(180deg)}
.eh-disclosure > p{margin:var(--s-1) 0 var(--s-3);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}

/* ---- 30.9 Разделы страниц (G1, G20, G3, G4, G14): шапка раздела, отзывы, вопросы и ответы, гарантия, «Вы эксперт?»,
   «Записаться снова», факты первого экрана, «Как мы сортируем», строки проверки, список с точками, «Поделиться» ---- */
.eh-sechead{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--s-3) var(--s-8);margin-bottom:var(--s-6)}
.eh-sechead__sub{margin-top:var(--s-1);color:var(--ink-2)}
.eh-sechead__end{display:grid;justify-items:end;gap:var(--s-1);flex:1 1 calc(var(--w-aside) * 2 + var(--s-10));min-width:0}
.eh-sechead__row{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--s-1) var(--s-4)}
.eh-sechead__end .eh-termlegend{justify-content:flex-end;column-gap:var(--s-3)}
/* отзыв карточкой (главная, практика, тема): звёзды, текст, кто и когда, линия, эксперт и «услуга · формат»; строки ряда — subgrid */
.eh-revcards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--s-6)}
.eh-revcard{display:grid;grid-row:span 4;grid-template-rows:subgrid;row-gap:var(--s-4);align-content:start}
.eh-revcard__by{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-revcard__by b{font-weight:var(--w-medium);color:var(--ink)}
.eh-revcard__about{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:var(--s-3);padding-top:var(--s-4);border-top:1px solid var(--line-1)}
.eh-revcard__about > div{display:grid;justify-items:start;gap:var(--s-0h);min-width:0}
.eh-revcard__role,.eh-revcard__svc{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-revcard__svc{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-0h) var(--s-1h)}
.eh-revcard__svc .eh-fmt{white-space:nowrap}
/* отзыв строкой (эксперт, услуга): кто, когда и услуга, текст, ответ эксперта на песке */
.eh-review{padding-block:var(--s-6)}
.eh-review + .eh-review{border-top:1px solid var(--line-1)}
.eh-review__head{display:flex;align-items:center;gap:var(--s-3)}
.eh-review__who{flex:1;display:grid;min-width:0}
.eh-review__who b{font-weight:var(--w-medium)}
.eh-review__who span{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-review__text{margin-top:var(--s-3);max-width:var(--w-text)}
.eh-review__reply{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--s-1) var(--s-3);margin-top:var(--s-4);padding:var(--s-3h) var(--s-4);border-radius:var(--r-md);background:var(--bg);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-review__reply b{font-weight:var(--w-medium)}
.eh-review__reply p{grid-column:2;color:var(--ink-2)}
/* вопросы и ответы: у строки внутренний отступ — кольцу фокуса есть место, текст стоит по краю раздела */
.eh-faq{border-top:1px solid var(--line-1)}
.eh-faq details{border-bottom:1px solid var(--line-1)}
.eh-faq summary{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);min-height:var(--h-lg);margin-inline:calc(var(--s-2) * -1);padding:var(--s-3) var(--s-2);font-weight:var(--w-medium);cursor:pointer;list-style:none;border-radius:var(--r-xs)}
.eh-faq summary::-webkit-details-marker{display:none}
.eh-faq summary .eh-icon{flex:none;color:var(--ink-2);transition:transform var(--dur-2) var(--ease)}
.eh-faq details[open] summary .eh-icon{transform:rotate(180deg)}
.eh-faq details p{max-width:var(--w-text);padding-bottom:var(--s-5);color:var(--ink-2)}
/* гарантия под списком экспертов: щит 24 и две строки */
.eh-guarantee{display:flex;align-items:flex-start;gap:var(--s-3);margin-top:var(--s-10);padding-top:var(--s-6);border-top:1px solid var(--line-1)}
.eh-guarantee > .eh-icon{width:var(--s-6);height:var(--s-6);flex:none;color:var(--ink)}
.eh-guarantee p span{display:block;color:var(--ink-2)}
/* тихая полоса «Вы астролог? / Вы эксперт?» в конце страницы */
.eh-join{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-3) var(--s-8);margin-top:var(--s-20);padding:var(--s-5) var(--s-6) var(--s-5) var(--s-8);border-radius:var(--r-lg);box-shadow:inset 0 0 0 1px var(--line-2)}
.eh-join p{color:var(--ink-2)}
.eh-join b{font-weight:var(--w-medium);color:var(--ink)}
/* «Записаться снова»: строка-ссылка — аватар 32, имя, «услуга · дата», шеврон */
.eh-again__head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-4);margin-bottom:var(--s-1)}
.eh-again__list{display:grid}
.eh-again{display:flex;align-items:center;gap:var(--s-3);margin-inline:calc(var(--s-2) * -1);padding:var(--s-1h) var(--s-2);border-radius:var(--r-sm);transition:background-color var(--dur-1)}
.eh-again:hover{background:var(--surface)}
.eh-card .eh-again:hover{background:var(--bg)}
.eh-again__txt{display:grid;flex:1;min-width:0;font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-again__txt b{font-weight:var(--w-medium)}
.eh-again__txt span{color:var(--ink-2);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.eh-again > .eh-icon{width:var(--s-5);height:var(--s-5);flex:none;color:var(--ink-2)}
/* факт первого экрана (практика, тема): значок 24, значение 16 medium, подпись 14 и тихая ссылка */
.eh-herofact{display:grid;grid-template-columns:auto minmax(0,1fr);gap:0 var(--s-3);align-items:start;font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-herofact > .eh-icon,.eh-herofact > .eh-rosette{width:var(--s-6);height:var(--s-6);flex:none;margin-top:var(--s-0h);color:var(--ink)}
.eh-herofact > .eh-dial{margin-top:var(--s-0h)}
.eh-herofact b{display:block;font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--ink);font-variant-numeric:tabular-nums}
.eh-herofact .eh-link{justify-self:start;white-space:nowrap}
/* «Как мы сортируем» — подсказка над списком: значок места и объяснение */
.eh-howsort{display:grid;gap:var(--s-2h);margin-top:var(--s-2);color:var(--ink-2)}
.eh-howsort li{display:grid;grid-template-columns:var(--s-10) minmax(0,1fr);gap:var(--s-2);align-items:start}
.eh-howsort li > .eh-icon{margin-top:var(--s-0h);color:var(--ink)}
.eh-howsort__ics{display:inline-flex;gap:var(--s-1);color:var(--ink)}
.eh-howsort .eh-adtag,.eh-howsort .eh-status{vertical-align:middle;margin-block:calc(var(--s-0h) * -1)}
/* подсказка «Как мы сортируем» целиком (eh.howSort) — шире обычной: пять строк не вытягиваются в столбик */
.eh-popover--howsort{max-width:min(var(--w-modal-sm),calc(100vw - var(--s-4)))}
/* строки «Что мы проверили»: значок в круге, что и когда; .is-this — проверка по этой практике */
.eh-vrows{display:grid}
.eh-vrow{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--s-1) var(--s-4);align-items:start;padding-block:var(--s-4);border-bottom:1px solid var(--line-1)}
.eh-vrow:first-child{padding-top:0}
.eh-vrow > div{display:grid;gap:var(--s-0h)}
.eh-vrow b{font-weight:var(--w-medium)}
.eh-vrow span{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-vrow__ic{display:grid;place-items:center;width:var(--s-8);height:var(--s-8);border-radius:var(--r-round);background:var(--sunken)}
.eh-vrow__ic .eh-icon{width:var(--s-4h);height:var(--s-4h)}
.eh-vrow.is-this{margin-inline:calc(var(--s-3) * -1);padding-inline:var(--s-3);border-radius:var(--r-md);background:var(--bg);border-bottom-color:transparent}
/* список с точками: что входит, что придёт, почему так бывает */
.eh-bullets{display:grid;gap:var(--s-2)}
.eh-bullets li{display:flex;align-items:flex-start;gap:var(--s-2h);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-bullets li::before{content:"";flex:none;width:var(--s-1h);height:var(--s-1h);margin-top:calc((var(--lh-small) - var(--s-1h)) / 2);border-radius:var(--r-round);background:var(--ink-2)}
.eh-sharebtns{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s-2)}
.eh-sharebtns .eh-btn{padding-inline:var(--s-2)}

/* =====================================================================
   31. ЭТАП 2, ЧАСТЬ 4 — вход G8 и страницы-объяснения G10–G13 (общее с G1, G3, G6, G20)
   ===================================================================== */
/* сетка разделов публичных страниц: 12 колонок с отступом 24 (G10, G11, G12, G20) */
.eh-cols12{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--s-6)}
/* главное действие и тихая ссылка рядом — под текстом первого экрана и в конце страницы (G6, G10, G11) */
.eh-cta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-3) var(--s-6);margin-top:var(--s-8)}
/* панель-раздел на --surface с тонкой линией: «Как это работает / проходит» (G1, G20), «Что происходит с деньгами» (G10) */
.eh-panel{padding:var(--s-12) var(--s-12) var(--s-10);border-radius:var(--r-xl);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-1)}
@container (max-width:1099px){.eh-panel{padding:var(--s-10) var(--s-8) var(--s-8)}}
/* правая часть шапки раздела — на линии заголовка, по своей ширине («Как мы сортируем», «Вернуться к оформлению записи») */
.eh-sechead__end--top{flex:0 0 auto;margin-left:auto;align-self:flex-start}
/* гарантия внутри карточки — без своей линии и отступа сверху (G10 «Если планы изменились у эксперта») */
.eh-guarantee--inline{margin-top:0;padding-top:0;border-top:0}
/* список с точками в длинном тексте — тот же ритм 16/24, что у абзацев (документы G13, ответы помощи G12) */
.eh-bullets--body li{font-size:var(--fs-body);line-height:var(--lh-body)}
.eh-bullets--body li::before{margin-top:calc((var(--lh-body) - var(--s-1h)) / 2)}
/* заголовок строки таблицы (th scope=row) — не шапка: обычный вес, цвет текста, по верху, переносится (G13) */
.eh-table tbody th[scope="row"]{position:static;vertical-align:top;padding-block:var(--s-3h);border-bottom:1px solid var(--line-1);font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-regular);color:var(--ink);white-space:normal}
.eh-table tbody th[scope="row"].is-strong{font-weight:var(--w-medium)}
.eh-table tbody tr:last-child th[scope="row"]{border-bottom:0}
/* заготовка без пульсации — в схемах и иллюстрациях, а не при загрузке (G11 «Как мы сортируем») */
.eh-skel--static{animation:none}
/* заголовок раздела или шага, на который ставим фокус скриптом (переход по якорю, смена шага), — без рамки:
   с клавиатуры на него не попасть, рамка видна только у элементов, до которых доходят Tab */
:is(h1,h2,h3,h4,h5,h6)[tabindex="-1"]:focus,main[tabindex="-1"]:focus,.eh-banner[tabindex="-1"]:focus{outline:none}
/* служебная полоса «Демо»: пояснение — своей строкой под переключателями (страницы с несколькими рядами ссылок) */
.eh-demo__note--wide{flex-basis:100%}

/* =====================================================================
   32. КАБИНЕТ КЛИЕНТА (этап 3): K1 «Главная», K2 «Мои консультации», K3 «Консультация», K4 «Сообщения»,
   S3 «Комната консультации». Переписка, оценка звёздами, дни 7 × 2 (и G4), ошибка у групп времени и звёзд,
   «сейчас» без золота в шагах, панель «сейчас», длинные пункты меню, вторая ссылка-пропуск, имя-ссылка,
   двухстрочный статус строки консультации, остаток точками, срок вместо встречи.
   ===================================================================== */

/* ---- Переписка (K4, чат комнаты S3, «Переписка» K3). Одна разметка — один вид.
   .eh-thread(--fade|.is-scrolled) > .eh-thread__in > .eh-thread__older | .eh-thread__day | .eh-thread__new («Новое»)
     | .eh-msg(--in|--out|--wide) > .eh-msg__ava (аватар 32) + .eh-msg__body > .eh-msg__by? + .eh-bub(.is-sending|.is-failed) (+ .eh-bub__link)
                                    + .eh-msgfile > __ic __name __meta __dl + .eh-msg__meta(--err)
     | .eh-evtrack > .eh-ev(--off) > .eh-ev__ic + .eh-ev__body > __head(b, time) __what __text __note __quote __link __more
   Поле: .eh-composer > textarea.eh-composer__input + .eh-btn.eh-composer__send (--composer-rows — сколько строк растёт поле, 6).
   Поля ленты задаёт страница (.eh-thread__in padding): у K4 — 24, у шторки и панели S3 — 16. */
.eh-thread{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain}
.eh-thread:focus-visible{outline-offset:calc(var(--s-0h) * -1)}
/* мягкое затухание у верхнего края: --fade — всегда (узкая панель), .is-scrolled — когда есть что прокрутить вверх (K4) */
.eh-thread--fade,.eh-thread.is-scrolled{-webkit-mask-image:linear-gradient(to bottom,transparent,var(--ink) var(--thread-fade,var(--s-4)));mask-image:linear-gradient(to bottom,transparent,var(--ink) var(--thread-fade,var(--s-4)))}
.eh-thread__in{display:flex;flex-direction:column;gap:var(--s-4)}
.eh-thread__older{display:flex;justify-content:center}
.eh-thread__day,.eh-thread__new{display:flex;align-items:center;gap:var(--s-4);margin-top:var(--s-2);font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-thread__day::before,.eh-thread__day::after,.eh-thread__new::before,.eh-thread__new::after{content:"";flex:1;height:1px;background:var(--line-1)}
.eh-thread__new{color:var(--ink);font-weight:var(--w-strong);margin-top:0}
.eh-thread__new::before,.eh-thread__new::after{background:var(--line-3)}
.eh-thread__day:focus{outline:none}
.eh-msg{display:flex;gap:var(--s-3);align-items:flex-start;min-width:0}
.eh-msg--out{justify-content:flex-end}
.eh-msg__body{display:flex;flex-direction:column;align-items:flex-start;gap:var(--s-1);min-width:0;max-width:calc(var(--w-text) - var(--s-20))}
.eh-msg--out .eh-msg__body{align-items:flex-end}
.eh-msg--wide .eh-msg__body{max-width:calc(var(--w-text) + var(--s-10));flex:1}
.eh-msg__ava{flex:none;margin-top:var(--s-0h)}
.eh-msg__by{font-size:var(--fs-caption);line-height:var(--lh-caption);font-weight:var(--w-medium);color:var(--ink-2)}
.eh-bub{padding:var(--s-2h) var(--s-4);border-radius:var(--r-md);background:var(--bg);color:var(--ink);overflow-wrap:anywhere;white-space:pre-line}
.eh-msg--in .eh-bub:first-of-type{border-top-left-radius:var(--s-1h)}
.eh-msg--out .eh-bub{background:var(--action);color:var(--on-action)}
.eh-msg--out .eh-bub:first-of-type{border-top-right-radius:var(--s-1h)}
.eh-msg--out .eh-bub.is-sending{background:var(--action-hover)}
.eh-msg--out .eh-bub a{color:var(--on-action);text-decoration-color:var(--on-action)}
.eh-bub__link{display:block;width:max-content;max-width:100%;margin-top:var(--s-1h);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-bub.is-failed{background:var(--surface);color:var(--ink);box-shadow:inset 0 0 0 1px var(--err)}
.eh-msg__meta{margin-top:var(--s-0h);font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-msg__meta--err{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-1);color:var(--err);font-weight:var(--w-medium)}
.eh-msg__meta--err .eh-icon{width:var(--s-4);height:var(--s-4)}
.eh-msg__meta--err .eh-btn--link{font-size:var(--fs-caption);line-height:var(--lh-caption)}
.eh-msgfile{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--s-3);width:calc(var(--w-aside) + var(--s-24));max-width:100%;padding:var(--s-2h) var(--s-2) var(--s-2h) var(--s-3);border-radius:var(--r-md);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-2);color:var(--ink);text-decoration:none}
.eh-msgfile:hover{box-shadow:inset 0 0 0 1.5px var(--ink)}
.eh-msgfile__ic{display:grid;place-items:center;width:var(--s-10);height:var(--s-10);border-radius:var(--r-xs);background:var(--sunken)}
.eh-msgfile__ic .eh-icon{width:var(--s-5);height:var(--s-5)}
.eh-msgfile__name{display:-webkit-box;min-width:0;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere;font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium)}
.eh-msgfile__meta{display:block;font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-msgfile__dl{display:grid;place-items:center;width:var(--h-xs);height:var(--h-xs);color:var(--ink-2)}
.eh-msgfile__dl .eh-icon{width:var(--s-4h);height:var(--s-4h)}
/* события записи — дорожка с остановками, как путь записи на G6 */
.eh-evtrack{display:grid;gap:0;margin-block:var(--s-1)}
.eh-ev{position:relative;display:grid;grid-template-columns:var(--s-8) minmax(0,1fr);gap:var(--s-3);padding-bottom:var(--s-4)}
.eh-ev:last-child{padding-bottom:0}
.eh-ev:not(:last-child)::before{content:"";position:absolute;left:calc(var(--s-4) - .5px);top:var(--s-8);bottom:0;width:1px;background:var(--line-2)}
.eh-ev__ic{display:grid;place-items:center;width:var(--s-8);height:var(--s-8);border-radius:var(--r-round);background:var(--sunken);color:var(--ink)}
.eh-ev__ic .eh-icon{width:var(--s-4);height:var(--s-4)}
.eh-ev--off .eh-ev__ic{background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-2);color:var(--ink-2)}
.eh-ev__body{min-width:0;max-width:calc(var(--w-text) - var(--s-10));padding-top:var(--s-1h);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-ev__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s-1) var(--s-2)}
.eh-ev__head b{font-weight:var(--w-medium)}
.eh-ev__head time{font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-ev__what{margin-top:var(--s-0h);color:var(--ink)}
.eh-ev__text{margin-top:var(--s-0h);color:var(--ink-2)}
.eh-ev__note{display:flex;gap:var(--s-1h);margin-top:var(--s-1h);color:var(--ink)}
.eh-ev__note .eh-icon{width:var(--s-4);height:var(--s-4);flex:none;margin-top:var(--s-0h);color:var(--ink-2)}
.eh-ev__quote{margin-top:var(--s-2);padding-left:var(--s-3);border-left:var(--s-0h) solid var(--line-2);color:var(--ink)}
.eh-ev__link{display:inline-block;margin-top:var(--s-1h);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-ev__more{margin-top:var(--s-2);color:var(--ink-2)}
/* поле ввода: капсула со скрепкой, полем и «Отправить» */
.eh-composer{display:flex;align-items:flex-end;gap:var(--s-1);padding:var(--s-1);border-radius:var(--r-lg);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-3);transition:box-shadow var(--dur-1)}
.eh-composer:hover{box-shadow:inset 0 0 0 1px var(--ink-2)}
.eh-composer:focus-within{box-shadow:inset 0 0 0 1.5px var(--ink)}
.eh-composer:has(textarea:focus-visible){outline:var(--focus);outline-offset:var(--s-0h)}
.eh-composer__input{flex:1;min-width:0;max-height:calc(var(--lh-body) * var(--composer-rows,6) + var(--s-5));min-height:var(--h-touch);padding:var(--s-2h) var(--s-1);border:0;background:none;resize:none;outline:none;font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink)}
.eh-composer__input::placeholder{color:var(--ink-3);opacity:1}
.eh-composer__send{--btn-h:var(--h-touch);width:var(--h-touch);padding:0;flex:none}
.eh-composer__send .eh-icon{margin:0}

/* ---- Оценка звёздами (K1, K3, S3). Пять кнопок или ссылок «Оценить на N из 5» по Tab; в окне отзыва — радиокнопки в label.
   .eh-rate(--sm|--lg|.is-invalid|.is-preview) > .eh-rate__star(.is-on|.is-lit) > .eh-icon.eh-icon--star | --star-empty  +  .eh-rate__word
   Клетка и звезда: --sm 44 / 24 (дела K1), по умолчанию 48 / 32 (окно отзыва K3, финал S3), --lg 56 / 36 (талон K1, «Как прошло?» K3).
   Наведение — золотистая подложка. Закрашено — .eh-icon--star, пусто — .eh-icon--star-empty; у кнопок с aria-pressed (S3)
   сохранённое — .is-on, а в .is-preview (наведение или фокус) закрашено до .is-lit. */
.eh-rate{--rate-cell:var(--h-md);--rate-star:var(--s-8);display:inline-flex;flex-wrap:wrap;gap:var(--s-1);margin:0;padding:0;border:0;border-radius:var(--r-sm)}
.eh-rate--sm{--rate-cell:var(--h-touch);--rate-star:var(--s-6);gap:var(--s-0h)}
.eh-rate--lg{--rate-cell:var(--h-lg);--rate-star:var(--s-9)}
.eh-rate__star{position:relative;display:grid;place-items:center;width:var(--rate-cell);height:var(--rate-cell);border-radius:var(--r-sm);color:var(--ink);cursor:pointer;transition:background-color var(--dur-1)}
.eh-rate__star:hover{background:var(--gold-soft)}
.eh-rate__star input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.eh-rate__star:has(input:focus-visible){outline:var(--focus);outline-offset:0}
.eh-rate__star .eh-icon{width:var(--rate-star);height:var(--rate-star)}
.eh-rate__star.is-on .eh-icon,.eh-rate.is-preview .eh-rate__star.is-lit .eh-icon{fill:var(--gold);stroke:var(--gold-edge);stroke-width:1}
.eh-rate.is-preview .eh-rate__star.is-on:not(.is-lit) .eh-icon{fill:none;stroke:var(--line-3);stroke-width:1.25}
.eh-rate.is-invalid{box-shadow:inset 0 0 0 1px var(--err)}
.eh-rate__word{min-height:var(--lh-small);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}

/* ---- Выбор дня сеткой 7 × 2 (G4 «Ближайшие окна», шторки времени K3); дни без окон — неактивные .eh-date.
   Уже 520 (по ближайшему контейнеру или окну) — лентой с прокруткой */
.eh-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--s-2)}
.eh-days .eh-date{width:auto;height:auto;min-height:var(--s-20);padding:var(--s-2) var(--s-1)}
.eh-days .eh-date__n,.eh-days .eh-date__wd{white-space:normal;text-align:center}
@container (max-width:519px){.eh-days{display:flex;overflow-x:auto;padding:var(--s-1);margin:calc(var(--s-1) * -1);scrollbar-width:none}.eh-days .eh-date{flex:0 0 var(--s-18)}}
@media (max-width:520px){.eh-days{display:flex;overflow-x:auto;padding:var(--s-1);margin:calc(var(--s-1) * -1);scrollbar-width:none}.eh-days .eh-date{flex:0 0 var(--s-18)}}

/* ---- Ошибка у группы времени (как .eh-options.is-invalid): ничего не выбрано — красный контур у каждого окна */
.eh-times.is-invalid .eh-time{box-shadow:inset 0 0 0 1px var(--err)}

/* ---- «Сейчас» без золота: тёмное кольцо у текущего шага, когда золото «сейчас» уже стоит на экране (K3: этапы записи, путь денег) */
.eh-steps--quiet .eh-step[aria-current="step"] .eh-step__mark,.eh-steps--quiet .eh-step.is-current .eh-step__mark{background:var(--surface);color:var(--ink);box-shadow:inset 0 0 0 2px var(--ink)}

/* ---- Панель «сейчас» (K3 «Скоро» и «Идёт»): рамка с золотой кромкой и ореол. Золото на экране одно: бейдж в шапке — нейтральный */
.eh-card--now{box-shadow:inset 0 0 0 1.5px var(--gold-edge),0 0 0 4px var(--gold-soft),var(--sh-2)}

/* ---- Меню с длинными пунктами (календари, «Добавить в календарь» K3): пункт переносится, а не обрезается */
.eh-menu--wrap .eh-menu__item{white-space:normal;height:auto;min-height:var(--h-sm);padding-block:var(--s-2)}

/* ---- Вторая ссылка-пропуск — к своему месту, а не к началу содержимого: <a class="eh-skip eh-skip--to" href="#…"> (K3 «К действиям по консультации») */
.eh-skip--to:focus{transform:none}

/* ---- Скидка ElevenHouse на следующую запись — тихая строка под заголовком (K2, K5): значок, слова eh.payText.gift…, ссылка справа.
   <p class="eh-perk"><span>[percent]<span>Скидка 500 ₽ на следующую запись — действует до 14 января 2027</span></span><a class="eh-link">Скидки и подарки</a></p>
   v3.9: значок — процент (#i-percent), не коробка: коробка с бантом значит только подарок эксперта (раздел 34)
   В K10 это же — полосой-карточкой (там дом скидок), слова те же. v3.8: класс строки — .eh-perk; имя .eh-gift
   теперь у значка-подарка от эксперта (раздел 34), старая разметка <p class="eh-gift"> понимается, пока страницы не переедут */
.eh-perk,p.eh-gift{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-1) var(--s-4);margin-top:var(--s-2);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-perk > span,p.eh-gift > span{display:inline-flex;align-items:flex-start;gap:var(--s-2)}
.eh-perk .eh-icon,p.eh-gift .eh-icon{width:var(--s-4);height:var(--s-4);flex:none;margin-top:var(--s-0h);color:var(--ink)}

/* ---- Имя-ссылка: цвет текста, подчёркивание — только при наведении (эксперт в K1, K2, K3) */
.eh-namelink{color:var(--ink);text-decoration:none;border-radius:var(--s-0h)}
.eh-namelink:hover{text-decoration:underline;text-decoration-color:var(--line-3);text-decoration-thickness:1.5px;text-underline-offset:var(--s-1)}

/* ---- Строка консультации кабинета клиента (.eh-clist > .eh-crow, K1 и K2):
   статус в две строки — .eh-crow__st > (.eh-crow__word — тихое слово для обычного | .eh-badge — для необычного) + .eh-crow__cap;
   «i» с подсказкой — .eh-crow__tip; своя оценка — «Вы поставили 5 ★» цветом текста, без золота (.eh-crow__mystar);
   срок вместо встречи (ответ, разбор, срок пакета) — .eh-crow--due: дата тише, как у --window;
   остаток пакета и сопровождения — .eh-meter > i(.is-used) ×N: закрашено то, что осталось */
.eh-crow__st{display:grid;justify-items:start;gap:var(--s-0h);min-width:0;white-space:normal}
.eh-crow__word{display:inline-flex;align-items:center;gap:var(--s-1h);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2);white-space:nowrap}
.eh-crow__cap{display:block;font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-crow__cap s{text-decoration-color:var(--ink-2)}
.eh-crow__tip{border-radius:var(--s-0h);text-decoration:underline dotted;text-decoration-color:var(--line-3);text-underline-offset:4px;cursor:help}
.eh-crow__tip .eh-icon{width:var(--s-4);height:var(--s-4)}
.eh-crow__mystar{width:var(--s-4);height:var(--s-4);fill:var(--ink-2);stroke:var(--ink-2)}
.eh-crow--due .eh-crow__time b{color:var(--ink-2);font-weight:var(--w-regular)}
.eh-crow__time s{text-decoration-color:var(--ink-2)}
.eh-meter{display:inline-flex;gap:var(--s-1);margin-right:var(--s-2);vertical-align:0}
.eh-meter i{width:var(--s-2);height:var(--s-2);border-radius:var(--r-round);background:var(--ink-2)}
.eh-meter i.is-used{background:transparent;box-shadow:inset 0 0 0 1.5px var(--line-3)}

/* =====================================================================
   33. СООБЩЕНИЯ КЛИЕНТА — панель справа (eh-chat.js; этап 3, решение владельца 22 октября).
   Не страница в меню, а панель: можно переписываться и ходить по сайту — страница под ней живая.
   .eh-chat (aside, [data-view="list|dialog"], .is-anim) > .eh-chat__bar (h2.eh-chat__title | .eh-chat__back + .eh-chat__ctl)
     + .eh-chat__note + .eh-chat__listview > .eh-chat__tools (.eh-search + .eh-seg) + nav.eh-chat__list > ul > li > a.eh-chat__row(.is-unread)
     + section.eh-chat__dialog > .eh-chat__head + .eh-chat__ctx(--act) + .eh-thread + form.eh-chat__compose (.eh-composer + .eh-chat__hint)
   Переписка внутри — системная (раздел 32: .eh-thread, .eh-msg, .eh-bub, .eh-msgfile, .eh-evtrack), поля — --chat-x (16).
   .eh-chatbtn — кнопка «Сообщения» в шапке клиента рядом с колокольчиком; .eh-chat-launch — свёрнутая панель внизу справа
   (только там, где в шапке нет кнопки «Сообщения»: шапка оформления G7, комната S3 — или по ehChat.minimize()).
   <html>: .eh-chat-open — открыта; .eh-chat-min — свёрнута; --chat-top — низ шапки, --chat-lift — подъём пилюли над подвалом
   (считает скрипт: ResizeObserver на шапке и полосе «Демо», прокрутка).
   От 1240 px — «рядом»: страница уступает место, а не прячется под панелью: у body поле справа, шапка и полоса «Демо» —
   во всю ширину (кнопка сообщений стоит над панелью), левый край содержимого не двигается, правое поле .eh-container — 32.
   Страницы собраны на @container и перестраиваются сами: на 1440 содержимое — 916 px, на 1280 — 765. Скрипт держит
   на месте блок, который человек читал (страница не «уезжает» при открытии и закрытии).
   Уже 1240 (1024, планшет) — поверх страницы с тенью --sh-4, без затемнения: страница остаётся как была, живая —
   при 531 px на страницу главные кнопки уходили бы с первого экрана.
   Мобильный этап (уже 600): полноэкранная шторка, ярлык — круг без подписи.
   ===================================================================== */
.eh-chatbtn[aria-expanded="true"]{background:var(--sunken)}
.eh-chatbtn .eh-count{top:var(--s-0h);right:calc(var(--s-1) * -1)}

.eh-chat{--chat-x:var(--s-4);position:fixed;z-index:var(--z-chat);top:calc(var(--chat-top,0px) + var(--s-3));right:var(--s-3);bottom:var(--s-3);width:min(var(--w-chat),calc(100vw - var(--s-6)));display:flex;flex-direction:column;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--sh-4),inset 0 0 0 1px var(--line-1);overflow:hidden;container-type:inline-size}
.eh-chat[hidden]{display:none}
.eh-chat.is-anim{animation:eh-chat-in var(--dur-3) var(--ease) both}
@media (min-width:1240px){
  html.eh-chat-open body{padding-right:calc(var(--w-chat) + var(--s-3))}
  /* шапка, шапка оформления (G7, S3 перед входом) и полоса «Демо» — во всю ширину, над панелью */
  html.eh-chat-open eh-site-header,html.eh-chat-open .eh-sitehead:not(eh-site-header .eh-sitehead){margin-right:calc((var(--w-chat) + var(--s-3)) * -1)}
  html.eh-chat-open .eh-demo{margin-right:calc(var(--s-4) - var(--w-chat) - var(--s-3))}
  html.eh-chat-open body .eh-container:not(.eh-sitehead__in){padding-right:var(--s-8)}
  html.eh-chat-open .eh-chat{box-shadow:var(--sh-2),inset 0 0 0 1px var(--line-1)}
  html.eh-chat-open .eh-cookie{right:calc(var(--w-chat) + var(--s-3));width:min(var(--w-content),calc(100% - var(--w-chat) - var(--s-3) - var(--s-8)))}
}
/* список консультаций с колонками (K2) рядом с панелью на 1280 (716 px): имя не режется — статус и действие второй строкой, как в узком списке */
@container (min-width:681px) and (max-width:760px){
  html.eh-chat-open .eh-clist--cols > .eh-crow{grid-template-columns:var(--s-18) var(--s-10) minmax(0,1fr) var(--s-5)}
  html.eh-chat-open .eh-clist--cols .eh-crow__end,html.eh-chat-open .eh-clist--cols .eh-crow__act{grid-column:3 / -1;justify-content:flex-start}
}
/* всплывающие — левее панели (и левее шторки, если она шире); над свёрнутой кнопкой — выше неё */
html.eh-chat-open .eh-toasts{--toast-right:calc(var(--w-chat) + var(--s-3) + var(--s-4))}
html.eh-chat-open.eh-has-sheet .eh-toasts{--toast-right:calc(var(--w-sheet) + var(--s-3) + var(--s-4))}
html.eh-chat-open.eh-has-sheet-wide .eh-toasts{--toast-right:calc(var(--w-sheet-wide) + var(--s-3) + var(--s-4))}
html.eh-chat-min .eh-toasts{bottom:calc(var(--s-6) + var(--h-md) + var(--s-3) + var(--chat-lift,0px))}

/* свёрнута — разговор, а не вторая кнопка «Сообщения»: лицо, с кем, «черновик»; число — только где нет кнопки в шапке.
   Тихая белая пилюля, главную кнопку страницы не перебивает; внизу страницы поднимается над подвалом (--chat-lift) */
.eh-chat-launch{position:fixed;z-index:var(--z-chat);right:var(--s-6);bottom:calc(var(--s-6) + var(--chat-lift,0px));display:inline-flex;align-items:center;gap:var(--s-2);max-width:min(calc(var(--w-chat) - var(--s-10)),calc(100vw - var(--s-12)));height:var(--h-md);padding:0 var(--s-4) 0 var(--s-2h);border-radius:var(--r-pill);background:var(--surface);color:var(--ink);font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium);box-shadow:var(--sh-3),inset 0 0 0 1px var(--line-1);transition:box-shadow var(--dur-1),transform var(--dur-1) var(--ease);animation:eh-toast-in var(--dur-3) var(--ease) both}
.eh-chat-launch[hidden]{display:none}
.eh-chat-launch:hover{box-shadow:var(--sh-4),inset 0 0 0 1px var(--line-2);transform:translateY(-1px)}
.eh-chat-launch:active{transform:none}
.eh-chat-launch > .eh-icon{width:var(--s-5);height:var(--s-5);margin-left:var(--s-1h)}
.eh-chat-launch > .eh-avatar{flex:none}
.eh-chat-launch__label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.eh-chat-launch__draft{font-weight:var(--w-book);color:var(--ink-2)}
html.eh-has-cookie .eh-chat-launch{bottom:max(calc(var(--eh-cookie-h,var(--s-16)) + var(--s-8)),calc(var(--s-6) + var(--chat-lift,0px)))}
/* (v3.8) свёрнутая кнопка не закрывает низ липкой панели записи и сводки оформления (G4, G14, G5, G7 — «К оплате»): панель ниже на кнопку */
@container (min-width:760px){html.eh-chat-min .eh-bookpanel{max-height:calc(100dvh - var(--sticky-top) - var(--s-4) - var(--h-md) - var(--s-6))}}
/* заготовка оболочки, пока грузится eh-chat.js */
.eh-chat--skel .eh-chat__list{padding-top:var(--s-3)}

/* верхняя строка: «Сообщения» в списке, «← Все диалоги» в диалоге; справа — свернуть и закрыть */
.eh-chat__bar{display:flex;align-items:center;gap:var(--s-2);min-height:var(--s-14);padding:var(--s-2) var(--s-2) var(--s-2) var(--chat-x);border-bottom:1px solid var(--line-1)}
.eh-chat__title{min-width:0;font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:var(--w-medium);letter-spacing:var(--ls-h3);font-variation-settings:'CRSV' 1,'SHRP' 0}
.eh-chat__title:focus{outline:none}
.eh-chat__back{display:none;align-items:center;gap:var(--s-1h);height:var(--h-xs);margin-left:calc(var(--s-2) * -1);padding:0 var(--s-2h) 0 var(--s-2);border-radius:var(--r-pill);font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium);color:var(--ink);transition:background-color var(--dur-1)}
.eh-chat__back:hover{background:var(--sunken)}
.eh-chat__back > .eh-icon{width:var(--s-4h);height:var(--s-4h)}
.eh-chat__back .eh-count{margin-left:var(--s-0h)}
.eh-chat__ctl{display:flex;align-items:center;gap:var(--s-0h);margin-left:auto}
/* строка под шапкой панели: новое сообщение в другом диалоге — «Анна Ким написала · Открыть» */
.eh-chat__note{display:flex;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-2) var(--s-2) var(--chat-x);background:var(--bg);border-bottom:1px solid var(--line-1);font-size:var(--fs-small);line-height:var(--lh-small);animation:eh-guard-in var(--dur-2) var(--ease) both}
.eh-chat__note[hidden]{display:none}
.eh-chat__note > .eh-avatar,.eh-chat__note > .eh-icon{flex:none}
.eh-chat__notetext{flex:1;min-width:0;display:-webkit-box;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical;color:var(--ink-2)}
.eh-chat__notetext b{font-weight:var(--w-medium);color:var(--ink)}
.eh-chat__note .eh-btn--link{flex:none;font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-chat[data-view="dialog"] .eh-chat__title{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.eh-chat[data-view="dialog"] .eh-chat__back{display:inline-flex}

/* вид: список или диалог */
.eh-chat__listview,.eh-chat__dialog{display:flex;flex-direction:column;flex:1;min-height:0}
.eh-chat[data-view="list"] .eh-chat__dialog,.eh-chat[data-view="dialog"] .eh-chat__listview{display:none}

/* ---- список диалогов (как K4): поддержка закреплена, эксперты — по последнему сообщению ---- */
.eh-chat__tools{display:grid;justify-items:start;gap:var(--s-2);padding:var(--s-3) var(--chat-x) var(--s-2)}
.eh-chat__tools > .eh-search{justify-self:stretch}
.eh-chat__tools[hidden]{display:none}
.eh-chat__search{height:var(--h-sm)}
.eh-chat__search > input{font-size:var(--fs-small)}
.eh-chat__list{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:var(--s-1) var(--s-2) var(--s-4)}
.eh-chat__list ul{display:grid;gap:var(--s-0h)}
.eh-chat__sep{height:1px;margin:var(--s-2) var(--s-3);background:var(--line-1)}
.eh-chat__row{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:var(--s-3);padding:var(--s-2h) var(--s-2);border-radius:var(--r-md);color:var(--ink);text-decoration:none;transition:background-color var(--dur-1),box-shadow var(--dur-2)}
.eh-chat__row > .eh-avatar{margin-top:var(--s-0h)}
.eh-chat__row.is-fresh{box-shadow:inset 0 0 0 1.5px var(--ink)}
.eh-chat__row:hover{background:var(--sunken)}
.eh-chat__row[aria-current="true"]{background:var(--bg)}
.eh-chat__row:focus-visible{outline-offset:calc(var(--s-0h) * -1)}
.eh-chat__rowmain{display:grid;min-width:0}
/* три строки: имя и время справа (колонка времени ровная) · практика словом целиком · последнее и число справа */
.eh-chat__rowtop{display:flex;align-items:baseline;gap:var(--s-2);min-width:0}
.eh-chat__nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:var(--w-medium)}
.eh-chat__who{font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-chat__rowbottom{display:flex;align-items:center;gap:var(--s-2);min-width:0;margin-top:var(--s-0h)}
.eh-chat__last{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-chat__last .eh-icon{width:var(--s-3h);height:var(--s-3h);margin-right:var(--s-1);vertical-align:calc(var(--s-0h) * -1)}
.eh-chat__last .eh-chat__err{color:var(--err)}
.eh-chat__last.is-ask{color:var(--ink);font-weight:var(--w-medium)}
.eh-chat__last.is-ask .eh-icon{color:var(--warn)}
.eh-chat__time,.eh-chat__now{flex:none;font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2);font-variant-numeric:tabular-nums}
.eh-chat__now{color:var(--ink);font-weight:var(--w-medium)}
.eh-chat__row.is-unread .eh-chat__last,.eh-chat__row.is-unread .eh-chat__time{color:var(--ink);font-weight:var(--w-medium)}
.eh-chat__row .eh-count,.eh-chat__row .eh-badge{flex:none}
.eh-chat__row mark{background:none;color:inherit;font-weight:var(--w-strong);text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:var(--s-1)}
.eh-chat__none{display:grid;justify-items:start;gap:var(--s-3);padding:var(--s-5) var(--s-3);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
/* «Диалог не нашёлся» — строкой над списком; скрытый диалог — строкой «Вернуть» на своём месте */
.eh-chat__notfound,.eh-chat__gone{display:flex;align-items:flex-start;gap:var(--s-2);margin:var(--s-1) var(--s-1) var(--s-2);padding:var(--s-2h) var(--s-3);border-radius:var(--r-sm);background:var(--bg);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-chat__gone{margin:0;align-items:center}
.eh-chat__notfound > .eh-icon,.eh-chat__gone > .eh-icon{width:var(--s-4);height:var(--s-4);flex:none;margin-top:var(--s-0h)}
.eh-chat__gone > .eh-icon{margin-top:0}
.eh-chat__notfound > span,.eh-chat__gone > span{flex:1;min-width:0}
.eh-chat__gone .eh-btn--link{flex:none;font-size:var(--fs-small);line-height:var(--lh-small)}
/* загрузка и ошибка связи */
.eh-chat__skel{display:grid;gap:var(--s-1);padding:var(--s-1) 0}
.eh-chat__skrow{display:grid;grid-template-columns:var(--s-10) minmax(0,1fr);gap:var(--s-3);padding:var(--s-2h) var(--s-2)}
.eh-chat__skava{width:var(--s-10);height:var(--s-10)}
.eh-chat__sklines{display:grid;gap:var(--s-0h)}
.eh-chat__sklines .eh-skel--text{margin:var(--s-1) 0}
.eh-chat__skel--thread{gap:var(--s-4);padding:0}
.eh-chat__skbub{width:70%;height:var(--s-14);border-radius:var(--r-md)}
.eh-chat__skbub--out{justify-self:end;width:55%;height:var(--s-10)}
.eh-chat__skbub--tall{height:var(--s-24)}
.eh-chat__fail{margin:var(--s-1) var(--s-1) 0}
.eh-chat__failacts{margin-top:var(--s-2h)}
.eh-chat__emptylist{display:grid;justify-items:start;gap:var(--s-2);margin:var(--s-4) var(--s-2) 0;padding:var(--s-5);border-radius:var(--r-md);background:var(--bg);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-chat__emptytitle{font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium);color:var(--ink)}
.eh-chat__emptylist .eh-btn{margin-top:var(--s-2)}

/* ---- диалог: шапка, ближайшая консультация (→ K3), лента, поле ---- */
.eh-chat__head{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-2) var(--s-3) var(--chat-x);border-bottom:1px solid var(--line-1)}
.eh-chat__headmain{flex:1;min-width:0}
.eh-chat__name{display:flex;align-items:center;gap:var(--s-1h);min-width:0;font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium);letter-spacing:0;white-space:nowrap;font-variation-settings:'CRSV' 0,'SHRP' 0}
.eh-chat__headnm{min-width:0;overflow:hidden;text-overflow:ellipsis}
.eh-chat__name .eh-rosette{flex:none}
.eh-chat__headwho{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-chat__ctx{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--s-1) var(--s-3);min-height:var(--h-touch);padding:var(--s-2h) var(--s-3) var(--s-2h) var(--chat-x);background:var(--bg);border-bottom:1px solid var(--line-1);color:var(--ink);text-decoration:none;font-size:var(--fs-small);line-height:var(--lh-small)}
a.eh-chat__ctx{transition:background-color var(--dur-1)}
a.eh-chat__ctx:hover{background:var(--sunken)}
a.eh-chat__ctx:focus-visible{outline-offset:calc(var(--s-1) * -1)}
.eh-chat__ctxic{display:grid;place-items:center;width:var(--s-8);height:var(--s-8);border-radius:var(--r-round);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-1)}
.eh-chat__ctxic .eh-icon{width:var(--s-4);height:var(--s-4)}
.eh-chat__ctxmain{display:grid;min-width:0}
.eh-chat__ctxsvc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* когда и статус — до двух строк: «ответ до пт 23 октября, 12:00 · Ждём ответа» не обрезаем на полуслове */
.eh-chat__ctxwhen{display:-webkit-box;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.eh-chat__ctxst{white-space:nowrap}
.eh-chat__ctxsvc{font-weight:var(--w-medium)}
.eh-chat__ctxwhen{color:var(--ink-2)}
.eh-chat__ctxgo{display:grid;place-items:center}
.eh-chat__ctxgo .eh-icon{width:var(--s-5);height:var(--s-5);color:var(--ink-2)}
a.eh-chat__ctx:hover .eh-chat__ctxgo .eh-icon{color:var(--ink)}
.eh-chat__ctx > .eh-link{white-space:nowrap}
.eh-chat__ctxacts{grid-column:2 / -1;display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-3);margin-top:var(--s-1)}
/* «Идёт сейчас», «Через 8 минут», «Ответьте до 22:00» — словом, без цветной метки: золото «сейчас» остаётся у страницы */
.eh-chat__ctxst.is-now{color:var(--ink);font-weight:var(--w-medium)}
.eh-chat__ctxtop{display:flex;align-items:baseline;gap:var(--s-2);min-width:0}
.eh-chat__ctxtop > .eh-chat__ctxsvc{flex:1;min-width:0}
.eh-chat__ctxno{flex:none;font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2);white-space:nowrap;font-variant-numeric:tabular-nums}
.eh-chat__ctx--still{grid-template-columns:auto minmax(0,1fr)}

/* лента: поля --chat-x; свои — до 88 % ширины, чужие — с полем справа, чтобы стороны читались */
.eh-chat .eh-thread{--thread-fade:var(--s-4);scroll-padding-block:var(--s-4)}
.eh-chat .eh-thread__in{padding:var(--s-4) var(--chat-x) var(--s-6)}
.eh-chat .eh-msg__body{max-width:calc(100% - var(--s-14))}
.eh-chat .eh-msg--out .eh-msg__body{max-width:88%}
.eh-chat .eh-msg--wide .eh-msg__body{max-width:none}
.eh-chat .eh-ev__body{max-width:none}
.eh-chat .eh-msg.is-hit .eh-bub,.eh-chat .eh-ev.is-hit .eh-ev__body{box-shadow:var(--ring)}
.eh-chat .eh-ev.is-hit .eh-ev__body{border-radius:var(--r-xs)}
.eh-chat__flag{padding:0 var(--s-0h);border-radius:var(--s-1);background:var(--warn-bg);color:var(--ink)}
.eh-chat__aboutline{display:flex;align-items:center;gap:var(--s-1);font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-chat__aboutline .eh-icon{width:var(--s-3h);height:var(--s-3h)}
/* консультация в чате — переписка встречи в рамке */
.eh-chat__sess{display:flex;flex-direction:column;gap:var(--s-4);padding-left:var(--s-3);border-left:var(--s-0h) solid var(--line-2)}
.eh-chat__sesshead,.eh-chat__sessfoot{display:flex;align-items:flex-start;gap:var(--s-2);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-chat__sesshead b{color:var(--ink);font-weight:var(--w-medium)}
.eh-chat__sesshead .eh-icon,.eh-chat__sessfoot .eh-icon{width:var(--s-4);height:var(--s-4);flex:none;margin-top:var(--s-0h)}
.eh-chat__sessfoot .eh-icon{color:var(--ok)}
/* рассылка эксперта */
.eh-chat__cast,.eh-chat__ask{display:grid;justify-items:start;gap:var(--s-2);padding:var(--s-3h) var(--s-4) var(--s-4);border-radius:var(--r-md);border-top-left-radius:var(--s-1h);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-2);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-chat__casttitle,.eh-chat__asktitle,.eh-chat__anstitle{font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium);letter-spacing:0;font-variation-settings:'CRSV' 0,'SHRP' 0}
.eh-chat__casttext{color:var(--ink-2)}
.eh-chat__casttext .eh-link{display:inline-block;margin-top:var(--s-1h)}
.eh-chat__castfoot{display:flex;flex-wrap:wrap;align-items:center;justify-self:stretch;gap:var(--s-1) var(--s-4);padding-top:var(--s-2);border-top:1px solid var(--line-1);color:var(--ink-2)}
.eh-chat__castfoot .eh-btn--link{font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-book);color:var(--ink-2)}
/* просьба о передаче коллеге — две равные кнопки */
.eh-chat__askmuted{color:var(--ink-2)}
.eh-chat__askacts{display:flex;flex-wrap:wrap;gap:var(--s-2);margin-top:var(--s-1)}
.eh-chat__askdone{display:flex;gap:var(--s-2)}
.eh-chat__askdone .eh-icon{width:var(--s-4h);height:var(--s-4h);flex:none;margin-top:var(--s-0h);color:var(--ok)}
/* файлы и голосовые */
.eh-chat__img{display:grid;gap:var(--s-1h);width:var(--w-aside);max-width:100%}
.eh-chat__pic{display:grid;place-items:center;width:100%;aspect-ratio:4 / 3;border-radius:var(--r-md);background:var(--sunken);box-shadow:inset 0 0 0 1px var(--line-1);color:var(--ink-2)}
.eh-chat__pic .eh-icon{width:var(--s-8);height:var(--s-8)}
.eh-chat__img figcaption{font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-msg--out .eh-chat__img figcaption{text-align:right}
.eh-chat__voice{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--s-3);width:calc(var(--w-aside) + var(--s-12));max-width:100%;padding:var(--s-2) var(--s-4) var(--s-2) var(--s-2);border-radius:var(--r-md);border-top-left-radius:var(--s-1h);background:var(--bg)}
.eh-msg--out .eh-chat__voice{background:var(--action);color:var(--on-action);border-top-left-radius:var(--r-md);border-top-right-radius:var(--s-1h)}
.eh-chat__play{background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-3)}
.eh-msg--out .eh-chat__play{color:var(--ink)}
.eh-chat__wave{display:flex;align-items:center;gap:var(--s-0h);height:var(--s-8);min-width:0;overflow:hidden}
.eh-chat__wave i{flex:1 1 0;min-width:var(--s-0h);max-width:var(--s-1);height:calc(var(--v) * 100%);border-radius:var(--r-pill);background:var(--line-3)}
.eh-chat__wave i.is-played{background:var(--ink)}
.eh-msg--out .eh-chat__wave i.is-played{background:var(--on-action)}
.eh-chat__dur{font-size:var(--fs-caption);line-height:var(--lh-caption);font-variant-numeric:tabular-nums;color:var(--ink-2)}
.eh-msg--out .eh-chat__dur{color:var(--on-action)}
.eh-chat__tr{max-width:calc(var(--w-aside) + var(--s-12));padding:var(--s-2) var(--s-3);border-left:var(--s-0h) solid var(--line-2);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-chat__trbtn{font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2);font-weight:var(--w-book)}
/* ответ на «Вопрос в чате» — лист, а не пузырь: он сохранён в консультации */
.eh-chat__answer{display:grid;gap:var(--s-3);width:100%;padding:var(--s-4);border-radius:var(--r-md);border-top-left-radius:var(--s-1h);background:var(--surface);box-shadow:var(--sh-1),inset 0 0 0 1px var(--line-2)}
.eh-chat__anshead{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--s-3);align-items:start}
.eh-chat__ansmark{display:grid;place-items:center;width:var(--s-8);height:var(--s-8);border-radius:var(--r-round);background:var(--sunken)}
.eh-chat__ansmark .eh-icon{width:var(--s-4h);height:var(--s-4h)}
.eh-chat__ansq{margin-top:var(--s-0h);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-chat__anssub{display:flex;align-items:flex-start;gap:var(--s-1h);margin-top:var(--s-1);font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-chat__anssub .eh-icon{width:var(--s-4);height:var(--s-4);flex:none;color:var(--ok)}
.eh-chat__anstext{display:grid;gap:var(--s-3);padding-top:var(--s-3);border-top:1px solid var(--line-1);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-chat__anstext b{font-weight:var(--w-medium)}
.eh-chat__answer .eh-chat__voice{border-top-left-radius:var(--r-md)}
.eh-chat__ansfoot{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-3);padding-top:var(--s-3);border-top:1px solid var(--line-1)}
/* мягкое предупреждение под сообщением эксперта с платформы — видит только клиент */
.eh-chat__guard{margin-left:0}
.eh-chat__guardbtn{display:inline;height:auto;vertical-align:baseline}
.eh-chat__guard .eh-banner__body > p + p{margin-top:var(--s-2)}
.eh-chat__guard > .eh-icon{color:var(--warn)}
.eh-chat__guardacts{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-4);margin-top:var(--s-3)}
.eh-chat__guardacts .eh-link,.eh-chat__guardbtn{font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-chat__guardmore[hidden]{display:none}
.eh-chat__guardmore:focus{outline:none}
.eh-chat__name:focus{outline:none}
.eh-chat__guardown{margin-top:var(--s-2);font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-chat__welcome{display:grid;gap:var(--s-2);padding:var(--s-4);border-radius:var(--r-md);background:var(--bg);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-chat__welcome b{font-weight:var(--w-medium)}
.eh-chat__welcome p{color:var(--ink-2)}
.eh-chat__empty{flex:1;padding:var(--s-10) var(--s-6)}

/* поле: подсказка об оплате мимо платформы, уточнение, «Про запись № …», файлы, капсула, часы ответа */
.eh-chat__compose{--composer-rows:5;display:grid;gap:var(--s-1h);padding:var(--s-2h) var(--s-3) var(--s-3);border-top:1px solid var(--line-1);background:var(--surface)}
.eh-chat__warn,.eh-chat__clar,.eh-chat__about{display:flex;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-2) var(--s-2) var(--s-3);border-radius:var(--r-sm);background:var(--bg);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink)}
.eh-chat__warn > .eh-icon,.eh-chat__clar > .eh-icon,.eh-chat__about > .eh-icon{width:var(--s-4h);height:var(--s-4h);flex:none}
.eh-chat__warn > .eh-icon{color:var(--warn)}
.eh-chat__warn > span,.eh-chat__clar > span,.eh-chat__about > span{flex:1;min-width:0}
.eh-chat__warn .eh-iconbtn,.eh-chat__about .eh-iconbtn{margin:calc(var(--s-1h) * -1) 0}
.eh-chat__clar{background:var(--sunken)}
.eh-chat__clar .eh-btn--link{flex:none;font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-chat__staged{display:grid;gap:var(--s-2)}
.eh-chat__staged[hidden]{display:none}
.eh-chat__chip{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--s-2);padding:var(--s-1h) var(--s-1) var(--s-1h) var(--s-2h);border-radius:var(--r-sm);background:var(--bg);box-shadow:inset 0 0 0 1px var(--line-1)}
.eh-chat__chip > .eh-icon{width:var(--s-4h);height:var(--s-4h)}
.eh-chat__chipname{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-medium)}
.eh-chat__chipmeta{display:flex;align-items:center;gap:var(--s-2);min-width:0;white-space:nowrap;font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-chat__chipmeta > .eh-progress{flex:1;min-width:var(--s-10)}
.eh-chat__chip.is-error{box-shadow:inset 0 0 0 1px var(--err);background:var(--surface)}
.eh-chat__chip.is-error > .eh-icon,.eh-chat__chip.is-error .eh-chat__chipmeta{color:var(--err)}
.eh-chat__rec{display:flex;align-items:center;gap:var(--s-3);flex:1;min-width:0;min-height:var(--h-touch);padding:0 var(--s-2)}
.eh-chat__recdot{width:var(--s-2h);height:var(--s-2h);flex:none;border-radius:var(--r-round);background:var(--err);animation:eh-pulse 1.2s var(--ease) infinite}
.eh-chat__rectime{font-variant-numeric:tabular-nums;font-weight:var(--w-medium)}
.eh-chat__rechint{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-2)}
.eh-chat__hint{display:flex;align-items:flex-start;gap:var(--s-1h);padding:0 var(--s-2);font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-chat__hint > .eh-icon{width:var(--s-4);height:var(--s-4);flex:none;margin-top:var(--s-0h)}
/* эксперт ушёл с платформы: вместо поля — «только чтение» */
.eh-chat__ro{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:var(--s-2) var(--s-3);padding:var(--s-4) var(--chat-x);border-top:1px solid var(--line-1);background:var(--bg);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-chat__ro > .eh-icon{width:var(--s-5);height:var(--s-5);color:var(--ink-2)}
.eh-chat__ro > .eh-btn{grid-column:2;justify-self:start}
.eh-chat__reasons{display:grid;gap:var(--s-3)}
/* меню моментов в полосе «Демо» — пункты в две строки */
.eh-chat-demo{width:calc(var(--w-menu) + var(--s-30))}
/* превью в стайлгайде: та же карточка и та же кнопка, но в потоке страницы */
.eh-chat--static{position:relative;top:auto;right:auto;bottom:auto;z-index:auto;width:100%;max-width:var(--w-chat);height:calc(var(--w-modal) + var(--s-24));box-shadow:var(--sh-2),inset 0 0 0 1px var(--line-1)}
.eh-chat-launch--static{position:static;animation:none}

/* мобильный этап: полноэкранная шторка; ярлык — круг без подписи */
@media (max-width:599px){
  .eh-chat{top:0;right:0;bottom:0;left:0;width:auto;border-radius:0}
  .eh-chat-launch{justify-content:center;width:var(--h-lg);height:var(--h-lg);padding:0}
  .eh-chat-launch__label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .eh-chat-launch .eh-count{position:absolute;top:calc(var(--s-1) * -1);right:calc(var(--s-1) * -1);box-shadow:0 0 0 2px var(--surface)}
}

/* =====================================================================
   34. ПОДАРКИ ОТ ЭКСПЕРТОВ (решение владельца 23 октября): эксперт сам даёт скидку — одному клиенту («только для вас»),
       новым клиентам или своим (у кого уже была консультация); на все услуги или на одну. Разметку собирает eh.js:
       eh.gift(g) — значок с подсказкой условий · eh.giftPrice(o) — цена со скидкой · eh.giftCard(g) — сообщение-подарок
       (панель сообщений) · eh.discount(o) — какая скидка применена при оплате. Одна скидка на заказ: с промокодами
       и скидкой ElevenHouse не суммируется — берём самую выгодную, остальные сохраняются до своего срока.
       Цвет — --gift-ink / --gift-edge (раздел 1): роза-ягода, без золота; знак всегда контурный, без заливки (так он не похож
       на бейдж таро и метку «Отношения»). Скидка ElevenHouse — знак процента, промокод — ярлык: коробка только у подарков.
   ===================================================================== */
/* ---- Значок-подарок: <button class="eh-gift" data-eh-tip="условия" data-eh-tip-toggle data-eh-tip-wide aria-label="Подарок от Марины: −15 % на синастрию">
   [svg.eh-icon.eh-gift__ic #i-gift]<span class="eh-gift__val">−15 %</span></button>. Капсула 24 px на вид, зона нажатия 44.
   Подсказка — при наведении, фокусе с клавиатуры и нажатии (остаётся до нажатия в другом месте), Esc закрывает.
   ФОРМЫ ЗНАКА (v3.9) — две: ИНТЕРАКТИВНЫЙ (eh.gift) — капсула «[подарок] −15 %» или круг 24 (--icon) той же высоты, обе контурные;
   СТАТИЧНЫЙ (eh.giftMark, .eh-giftmark) — круг 32 с кромкой. Плюс глиф 16 внутри строки текста (список диалогов, строка чека).
   Капсула — где нужно сказать словами: «для вас», «−15 % на прогноз на год», строки «Моих экспертов» (K1, K5); круг 24 — у цены,
   которая уже снижена (карточка, строка услуги, панель). --sm — прежнее имя круга 24, оставлено для совместимости.
   --static — без нажатия (пояснения, «Как это работает»). p.eh-gift — старая строка скидки ElevenHouse (.eh-perk, раздел 32) */
.eh-gift:not(p){position:relative;z-index:1;flex:none;display:inline-flex;align-items:center;justify-content:center;gap:var(--s-1);height:var(--s-6);padding:0 var(--s-2) 0 var(--s-1h);border-radius:var(--r-pill);background:var(--surface);box-shadow:inset 0 0 0 1px var(--gift-edge);color:var(--gift-ink);font-size:var(--fs-caption);line-height:1;font-weight:var(--w-medium);font-variant-numeric:tabular-nums;white-space:nowrap;vertical-align:middle;cursor:pointer;transition:background-color var(--dur-1),box-shadow var(--dur-1)}
.eh-gift:not(p)::before{content:"";position:absolute;inset:-10px -4px}
.eh-gift__ic{width:var(--s-4);height:var(--s-4);flex:none}
.eh-gift:not(p):hover,.eh-gift.is-hover,.eh-gift[aria-describedby="eh-tooltip"]{background:var(--surface);box-shadow:inset 0 0 0 2px var(--gift-ink)}
.eh-gift:not(p):focus-visible{outline:var(--focus);outline-offset:2px}
.eh-gift.eh-gift--icon{width:var(--s-6);height:var(--s-6);padding:0;border-radius:var(--r-round)}
.eh-gift.eh-gift--icon::before{inset:calc((var(--h-touch) - var(--s-6)) / -2)}
.eh-gift.eh-gift--icon .eh-gift__ic{width:var(--s-4);height:var(--s-4)}
.eh-gift.eh-gift--static{cursor:default}
.eh-gift.eh-gift--static::before{content:none}
.eh-gift.eh-gift--static:hover{background:var(--surface);box-shadow:inset 0 0 0 1px var(--gift-edge)}

/* ---- Статичная метка подарка (v3.9) — вторая и последняя форма знака: круг 32, белый, кромка цвета подарка, без нажатия.
   eh.giftMark() → <span class="eh-giftmark">[gift]</span>. Сообщение-подарок, строка «какая скидка применена», талоны K10, пояснения.
   .is-plain — та же метка для скидки ElevenHouse (процент) и промокода (ярлык): кромка и знак цветом текста */
.eh-giftmark{display:inline-grid;place-items:center;flex:none;width:var(--s-8);height:var(--s-8);border-radius:var(--r-round);background:var(--surface);box-shadow:inset 0 0 0 1px var(--gift-edge);color:var(--gift-ink)}
.eh-giftmark .eh-icon{width:var(--s-4h);height:var(--s-4h)}
.eh-giftmark.is-plain{box-shadow:inset 0 0 0 1px var(--line-2);color:var(--ink)}
.eh-giftmark--lg{width:var(--s-10);height:var(--s-10)}   /* на месте лица 40 (талоны K1, K10) */
.eh-giftmark--lg .eh-icon{width:var(--s-5);height:var(--s-5)}
/* глиф 16–18 внутри строки текста или в столбце значков (.eh-condline > .eh-icon.eh-giftglyph) — цветом подарка */
.eh-giftglyph,.eh-condline > .eh-icon.eh-giftglyph{color:var(--gift-ink)}
/* слова-кнопка с условиями (eh.giftWord): «Подарок Марины −15 %» — точечное подчёркивание цвета подарка, подсказка как у значка */
.eh-giftword{display:inline;padding:0;border:0;background:none;font:inherit;font-weight:var(--w-medium);color:var(--gift-ink);text-align:inherit;text-decoration:underline dotted;text-decoration-color:var(--gift-edge);text-decoration-thickness:1.5px;text-underline-offset:4px;border-radius:var(--s-0h);cursor:pointer}
.eh-giftword:hover,.eh-giftword[aria-describedby="eh-tooltip"]{text-decoration-style:solid;text-decoration-color:var(--gift-ink)}
.eh-giftword:focus-visible{outline:var(--focus);outline-offset:2px}

/* ---- Цена со скидкой — ДВА ШАБЛОНА (v3.9), порядок везде «новая, потом старая»:
   в строку — <p class="eh-price eh-price--gift"><span class="eh-price__row"><span class="eh-price__now">5 525 ₽</span>
   <s class="eh-price__old">6 500 ₽</s>[.eh-gift--icon]</span><span class="eh-price__by">подарок от Марины до 30 ноября</span></p>:
   значок всегда справа от цены, подпись — строкой ниже, где есть место; столбиком — --stack. В чеке (G5, G7) цену не зачёркиваем:
   обычная цена, строка скидки (.eh-discount--compact), итог.
   Новая — цветом текста, старая зачёркнута рядом (14 px, вторичная), подпись — цветом подарка.
   --stack — новая над старой без подписи, ровно 40 px (низ карточки эксперта: цены и кнопки в ряду на одной линии);
   --sm — новая 16 px (строка услуги, панель записи) */
.eh-price--gift{display:grid;justify-items:start;gap:var(--s-1);white-space:normal}
.eh-price__row{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:0 var(--s-2)}
.eh-price__row > .eh-gift{align-self:center}   /* значок — всегда справа от цены (v3.9) */
.eh-price__now{white-space:nowrap}
.eh-price__old{font-size:var(--fs-small);line-height:var(--lh-small);font-weight:var(--w-book);color:var(--ink-2);white-space:nowrap;text-decoration-thickness:1px;text-decoration-color:var(--ink-2)}
.eh-price__by{display:block;font-size:var(--fs-caption);line-height:var(--lh-caption);font-weight:var(--w-regular);font-variant-numeric:normal;color:var(--gift-ink);text-wrap:pretty}
.eh-price--stack .eh-price__row{display:grid;gap:0}
.eh-price--stack .eh-price__now{line-height:var(--s-6)}
.eh-price--stack .eh-price__old{font-size:var(--fs-caption);line-height:var(--s-4)}
.eh-price--sm{font-size:var(--fs-body);line-height:var(--lh-body)}
/* низ карточки эксперта с подарком: цена (со скидкой — в две строки) и значок-подарок рядом; кнопка — справа, как всегда.
   v3.9: по верху — «от N ₽» во всех карточках ряда на одной линии, зачёркнутая старая уходит ниже, значок — по первой строке */
.eh-acard__price{display:flex;align-items:flex-start;gap:var(--s-2);min-width:0;margin-top:calc((var(--h-sm) - var(--s-6)) / 2);margin-bottom:calc((var(--h-sm) - var(--s-6)) / -2)}
.eh-acard__foot:has(> .eh-acard__price){align-items:flex-start}
/* подарок на другую услугу — капсулой словами под строкой услуги: «−15 % на прогноз на год · для вас» */
.eh-acard__gift{display:flex;min-width:0;margin-top:var(--s-2);padding-left:calc(18px + var(--s-2))}
.eh-acard__gift .eh-gift{max-width:100%}
.eh-acard__gift .eh-gift__val{overflow:hidden;text-overflow:ellipsis}

/* ---- Сообщение-подарок (панель сообщений; дальше — S1 и кабинет): eh.giftCard(g, {href, cta}) →
   <article class="eh-giftcard"> > __head(.eh-giftmark.__mark + __title + __meta(__who «Только для вас» + __terms(__part «До 30 ноября», __part «· на одну запись»))) + __note + __acts(«Записаться»).
   Кромка цвета подарка, круг со значком — подложка подарка; «Записаться» — вторичная: главная кнопка остаётся у страницы */
.eh-giftcard{display:grid;justify-items:start;gap:var(--s-3);padding:var(--s-4);border-radius:var(--r-md);border-top-left-radius:var(--s-1h);background:var(--surface);box-shadow:inset 0 0 0 1px var(--gift-edge);font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-giftcard__head{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:var(--s-3);justify-self:stretch}
/* круг — статичная метка .eh-giftmark (32, контурная) */
.eh-giftcard__part{display:inline-block;max-width:100%}
.eh-giftcard__title{font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--w-medium);letter-spacing:0;font-variation-settings:'CRSV' 0,'SHRP' 0}
.eh-giftcard__meta{display:grid;justify-items:start;margin-top:var(--s-0h);color:var(--ink-2)}
.eh-giftcard__who{color:var(--gift-ink);font-weight:var(--w-medium)}
.eh-giftcard__note{display:flex;align-items:flex-start;gap:var(--s-2);color:var(--ink-2)}
.eh-giftcard__note .eh-icon{width:var(--s-4);height:var(--s-4);flex:none;margin-top:var(--s-0h)}
.eh-giftcard__acts{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-4)}
.eh-giftcard.is-used .eh-giftcard__mark,.eh-giftcard.is-gone .eh-giftcard__mark{box-shadow:inset 0 0 0 1px var(--line-2);color:var(--ink-2)}
.eh-giftcard.is-used,.eh-giftcard.is-gone{box-shadow:inset 0 0 0 1px var(--line-2)}
/* в переписке: карточка во всю ширину сообщения; после личных слов эксперта — обычный угол */
.eh-msg__body > .eh-giftcard{align-self:stretch}
.eh-bub + .eh-giftcard{border-top-left-radius:var(--r-md)}
/* в списке диалогов — «Подарок: −15 % на синастрию» значком цвета подарка */
.eh-chat__last .eh-chat__gifti{color:var(--gift-ink)}

/* ---- Какая скидка применена (оформление G5, оплата по ссылке G7): eh.discount(o) →
   <div class="eh-discount" id data-eh-discount> > __ic + __main(__line(b «Применили подарок Марины −15 %» + __why) + __sum)
   + __acts(«Применить другую» [aria-expanded] · __rule «Скидки не суммируются») + fieldset.__pick (.eh-options > label.eh-option--row ×N, «Без скидки»).
   Строка тихая (песок фона), значок — цветом подарка, если применён подарок эксперта; выбор — радиокнопки с золотом «выбрано» */
.eh-discount{display:grid;grid-template-columns:auto minmax(0,1fr);gap:0 var(--s-3);padding:var(--s-3) var(--s-4);border-radius:var(--r-md);background:var(--bg);font-size:var(--fs-small);line-height:var(--lh-small)}
/* __ic — статичная метка .eh-giftmark: подарок — коробка цветом подарка, скидка ElevenHouse — процент, промокод — ярлык (.is-plain) */
.eh-discount__main{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:var(--s-1) var(--s-3);min-width:0}
.eh-discount__line{min-width:0;color:var(--ink-2);text-wrap:pretty}
.eh-discount__line b{font-weight:var(--w-medium);color:var(--ink)}
.eh-discount__sum{font-weight:var(--w-medium);color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.eh-discount__acts{grid-column:2;display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-1) var(--s-4);margin-top:var(--s-1h)}
.eh-discount__acts .eh-btn--link{font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-discount__rule{display:inline-flex;align-items:flex-start;gap:var(--s-1h);font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--ink-2)}
.eh-discount__rule .eh-icon{width:var(--s-3h);height:var(--s-3h);flex:none;margin-top:var(--s-0h)}
.eh-discount__pick{grid-column:1 / -1;min-width:0;margin:var(--s-3) 0 0;padding:0;border:0}
.eh-discount__pick[hidden]{display:none}
.eh-discount__pick .eh-option--row{min-height:var(--h-md);padding:var(--s-2h) var(--s-3) var(--s-2h) var(--s-4);border-radius:var(--r-md)}
.eh-discount__pick .eh-option__title{font-size:var(--fs-small);line-height:var(--lh-small)}
.eh-discount__pick .eh-option__text{font-size:var(--fs-caption);line-height:var(--lh-caption)}
.eh-discount__pick .eh-option__aside{font-size:var(--fs-small);line-height:var(--lh-small)}
/* узкая сводка (уже 360 по контейнеру): сумма уходит под строку */
.eh-discount{container:discount / inline-size}
@container discount (max-width:359px){
  .eh-discount:not(.eh-discount--compact) .eh-discount__main{grid-template-columns:minmax(0,1fr)}
}
/* ---- Компактная строка чека (v3.9, сводки G5, G6, G7): «[знак] Подарок Марины −15 %   −1 185 ₽» — сумма справа, в денежном
   столбце сводки, как старая цена и «Итого»; «почему» — второй строкой мельче; без подложки и без круга (глиф 16 у названия) */
.eh-discount--compact{grid-template-columns:var(--s-4) minmax(0,1fr);gap:0 var(--s-2);padding:0;border-radius:0;background:none}
.eh-discount--compact .eh-discount__ic{width:var(--s-4);height:var(--lh-small);background:none;box-shadow:none;border-radius:0}
.eh-discount--compact .eh-discount__ic .eh-icon{width:var(--s-4);height:var(--s-4)}
.eh-discount--compact .eh-discount__main{grid-template-columns:minmax(0,1fr) auto}
.eh-discount--compact .eh-discount__line{display:grid;gap:var(--s-0h)}
.eh-discount--compact .eh-discount__line b{color:var(--ink)}
.eh-discount--compact .eh-discount__dash{display:none}
.eh-discount--compact .eh-discount__why{font-size:var(--fs-caption);line-height:var(--lh-caption)}
.eh-discount--compact .eh-discount__why::first-letter{text-transform:uppercase}
.eh-discount--compact .eh-discount__acts{margin-top:var(--s-1)}
/* выбор раскрывается под строкой и не выше 4 вариантов: «Итого» в липкой сводке остаётся на экране */
.eh-discount--compact .eh-discount__pick{grid-column:1 / -1;max-height:calc(var(--h-md) * 3.6);overflow:auto;overscroll-behavior:contain;margin-top:var(--s-2);padding:var(--s-0h)}

/* =====================================================================
   27. АНИМАЦИИ
   ===================================================================== */
@keyframes eh-spin{to{transform:rotate(360deg)}}
@keyframes eh-pulse{0%,100%{opacity:1}50%{opacity:.55}}
@keyframes eh-now{0%{box-shadow:0 0 0 1.5px var(--gold-edge),0 0 0 1.5px var(--gold-soft)}40%{box-shadow:0 0 0 1.5px var(--gold-edge),0 0 0 5px var(--gold-soft)}100%{box-shadow:0 0 0 1.5px var(--gold-edge),0 0 0 1.5px transparent}}
@keyframes eh-ring{from{box-shadow:0 0 0 0 var(--gold-soft)}45%{box-shadow:0 0 0 var(--s-2) var(--gold-soft)}to{box-shadow:0 0 0 var(--s-2) transparent}}
@keyframes eh-guard-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@keyframes eh-toast-in{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
@keyframes eh-toast-out{to{opacity:0;transform:translateX(24px)}}
@keyframes eh-boot-in{from{opacity:0}to{opacity:1}}
@keyframes eh-reveal{to{visibility:visible}}
@keyframes eh-conceal{to{visibility:hidden}}
@keyframes eh-chat-in{from{opacity:0;transform:translateX(var(--s-6))}to{opacity:1;transform:none}}
