/* ── V1.2 · ПРИНЯТО 04.08.2026 (итерации с владельцем на реальном iPhone) ──
   Принцип: ЕДИНАЯ ТЕКСТОВАЯ ВЕРТИКАЛЬ. Открытый текст экрана остаётся на
   --gut (22px); стеклянные плашки выезжают к краю ровно настолько, чтобы их
   ВНУТРЕННИЙ текст встал на ту же вертикаль. Плюс дисциплина карточек:
   контент прижат к верху (кнопка по умолчанию центрирует по вертикали —
   отсюда «разные уровни» заголовков), иконка оптически на первой строке. */

/* карточки каталога: внутренний текст = внешняя вертикаль */
.cat{padding:0 calc(var(--gut) - 13px)}
.cat-i{display:grid;align-content:start}
/* иконка занимает ровно первую строку: отрицательный нижний отступ выводит
   float из зоны второй строки при любом размере текста — ВСЕ последующие
   строки заголовка начинаются от левого края плашки */
.cat-t .ic{margin:4px 8px -6px 0}

/* лента диалога: карточки шире, поля экономнее (реплики ассистента
   встают ближе к --gut, карточки вопросов/оценки получают больше ширины) */
.thread{padding-left:12px;padding-right:12px}

/* разбор «Права»: единая текстовая вертикаль — текст ВСЕХ блоков на --gut
   (как «ЧТО ДЕЛАТЬ»), рамки и линии уходят в поле, по образцу ленты диалога */
/* образец — лента диалога: карточки на 12px от края, единая текстовая
   вертикаль 28px (как реплики и пузыри). Числа в скобках = арифметика. */
.doc-top{padding-left:28px;padding-right:28px}
.doc-g{margin-left:28px;margin-right:28px}
.doc-steps{padding:0 28px}
.keyp{margin-left:11px;margin-right:11px}     /* 11 + рамка 1 + паддинг 16 = 28 */
.case{margin-left:10px;margin-right:12px}     /* 10 + линия 2 + паддинг 16 = 28 */
.doc-norm{margin-left:11px;margin-right:11px}
.go-dialog{margin-left:9px;margin-right:9px}  /* 9 + рамка 1 + паддинг 18 = 28 */

/* однократное «оживляющее» мерцание линии карточки разбора — как у вердикта */
.keyp::before{background:linear-gradient(90deg,transparent,var(--au),transparent);
  background-size:60% 100%;background-repeat:no-repeat;
  animation:vflare var(--dur-flare) cubic-bezier(.22,.8,.3,1) 1 both}

/* правовые документы: текстовые табы с подчёркиванием — ширина по
   содержимому (не обязана быть одинаковой), текст никогда не выходит за
   кнопку, поэтому клип эффекта нажатия ничего не «дёргает» */
#ldocSeg{background:none;border:0;border-radius:0;padding:0;gap:20px;border-bottom:1px solid var(--line-soft)}
#ldocSeg button{flex:none;white-space:nowrap;height:38px;padding:0 2px;font-size:0.75rem;font-weight:500;color:var(--tx-3);border-radius:8px 8px 0 0;position:relative}
#ldocSeg button[aria-selected="true"]{background:none;box-shadow:none;color:var(--tx-1)}
#ldocSeg button[aria-selected="true"]::before{content:'';position:absolute;left:2px;right:2px;bottom:0;height:2px;border-radius:2px;
  background:var(--au);box-shadow:0 0 10px color-mix(in srgb,var(--au) 60%,transparent)}

/* карточки «О сервисе»: та же система полей, что в диалоге (12 → текст 28) */
.about-op{margin-left:12px;margin-right:12px}

/* ── ШАПКИ НЕТ (решение 04.08): только две плавающие кнопки на деликатных
   подложках-«линзах» (blur + полупрозрачный фон), контент и арт получают
   всю высоту экрана. Тексты в шапке упразднены на ВСЕХ экранах: JS их
   по-прежнему назначает, но элемент скрыт — контекст живёт в контенте. ── */
.topbar{position:absolute;left:0;right:0;top:0;z-index:7;background:none;pointer-events:none;
  padding-top:env(safe-area-inset-top,0px)}
.topbar-row{height:auto;padding:12px 12px 0;justify-content:space-between}
.tb-title{display:none}
/* «жидкое стекло»: контент виден как сквозь каплю хрусталя — сильный blur
   с насыщением, верхний блик кромки, линзовое свечение снизу изнутри;
   тёмная тема получает лёгкую аура-подсветку цветом области */
.topbar .tb-btn{pointer-events:auto;width:44px;height:44px;border-radius:50%;color:var(--tx-1);position:relative;
  background:linear-gradient(165deg,color-mix(in srgb,var(--tx-1) 10%,transparent),transparent 46%),
             color-mix(in srgb,var(--ink-900) 38%,transparent);
  -webkit-backdrop-filter:blur(18px) saturate(170%);backdrop-filter:blur(18px) saturate(170%);
  border:1px solid color-mix(in srgb,var(--tx-1) 17%,transparent);
  box-shadow:inset 0 1px 0 color-mix(in srgb,var(--tx-1) 24%,transparent),
             inset 0 -9px 14px -10px color-mix(in srgb,var(--tx-1) 20%,transparent),
             0 0 20px -4px color-mix(in srgb,var(--au) 34%,transparent),
             0 5px 14px -9px rgba(0,0,0,.6)}
.topbar .tb-btn::before{content:'';position:absolute;inset:0;border-radius:50%;pointer-events:none;
  background:radial-gradient(58% 42% at 32% 16%,color-mix(in srgb,var(--tx-1) 22%,transparent),transparent 72%)}
.topbar .tb-btn svg{position:relative}
[data-theme="light"] .topbar .tb-btn::before{display:none} /* тёмного блика в светлой теме не нужно */
[data-theme="light"] .topbar .tb-btn{
  background:linear-gradient(165deg,rgba(255,255,255,.75),rgba(255,255,255,.25) 50%),rgba(255,255,255,.30);
  border-color:rgba(23,32,44,.16);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9),
             inset 0 -9px 14px -10px rgba(255,255,255,.75),
             0 3px 9px -6px rgba(23,32,44,.28)}
/* прогресс-метр — вплотную к самой верхней кромке (не «перечёркивает»
   контент, прокручивающийся под кнопками) */
.meter{position:absolute;left:0;right:0;top:0;z-index:6}
.meter::before,.meter::after{top:0}
/* мерцание метра — НЕ постоянное: два «вздоха» после продвижения (класс
   .pulse ставит advance() как реакцию на ответ пользователя) */
.meter.live::after{animation:none}
.meter.pulse::after{animation:breathe 1.8s ease-in-out 2} /* линия на самом верхнем пикселе: бокс метра
   прозрачный, при top:6 над линией просвечивал прокрученный текст */
/* трекер стадий раскрывается под плавающими кнопками (вход — тап по метру) */
.app[data-tracker="1"] .tracker{max-height:210px}
.tracker-in{padding-top:calc(env(safe-area-inset-top,0px) + 66px)}
/* экраны без полноширинного арта начинают контент ниже кнопок;
   у law/sect арт-плиты уходят под кнопки во всю высоту */
#scr-home,#scr-dialog,#scr-all,#scr-more,#scr-contact,#scr-about,#scr-legal,#scr-states,#scr-paper,#scr-art{padding-top:calc(env(safe-area-inset-top,0px) + 58px)}
#scr-law,#scr-sect{padding-top:0}

/* интро на низких экранах (iPhone SE и т.п.): арт ниже, кегль компактнее,
   тело скроллится — наложение текста на юридическую строку исключено */
.intro-body .eyebrow::after{display:none}

@media (max-height:730px){
  .intro-art{aspect-ratio:2/1}
  .intro-body{overflow-y:auto}
  .intro-body h1{font-size:1.4375rem;margin-bottom:10px}
  .intro-body p{font-size:0.8438rem;line-height:1.5}
  .intro-body .eyebrow{margin-bottom:10px}
  .intro-note{padding-top:10px}
  .intro-foot{padding:12px var(--gut) 18px}
}

/* поиск по диалогам: настоящее поле ввода (фокус, клавиатура) */
.srch-in{flex:1;min-width:0;background:none;border:0;outline:none;color:var(--tx-1);font-size:0.8438rem;padding:0}
.srch-in::placeholder{color:var(--tx-4)}
.srch:focus-within{border-color:color-mix(in srgb,var(--au) 30%,var(--line))}
@supports (-webkit-touch-callout: none){.srch-in{font-size:1rem}}

/* композер: кнопки прижаты к низу с ПОСТОЯННЫМ отступом (8px), а
   однострочное поле само получается ровно 44px под кнопки — паддинги
   считаются от фактической высоты строки, кегль в зазоры не просачивается */
@supports (padding: 1lh){
  .comp textarea{padding-top:calc((44px - 1lh)/2);padding-bottom:calc((44px - 1lh)/2)}
}

/* скрепка ВРЕМЕННО скрыта: функционала загрузки в ближайших релизах нет;
   кнопка и её обработчики в коде сохранены — вернуть удалением правила */
#clipBtn{display:none}
