:root {
  --brand-strong: #1d020c;
  --card: #ffffff;
  --content-strong: #0c0e12;
  --content-subtle: rgba(12, 14, 18, 0.4);
  --content-inverse: #ffffff;
  --content-inverse-medium: rgba(255, 255, 255, 0.6);
  --content-inverse-subtle: rgba(255, 255, 255, 0.4);
  --positive: #a3d546;
  --border-base: rgba(12, 14, 18, 0.08);
  --tile: rgba(153, 160, 174, 0.12);
  --streak: #ff6f46;
  --tab-active: #1d020c;
  --tab-inactive: #404040;
  --tab-pill: #ededed;
  --neutral-bg: #fff7fd;

  --r-sheet: 32px;
  --r-card: 20px;
  --r-inset: 16px;
  --r-pill: 100px;

  --font: "Geist", -apple-system, BlinkMacSystemFont, "SF Pro Text", "Helvetica Neue", sans-serif;

  /* Верхний инсет хедера: device safe-area, а в Telegram-фулскрине плюс высота
     системных кнопок (× / ⋯) — её отражает app.js в --rf-top-inset. Вне Telegram
     переменной нет → остаётся чистый env(). */
  --safe-top: max(env(safe-area-inset-top, 0px), var(--rf-top-inset, 0px));
}

* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html, body { height: 100%; margin: 0; }

body {
  font-family: var(--font);
  background: radial-gradient(1200px 800px at 50% -10%, #e9eaee 0%, #d7d8dd 60%, #cfd0d5 100%);
  color: var(--content-strong);
  display: flex; align-items: center; justify-content: center;
  min-height: 100dvh; padding: 28px 16px;
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
}

/* ----- Device frame ----- */
.device {
  position: relative; width: 430px; height: 932px;
  max-height: calc(100dvh - 40px);
  background: #fff7fd;
  border-radius: 48px; overflow: hidden;
  box-shadow: 0 2px 4px rgba(0,0,0,.12), 0 30px 70px rgba(20,4,12,.35), 0 0 0 11px #0b0b0d, 0 0 0 12px #2a2a2e;
  display: flex; flex-direction: column; isolation: isolate;
}
.device__bg { display: none; }
.device > .layer, .device > .screens { position: relative; z-index: 1; }

/* ----- Status bar ----- */
.statusbar { flex: 0 0 auto; height: 54px; padding: 16px 22px 0; display: flex; align-items: center; justify-content: space-between; color: #1c0a12; }
.statusbar.dark { color: #0c0e12; }
.statusbar__time { font-size: 17px; font-weight: 600; letter-spacing: -0.2px; font-variant-numeric: tabular-nums; }
.statusbar__icons { display: flex; align-items: center; gap: 7px; }
.statusbar__icons svg { display: block; }

/* ----- Screens ----- */
.screens { flex: 1 1 auto; min-height: 0; }
.screen { position: absolute; inset: 0; display: none; flex-direction: column; min-height: 0; }
.screen.is-active { display: flex; }

/* ----- Top bar (tabs) ----- */
.topbar { flex: 0 0 auto; padding: 10px 20px 14px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.topbar__left { display: flex; align-items: center; gap: 14px; min-width: 0; }
.avatar { width: 44px; height: 44px; border-radius: 13px; object-fit: cover; flex: 0 0 auto; box-shadow: 0 0 0 1px rgba(255,255,255,.5); }
.greeting { display: flex; flex-direction: column; min-width: 0; }
.greeting__hi { font-size: 12px; font-weight: 400; line-height: 1.6; letter-spacing: -0.24px; color: rgba(28,10,18,.55); }
.greeting__name { font-size: 16px; font-weight: 400; line-height: 1.2; letter-spacing: -0.32px; color: var(--content-strong); }
.greeting__name b { font-weight: 600; }
.pagetitle { display: flex; flex-direction: column; min-width: 0; }
.pagetitle h1 { margin: 0; font-size: 24px; font-weight: 600; letter-spacing: -0.5px; line-height: 1.05; }
.pagetitle p { margin: 3px 0 0; font-size: 12px; font-weight: 400; color: rgba(28,10,18,.5); }

.topbar__actions { display: flex; align-items: center; gap: 8px; }
.glass-btn { position: relative; width: 44px; height: 44px; border-radius: 50%; border: 0; cursor: pointer; padding: 0; display: grid; place-items: center; background: rgba(255,255,255,.55); box-shadow: inset 0 0 0 1px rgba(255,255,255,.6), 0 4px 14px rgba(20,4,12,.10); backdrop-filter: blur(20px) saturate(160%); -webkit-backdrop-filter: blur(20px) saturate(160%); transition: transform .12s ease, background .2s ease; }
.glass-btn:active { transform: scale(.93); }
.glass-btn svg { width: 22px; height: 22px; display: block; }
.glass-btn--ai svg { width: 24px; height: 24px; }
/* Счётчик непрочитанного: кольцо цветом фона экрана «вырезает» бейдж из кнопки,
   tabular-nums — чтобы «9» и «12» не дёргали кружок по ширине.
   Фон #c8397a, а не фирменный #e0518f: цифра 10.5px — это мелкий текст, для него
   AA требует 4.5:1, а белым по #e0518f выходило всего 3.66:1. #c8397a даёт 4.86:1
   и остаётся в розовой гамме (тон тени rgba(158,32,92)). */
.glass-btn__badge { position: absolute; top: -3px; right: -3px; z-index: 2; min-width: 19px; height: 19px; padding: 0 5px; display: grid; place-items: center; border-radius: 999px; background: #c8397a; color: #fff; font: 700 10.5px/1 var(--font); font-variant-numeric: tabular-nums; letter-spacing: -.01em; box-shadow: 0 0 0 2px var(--neutral-bg), 0 2px 6px rgba(158,32,92,.35); pointer-events: none; }
.glass-btn__badge[hidden] { display: none; }

/* ----- Scroll ----- */
.scroll { flex: 1 1 auto; overflow-y: auto; overflow-x: hidden; -webkit-overflow-scrolling: touch; padding-bottom: 96px; scrollbar-width: none; }
/* Активный трекер: «Главная» и «Ещё» заканчиваются белой .sheet — последний блок.
   Тянем её белый фон до самого низа (sheet растягивается на высоту вьюпорта и сама
   несёт отступ под таб-бар своим БЕЛЫМ padding-bottom), чтобы под ней не «возвращался»
   розовый фон устройства. Прозрачный padding у .scroll на этих экранах убираем. */
#device[data-stage="active"] .screen[data-screen="home"] .sheet--flow,
#device[data-stage="active"] .screen[data-screen="more"] .scroll > .sheet {
  padding-bottom: calc(120px + env(safe-area-inset-bottom));
  min-height: calc(100dvh - 120px);
}
#device[data-stage="active"] .screen[data-screen="home"] .scroll,
#device[data-stage="active"] .screen[data-screen="more"] .scroll {
  padding-bottom: 0;
}
.scroll::-webkit-scrollbar { display: none; }
.stack { padding: 4px 20px 0; display: flex; flex-direction: column; gap: 8px; }

/* ----- Streak ----- */
.streak { position: relative; align-self: center; margin: 2px 0 4px; }
.streak__arrow { position: absolute; top: -7px; left: 50%; transform: translateX(-50%); width: 0; height: 0; border-left: 9px solid transparent; border-right: 9px solid transparent; border-bottom: 8px solid #fff; filter: drop-shadow(0 -2px 2px rgba(20,4,12,.05)); }
.streak__body { background: #fff; border-radius: var(--r-inset); padding: 9px 16px; display: flex; align-items: center; gap: 10px; box-shadow: 0 6px 20px rgba(20,4,12,.10); }
.streak__dots { display: flex; align-items: center; gap: 2px; }
.streak__dots i { width: 6px; height: 12px; border-radius: 9999px; background: var(--streak); display: block; }
.streak__dots i.off { opacity: .12; }
.streak__text { font-size: 12px; font-weight: 500; line-height: 1.6; letter-spacing: -0.24px; color: #0c0005; display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.streak__text b { font-weight: 600; }

/* ----- Cards ----- */
.card { background: var(--card); border-radius: var(--r-card); box-shadow: 0 8px 24px rgba(20,4,12,.06), inset 0 0 0 1px rgba(12,14,18,.03); }

.goal { padding: 16px; }
.goal__head { display: flex; align-items: center; justify-content: space-between; }
.goal__title { font-size: 16px; font-weight: 500; line-height: 22px; }
.pill { height: 28px; padding: 0 12px; border: 0; cursor: pointer; border-radius: var(--r-pill); background: rgba(0,0,0,.06); font-family: var(--font); font-size: 11px; font-weight: 500; letter-spacing: -0.2px; line-height: 1; color: var(--content-strong); display: inline-flex; align-items: center; transition: background .2s ease, transform .12s ease; }
.pill:active { transform: scale(.95); }
.goal__type { margin-top: 12px; display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 500; line-height: 22px; }
.goal__type svg { width: 16px; height: 16px; display: block; color: #e0658a; }

.bars { margin-top: 12px; display: flex; align-items: stretch; gap: 4px; height: 16px; }
.bars i { flex: 1 1 0; border-radius: 9999px; background: var(--border-base); }
.bars i.on { background: var(--positive); }

.goal__stats { margin-top: 14px; display: flex; }
.goal__stats .col { flex: 1 1 0; }
.stat-num { font-size: 14px; font-weight: 500; line-height: 22px; color: var(--content-strong); }
.stat-num span { color: var(--content-subtle); }
.stat-lbl { font-size: 12px; font-weight: 400; line-height: 16px; color: var(--content-subtle); }

/* ----- AI / Health Lab promo card ----- */
.ai { position: relative; overflow: hidden; border-radius: var(--r-card); padding: 14px 16px; background: linear-gradient(255deg, #c9a7d6 -10%, #9c7fc6 48%, #7c62b8 105%); box-shadow: 0 12px 26px rgba(94,60,140,.28); min-height: 96px; display: flex; flex-direction: column; justify-content: center; cursor: pointer; }
.ai__deco { position: absolute; top: 50%; right: -34px; transform: translateY(-50%); width: 215px; height: 215px; pointer-events: none; }
.ai__deco svg { width: 100%; height: 100%; display: block; }
.ai__title { position: relative; font-size: 14px; font-weight: 500; line-height: 20px; color: var(--content-inverse); max-width: 215px; }
.ai__sub { position: relative; margin-top: 3px; font-size: 12px; font-weight: 400; line-height: 16px; color: var(--content-inverse-medium); max-width: 205px; }
.ai__cta { position: relative; margin-top: 12px; align-self: flex-start; height: 28px; padding: 0 12px; border: 0; cursor: pointer; border-radius: var(--r-pill); background: rgba(255,255,255,.18); box-shadow: inset 0 0 0 1px rgba(255,255,255,.35); font-family: var(--font); font-size: 11px; font-weight: 500; letter-spacing: -0.2px; line-height: 1; color: #fff; display: inline-flex; align-items: center; }

/* ----- Bottom sheet ----- */
.sheet { margin-top: 16px; background: var(--card); border-radius: var(--r-sheet) var(--r-sheet) 0 0; padding: 10px 20px 24px; box-shadow: 0 -6px 30px rgba(20,4,12,.06); min-height: 460px; }
.grabber { width: 36px; height: 5px; border-radius: 9999px; background: #d8d9dd; margin: 0 auto 6px; }
.sheet__head { display: flex; align-items: center; justify-content: space-between; padding: 6px 0 10px; }
.navbtn { width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--border-base); background: #fff; cursor: pointer; display: grid; place-items: center; color: var(--content-strong); transition: transform .12s ease, background .2s ease; }
.navbtn:active { transform: scale(.92); background: #f6f6f7; }
.navbtn svg { width: 18px; height: 18px; display: block; }
.sheet__title { text-align: center; }
.sheet__title h2 { margin: 0; font-size: 16px; font-weight: 500; line-height: 22px; }
.sheet__title p { margin: 1px 0 0; font-size: 12px; font-weight: 400; line-height: 16px; color: var(--content-subtle); }
.sheet-h { font-size: 16px; font-weight: 500; line-height: 22px; padding: 2px 2px 12px; }

/* ----- Rows ----- */
.rows { display: flex; flex-direction: column; }
.row { display: flex; align-items: center; gap: 12px; padding: 4px 12px 4px 4px; cursor: pointer; border-radius: var(--r-inset); transition: background .15s ease, transform .12s ease; }
.row:active { transform: scale(.985); }
.row + .row { margin-top: 4px; }
.row__media { width: 64px; height: 64px; flex: 0 0 auto; border-radius: var(--r-inset); background: var(--tile); display: grid; place-items: center; overflow: hidden; box-shadow: inset 0 0 0 1px rgba(12,14,18,.04); }
.row__media img { width: 100%; height: 100%; object-fit: cover; }
.row__media svg { width: 24px; height: 24px; display: block; }
.row__body { flex: 1 1 auto; min-width: 0; }
.row__name { font-size: 14px; font-weight: 500; line-height: 22px; color: var(--content-strong); }
.row__meta { margin-top: 1px; font-size: 12px; font-weight: 400; line-height: 16px; color: var(--content-subtle); display: inline-flex; align-items: center; gap: 5px; }
.row__meta svg { width: 12px; height: 12px; display: block; opacity: .7; }
.row__meta b { color: var(--content-strong); font-weight: 500; }
.row__chev { flex: 0 0 auto; color: rgba(12,14,18,.3); display: grid; place-items: center; }
.row__chev svg { width: 22px; height: 22px; display: block; }

.row--dark { background: var(--brand-strong); padding: 4px 16px 4px 4px; box-shadow: 0 12px 26px rgba(20,4,12,.30); }
.row--dark .row__media { background: rgba(255,255,255,.06); box-shadow: inset 0 0 0 1px rgba(255,255,255,.08); }
.row--dark .row__name { color: #fff; }
.row--dark .row__meta { color: rgba(255,255,255,.72); }
.row--dark .row__meta svg { flex-shrink: 0; }
.row--dark .row__meta b { color: #fff; }
.row--dark .row__chev { color: rgba(255,255,255,.6); }
.row__done { color: #a8112e !important; background: #fff; border-radius: 50%; width: 30px; height: 30px; margin-right: 6px; box-shadow: 0 2px 8px rgba(0,0,0,.2); }
.row__done svg { width: 18px; height: 18px; }
.missed-hide { width:100%;min-height:44px;margin-top:4px;padding:8px 12px;border:0;background:transparent;
  color:var(--content-subtle);font-family:var(--font);font-size:13px;font-weight:500;text-align:right;cursor:pointer; }
.missed-hide:focus-visible { outline:3px solid #c8397a;outline-offset:2px;border-radius:var(--r-pill); }
/* Опросники видео-плеера переисполь­зуют gp-разметку → отдаём им gp-переменные (в .vp2 их нет). */
.vp2 .gp-confirm, .vp2 .gp-survey { --ink:#0c0e12; --ink66:rgba(12,14,18,.62); --ink40:rgba(12,14,18,.4); --ink26:rgba(12,14,18,.24); --brandd:#f0a0c0; --goal:#ffe9f1; --gpprimary:#2c0c17; --gpprimaryp:#3a1322; }

.ic-orange { color: #ff7a3d; } .ic-purple { color: #8b5cf6; } .ic-blue { color: #2bb3e3; } .ic-green { color: #2bbf6a; } .ic-pink { color: #f5589b; } .ic-amber { color: #f5a623; } .ic-wine { color: #1d020c; }
/* разделитель секций внутри шторки — во всю ширину листа */
.sh-div { height: 1px; background: rgba(12,14,18,.07); margin: 8px -20px; }
.t-rose { background: #f6dfe8; color: #b34f7a; }

/* ----- Progress ----- */
.duo { display: flex; gap: 8px; }
.duo > .card { flex: 1 1 0; padding: 14px; }
.mini-h { font-size: 12px; color: var(--content-subtle); font-weight: 400; }
.ring { display: flex; align-items: center; gap: 12px; margin-top: 8px; }
.ring svg { width: 60px; height: 60px; flex: 0 0 auto; }
.ring__big { font-size: 22px; font-weight: 600; letter-spacing: -0.5px; }
.ring__sub { font-size: 11px; color: var(--content-subtle); margin-top: 1px; }
.big-num { font-size: 26px; font-weight: 600; letter-spacing: -0.8px; margin-top: 10px; line-height: 1; }
.big-num span { font-size: 14px; color: var(--content-subtle); font-weight: 500; letter-spacing: 0; }
.delta { margin-top: 6px; font-size: 12px; font-weight: 500; color: #2bbf6a; display: inline-flex; align-items: center; gap: 4px; }
.delta svg { width: 13px; height: 13px; }
.chart-card { padding: 16px; margin-top: 8px; }
.chart-card h3 { margin: 0 0 2px; font-size: 14px; font-weight: 500; }
.chart-card .mini-h { display: block; }
.chart { width: 100%; height: 96px; display: block; margin-top: 10px; }
.chart-x { display: flex; justify-content: space-between; margin-top: 6px; font-size: 10px; color: var(--content-subtle); }
.grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.gcell { background: #f7f7f8; border-radius: var(--r-inset); padding: 13px 14px; }
.gcell .n { font-size: 20px; font-weight: 600; letter-spacing: -0.5px; }
.gcell .n span { font-size: 12px; color: var(--content-subtle); font-weight: 500; letter-spacing: 0; }
.gcell .l { font-size: 12px; color: var(--content-subtle); margin-top: 3px; }
.cal { margin-top: 14px; }
.cal__row { display: flex; gap: 4px; }
.cal__row i { flex: 1 1 0; height: 30px; border-radius: 8px; background: var(--border-base); }
.cal__row i.g { background: var(--positive); } .cal__row i.a { background: #f7d774; } .cal__row i.r { background: rgba(255,111,70,.55); }
.cal__lbl { display: flex; justify-content: space-between; margin-top: 6px; font-size: 10px; color: var(--content-subtle); }

/* ----- Profile / menu (More) ----- */
.profile { display: flex; align-items: center; gap: 14px; padding: 16px; }
.profile img { width: 56px; height: 56px; border-radius: 16px; object-fit: cover; box-shadow: 0 0 0 1px rgba(12,14,18,.06); }
/* Редактор аватарки в «Личных данных» */
.pf-avatar { display: flex; align-items: center; gap: 13px; padding: 13px 14px; margin-bottom: 12px; }
.pf-avatar img { width: 54px; height: 54px; border-radius: 15px; object-fit: cover; flex: 0 0 auto; box-shadow: 0 0 0 1px rgba(12,14,18,.06); }
.pf-avatar__b { flex: 1 1 auto; min-width: 0; }
.pf-avatar__t { font-size: 15px; font-weight: 600; color: var(--content-strong); }
.pf-avatar__s { font-size: 12.5px; color: var(--content-subtle); margin-top: 2px; }
.profile__b { flex: 1 1 auto; min-width: 0; }
.profile__name { font-size: 17px; font-weight: 600; letter-spacing: -0.3px; }
.profile__sub { font-size: 12px; color: var(--content-subtle); margin-top: 2px; }
.group-title { font-size: 12px; font-weight: 500; color: var(--content-subtle); padding: 16px 4px 8px; }
.menu { display: flex; flex-direction: column; }
.mrow { display: flex; align-items: center; gap: 12px; padding: 10px 10px 10px 8px; cursor: pointer; border-radius: var(--r-inset); transition: background .15s ease, transform .12s ease; }
.mrow:active { transform: scale(.99); background: #f6f6f7; }
.mrow + .mrow { border-top: 1px solid rgba(12,14,18,.05); }
.mrow__ic { width: 40px; height: 40px; flex: 0 0 auto; border-radius: 12px; background: var(--tile); display: grid; place-items: center; }
.mrow__ic svg { width: 20px; height: 20px; }
.mrow__b { flex: 1 1 auto; min-width: 0; }
.mrow__name { font-size: 15px; font-weight: 500; }
.mrow__sub { font-size: 12px; color: var(--content-subtle); margin-top: 1px; }
.mrow__val { font-size: 13px; color: var(--content-subtle); margin-right: 2px; }
.mrow__chev { color: rgba(12,14,18,.28); display: grid; place-items: center; }
.mrow__chev svg { width: 20px; height: 20px; }
.signout { width: 100%; margin-top: 16px; border: 0; cursor: pointer; background: #fff; color: #ff3b30; border-radius: var(--r-card); padding: 16px; font-family: var(--font); font-size: 15px; font-weight: 600; box-shadow: 0 8px 24px rgba(20,4,12,.06); }
.version { text-align: center; color: rgba(12,14,18,.3); font-size: 11px; letter-spacing: .04em; margin-top: 16px; }
.toggle { width: 50px; height: 30px; border-radius: 9999px; background: #e3e4e8; position: relative; flex: 0 0 auto; cursor: pointer; transition: background .2s ease; }
.toggle::after { content: ""; position: absolute; top: 3px; left: 3px; width: 24px; height: 24px; border-radius: 50%; background: #fff; box-shadow: 0 2px 5px rgba(0,0,0,.2); transition: transform .2s ease; }
.toggle.on { background: #34c759; } .toggle.on::after { transform: translateX(20px); }
/* Чип времени/количества в настройках уведомлений: чистый вид (как .mealsel),
   а нативный <select> лежит поверх (opacity:0) — на iPhone открывает системное
   колесо выбора. Справа в строке .mrow. */
/* Время в мягкой светлой пилюле (без иконки часов/стрелки). Нативный <select>
   лежит поверх (opacity:0) — на iPhone открывает системное колесо. */
.tchip { position: relative; flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; min-width: 76px; padding: 8px 14px; border-radius: 12px; background: #f1f1f4; cursor: pointer; transition: background .15s ease; }
.tchip:active { background: #e6e6ea; }
.tchip__v { font-size: 17px; font-weight: 600; letter-spacing: -.01em; font-variant-numeric: tabular-nums; color: #0c0e12; }
.tchip__sel { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; border: 0; cursor: pointer; -webkit-appearance: none; appearance: none; font-size: 16px; }
/* Иконка-тайл строки уведомлений (мягкий тонированный фон + цветной глиф) */
.nti { width: 34px; height: 34px; flex: 0 0 auto; border-radius: 10px; display: grid; place-items: center; }
.nti svg { width: 19px; height: 19px; }
/* Заголовок группы (iOS grouped-list style) */
.nsec { font-size: 11.5px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: rgba(12,14,18,.38); padding: 16px 8px 7px; }

/* ----- Tab bar ----- */
.tabbar { position: absolute; z-index: 3; left: 50%; transform: translateX(-50%); bottom: 34px; width: min(386px, calc(100% - 20px)); display: flex; align-items: center; gap: 2px; padding: 6px 6px 7px; border-radius: 32px; background: rgba(249,249,251,.8); box-shadow: inset 0 1px 0 rgba(255,255,255,.9), inset 0 0 0 1px rgba(255,255,255,.55), 0 12px 34px rgba(20,4,12,.14); backdrop-filter: blur(22px) saturate(105%); -webkit-backdrop-filter: blur(22px) saturate(105%); overflow: hidden; }
.tab { position: relative; z-index: 1; flex: 1 1 0; border: 0; background: transparent; cursor: pointer; border-radius: 22px; padding: 6px 2px; display: flex; flex-direction: column; align-items: center; gap: 3px; color: #5b5b63; font-family: var(--font); font-size: 10px; font-weight: 500; line-height: 12px; letter-spacing: -0.1px; transition: color .3s ease; }
.tab svg { width: 24px; height: 24px; display: block; transition: transform .4s cubic-bezier(.3,1.3,.5,1); }
.tab .ti--fill { display: none; }
.tab.is-active { color: var(--tab-active); font-weight: 600; }
.tab.is-active .ti--fill { display: block; }
.tab.is-active .ti--line:not(.ti--bold) { display: none; }
.tab.is-active .ti--bold { stroke-width: 2.3; }
.tab.is-active svg { transform: translateY(-1px); }
.tab-glass { display: none !important; }
/* Selection belongs to the button: bootstrap can change 3 tabs to 5 without a resize. */
.tab.is-active { background: rgba(60,60,67,.13); box-shadow: inset 0 0 0 1px rgba(255,255,255,.3); }

.home-ind { position: absolute; z-index: 6; bottom: 9px; left: 50%; transform: translateX(-50%); width: 134px; height: 5px; border-radius: 9999px; background: rgba(0,0,0,.85); }
.home-ind.light { background: rgba(0,0,0,.85); }

/* ============================================================
   DETAIL SCREENS (pushed full-screen overlays)
   ============================================================ */
.detail { position: absolute; inset: 0; z-index: 5; background: var(--neutral-bg); display: flex; flex-direction: column; transform: translateX(100%); transition: transform .28s cubic-bezier(.4,0,.2,1); visibility: hidden; }
.detail.is-open { transform: translateX(0); visibility: visible; }
.detail .scroll { padding-bottom: 40px; }
.dhead { flex: 0 0 auto; display: flex; align-items: center; gap: 12px; padding: 8px 16px 12px; }
.dhead__title { flex: 1 1 auto; text-align: center; font-size: 17px; font-weight: 600; letter-spacing: -0.3px; }
.dhead__btn { width: 44px; height: 44px; flex: 0 0 auto; border-radius: 50%; border: 0; cursor: pointer; background: rgba(12,14,18,.05); display: grid; place-items: center; color: var(--content-strong); transition: transform .12s ease, background .2s ease; }
.dhead__btn:active { transform: scale(.92); }
.dhead__btn.ghost { background: transparent; }
.dhead__btn svg { width: 20px; height: 20px; }
.dhead__link { width: auto; padding: 0 6px; font-family: var(--font); font-size: 15px; font-weight: 500; color: var(--content-strong); background: transparent; }
.dwrap { padding: 0 20px; }

/* segmented control */
.seg { display: flex; gap: 0; background: #e7e7ea; border-radius: 12px; padding: 3px; margin: 4px 0 14px; }
.seg button { flex: 1 1 0; border: 0; cursor: pointer; background: transparent; font-family: var(--font); font-size: 14px; font-weight: 500; color: var(--content-subtle); padding: 8px 0; border-radius: 9px; transition: all .18s ease; }
.seg button.on { background: #fff; color: var(--content-strong); box-shadow: 0 2px 6px rgba(0,0,0,.08); }

/* week day strip (calories) */
.wkstrip { display: flex; gap: 6px; margin: 2px 0 14px; }
.wkday { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 8px 0 6px; border-radius: 16px; background: #fff; cursor: pointer; box-shadow: inset 0 0 0 1px rgba(12,14,18,.04); }
.wkday small { font-size: 11px; color: var(--content-subtle); }
.wkday b { font-size: 16px; font-weight: 600; }
.wkday i { width: 5px; height: 5px; border-radius: 50%; background: transparent; display: block; }
.wkday i.g { background: var(--positive); } .wkday i.o { background: #ff9f43; }
.wkday.on { background: var(--brand-strong); box-shadow: none; }
.wkday.on small, .wkday.on b { color: #fff; }
.wkday.future small, .wkday.future b { color: rgba(12,14,18,.28); }

/* calorie summary + macros */
.cal-card { padding: 16px; }
.cal-card__top { display: flex; align-items: flex-start; justify-content: space-between; }
.kcal-big { font-size: 26px; font-weight: 600; letter-spacing: -0.8px; }
.kcal-big span { font-size: 15px; color: var(--content-subtle); font-weight: 500; letter-spacing: 0; }
.kcal-sub { font-size: 13px; color: var(--content-subtle); margin-top: 2px; }
.kcal-sub b { color: var(--content-strong); font-weight: 500; }
.macros { display: flex; gap: 18px; margin-top: 14px; }
.macro { flex: 1 1 0; }
.macro .ml { font-size: 12px; color: var(--content-subtle); }
.macro .mv { font-size: 14px; font-weight: 600; margin-top: 2px; }
.macro .mv span { color: var(--content-subtle); font-weight: 400; font-size: 12px; }
.macro .mbar { height: 4px; border-radius: 9999px; background: var(--border-base); margin-top: 7px; overflow: hidden; }
.macro .mbar i { display: block; height: 100%; border-radius: 9999px; }

/* meal group */
.meal-group { margin-top: 12px; }
.meal-group__head { display: flex; align-items: center; gap: 12px; padding: 4px 4px 4px 4px; }
.meal-thumb { width: 40px; height: 40px; border-radius: 12px; background: var(--tile); display: grid; place-items: center; font-size: 20px; }
.meal-thumb svg { width: 20px; height: 20px; }
.meal-group__b { flex: 1 1 auto; }
.meal-group__name { font-size: 15px; font-weight: 600; }
.meal-group__kcal { font-size: 12px; color: var(--content-subtle); margin-top: 1px; }
.addbtn { width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--border-base); background: #fff; cursor: pointer; display: grid; place-items: center; color: var(--content-strong); flex: 0 0 auto; transition: transform .12s ease; }
.addbtn:active { transform: scale(.9); }
.addbtn svg { width: 18px; height: 18px; }
.meal-items { margin-top: 8px; }
.meal-item { display: flex; align-items: center; justify-content: space-between; padding: 12px 4px; border-top: 1px solid rgba(12,14,18,.06); }
.meal-item:first-child { border-top: 0; }
.meal-item__n { font-size: 14px; }
.meal-item__r { display: flex; align-items: center; gap: 8px; color: var(--content-subtle); font-size: 13px; }
.meal-item__r svg { width: 16px; height: 16px; }
.swipe-demo { position: relative; overflow: hidden; border-radius: 12px; }
.swipe-demo .meal-item { transform: translateX(-58px); background: #fff; border-top: 0; padding: 14px 12px; }
.swipe-demo .trash { position: absolute; right: 0; top: 0; bottom: 0; width: 56px; background: #ff3b30; display: grid; place-items: center; color: #fff; border-radius: 12px; }
.swipe-demo .trash svg { width: 20px; height: 20px; }

/* steps chart */
.steps-chart-card { padding: 16px; }
.steps-cur { text-align: center; margin-bottom: 6px; }
.steps-cur b { font-size: 17px; font-weight: 600; }
.steps-cur p { margin: 2px 0 0; font-size: 12px; color: var(--content-subtle); }
.steps-nav { display: flex; align-items: center; justify-content: space-between; }
.steps-avg { font-size: 13px; color: var(--content-subtle); }
.steps-avg b { display: block; font-size: 20px; color: var(--content-strong); font-weight: 600; margin-top: 2px; }
.legend { display: flex; gap: 14px; margin-top: 12px; font-size: 11px; color: var(--content-subtle); flex-wrap: wrap; }
.legend span { display: inline-flex; align-items: center; gap: 5px; }
.legend i { width: 9px; height: 9px; border-radius: 50%; }
.dotgrid { display: grid; grid-template-columns: repeat(10, 1fr); gap: 7px; margin: 4px 0; max-width: 200px; }
.dotgrid i { width: 9px; height: 9px; border-radius: 50%; background: #e2e3e7; }
.dotgrid i.p { background: #f5a0c4; }
.article { display: flex; align-items: center; gap: 12px; padding: 8px; }
.article img, .article .ph { width: 56px; height: 56px; border-radius: 12px; object-fit: cover; flex: 0 0 auto; background: linear-gradient(135deg,#f3c6d8,#c9b6e8); }
.article__b { flex: 1 1 auto; }
.article__t { font-size: 14px; font-weight: 500; line-height: 1.25; }
.article__m { font-size: 12px; color: var(--content-subtle); margin-top: 3px; }

/* workout detail */
.detail--wk { overflow: hidden; }
.wk-hero { position: absolute; top: 0; left: 0; right: 0; height: 380px; overflow: hidden; z-index: 1; }
.wk-hero img { width: 100%; height: 100%; object-fit: cover; }
.wk-hero__top { position: absolute; top: 0; left: 0; right: 0; display: flex; align-items: center; justify-content: space-between; padding: 56px 14px 0; z-index: 6; }
.glassbtn { width: 40px; height: 40px; border-radius: 50%; border: 0; cursor: pointer; background: rgba(255,255,255,.85); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); display: grid; place-items: center; color: #1d020c; transition: background .18s ease, transform .12s ease; }
.glassbtn:active { transform: scale(.92); }
.glassbtn svg { width: 20px; height: 20px; }
.glassbtn.on { background: #1d020c; color: #fff; }
.wk-hero__actions { display: flex; gap: 8px; }
.wk-fab { position: absolute; top: 286px; left: 0; right: 0; z-index: 2; display: flex; justify-content: flex-end; gap: 8px; padding: 0 14px; }
.wk-controls { position: absolute; top: 104px; left: 14px; right: 14px; background: rgba(20,4,12,.5); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); border-radius: 18px; padding: 4px 8px; z-index: 5; opacity: 0; transform: translateY(-8px); pointer-events: none; transition: opacity .2s ease, transform .2s ease; }
.wk-controls.is-open { opacity: 1; transform: translateY(0); pointer-events: auto; }
.wk-ctrl { display: flex; align-items: center; justify-content: space-between; padding: 11px 8px; color: #fff; font-size: 14px; }
.wk-ctrl + .wk-ctrl { border-top: 1px solid rgba(255,255,255,.14); }
.wk-ctrl .r { display: flex; align-items: center; gap: 6px; color: rgba(255,255,255,.7); font-size: 13px; }
.wk-ctrl .r svg { width: 16px; height: 16px; }
.wk-sheet { position: absolute; left: 0; right: 0; top: 60px; bottom: 0; background: var(--neutral-bg); border-radius: 24px 24px 0 0; box-shadow: 0 -12px 34px rgba(20,4,12,.18); z-index: 4; display: flex; flex-direction: column; transform: translateY(270px); transition: transform .3s cubic-bezier(.32,.72,0,1); }
.wk-sheet.dragging { transition: none; }
.wk-grab { padding: 10px 0 8px; flex: 0 0 auto; display: flex; justify-content: center; cursor: grab; touch-action: none; }
.wk-grab::before { content: ''; width: 40px; height: 5px; border-radius: 9999px; background: rgba(12,14,18,.18); }
.wk-sheet__scroll { flex: 1 1 auto; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 2px 20px calc(40px + env(safe-area-inset-bottom)); scrollbar-width: none; }
.wk-sheet__scroll::-webkit-scrollbar { display: none; }
.wk-title { font-size: 22px; font-weight: 600; letter-spacing: -0.5px; line-height: 1.15; }
.wk-stats { display: flex; gap: 8px; margin-top: 16px; }
.wk-stat { flex: 1 1 0; background: #fff; border-radius: 14px; padding: 12px; text-align: center; box-shadow: inset 0 0 0 1px rgba(12,14,18,.04); }
.wk-stat svg { width: 18px; height: 18px; color: var(--content-subtle); }
.wk-stat b { display: block; font-size: 15px; font-weight: 600; margin-top: 4px; }
.wk-stat small { font-size: 11px; color: var(--content-subtle); }
.btn-primary { width: 100%; border: 0; cursor: pointer; border-radius: var(--r-pill); padding: 14px 18px; font-family: var(--font); font-size: 15px; font-weight: 600; letter-spacing: -.2px; background: #f0cadd; color: var(--content-strong); margin-top: 14px; box-shadow: 0 4px 12px rgba(20,4,12,.08); transition: transform .12s ease, filter .2s ease; }
.btn-primary:active { transform: scale(.985); filter: brightness(.96); }
.btn-secondary { width: 100%; border: 0; cursor: pointer; border-radius: var(--r-pill); padding: 14px 18px; font-family: var(--font); font-size: 15px; font-weight: 600; letter-spacing: -.2px; background: #f0f0f2; color: var(--content-strong); margin-top: 10px; transition: transform .12s ease; }
.btn-secondary:active { transform: scale(.985); }
.wk-sec-title { font-size: 16px; font-weight: 600; margin: 22px 2px 10px; }
.ex-row { display: flex; align-items: center; gap: 12px; background: #fff; border-radius: 16px; padding: 8px; margin-bottom: 8px; box-shadow: inset 0 0 0 1px rgba(12,14,18,.03); }
.ex-row__img { width: 56px; height: 56px; border-radius: 12px; flex: 0 0 auto; background: #eceaf2; display: grid; place-items: center; color: #b3a6cf; }
.ex-row__img svg { width: 26px; height: 26px; }
.ex-row__b { flex: 1 1 auto; }
.ex-row__n { font-size: 14px; font-weight: 500; }
.ex-row__m { font-size: 12px; color: var(--content-subtle); margin-top: 2px; display: inline-flex; gap: 4px; align-items: center; }
.ex-row__m svg { width: 12px; height: 12px; }
.ex-row__i { width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--border-base); display: grid; place-items: center; color: var(--content-subtle); flex: 0 0 auto; }
.ex-row__i svg { width: 16px; height: 16px; }
.ex-row[data-open] { cursor: pointer; }
.ex-row[data-open]:active { transform: scale(.99); }

/* ===== Детали упражнения (GIF) ===== */
.exd-hero { position: relative; height: 290px; margin: 0 -20px 0; overflow: hidden; background: linear-gradient(165deg,#ece6f5,#d7cde8); display: grid; place-items: center; }
.exd-hero__grab { position: absolute; top: 10px; left: 50%; transform: translateX(-50%); width: 40px; height: 5px; border-radius: 9999px; background: rgba(255,255,255,.8); z-index: 2; }
.exd-gif { color: #7a6aa0; animation: exrep 1.5s ease-in-out infinite; }
.exd-gif svg { width: 130px; height: 130px; display: block; }
@keyframes exrep { 0%, 100% { transform: translateY(-7px) scaleY(1); } 50% { transform: translateY(9px) scaleY(.93); } }
.exd-badge { position: absolute; top: 14px; left: 16px; z-index: 2; font-size: 11px; font-weight: 700; letter-spacing: .04em; color: #1d020c; background: rgba(255,255,255,.88); border-radius: 9999px; padding: 4px 10px 4px 8px; display: inline-flex; gap: 6px; align-items: center; }
.exd-badge i { width: 6px; height: 6px; border-radius: 50%; background: #e0518f; animation: exblink 1s steps(2, jump-none) infinite; }
@keyframes exblink { 50% { opacity: .25; } }
.exd-close { position: absolute; top: 12px; right: 16px; z-index: 2; }
.exd-name { font-size: 24px; font-weight: 700; letter-spacing: -.5px; line-height: 1.15; margin-top: 16px; }
.exd-tag { display: inline-block; font-size: 11px; font-weight: 600; color: #c8377f; background: #fbe6f0; border-radius: 9999px; padding: 4px 11px; margin-top: 10px; text-transform: uppercase; letter-spacing: .03em; }
.exd-desc { font-size: 14px; color: var(--content-subtle); line-height: 1.5; margin-top: 12px; }
.exd-step { display: flex; gap: 12px; padding: 11px 0; border-top: 1px solid rgba(12,14,18,.05); font-size: 14px; line-height: 1.45; }
.exd-step:first-child { border-top: 0; }
.exd-step__n { flex: 0 0 auto; width: 24px; height: 24px; border-radius: 50%; background: #fbe6f0; color: #c8377f; font-size: 13px; font-weight: 600; display: grid; place-items: center; }
.exd-bullet { display: flex; gap: 11px; padding: 8px 0; font-size: 14px; line-height: 1.45; align-items: flex-start; }
.exd-bullet::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: #c8377f; flex: 0 0 auto; margin-top: 8px; }

/* фокусные зоны + health notice (на обзоре тренировки) */
.wk-focus { display: flex; align-items: center; gap: 12px; width: 100%; text-align: left; border: 0; cursor: pointer; font-family: var(--font); background: #fff; border-radius: 16px; padding: 12px 14px; margin: 14px 0 4px; box-shadow: inset 0 0 0 1px rgba(12,14,18,.03); transition: transform .12s ease; }
.wk-focus:active { transform: scale(.99); }
.wk-focus__ic { width: 46px; height: 46px; border-radius: 12px; flex: 0 0 auto; display: grid; place-items: center; background: linear-gradient(160deg,#ffe0e0,#f4b4b4); color: #c24b4b; }
.wk-focus__ic svg { width: 26px; height: 26px; }
.wk-focus__b { flex: 1 1 auto; min-width: 0; }
.wk-focus__t { font-size: 15px; font-weight: 600; }
.wk-focus__m { font-size: 12.5px; color: var(--content-subtle); margin-top: 2px; }
.wk-focus__chev { color: rgba(12,14,18,.28); flex: 0 0 auto; }
.wk-focus__chev svg { width: 20px; height: 20px; }
.wk-notice { display: flex; gap: 12px; align-items: flex-start; background: #fff4ef; border-radius: 16px; padding: 14px 16px; margin: 18px 0 8px; }
.wk-notice__ic { width: 34px; height: 34px; border-radius: 10px; flex: 0 0 auto; display: grid; place-items: center; background: #ffe2cf; color: #b3701a; }
.wk-notice__ic svg { width: 19px; height: 19px; }
.wk-notice__t { font-size: 13.5px; font-weight: 600; color: #8a5a14; }
.wk-notice__m { font-size: 12.5px; color: #9a6b2a; line-height: 1.45; margin-top: 3px; }

/* экран «Фокусные зоны» */
.fa-figs { display: flex; justify-content: center; gap: 14px; padding: 20px 0 4px; }
.fa-figcol { text-align: center; }
.fa-fig { width: 134px; height: auto; display: block; }
.fa-figcol small { font-size: 12px; color: var(--content-subtle); }
.fa-card { padding: 16px; margin-top: 14px; }
.fa-card__t { font-size: 15px; font-weight: 600; }
.fa-card__m { font-size: 13px; color: #c24b4b; margin-top: 3px; font-weight: 500; }
.fa-legend { display: flex; gap: 18px; justify-content: center; margin: 14px 0 4px; }
.fa-legend span { font-size: 12px; color: var(--content-subtle); display: inline-flex; align-items: center; gap: 6px; }
.fa-legend em { width: 11px; height: 11px; border-radius: 3px; display: inline-block; }

/* labs upload */
.lead { font-size: 28px; font-weight: 600; letter-spacing: -0.6px; line-height: 1.12; margin: 4px 2px 8px; }
.lead-sub { font-size: 14px; color: var(--content-subtle); line-height: 1.4; margin: 0 2px 16px; }
.info-banner { display: flex; gap: 10px; align-items: flex-start; background: #e9eaee; border-radius: 14px; padding: 12px 14px; font-size: 13px; line-height: 1.35; margin-bottom: 16px; }
.info-banner svg { width: 18px; height: 18px; flex: 0 0 auto; color: #2b7de3; margin-top: 1px; }
.lab-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 4px; border-top: 1px solid rgba(12,14,18,.07); }
.lab-row:first-child { border-top: 0; }
.lab-row__b { flex: 1 1 auto; min-width: 0; }
.lab-row__n { font-size: 14px; font-weight: 500; }
.badge { display: inline-block; margin-top: 7px; font-size: 11px; font-weight: 500; padding: 3px 9px; border-radius: 9999px; }
.badge.miss { background: #ffe1ee; color: #c2185b; }
.badge.opt { background: #ededf0; color: #6b6c72; }
.badge.req { background: #ffd9e6; color: #c2185b; }
.badge.boost { background: #d8edff; color: #1c6fb3; }
.clip { width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--border-base); background: #fff; cursor: pointer; display: grid; place-items: center; color: var(--content-strong); flex: 0 0 auto; }
.clip svg { width: 18px; height: 18px; }
.detail__foot { padding: 12px 20px calc(20px + env(safe-area-inset-bottom)); background: linear-gradient(180deg, rgba(243,243,245,0), var(--neutral-bg) 30%); position: sticky; bottom: 0; }

/* health lab */
.hl-hero { position: relative; padding: 0 20px 10px; }
.hl-score { background: #fff; border-radius: var(--r-card); padding: 16px; box-shadow: 0 8px 24px rgba(20,4,12,.06); }
.hl-score__top { display: flex; align-items: center; justify-content: space-between; }
.hl-score__lbl { font-size: 13px; color: var(--content-subtle); }
.hl-score__num { font-size: 40px; font-weight: 700; letter-spacing: -1.5px; line-height: 1; margin-top: 4px; }
.hl-score__num b { font-size: 14px; color: var(--content-subtle); font-weight: 500; letter-spacing: 0; margin-left: 6px; }
.hl-score__cap { font-size: 13px; color: var(--content-subtle); margin-top: 6px; }
.hl-mini-bars { display: flex; gap: 3px; height: 10px; margin-top: 10px; }
.hl-mini-bars i { flex: 1; border-radius: 9999px; background: var(--border-base); }
.hl-mini-bars i.on { background: var(--positive); }
.hl-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 8px; }
.hl-cat { background: #fff; border-radius: 14px; padding: 12px; box-shadow: inset 0 0 0 1px rgba(12,14,18,.04); }
.hl-cat__top { display: flex; align-items: center; justify-content: space-between; font-size: 13px; }
.hl-cat__top b { font-size: 16px; font-weight: 600; }
.hl-cat__bar { height: 4px; border-radius: 9999px; margin-top: 8px; }
.welcome-title { font-size: 30px; font-weight: 600; letter-spacing: -0.8px; line-height: 1.1; }
.welcome-sub { font-size: 14px; color: var(--content-subtle); line-height: 1.45; margin: 12px 0 16px; }
.hl-bullet { display: flex; gap: 12px; align-items: flex-start; margin-bottom: 14px; }
.hl-bullet__ic { width: 34px; height: 34px; border-radius: 50%; background: #fbe6f0; display: grid; place-items: center; color: #c8377f; flex: 0 0 auto; }
.hl-bullet__ic svg { width: 18px; height: 18px; }
.hl-bullet__t { font-size: 14px; line-height: 1.35; padding-top: 7px; }
.hl-setup { display: flex; gap: 12px; padding: 16px 4px; border-top: 1px solid rgba(12,14,18,.07); }
.hl-setup:first-child { border-top: 0; }
.hl-setup__ic { width: 24px; flex: 0 0 auto; color: var(--content-strong); }
.hl-setup__b { flex: 1 1 auto; }
.hl-setup__n { font-size: 15px; font-weight: 600; }
.hl-setup__d { font-size: 13px; color: var(--content-subtle); line-height: 1.35; margin: 3px 0 8px; }
.hl-badges { display: flex; gap: 6px; flex-wrap: wrap; }
.disclaimer { font-size: 11px; color: rgba(12,14,18,.32); line-height: 1.4; padding: 18px 4px 0; }

@media (max-width: 480px) {
  body { padding: 0; background: #fff7fd; }
  .device { width: 100vw; height: 100vh; height: 100dvh; max-height: none; border-radius: 0; box-shadow: none; }
  .preview-note { display: none; }
}
.preview-note { position: fixed; left: 0; right: 0; bottom: 14px; text-align: center; color: #6b6c72; font-size: 12px; font-family: var(--font); pointer-events: none; }

/* ============================================================
   ADDED SCREENS (no Figma yet — designed in the same style)
   ============================================================ */

/* hero on rose detail screens (Старт / Маршрут) */
.detail.rose { background: #fff7fd; }
.detail.rose .dhead__btn { background: rgba(255,255,255,.6); }

.kicker { font-size: 12px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: #c14d86; }
.big-h { font-size: 24px; font-weight: 600; letter-spacing: -0.5px; line-height: 1.12; margin: 6px 0 0; }

/* progress fill */
.pfill { height: 8px; border-radius: 9999px; background: var(--border-base); overflow: hidden; margin-top: 12px; }
.pfill i { display: block; height: 100%; background: var(--positive); border-radius: 9999px; }

/* stepper / journey */
.stepper { margin-top: 4px; }
.step { display: flex; gap: 12px; padding: 10px 0; position: relative; }
.step:not(:last-child)::before { content: ""; position: absolute; left: 13px; top: 32px; bottom: -4px; width: 2px; background: var(--border-base); }
.step__dot { width: 28px; height: 28px; flex: 0 0 auto; border-radius: 50%; display: grid; place-items: center; background: #eceef2; color: var(--content-subtle); position: relative; z-index: 1; }
.step__dot svg { width: 15px; height: 15px; }
.step.done .step__dot { background: var(--positive); color: #1d3b00; }
.step.now .step__dot { background: var(--brand-strong); color: #fff; }
.step__b { padding-top: 3px; }
.step__t { font-size: 14px; font-weight: 500; }
.step.now .step__t { color: var(--content-strong); }
.step__s { font-size: 12px; color: var(--content-subtle); margin-top: 1px; }

/* coach card */
.coach { display: flex; align-items: center; gap: 12px; padding: 14px; background: #faf7f9; border-radius: var(--r-inset); }
.coach img { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; }
.coach__r { font-size: 11px; color: var(--content-subtle); }
.coach__n { font-size: 15px; font-weight: 600; }
.coach__m { font-size: 12px; color: var(--content-subtle); margin-top: 1px; }

/* checklist */
.checklist { display: flex; flex-direction: column; gap: 2px; }
.check-item { display: flex; gap: 10px; align-items: flex-start; padding: 8px 0; font-size: 14px; }
.check-item svg { width: 18px; height: 18px; flex: 0 0 auto; color: var(--positive); margin-top: 1px; }
.num-item { display: flex; gap: 10px; align-items: flex-start; padding: 8px 0; font-size: 14px; }
.num-item b { width: 22px; height: 22px; flex: 0 0 auto; border-radius: 50%; background: var(--tile); display: grid; place-items: center; font-size: 12px; font-weight: 600; }

/* plan blocks (Маршрут) */
.pblock { display: flex; gap: 12px; padding: 14px; border-radius: var(--r-inset); background: #f7f7f8; margin-top: 8px; }
.pblock__ic { width: 40px; height: 40px; flex: 0 0 auto; border-radius: 12px; display: grid; place-items: center; background: #fff; }
.pblock__ic svg { width: 20px; height: 20px; }
.pblock__t { font-size: 14px; font-weight: 600; }
.pblock__s { font-size: 12px; color: var(--content-subtle); margin-top: 2px; line-height: 1.35; }
.tags { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 8px; }
.tag { font-size: 11px; font-weight: 500; padding: 4px 9px; border-radius: 9999px; background: #eceef2; color: #555; }

/* Анкета */
.ob-top { padding: 4px 0 10px; }
.ob-top__lbl { display: flex; justify-content: space-between; font-size: 12px; color: var(--content-subtle); margin-bottom: 8px; }
.chips-steps { display: flex; gap: 6px; overflow-x: auto; padding-bottom: 4px; scrollbar-width: none; }
.chips-steps::-webkit-scrollbar { display: none; }
.chip { flex: 0 0 auto; font-size: 12px; font-weight: 500; padding: 7px 12px; border-radius: 9999px; background: #ececef; color: var(--content-subtle); white-space: nowrap; }
.chip.on { background: var(--brand-strong); color: #fff; }
.chip.done { background: #e7f3d4; color: #5b7d1f; }
.q-idx { font-size: 12px; color: var(--content-subtle); margin-top: 14px; }
.q-title { font-size: 20px; font-weight: 600; letter-spacing: -0.4px; line-height: 1.2; margin: 4px 0 2px; }
.q-desc { font-size: 13px; color: var(--content-subtle); line-height: 1.4; margin-bottom: 14px; }
.opt { display: flex; align-items: center; gap: 12px; padding: 15px 16px; border-radius: 14px; background: #fff; border: 1.5px solid var(--border-base); margin-bottom: 8px; cursor: pointer; font-size: 15px; transition: border-color .15s ease, background .15s ease; }
.opt .box { width: 22px; height: 22px; flex: 0 0 auto; border-radius: 7px; border: 1.5px solid #cfd0d6; display: grid; place-items: center; color: #fff; }
.opt .box svg { width: 14px; height: 14px; opacity: 0; }
.opt.sel { border-color: var(--brand-strong); background: #fbf3f7; }
.opt.sel .box { background: var(--brand-strong); border-color: var(--brand-strong); }
.opt.sel .box svg { opacity: 1; }
.opt.radio .box { border-radius: 50%; }
.foot-nav { display: flex; gap: 10px; padding: 12px 20px calc(18px + env(safe-area-inset-bottom)); background: linear-gradient(180deg, rgba(243,243,245,0), var(--neutral-bg) 35%); position: sticky; bottom: 0; }
.foot-nav .btn-primary, .foot-nav .btn-secondary { margin-top: 0; }
.foot-nav .btn-secondary { flex: 0 0 auto; width: 120px; }
.foot-nav .btn-primary { flex: 1 1 auto; }

/* Бронь */
.daychips { display: flex; gap: 8px; overflow-x: auto; padding: 2px 0 10px; scrollbar-width: none; }
.daychips::-webkit-scrollbar { display: none; }
.daychip { flex: 0 0 auto; width: 58px; padding: 10px 0; border-radius: 14px; background: #fff; text-align: center; cursor: pointer; box-shadow: inset 0 0 0 1px rgba(12,14,18,.05); }
.daychip small { display: block; font-size: 11px; color: var(--content-subtle); }
.daychip b { display: block; font-size: 18px; font-weight: 600; margin-top: 2px; }
/* выбранный день — розовая дымка как карточки онбординга (.ob-opt.sel), без сплошной заливки */
.daychip.on { background: #f6eef3; box-shadow: inset 0 0 0 1.5px var(--brand-strong); }
.daychip.on small, .daychip.on b { color: var(--brand-strong); }
.slot-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 4px; }
.slot { padding: 14px 0; border-radius: 13px; background: #fff; text-align: center; font-size: 15px; font-weight: 500; cursor: pointer; box-shadow: inset 0 0 0 1px rgba(12,14,18,.06); }
.slot.on { background: #f6eef3; box-shadow: inset 0 0 0 1.5px var(--brand-strong); color: var(--brand-strong); }
.slot.off { color: var(--content-subtle); opacity: .45; }

/* Вес */
.wheel { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 8px 0; }
.wheel .col { display: flex; flex-direction: column; align-items: center; }
.wheel select { font-family: var(--font); font-size: 34px; font-weight: 600; border: 0; background: transparent; text-align: center; color: var(--content-strong); -webkit-appearance: none; appearance: none; padding: 6px 4px; }
.wheel .sep { font-size: 34px; font-weight: 600; }
.wheel .u { font-size: 16px; color: var(--content-subtle); align-self: center; }
.wpreview { text-align: center; font-size: 40px; font-weight: 700; letter-spacing: -1px; }
.wpreview span { font-size: 18px; color: var(--content-subtle); font-weight: 500; }

/* Активный плеер */
.detail.player-bg { background: #0e0a0c; }
.player-top { display: flex; align-items: center; justify-content: space-between; padding: 8px 16px; color: #fff; }
.player-top .pos { font-size: 14px; font-weight: 600; }
.player-top button { background: transparent; border: 0; color: rgba(255,255,255,.85); font-family: var(--font); font-size: 14px; cursor: pointer; display: grid; place-items: center; }
.player-top .dhead__btn { background: rgba(255,255,255,.12); color: #fff; }
.player-prog { height: 4px; margin: 4px 16px 0; border-radius: 9999px; background: rgba(255,255,255,.16); overflow: hidden; }
.player-prog i { display: block; height: 100%; width: 38%; background: #f6a8cd; border-radius: 9999px; }
.player-media { margin: 14px 16px 0; height: 230px; border-radius: 20px; background: linear-gradient(160deg,#2a1a22,#171015); display: grid; place-items: center; color: rgba(255,255,255,.5); position: relative; overflow: hidden; }
.player-media svg { width: 54px; height: 54px; }
.player-media .play { position: absolute; width: 64px; height: 64px; border-radius: 50%; background: rgba(255,255,255,.9); display: grid; place-items: center; color: #1d020c; }
.player-media .play svg { width: 26px; height: 26px; margin-left: 3px; }
.player-body { color: #fff; padding: 16px; }
.player-sec { font-size: 12px; color: rgba(255,255,255,.5); text-transform: uppercase; letter-spacing: .04em; }
.player-name { font-size: 22px; font-weight: 600; letter-spacing: -0.4px; margin-top: 4px; }
.player-presc { font-size: 13px; color: rgba(255,255,255,.6); margin-top: 4px; }
.set-row { display: flex; align-items: center; gap: 10px; background: rgba(255,255,255,.07); border-radius: 14px; padding: 12px 14px; margin-top: 8px; }
.set-row .sn { font-size: 13px; color: rgba(255,255,255,.6); width: 70px; }
.set-row .inp { flex: 1 1 0; text-align: center; }
.set-row .inp small { display: block; font-size: 10px; color: rgba(255,255,255,.45); }
.set-row .inp b { font-size: 18px; font-weight: 600; }
.set-row .chk { width: 30px; height: 30px; border-radius: 50%; flex: 0 0 auto; border: 1.5px solid rgba(255,255,255,.3); display: grid; place-items: center; color: transparent; }
.set-row.done .chk { background: var(--positive); border-color: var(--positive); color: #1d3b00; }
.set-row.done .chk svg { width: 16px; height: 16px; }
.timer-banner { display: flex; align-items: center; justify-content: space-between; margin: 12px 16px 0; padding: 14px 16px; border-radius: 16px; background: rgba(246,168,205,.16); color: #fff; }
.timer-banner b { font-size: 20px; font-weight: 600; font-variant-numeric: tabular-nums; }
.player-nav { display: flex; gap: 10px; padding: 14px 16px calc(20px + env(safe-area-inset-bottom)); }
.player-nav button { flex: 1 1 0; border: 0; cursor: pointer; border-radius: 9999px; padding: 15px; font-family: var(--font); font-size: 15px; font-weight: 600; }
.player-nav .prev { background: rgba(255,255,255,.12); color: #fff; }
.player-nav .next { background: #f6a8cd; color: #2a0a18; }

/* ============================================================
   FUNCTIONAL DEPTH (Сегодня / Тренировки / Старт)
   ============================================================ */

/* Discipline card (delicate, matches the real app) */
.disc { padding: 15px 16px; }
.disc__head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.disc__lbl { font-size: 13px; font-weight: 600; color: rgba(12,14,18,.6); }
.disc__pct { font-size: 30px; font-weight: 600; letter-spacing: -.8px; line-height: 1; margin-top: 9px; display: inline-flex; align-items: baseline; gap: 8px; }
.disc__pct small { font-size: 12px; font-weight: 500; color: rgba(12,14,18,.42); letter-spacing: 0; }
.disc__pills { display: flex; gap: 7px; margin-top: 11px; }
.dpill { font-size: 11.5px; font-weight: 600; padding: 4px 11px; border-radius: 100px; background: #f4f4f6; color: rgba(12,14,18,.6); }
.mtg-badge { font-size: 11px; font-weight: 600; padding: 5px 10px; border-radius: 999px; white-space: nowrap; }
.dpill.accent { background: #f6eef3; color: var(--brand-strong); }

/* small inline segmented control — пилюля по макету */
.seg--sm { display: inline-flex; gap: 2px; margin: 0; padding: 3px; border-radius: 100px; flex: 0 0 auto; background: #f0ecef; }
.seg--sm button { flex: 0 0 auto; padding: 4px 10px; font-size: 11.5px; font-weight: 600; border-radius: 100px; color: rgba(12,14,18,.42); }
.seg--sm button.on { background: #fff; color: var(--brand-strong); box-shadow: 0 2px 6px rgba(20,4,12,.1); }

/* Быстрый лог — quick-log grid (delicate) */
.qlog { padding: 16px; }
.qlog__head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.qlog__title { font-size: 16px; font-weight: 600; letter-spacing: -.2px; }
.qlog__hint { font-size: 12px; color: var(--content-subtle); margin: 8px 0 12px; line-height: 1.4; }
.qlog__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.qlog__item { display: flex; align-items: center; gap: 11px; padding: 11px 12px; border-radius: 14px; background: #f6f6f8; cursor: pointer; border: 0; font-family: var(--font); text-align: left; transition: transform .12s ease, background .15s ease; }
.qlog__item:active { transform: scale(.98); }
.qlog__dot { width: 32px; height: 32px; border-radius: 50%; flex: 0 0 auto; display: grid; place-items: center; background: #e6e7ec; color: #a0a1a8; }
.qlog__dot svg { width: 15px; height: 15px; }
.qlog__item.todo .qlog__dot { background: var(--brand-strong); color: #fff; }
.qlog__item.done .qlog__dot { background: #e3f0cf; color: #5b7d1f; }
.qlog__b { display: flex; flex-direction: column; min-width: 0; }
.qlog__n { font-size: 14px; font-weight: 600; letter-spacing: -.1px; }
.qlog__s { font-size: 12px; color: var(--content-subtle); margin-top: 1px; }
.qlog__item.done .qlog__s { color: #6f8f41; }

/* Дневник — минимальные строки ТОЧНО по макету Главной C (.mlist/.mrow) */
.mlist { background: #fff; border-radius: 20px; box-shadow: 0 10px 26px rgba(20,4,12,.05), inset 0 0 0 1px rgba(12,14,18,.05); padding: 3px 16px; }
.mrow { display: flex; align-items: center; gap: 13px; width: 100%; padding: 13px 0; border: 0; background: transparent; font-family: var(--font); text-align: left; cursor: pointer; }
.mrow + .mrow { border-top: 1px solid rgba(12,14,18,.05); }
.mrow__ic { width: 30px; height: 30px; flex: 0 0 auto; display: grid; place-items: center; color: #4d473f; }
.mrow__ic svg { width: 21px; height: 21px; }
.mrow.done .mrow__ic { color: var(--brand-strong); }
.mrow__b { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
.mrow__n { font-size: 14.5px; font-weight: 500; letter-spacing: -.1px; line-height: 1.25; }
.mrow__s { font-size: 12px; color: rgba(12,14,18,.42); margin-top: 3px; line-height: 1.3; }
.mrow__v { font-size: 13px; color: rgba(12,14,18,.6); font-weight: 500; margin-right: 2px; }
.ck { width: 25px; height: 25px; border-radius: 50%; flex: 0 0 auto; display: grid; place-items: center; box-shadow: inset 0 0 0 1.4px rgba(12,14,18,.07); color: #c4c0c7; }
.ck svg { width: 13px; height: 13px; }
.mrow.done .ck { background: var(--brand-strong); box-shadow: none; color: #fff; }
.add { width: 25px; height: 25px; border-radius: 50%; flex: 0 0 auto; display: grid; place-items: center; box-shadow: inset 0 0 0 1.4px rgba(160,80,120,.14); color: var(--brand-strong); }
.add svg { width: 13px; height: 13px; }
.mrow--ro { cursor: default; }
.mrow--ro.pending { opacity: .5; }
.mrow__empty { padding: 13px 2px; color: rgba(12,14,18,.42); font-size: 13px; }

/* Карточка еды D3 (журнальная) */
.mealcover { position: relative; width: 100%; aspect-ratio: 5/4; border-radius: 20px; overflow: hidden; margin: 6px 0 14px; background: linear-gradient(150deg,#efe1cf,#dcc4a8); }
.mealcover__ph { position: absolute; inset: 0; display: grid; place-items: center; color: #b9a98f; }
.mealcover__grad { position: absolute; inset: 0; background: linear-gradient(180deg,rgba(20,4,12,.16) 0%,transparent 32%,transparent 52%,rgba(20,4,12,.6) 100%); }
.mealcover__redo { position: absolute; right: 11px; top: 11px; display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 500; color: #fff; background: rgba(20,4,12,.42); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); border: 0; border-radius: 100px; padding: 7px 12px; font-family: var(--font); cursor: pointer; }
.mealcover__redo svg { width: 14px; height: 14px; }
.mealcover__meta { position: absolute; left: 16px; right: 16px; bottom: 14px; color: #fff; display: flex; align-items: flex-end; justify-content: space-between; }
.mealcover__slot { position: relative; font-size: 20px; font-weight: 600; letter-spacing: -.3px; display: inline-flex; align-items: center; gap: 6px; }
.mealcover__slot svg { width: 18px; height: 18px; opacity: .8; }
.mealcover__slot select { position: absolute; inset: 0; opacity: 0; width: 100%; border: 0; cursor: pointer; -webkit-appearance: none; appearance: none; }
.mealcover__time { position: relative; font-size: 13.5px; opacity: .92; border-bottom: 1.5px solid rgba(255,255,255,.5); display: inline-flex; gap: 5px; align-items: center; padding-bottom: 1px; }
.mealcover__time svg { width: 14px; height: 14px; }
.mealcover__time input { position: absolute; inset: 0; opacity: 0; width: 100%; border: 0; cursor: pointer; }
.mealstrip { display: flex; gap: 8px; margin: 0 0 14px; overflow-x: auto; scrollbar-width: none; }
.mealstrip::-webkit-scrollbar { display: none; }
.mealstrip__i { width: 72px; height: 72px; border-radius: 14px; flex: 0 0 auto; position: relative; background: #e9d8c4 center/cover no-repeat; }
.mealstrip__x { position: absolute; top: 4px; right: 4px; width: 20px; height: 20px; border-radius: 50%; background: rgba(20,4,12,.5); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); color: #fff; border: 0; font-size: 10px; line-height: 1; cursor: pointer; display: grid; place-items: center; }
.mealstrip__add { width: 72px; height: 72px; border-radius: 14px; flex: 0 0 auto; border: 0; background: #fff; box-shadow: inset 0 0 0 1.4px rgba(160,80,120,.2); color: var(--brand-strong); font-size: 22px; cursor: pointer; }
.mealnote { background: #fff; border-radius: 18px; box-shadow: inset 0 0 0 1px var(--border-base); padding: 13px 16px; }
.mealnote__h { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 7px; }
.mealnote__h span:first-child { font-size: 13px; font-weight: 600; letter-spacing: -.1px; }
.mealnote__req { font-size: 11px; color: #bb6; font-weight: 600; }
.mealnote textarea { width: 100%; border: 0; background: transparent; font-size: 14.5px; resize: none; outline: none; font-family: inherit; line-height: 1.5; color: var(--content-strong); }
.mealnote textarea::placeholder { color: rgba(12,14,18,.32); }

/* Дневник питания — строки приёмов (фото + заметка, без калорий) */
.meal-items { margin-top: 10px; }
.mealday { display: flex; align-items: center; gap: 12px; width: 100%; padding: 8px 0; border: 0; background: transparent; font-family: var(--font); text-align: left; cursor: pointer; }
.mealday + .mealday { border-top: 1px solid var(--border-base); }
.mealday__thumb { width: 44px; height: 44px; border-radius: 12px; flex: 0 0 auto; background: #efe1cf center/cover no-repeat; }
.mealday__thumb--ph { display: grid; place-items: center; color: #b9a98f; background: var(--tile); }
.mealday__thumb--ph svg { width: 20px; height: 20px; }
.mealday__b { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
.mealday__n { font-size: 14px; font-weight: 500; letter-spacing: -.1px; line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mealday__s { font-size: 12px; color: var(--content-subtle); margin-top: 2px; }
.mealday__chev { color: rgba(12,14,18,.26); flex: 0 0 auto; }
.mealday__chev svg { width: 18px; height: 18px; display: block; }

/* ---- Встреча с коучем (card on Сегодня) ---- */
.meet { display: flex; align-items: center; gap: 12px; padding: 13px 14px; cursor: pointer; }
.meet img { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; flex: 0 0 auto; }
.meet__b { flex: 1 1 auto; min-width: 0; }
.meet__lbl { font-size: 12px; color: var(--content-subtle); display: inline-flex; align-items: center; gap: 6px; }
.meet__lbl .zoom { font-size: 10px; font-weight: 600; color: #2b7de3; background: #e7f0fc; padding: 2px 6px; border-radius: 6px; }
.meet__when { font-size: 15px; font-weight: 600; letter-spacing: -.2px; margin-top: 2px; }
.meet__theme { font-size: 12px; color: var(--content-subtle); margin-top: 1px; }
.meet__chev { color: rgba(12,14,18,.28); flex: 0 0 auto; }
.meet__chev svg { width: 20px; height: 20px; }

/* Премиальная карточка встречи (акцент-герой на «Сегодня») */
.meet-hero { position: relative; overflow: hidden; padding: 13px 15px; cursor: pointer; display: flex; align-items: center; gap: 13px; }
.meet-hero__glow { display: none; }
.meet-hero img { width: 48px; height: 48px; border-radius: 15px; object-fit: cover; flex: 0 0 auto; background: linear-gradient(150deg,#f6d9e6,#d9c2ef); box-shadow: inset 0 0 0 1px rgba(255,255,255,.5); position: relative; }
.meet-hero__b { flex: 1 1 auto; min-width: 0; position: relative; }
.meet-hero__lbl { font-size: 12px; color: var(--content-subtle); font-weight: 500; display: inline-flex; align-items: center; gap: 7px; }
.meet-hero__lbl .ztag { font-size: 10px; font-weight: 600; letter-spacing: .02em; color: var(--content-subtle); background: #f1f1f3; padding: 1.5px 7px; border-radius: 100px; }
.meet-hero__when { font-size: 17px; font-weight: 600; letter-spacing: -.3px; margin-top: 3px; color: var(--content-strong); }
.meet-hero__sub { font-size: 12.5px; color: var(--content-subtle); margin-top: 2px; }
.meet-hero__chev { position: relative; color: rgba(12,14,18,.26); flex: 0 0 auto; display: grid; place-items: center; }
.meet-hero__chev svg { width: 20px; height: 20px; }

/* ---- Мой путь (16-week journey) ---- */
.jhero { padding: 2px 2px 0; }
.jhero__kicker { font-size: 12px; font-weight: 600; letter-spacing: .03em; text-transform: uppercase; color: #c14d86; }
.jhero__theme { font-size: 26px; font-weight: 600; letter-spacing: -.6px; line-height: 1.1; margin: 6px 0 4px; }
.jhero__phase { font-size: 13px; color: rgba(28,10,18,.55); }
.booking-state-hero { min-height: 127px; padding-top: 4px; padding-bottom: 8px; display: grid; grid-template-columns: minmax(0,1fr) 96px; column-gap: 12px; align-items: center; }
.booking-state-hero__art { grid-column: 2; grid-row: 1 / 4; width: 96px; height: auto; justify-self: end; pointer-events: none; user-select: none; -webkit-user-select: none; }
.booking-state-hero__art[data-kind="booked"] { width: 116px; margin-right: -10px; }
.booking-state-hero .jhero__kicker, .booking-state-hero .jhero__theme, .booking-state-hero .jhero__phase { grid-column: 1; }
.booking-state-hero .jhero__kicker { color: var(--brand-strong); }
.booking-state-hero .jhero__phase { max-width: 245px; font-size: 14px; line-height: 1.45; color: var(--content-strong); opacity: .68; }
.booking-state-hero[aria-busy="true"] .jhero__theme::after { content: ""; display: inline-block; width: 4px; height: 4px; margin-left: 5px; border-radius: 50%; background: currentColor; opacity: .35; vertical-align: .24em; }
.booking-state-hero--no-art { grid-template-columns: minmax(0,1fr); }
.booking-state-hero--no-art .jhero__phase { max-width: 330px; }
.booking-state-actions { display: flex; flex-direction: column; align-items: center; gap: 8px; }
.booking-state-actions .btn-primary, .booking-state-actions .btn-secondary { width: 100%; margin-top: 0; }
.booking-state-help { min-height: 44px; padding: 0 16px; }
.booking-state-prep { padding: 2px 16px; }
.booking-state-prep .mrow { min-height: 58px; }
.booking-state-prep .dpill { white-space: nowrap; }
.booking-state-live { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
@media (max-width: 360px) {
  .booking-state-hero { grid-template-columns: minmax(0,1fr) 82px; column-gap: 10px; }
  .booking-state-hero__art { width: 82px; }
  .booking-state-hero__art[data-kind="booked"] { width: 104px; margin-right: -10px; }
  .booking-state-hero .jhero__phase { font-size: 13.5px; }
}
.jprog { display: flex; gap: 3px; height: 8px; margin-top: 14px; }
.jprog i { flex: 1; border-radius: 9999px; background: rgba(12,14,18,.12); }
.jprog i.done { background: var(--positive); }
.jprog i.now { background: var(--brand-strong); }
.jprog-lbl { font-size: 12px; color: rgba(28,10,18,.5); margin-top: 8px; }

.week-card { padding: 16px; margin-top: 14px; }
.week-card__lbl { font-size: 12px; color: var(--content-subtle); }
.week-card__theme { font-size: 19px; font-weight: 600; letter-spacing: -.3px; margin-top: 2px; }
.week-card__desc { font-size: 13px; color: var(--content-subtle); line-height: 1.45; margin-top: 6px; }
.wk-item { display: flex; gap: 12px; padding: 13px 0 2px; border-top: 1px solid rgba(12,14,18,.06); margin-top: 12px; }
.wk-item__ic { width: 36px; height: 36px; border-radius: 11px; flex: 0 0 auto; display: grid; place-items: center; }
.wk-item__ic svg { width: 19px; height: 19px; }
.wk-item__b { flex: 1 1 auto; min-width: 0; }
.wk-item__t { font-size: 14px; font-weight: 600; }
.wk-item__d { font-size: 12.5px; color: var(--content-subtle); line-height: 1.4; margin-top: 2px; }
.wk-item__go { font-size: 12px; font-weight: 600; color: #c8377f; margin-top: 7px; display: inline-flex; align-items: center; gap: 4px; }
.wk-item__go svg { width: 13px; height: 13px; }

.phase-h { display: flex; align-items: baseline; justify-content: space-between; padding: 20px 4px 8px; }
.phase-h b { font-size: 13px; font-weight: 600; }
.phase-h span { font-size: 12px; color: var(--content-subtle); }
.wtl { padding: 4px 12px; }
.wrow { display: flex; align-items: center; gap: 12px; padding: 9px 0; cursor: pointer; }
.wrow + .wrow { border-top: 1px solid rgba(12,14,18,.05); }
.wrow__node { width: 30px; height: 30px; border-radius: 50%; flex: 0 0 auto; display: grid; place-items: center; background: #eceef2; color: #9a9ba2; font-size: 12px; font-weight: 600; }
.wrow__node svg { width: 15px; height: 15px; }
.wrow.done .wrow__node { background: #e3f0cf; color: #5b7d1f; }
.wrow.now .wrow__node { background: var(--brand-strong); color: #fff; }
.wrow__b { flex: 1 1 auto; min-width: 0; }
.wrow__t { font-size: 14px; font-weight: 500; }
.wrow.future .wrow__t { color: var(--content-subtle); }
.wrow__s { font-size: 12px; color: var(--content-subtle); margin-top: 1px; }
.wrow.now .wrow__s { color: #c8377f; font-weight: 500; }
.wrow__chev { color: rgba(12,14,18,.25); flex: 0 0 auto; }
.wrow__chev svg { width: 18px; height: 18px; }
.wrow.future .wrow__chev { color: rgba(12,14,18,.15); }

/* ---- Мой путь · premium hero + lecture card ---- */
.sect-h { display: flex; align-items: center; justify-content: space-between; padding: 2px 2px 10px; }
.sect-h__t { font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: #9a9ba2; }
.sect-h__lk { font-size: 13px; font-weight: 600; color: #2b7de3; display: inline-flex; align-items: center; gap: 4px; cursor: pointer; }
.sect-h__lk svg { width: 14px; height: 14px; }

.phero { position: relative; overflow: hidden; border-radius: 22px; padding: 20px; color: #fff; background: linear-gradient(135deg, #7b61c9 0%, #6a4fbe 55%, #5b41ad 100%); box-shadow: 0 16px 36px rgba(91,65,173,.34); }
.phero__glow { position: absolute; top: -55px; right: -45px; width: 200px; height: 200px; border-radius: 50%; background: radial-gradient(circle, rgba(255,255,255,.20), rgba(255,255,255,0) 68%); pointer-events: none; }
.phero__kicker { position: relative; font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: rgba(255,255,255,.72); }
.phero__theme { position: relative; font-size: 27px; font-weight: 700; letter-spacing: -.6px; margin-top: 8px; }
.phero__desc { position: relative; font-size: 14px; line-height: 1.45; color: rgba(255,255,255,.9); margin-top: 8px; max-width: 92%; }
.phero__chip { position: relative; display: inline-flex; align-items: center; gap: 7px; margin-top: 16px; background: rgba(255,255,255,.16); box-shadow: inset 0 0 0 1px rgba(255,255,255,.28); color: #fff; font-size: 12px; font-weight: 600; padding: 8px 13px; border-radius: 9999px; cursor: pointer; }
.phero__chip svg { width: 14px; height: 14px; }

.lcard { padding: 14px; margin-top: 12px; }
.lrow { display: flex; gap: 14px; align-items: center; cursor: pointer; }
.lthumb { width: 62px; height: 62px; border-radius: 16px; flex: 0 0 auto; background: linear-gradient(140deg, #5aa0f2, #3b6fd4); display: grid; place-items: center; box-shadow: 0 8px 18px rgba(59,111,212,.32); }
.lthumb .play { width: 30px; height: 30px; border-radius: 50%; background: rgba(255,255,255,.94); display: grid; place-items: center; color: #3b6fd4; }
.lthumb .play svg { width: 13px; height: 13px; margin-left: 2px; }
.lrow__b { flex: 1 1 auto; min-width: 0; }
.lrow__k { font-size: 11px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: #9a9ba2; }
.lrow__t { font-size: 15px; font-weight: 600; letter-spacing: -.2px; margin-top: 2px; }
.lrow__m { font-size: 13px; color: var(--content-subtle); margin-top: 2px; }
.lprog { height: 5px; border-radius: 9999px; background: #e9eaef; margin-top: 13px; overflow: hidden; }
.lprog i { display: block; height: 100%; background: linear-gradient(90deg, #5aa0f2, #3b6fd4); border-radius: 9999px; }
.lnext { display: flex; align-items: center; gap: 12px; padding-top: 14px; margin-top: 14px; border-top: 1px solid rgba(12,14,18,.06); }
.lnext__ic { width: 46px; height: 46px; border-radius: 14px; flex: 0 0 auto; background: #eff0f3; display: grid; place-items: center; color: #a8a9b0; }
.lnext__ic svg { width: 20px; height: 20px; }
.lnext__b { flex: 1 1 auto; min-width: 0; }
.lnext__t { font-size: 14px; font-weight: 600; }
.lnext__s { font-size: 12px; color: var(--content-subtle); margin-top: 1px; }
.lnext__lock { font-size: 12px; color: var(--content-subtle); display: inline-flex; align-items: center; gap: 5px; flex: 0 0 auto; }
.lnext__lock svg { width: 13px; height: 13px; }

/* ---- Материалы недели ---- */
.mat-row { display: flex; align-items: center; gap: 12px; padding: 12px 2px; cursor: pointer; }
.mat-row + .mat-row { border-top: 1px solid rgba(12,14,18,.05); }
.mat-row__ic { width: 44px; height: 44px; border-radius: 13px; flex: 0 0 auto; display: grid; place-items: center; }
.mat-row__ic svg { width: 21px; height: 21px; }
.mat-row__b { flex: 1 1 auto; min-width: 0; }
.mat-row__t { font-size: 14px; font-weight: 600; letter-spacing: -.1px; }
.mat-row__m { font-size: 12px; color: var(--content-subtle); margin-top: 1px; }
.mat-row__act { color: rgba(12,14,18,.3); flex: 0 0 auto; display: grid; place-items: center; }
.mat-row__act svg { width: 19px; height: 19px; }
.mat-row.locked .mat-row__t { color: var(--content-subtle); }
.mat-row.locked .mat-row__ic { opacity: .7; }

/* ---- Путь-таймлайн (фазы/недели) ---- */
.tl { padding: 4px 16px 12px; }
.tl-item { display: flex; gap: 14px; }
.tl-rail { width: 28px; flex: 0 0 auto; display: flex; flex-direction: column; align-items: center; }
.tl-node { width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; flex: 0 0 auto; font-size: 12px; font-weight: 600; background: #eceef2; color: #9a9ba2; }
.tl-node svg { width: 14px; height: 14px; }
.tl-spine { width: 2px; flex: 1 1 auto; min-height: 14px; background: rgba(12,14,18,.09); margin: 3px 0; border-radius: 2px; }
.tl-item:last-child .tl-spine { display: none; }
.tl-item.done .tl-node { background: #e3f0cf; color: #5b7d1f; }
.tl-item.now .tl-node { background: var(--brand-strong); color: #fff; box-shadow: 0 0 0 4px rgba(245,64,151,.14); }
.tl-body { flex: 1 1 auto; min-width: 0; padding: 3px 0 14px; }
.tl-item:last-child .tl-body { padding-bottom: 4px; }
.tl-t { font-size: 14px; font-weight: 500; }
.tl-item.future .tl-t { color: var(--content-subtle); }
.tl-item.now .tl-t { font-weight: 600; }
.tl-s { font-size: 12px; color: var(--content-subtle); margin-top: 1px; }
.tl-item.now .tl-s { color: #c8377f; font-weight: 500; }
.tl-now { background: #fbf3f7; border-radius: 12px; padding: 9px 12px; box-shadow: inset 0 0 0 1px rgba(245,64,151,.16); display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.tl-now .wrow__chev { color: #c8377f; }
.tl-now .wrow__chev svg { width: 18px; height: 18px; display: block; }

/* phero with progress ring */
.phero__row { display: flex; align-items: center; gap: 16px; position: relative; }
.phero__txt { flex: 1 1 auto; min-width: 0; }
.phero__ring { flex: 0 0 auto; width: 74px; height: 74px; position: relative; display: grid; place-items: center; }
.phero__ring svg { width: 74px; height: 74px; transform: rotate(-90deg); }
.phero__ringc { position: absolute; text-align: center; color: #fff; }
.phero__ringc b { font-size: 18px; font-weight: 700; letter-spacing: -.5px; }
.phero__ringc span { display: block; font-size: 9px; color: rgba(255,255,255,.7); text-transform: uppercase; letter-spacing: .05em; margin-top: 1px; }

/* ===== BOLD-1: премиум-банер недели — меш-градиент (инлайн) + плёночный грейн +
   призрак-цифра недели + стекло-чип + светящийся прогресс. Цвет/цифра — из CRM. ===== */
.phero { isolation: isolate; padding: 21px 22px; border-radius: 24px; }
.phero__fg { position: relative; z-index: 2; }
.phero__grain { position: absolute; inset: 0; z-index: 1; opacity: .42; mix-blend-mode: overlay; pointer-events: none; background-size: 160px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); }
.phero__num { position: absolute; z-index: 0; right: 6px; bottom: -58px; font-size: 200px; font-weight: 800; line-height: .8; letter-spacing: -10px; color: rgba(255,255,255,.11); pointer-events: none; font-feature-settings: "tnum"; }
.phero__kicker { letter-spacing: .11em; color: rgba(255,255,255,.78); }
.phero__theme { font-size: 28px; letter-spacing: -.7px; line-height: 1.05; }
.phero__desc { color: rgba(255,255,255,.82); max-width: 80%; }
.phero__chip { background: rgba(255,255,255,.15); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); box-shadow: inset 0 0 0 1px rgba(255,255,255,.32); }
.phero__prog { display: flex; align-items: center; gap: 11px; margin-top: 17px; }
.phero__bar { flex: 1 1 auto; height: 6px; border-radius: 100px; background: rgba(255,255,255,.22); overflow: hidden; box-shadow: inset 0 0 0 1px rgba(255,255,255,.10); }
.phero__bar i { display: block; height: 100%; border-radius: 100px; background: #fff; box-shadow: 0 0 12px rgba(255,255,255,.6); }
.phero__plbl { flex: 0 0 auto; font-size: 11.5px; font-weight: 600; color: rgba(255,255,255,.92); }

/* compact phase cards */
.phase-card { display: flex; align-items: center; gap: 13px; padding: 14px 16px; cursor: pointer; }
.phase-badge { width: 42px; height: 42px; border-radius: 13px; flex: 0 0 auto; display: grid; place-items: center; font-size: 12px; font-weight: 700; }
.phase-badge svg { width: 18px; height: 18px; }
.phase-badge.done { background: #e3f0cf; color: #5b7d1f; }
.phase-badge.future { background: #eef0f3; color: #a8a9b0; }
.phase-card__b { flex: 1 1 auto; min-width: 0; }
.phase-card__t { font-size: 15px; font-weight: 600; }
.phase-card.future .phase-card__t { color: #6b6c72; }
.phase-card__s { font-size: 12px; color: var(--content-subtle); margin-top: 2px; }
.phase-dots { display: flex; gap: 3px; margin-top: 7px; }
.phase-dots i { width: 16px; height: 4px; border-radius: 2px; background: var(--border-base); }
.phase-dots i.on { background: var(--positive); }
.phase-card__chev { color: rgba(12,14,18,.28); flex: 0 0 auto; }
.phase-card__chev svg { width: 20px; height: 20px; }

/* current phase expanded header */
.phase-now-h { display: flex; align-items: center; justify-content: space-between; padding: 4px 2px 10px; }
.phase-now-h b { font-size: 15px; font-weight: 600; }
.phase-now-h .now-pill { font-size: 11px; font-weight: 600; color: #c8377f; background: #fbe6f0; padding: 4px 10px; border-radius: 9999px; }

/* premium week rows (theme icons instead of numbered stepper) */
.wkr { display: flex; align-items: center; gap: 12px; padding: 11px 12px; border-radius: 14px; cursor: pointer; }
.wkr + .wkr { margin-top: 4px; }
.wkr__ic { width: 44px; height: 44px; border-radius: 13px; flex: 0 0 auto; display: grid; place-items: center; }
.wkr__ic svg { width: 22px; height: 22px; }
.wkr__b { flex: 1 1 auto; min-width: 0; }
.wkr__t { font-size: 14px; font-weight: 600; }
.wkr__m { font-size: 12px; color: var(--content-subtle); margin-top: 1px; }
.wkr__end { flex: 0 0 auto; color: rgba(12,14,18,.28); display: grid; place-items: center; }
.wkr__end svg { width: 18px; height: 18px; }
.wkr.now { background: #fbf3f7; box-shadow: inset 0 0 0 1px rgba(245,64,151,.16); }
.wkr.now .wkr__m { color: #c8377f; font-weight: 500; }
.wkr.now .wkr__end { color: #c8377f; }
.wkr.locked .wkr__t { color: #6b6c72; }
.wkr.locked .wkr__ic { opacity: .75; }

/* Библиотека материалов — entry block */
.lib-entry { display: flex; align-items: center; gap: 13px; padding: 15px 16px; cursor: pointer; background: linear-gradient(120deg,#2a1430,#3c1d46); color: #fff; }
.lib-entry__ic { width: 44px; height: 44px; border-radius: 13px; flex: 0 0 auto; background: rgba(255,255,255,.12); display: grid; place-items: center; color: #f6a8cd; }
.lib-entry__ic svg { width: 22px; height: 22px; }
.lib-entry__b { flex: 1 1 auto; min-width: 0; }
.lib-entry__t { font-size: 15px; font-weight: 600; }
.lib-entry__s { font-size: 12px; color: rgba(255,255,255,.65); margin-top: 2px; }
.lib-entry__chev { color: rgba(255,255,255,.55); flex: 0 0 auto; }
.lib-entry__chev svg { width: 20px; height: 20px; }

/* Library screen */
.searchbar { display: flex; align-items: center; gap: 10px; background: #fff; border-radius: 14px; padding: 12px 14px; box-shadow: inset 0 0 0 1px rgba(12,14,18,.06); margin: 2px 0 12px; }
.searchbar svg { width: 18px; height: 18px; color: var(--content-subtle); flex: 0 0 auto; }
.searchbar input { border: 0; outline: 0; background: transparent; font-family: var(--font); font-size: 15px; width: 100%; color: var(--content-strong); }
.chips { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px; margin-bottom: 6px; scrollbar-width: none; }
.chips::-webkit-scrollbar { display: none; }
.chip-f { flex: 0 0 auto; font-size: 13px; font-weight: 500; padding: 8px 14px; border-radius: 9999px; background: #fff; color: var(--content-subtle); box-shadow: inset 0 0 0 1px rgba(12,14,18,.06); cursor: pointer; }
.chip-f.on { background: var(--brand-strong); color: #fff; box-shadow: none; }
.lib-group__h { display: flex; align-items: baseline; justify-content: space-between; padding: 16px 2px 8px; }
.lib-group__h b { font-size: 14px; font-weight: 600; }
.lib-group__h span { font-size: 12px; color: var(--content-subtle); }

/* ---- Мой план ---- */
.plan-goal { position: relative; overflow: hidden; padding: 18px; color: #fff; background: linear-gradient(135deg, #5db89a 0%, #3f9f86 55%, #2f8f7e 100%); box-shadow: 0 16px 34px rgba(47,143,126,.30); }
.plan-goal__glow { position: absolute; top: -50px; right: -40px; width: 180px; height: 180px; border-radius: 50%; background: radial-gradient(circle, rgba(255,255,255,.20), rgba(255,255,255,0) 68%); }
.plan-goal__lbl { position: relative; font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: rgba(255,255,255,.78); }
.plan-goal__row { position: relative; display: flex; align-items: baseline; gap: 10px; margin-top: 8px; }
.plan-goal__w { font-size: 26px; font-weight: 700; letter-spacing: -.6px; }
.plan-goal__row svg { width: 20px; height: 20px; color: rgba(255,255,255,.7); align-self: center; }
.plan-goal__bars { position: relative; display: flex; gap: 3px; height: 14px; margin-top: 14px; }
.plan-goal__bars i { flex: 1 1 0; border-radius: 9999px; background: rgba(255,255,255,.28); }
.plan-goal__bars i.on { background: #fff; }
.plan-goal__why { position: relative; font-size: 13px; color: rgba(255,255,255,.9); line-height: 1.45; margin-top: 14px; }

.plan-sec { padding: 16px; margin-top: 10px; }
.plan-sec__head { display: flex; align-items: center; gap: 12px; }
.plan-sec__ic { width: 44px; height: 44px; border-radius: 13px; flex: 0 0 auto; display: grid; place-items: center; }
.plan-sec__ic svg { width: 22px; height: 22px; }
.plan-sec__t { font-size: 16px; font-weight: 600; flex: 1 1 auto; letter-spacing: -.2px; }
.plan-sec__chev { color: rgba(12,14,18,.28); flex: 0 0 auto; display: grid; place-items: center; }
.plan-sec__chev svg { width: 20px; height: 20px; }
.plan-sec__target { font-size: 16px; font-weight: 600; margin-top: 14px; letter-spacing: -.2px; }
.plan-sec__target span { color: var(--content-subtle); font-weight: 400; font-size: 13px; }
.plan-sec__why { font-size: 13px; color: var(--content-subtle); line-height: 1.45; margin-top: 8px; }
.plan-sec__why b { color: var(--content-strong); font-weight: 600; }
.plan-sec__chips { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 12px; }

/* Прогноз к цели (forecast chart hero) */
.plan-forecast { padding: 16px 16px 14px; }
.plan-forecast__top { display: flex; align-items: center; justify-content: space-between; }
.plan-forecast__lbl { font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--content-subtle); }
.plan-forecast__goalpill { font-size: 12px; font-weight: 600; color: #2f9f7e; background: #e3f4ee; padding: 5px 11px; border-radius: 9999px; }
.plan-forecast__date { font-size: 25px; font-weight: 700; letter-spacing: -.7px; margin-top: 8px; }
.plan-forecast__date b { color: #2bb37a; }
.plan-forecast__sub { font-size: 13px; color: var(--content-subtle); margin-top: 3px; }
.plan-forecast__chart { width: 100%; height: auto; display: block; margin-top: 12px; overflow: visible; }
.plan-forecast__x { display: flex; justify-content: space-between; margin-top: 6px; font-size: 11px; color: var(--content-subtle); padding: 0 2px; }
.fc-grid { stroke: rgba(12,14,18,.06); stroke-width: 1; }
.fc-glabel { font-size: 9px; fill: rgba(12,14,18,.3); font-family: "Geist", sans-serif; }
.fc-zone { fill: rgba(32,179,120,.045); }
.fc-today { stroke: rgba(12,14,18,.12); stroke-width: 1; stroke-dasharray: 2 3; }
.fc-target-line { stroke: rgba(32,179,120,.35); stroke-width: 1.4; stroke-dasharray: 4 4; }
.fc-area { opacity: 0; animation: fcFade .9s ease .4s forwards; }
.fc-line { fill: none; stroke: #6bbf3a; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 1; stroke-dashoffset: 1; animation: fcDraw 1.3s cubic-bezier(.4,0,.2,1) .2s forwards; }
.fc-proj { fill: none; stroke: #8cce5a; stroke-width: 1.6; stroke-linecap: round; stroke-dasharray: 5 4; opacity: 0; animation: fcFade .9s ease 1.35s forwards; }
.fc-base { stroke: rgba(32,179,120,.18); stroke-width: 1; stroke-dasharray: 2 4; }
.fc-nowtext { fill: rgba(12,14,18,.42); font-family: "Geist", sans-serif; font-weight: 600; opacity: 0; animation: fcFade .4s ease 1.15s forwards; }
.fc-glow-now, .fc-glow-goal { transform-box: fill-box; transform-origin: center; opacity: 0; }
.fc-glow-now { fill: #5fb22a; animation: fcPulse 2.2s ease 1.3s infinite; }
.fc-glow-goal { fill: #20b378; animation: fcPulse 2.2s ease 2.4s infinite; }
.fc-dot-now { transform-box: fill-box; transform-origin: center; opacity: 0; animation: fcPop .4s cubic-bezier(.34,1.56,.64,1) 1.05s forwards; }
.fc-dot-goal { transform-box: fill-box; transform-origin: center; opacity: 0; animation: fcPop .5s cubic-bezier(.34,1.56,.64,1) 2.25s forwards; }
.fc-nowlabel { opacity: 0; animation: fcRise .4s ease 1.15s forwards; }
.fc-pin { opacity: 0; animation: fcRise .5s ease 2.35s forwards; }
.fc-pin rect { fill: #20b378; }
.fc-pin text, .fc-nowlabel text { font-family: "Geist", sans-serif; font-weight: 700; }
@keyframes fcDraw { to { stroke-dashoffset: 0; } }
@keyframes fcFade { to { opacity: 1; } }
@keyframes fcRise { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }
@keyframes fcPop { from { opacity: 0; transform: scale(0); } to { opacity: 1; transform: scale(1); } }
@keyframes fcPulse { 0%, 100% { opacity: 0; transform: scale(1); } 50% { opacity: .2; transform: scale(1.6); } }

/* "от коуча" tag + конструктор CTA */
.coach-tag { font-size: 10px; font-weight: 600; letter-spacing: .02em; color: #c8377f; background: #fbe6f0; padding: 3px 8px; border-radius: 9999px; flex: 0 0 auto; }
.plan-cta { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; margin-top: 14px; border: 0; cursor: pointer; border-radius: 14px; padding: 14px; font-family: var(--font); font-size: 14px; font-weight: 600; background: var(--brand-strong); color: #fff; transition: transform .12s ease; }
.plan-cta:active { transform: scale(.98); }
.plan-cta svg { width: 17px; height: 17px; }
.plan-intro { display: flex; gap: 10px; align-items: flex-start; background: #fff; border-radius: 14px; padding: 12px 14px; box-shadow: inset 0 0 0 1px rgba(12,14,18,.05); font-size: 12.5px; line-height: 1.4; color: var(--content-subtle); margin: 2px 0 12px; }
.plan-intro svg { width: 18px; height: 18px; flex: 0 0 auto; color: #c8377f; margin-top: 1px; }

/* секция-хедер с «почему» */
.sec-why { font-size: 13px; color: var(--content-subtle); line-height: 1.45; }
.sec-why b { color: var(--content-strong); font-weight: 600; }

/* Сон: график ночей */
.sleep-bars { display: flex; gap: 6px; align-items: flex-end; height: 72px; margin-top: 14px; }
.sleep-bars .col { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; gap: 6px; height: 100%; justify-content: flex-end; }
.sleep-bars i { width: 100%; border-radius: 6px; background: linear-gradient(180deg, #9aa6f2, #6c7cd6); }
.sleep-bars i.low { background: linear-gradient(180deg, #f2b48a, #e89a6c); }
.sleep-bars small { font-size: 10px; color: var(--content-subtle); }

/* Вечерний ритуал */
.ritual { display: flex; gap: 12px; align-items: flex-start; padding: 11px 2px; }
.ritual + .ritual { border-top: 1px solid rgba(12,14,18,.05); }
.ritual__n { width: 27px; height: 27px; border-radius: 50%; flex: 0 0 auto; background: #eef0f3; display: grid; place-items: center; font-size: 12px; font-weight: 600; color: var(--content-subtle); }
.ritual__t { flex: 1 1 auto; min-width: 0; font-size: 14px; line-height: 1.45; padding-top: 3px; }

/* ---------- Мини-таймер шага (кликабельный, кольцо-прогресс) ---------- */
.rec-timer { display: inline-flex; align-items: center; gap: 9px; margin-top: 10px; padding: 5px 14px 5px 5px; border-radius: var(--r-pill); background: #fbedf4; box-shadow: inset 0 0 0 1px rgba(216,69,138,.12); user-select: none; -webkit-user-select: none; transition: background .25s ease, box-shadow .25s ease; }
.rec-timer__btn { position: relative; width: 32px; height: 32px; flex: 0 0 auto; border: 0; border-radius: 50%; background: #e6589b; color: #fff; cursor: pointer; display: grid; place-items: center; box-shadow: 0 2px 7px rgba(216,69,138,.32); transition: transform .12s ease, background .25s ease; }
.rec-timer__btn:active { transform: scale(.9); }
.rec-timer__ring { position: absolute; inset: 0; }
.rec-timer__ring .rt-arc { transition: stroke-dashoffset 1s linear; }
.rec-timer__ic { position: relative; z-index: 1; display: inline-flex; }
.rec-timer__time { font-size: 14px; font-weight: 700; color: #c43d80; font-variant-numeric: tabular-nums; letter-spacing: .4px; min-width: 36px; }
.rec-timer__reset { width: 27px; height: 27px; flex: 0 0 auto; border: 0; border-radius: 50%; background: rgba(216,69,138,.09); color: #c14a86; cursor: pointer; display: grid; place-items: center; transition: transform .15s ease, background .2s ease; }
.rec-timer__reset:active { transform: scale(.85) rotate(-50deg); }
.rec-timer.is-idle .rec-timer__reset { display: none; }
.rec-timer.is-done { background: #edf6e2; box-shadow: inset 0 0 0 1px rgba(120,168,56,.2); }
.rec-timer.is-done .rec-timer__btn { background: #8cbf3f; box-shadow: 0 2px 7px rgba(120,168,56,.32); }
.rec-timer.is-done .rec-timer__time { color: #5f8a2e; }
.rec-timer.is-done .rec-timer__reset { background: rgba(120,168,56,.12); color: #6b9a36; }

/* Медитации (audio) */
.med-card { display: flex; align-items: center; gap: 13px; padding: 10px; cursor: pointer; }
.med-card + .med-card { margin-top: 8px; }
.med-thumb { width: 56px; height: 56px; border-radius: 14px; flex: 0 0 auto; background: linear-gradient(150deg, #8b9cf0, #5d6fd0); display: grid; place-items: center; box-shadow: 0 8px 16px rgba(93,111,208,.3); }
.med-thumb svg { width: 22px; height: 22px; color: #fff; margin-left: 2px; }
.med-b { flex: 1 1 auto; min-width: 0; }
.med-t { font-size: 14px; font-weight: 600; }
.med-m { font-size: 12px; color: var(--content-subtle); margin-top: 2px; }
.med-dur { font-size: 12px; font-weight: 600; color: var(--content-subtle); background: #f1f1f4; padding: 5px 9px; border-radius: 9999px; flex: 0 0 auto; }

/* Конструктор КБЖУ */
.con-cal { text-align: center; padding: 8px 0 2px; }
.con-cal__n { font-size: 40px; font-weight: 700; letter-spacing: -1.2px; line-height: 1; }
.con-cal__n span { font-size: 16px; color: var(--content-subtle); font-weight: 500; letter-spacing: 0; }
.con-cal__sub { font-size: 13px; color: var(--content-subtle); margin-top: 4px; }
.slider { height: 8px; border-radius: 9999px; background: #eceef2; position: relative; margin: 16px 12px 6px; }
.slider__fill { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 9999px; background: var(--brand-strong); }
.slider__thumb { position: absolute; top: 50%; width: 24px; height: 24px; border-radius: 50%; background: #fff; box-shadow: 0 2px 8px rgba(0,0,0,.22); transform: translate(-50%,-50%); }
.slider-ends { display: flex; justify-content: space-between; padding: 0 12px; font-size: 11px; color: var(--content-subtle); }
.split { display: flex; height: 14px; border-radius: 9999px; overflow: hidden; margin-top: 4px; }
.split i { height: 100%; }
.split-legend { display: flex; margin-top: 12px; }
.split-legend div { flex: 1 1 0; text-align: center; }
.split-legend b { font-size: 16px; font-weight: 600; }
.split-legend small { display: block; font-size: 11px; color: var(--content-subtle); margin-top: 2px; }
.split-legend em { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 5px; font-style: normal; }
.meal-dist { display: flex; flex-direction: column; gap: 11px; margin-top: 6px; }
.meal-dist__row { display: flex; align-items: center; gap: 10px; }
.meal-dist__row .nm { width: 76px; font-size: 13px; flex: 0 0 auto; }
.meal-dist__row .br { flex: 1 1 auto; height: 8px; border-radius: 9999px; background: #eceef2; overflow: hidden; }
.meal-dist__row .br i { display: block; height: 100%; background: #a3d546; border-radius: 9999px; }
.meal-dist__row .vl { width: 60px; text-align: right; font-size: 12px; color: var(--content-subtle); flex: 0 0 auto; }

/* Конструктор тарелки (plate builder) */
.pb-meal { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px; margin: 2px 0 12px; scrollbar-width: none; }
.pb-meal::-webkit-scrollbar { display: none; }
.pb-balance { padding: 16px; }
.pb-balance__head { display: flex; align-items: center; justify-content: space-between; }
.pb-balance__title { font-size: 14px; font-weight: 600; }
.pb-balance__verdict { font-size: 12px; font-weight: 600; color: #2f9f7e; background: #e3f4ee; padding: 5px 11px; border-radius: 9999px; }
.pb-balance__verdict.warn { color: #c2185b; background: #ffe1ee; }
.pb-balance__verdict.muted { color: var(--content-subtle); background: #f0f0f3; }
.pb-method { font-size: 11.5px; line-height: 1.45; color: var(--content-subtle); margin-top: 12px; padding-top: 11px; border-top: 1px solid rgba(12,14,18,.06); }
.pb-method b { color: var(--content-strong); font-weight: 600; }
.pb-pct { color: var(--content-subtle); }
.pb-photo { position: relative; height: 180px; border-radius: 18px; background-size: cover; background-position: center; margin-top: 16px; box-shadow: inset 0 0 0 1px rgba(12,14,18,.06); }
.pb-photo__redo { position: absolute; right: 10px; bottom: 10px; border: 0; cursor: pointer; background: rgba(12,14,18,.55); color: #fff; font-family: var(--font); font-size: 12.5px; font-weight: 600; padding: 7px 13px; border-radius: 100px; backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }
.pb-bar { display: flex; height: 16px; border-radius: 6px; overflow: hidden; margin-top: 13px; gap: 2px; }
.pb-bar i { height: 100%; border-radius: 3px; }
.pb-legend { display: flex; flex-wrap: wrap; gap: 9px 16px; margin-top: 13px; }
.pb-legend span { font-size: 12px; color: var(--content-subtle); display: inline-flex; align-items: center; gap: 6px; }
.pb-legend em { width: 9px; height: 9px; border-radius: 3px; font-style: normal; }
.pb-total { font-size: 13px; color: var(--content-subtle); margin-top: 13px; padding-top: 13px; border-top: 1px solid var(--border-base); }
.pb-total b { color: var(--content-strong); font-weight: 600; font-size: 16px; }
.pb-block { padding: 12px 14px 14px; margin-top: 10px; }
.pb-block__head { display: flex; align-items: center; justify-content: space-between; }
.pb-block__n { font-size: 14px; font-weight: 600; display: flex; align-items: center; gap: 8px; }
.pb-block__n em { width: 9px; height: 9px; border-radius: 3px; font-style: normal; flex: 0 0 auto; }
.pb-block__k { font-size: 12px; color: var(--content-subtle); }
.pb-item { display: flex; align-items: center; gap: 10px; padding: 11px 0 3px; }
.pb-item__n { flex: 1 1 auto; font-size: 14px; min-width: 0; }
.pb-item__n small { color: var(--content-subtle); font-weight: 400; }
.pb-item__k { font-size: 13px; color: var(--content-subtle); flex: 0 0 auto; }
.pb-item__x { width: 24px; height: 24px; border-radius: 50%; background: #f1f1f4; display: grid; place-items: center; color: var(--content-subtle); flex: 0 0 auto; }
.pb-item__x svg { width: 13px; height: 13px; }
.pb-add { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; margin-top: 10px; border: 1.5px dashed #d6d7dd; background: transparent; border-radius: 12px; padding: 11px; cursor: pointer; font-family: var(--font); font-size: 13px; font-weight: 500; color: var(--content-strong); }
.pb-add.hint { border-color: #f3b3cf; color: #c8377f; background: #fdf1f7; }
.pb-add svg { width: 16px; height: 16px; }
.pb-saved { display: flex; gap: 10px; overflow-x: auto; padding-bottom: 4px; margin-bottom: 4px; scrollbar-width: none; }
.pb-saved::-webkit-scrollbar { display: none; }
.saved-card { flex: 0 0 auto; width: 168px; text-align: left; border: 0; cursor: pointer; background: #fff; border-radius: 16px; padding: 13px 14px 12px; box-shadow: 0 8px 24px rgba(20,4,12,.06), inset 0 0 0 1px rgba(12,14,18,.04); font-family: var(--font); display: flex; flex-direction: column; }
.saved-card__t { font-size: 13.5px; font-weight: 600; line-height: 1.32; letter-spacing: -.1px; color: var(--content-strong); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; min-height: 36px; }
.saved-card__k { font-size: 12px; color: var(--content-subtle); margin-top: auto; padding-top: 8px; }
.saved-card__bar { display: flex; gap: 2px; height: 6px; border-radius: 9999px; overflow: hidden; margin-top: 11px; }
.saved-card__bar i { height: 100%; border-radius: 2px; }
.saved-card.on { box-shadow: 0 8px 24px rgba(20,4,12,.08), inset 0 0 0 1.5px var(--brand-strong); }

/* История фото замеров — миниатюры по сессиям (видеть прогресс по фото) + лайтбокс */
.mh-sess { margin-top: 14px; }
.mh-sess__d { font-size: 12.5px; font-weight: 600; color: var(--content-subtle); margin-bottom: 7px; }
.mh-sess__row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.mh-thumb { position: relative; aspect-ratio: 3 / 4; border: 0; cursor: pointer; border-radius: 13px; background-color: #ececf0; background-size: cover; background-position: center; box-shadow: inset 0 0 0 1px rgba(12,14,18,.06); overflow: hidden; padding: 0; transition: transform .12s ease; }
.mh-thumb:active { transform: scale(.97); }
.mh-thumb--empty { background-image: repeating-linear-gradient(135deg,#f1f1f4,#f1f1f4 8px,#eaeaee 8px,#eaeaee 16px); cursor: default; }
.mh-thumb__l { position: absolute; left: 0; right: 0; bottom: 0; font-size: 10px; font-weight: 600; color: #fff; background: linear-gradient(180deg, rgba(0,0,0,0), rgba(0,0,0,.5)); padding: 12px 4px 4px; text-align: center; }
.mh-thumb--empty .mh-thumb__l { color: var(--content-subtle); background: none; }
.photoview { position: fixed; inset: 0; z-index: 200; background: rgba(8,4,10,.93); display: flex; align-items: center; justify-content: center; padding: 18px; animation: pvIn .15s ease; }
@keyframes pvIn { from { opacity: 0; } to { opacity: 1; } }
.photoview img { max-width: 100%; max-height: 100%; border-radius: 12px; object-fit: contain; }
.photoview__x { position: absolute; top: calc(14px + var(--safe-top)); right: 16px; width: 40px; height: 40px; border: 0; cursor: pointer; border-radius: 50%; background: rgba(255,255,255,.16); color: #fff; display: grid; place-items: center; backdrop-filter: blur(6px); }

/* Кроп аватарки — выбор области фото (двигать + масштабировать) */
.avcrop { position: fixed; inset: 0; z-index: 210; background: rgba(8,4,10,.95); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; padding: 24px; animation: pvIn .15s ease; }
.avcrop__h { font-size: 17px; font-weight: 600; color: #fff; }
.avcrop__hint { font-size: 13px; color: rgba(255,255,255,.6); margin-top: -8px; }
.avcrop__stage { position: relative; overflow: hidden; border-radius: 24%; background: #1b1016; touch-action: none; box-shadow: 0 0 0 1px rgba(255,255,255,.14), 0 18px 50px rgba(0,0,0,.5); }
.avcrop__img { position: absolute; left: 0; top: 0; max-width: none; -webkit-user-select: none; user-select: none; -webkit-user-drag: none; pointer-events: none; }
.avcrop__ring { position: absolute; inset: 0; border-radius: 24%; box-shadow: inset 0 0 0 2px rgba(255,255,255,.55); pointer-events: none; }
.avcrop__zoom { display: flex; align-items: center; gap: 12px; width: min(78vw, 320px); color: rgba(255,255,255,.7); }
.avcrop__zoom svg { width: 16px; height: 16px; flex: 0 0 auto; }
.avcrop__zoom svg.big { width: 22px; height: 22px; }
.avcrop__range { flex: 1 1 auto; -webkit-appearance: none; appearance: none; height: 4px; border-radius: 9999px; background: rgba(255,255,255,.25); outline: none; }
.avcrop__range::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 22px; height: 22px; border-radius: 50%; background: #fff; box-shadow: 0 2px 6px rgba(0,0,0,.4); cursor: pointer; }
.avcrop__range::-moz-range-thumb { width: 22px; height: 22px; border: 0; border-radius: 50%; background: #fff; cursor: pointer; }
.avcrop__bar { display: flex; gap: 10px; width: min(78vw, 320px); }
.avcrop__cancel, .avcrop__ok { flex: 1 1 0; border: 0; cursor: pointer; border-radius: 9999px; height: 52px; font-family: var(--font); font-size: 15px; font-weight: 600; letter-spacing: -.2px; transition: transform .12s ease, opacity .18s ease; }
.avcrop__cancel { color: #fff; background: rgba(255,255,255,.14); }
.avcrop__ok { color: #fff; background: #1d020c; }
.avcrop__cancel:active, .avcrop__ok:active { transform: scale(.99); }
.pb-search { display: flex; align-items: center; gap: 10px; background: #fff; border-radius: 14px; padding: 12px 14px; box-shadow: inset 0 0 0 1px rgba(12,14,18,.06); margin: 2px 0 14px; cursor: pointer; }
.pb-search svg { width: 18px; height: 18px; color: var(--content-subtle); flex: 0 0 auto; }
.pb-search span { font-size: 15px; color: var(--content-subtle); }
.pb-block__empty { font-size: 13px; color: var(--content-subtle); padding: 6px 0 2px; }

/* food picker bottom sheet */
.picker { position: absolute; inset: 0; z-index: 7; visibility: hidden; }
.picker.open { visibility: visible; }
.picker__scrim { position: absolute; inset: 0; background: rgba(12,4,10,.38); opacity: 0; transition: opacity .25s ease; }
.picker.open .picker__scrim { opacity: 1; }
.picker__sheet { position: absolute; left: 0; right: 0; bottom: 0; max-height: 84%; background: var(--neutral-bg); border-radius: 24px 24px 0 0; display: flex; flex-direction: column; transform: translateY(100%); transition: transform .3s cubic-bezier(.4,0,.2,1); }
.picker.open .picker__sheet { transform: translateY(0); }
.picker__grab { width: 36px; height: 5px; border-radius: 9999px; background: #d8d9dd; margin: 8px auto 2px; flex: 0 0 auto; }
.picker__head { display: flex; align-items: center; gap: 10px; padding: 8px 16px 10px; flex: 0 0 auto; }
.picker__search { flex: 1 1 auto; display: flex; align-items: center; gap: 9px; background: #fff; border-radius: 12px; padding: 11px 13px; box-shadow: inset 0 0 0 1px rgba(12,14,18,.06); }
.picker__search svg { width: 17px; height: 17px; color: var(--content-subtle); flex: 0 0 auto; }
.picker__search input { border: 0; outline: 0; background: transparent; font-family: var(--font); font-size: 15px; width: 100%; color: var(--content-strong); }
.picker__close { width: 40px; height: 40px; border-radius: 50%; border: 0; background: rgba(12,14,18,.05); display: grid; place-items: center; flex: 0 0 auto; cursor: pointer; color: var(--content-strong); }
.picker__close svg { width: 18px; height: 18px; }
.picker__chips { display: flex; gap: 8px; overflow-x: auto; padding: 0 16px 10px; scrollbar-width: none; flex: 0 0 auto; }
.picker__chips::-webkit-scrollbar { display: none; }
.picker__list { overflow-y: auto; padding: 0 16px 28px; -webkit-overflow-scrolling: touch; }
.fp-row { display: flex; align-items: center; gap: 12px; background: #fff; border-radius: 14px; padding: 12px 14px; margin-bottom: 8px; cursor: pointer; box-shadow: inset 0 0 0 1px rgba(12,14,18,.04); transition: transform .1s ease; }
.fp-row:active { transform: scale(.99); }
.fp-row__dot { width: 10px; height: 10px; border-radius: 3px; flex: 0 0 auto; }
.fp-row__b { flex: 1 1 auto; min-width: 0; }
.fp-row__n { font-size: 14px; font-weight: 500; }
.fp-row__m { font-size: 12px; color: var(--content-subtle); margin-top: 1px; }
.fp-row__add { width: 30px; height: 30px; border-radius: 50%; background: var(--brand-strong); color: #fff; display: grid; place-items: center; flex: 0 0 auto; }
.fp-row__add svg { width: 16px; height: 16px; }
.fp-empty { text-align: center; color: var(--content-subtle); font-size: 13px; padding: 34px 16px; }

/* ---- Тарелки и рецепты (база) ---- */
.dish { display: flex; gap: 13px; align-items: center; padding: 11px; cursor: pointer; }
.dish__img { width: 66px; height: 66px; border-radius: 16px; flex: 0 0 auto; display: grid; place-items: center; font-size: 30px; }
.dish__b { flex: 1 1 auto; min-width: 0; }
.dish__t { font-size: 15px; font-weight: 600; letter-spacing: -.2px; }
.dish__m { font-size: 12px; color: var(--content-subtle); margin-top: 2px; }
.dish__bar { display: flex; gap: 2px; height: 5px; border-radius: 9999px; overflow: hidden; margin-top: 9px; max-width: 150px; }
.dish__bar i { height: 100%; }
.dish__chev { color: rgba(12,14,18,.26); flex: 0 0 auto; display: grid; place-items: center; }
.dish__chev svg { width: 20px; height: 20px; }
.meals-build { display: flex; align-items: center; gap: 13px; padding: 14px 16px; cursor: pointer; background: linear-gradient(120deg,#2a1430,#3c1d46); color: #fff; margin: 4px 0 24px; }
.meals-build__ic { width: 44px; height: 44px; border-radius: 13px; background: rgba(255,255,255,.12); display: grid; place-items: center; color: #f6a8cd; flex: 0 0 auto; }
.meals-build__ic svg { width: 22px; height: 22px; }
.meals-build__b { flex: 1 1 auto; }
.meals-build__t { font-size: 15px; font-weight: 600; }
.meals-build__s { font-size: 12px; color: rgba(255,255,255,.65); margin-top: 2px; }
.meals-build__chev { color: rgba(255,255,255,.55); }
.meals-build__chev svg { width: 20px; height: 20px; }

/* recipe detail */
.rec-hero { border-radius: 20px; padding: 18px; color: #1d020c; }
.rec-hero__emoji { font-size: 46px; line-height: 1; }
.rec-hero__t { font-size: 22px; font-weight: 700; letter-spacing: -.5px; margin-top: 10px; }
.rec-hero__tag { display: inline-block; font-size: 11px; font-weight: 600; background: rgba(255,255,255,.5); padding: 4px 10px; border-radius: 9999px; margin-top: 8px; }
.rec-stats { display: flex; gap: 8px; margin-top: 12px; }
.rec-stat { flex: 1 1 0; background: #fff; border-radius: 14px; padding: 12px 6px; text-align: center; box-shadow: inset 0 0 0 1px rgba(12,14,18,.04); }
.rec-stat b { display: block; font-size: 16px; font-weight: 600; }
.rec-stat small { font-size: 11px; color: var(--content-subtle); }
.ing-row { display: flex; flex-direction: column; gap: 3px; padding: 11px 0; border-top: 1px solid rgba(12,14,18,.05); font-size: 14px; }
.ing-row:first-child { border-top: 0; }
.ing-row__top { display: flex; justify-content: space-between; gap: 10px; }
.ing-row em { color: var(--content-subtle); font-style: normal; }
.ing-row__note { font-size: 12px; color: var(--content-subtle); line-height: 1.35; }

/* deepened recipe content: difficulty/time chips, fiber/sugar, tips, care */
.rec-meta { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.rec-chip { font-size: 12px; font-weight: 500; background: #fff; color: var(--content-strong); padding: 5px 11px; border-radius: 9999px; box-shadow: inset 0 0 0 1px var(--border-base); }
.rec-fs { font-size: 12px; color: var(--content-subtle); text-align: center; margin-top: 9px; }
.rec-tips { margin: 0; padding: 4px 0 2px 18px; }
.rec-tips li { font-size: 13px; color: var(--content-strong); line-height: 1.5; padding: 3px 0; }
.rec-care { display: flex; gap: 10px; align-items: flex-start; padding: 9px 0; font-size: 13px; line-height: 1.5; color: var(--content-subtle); }
.rec-care + .rec-care { border-top: 1px solid rgba(12,14,18,.05); }
.rec-care__ic { font-size: 17px; line-height: 1.3; flex: 0 0 auto; }
.rec-care b { color: var(--content-strong); font-weight: 600; }

/* ---- Чек-поинты плана (из CRM) ---- */
.ckpts { margin-top: 14px; padding: 4px 13px 8px; background: #f8f6fb; border-radius: 14px; }
.ckpts__h { display: flex; align-items: center; gap: 8px; padding: 9px 0 4px; font-size: 11px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--content-subtle); }
.ckpt:first-of-type { border-top: 0; }
.ckpts__n { background: #f0eaf4; color: #7a4d96; border-radius: 9999px; padding: 1px 8px; font-size: 11px; letter-spacing: 0; }
.ckpts__src { margin-left: auto; font-size: 10.5px; font-weight: 500; letter-spacing: 0; text-transform: none; color: rgba(12,14,18,.34); }
.ckpt { display: flex; gap: 11px; align-items: flex-start; padding: 7px 0; border-top: 1px solid rgba(12,14,18,.05); }
.ckpt__tag { flex: 0 0 auto; width: 6px; height: 6px; margin-top: 7px; border-radius: 50%; font-size: 0; line-height: 0; padding: 0; min-width: 0; background: #cbb4da; }
.ckpt__t { font-size: 13.5px; line-height: 1.5; color: #2c2833; }
.ckpt__t b { font-weight: 600; }
.t-goal, .t-rule, .t-habit, .t-check { background: #cbb4da; }

/* ---- привычки: трекер ---- */
.habit { display: flex; align-items: center; gap: 12px; padding: 11px 0; border-top: 1px solid rgba(12,14,18,.05); }
.habit:first-child { border-top: 0; }
.habit__n { flex: 1 1 auto; font-size: 14px; }
.habit__dots { display: flex; gap: 4px; flex: 0 0 auto; }
.habit__dots i { width: 9px; height: 9px; border-radius: 50%; background: #e7e9ee; }
.habit__dots i.on { background: #8fc63d; }

/* ---- здоровье: мини-метрики и периодичность ---- */
.hstat { display: flex; gap: 10px; }
.hstat__c { flex: 1 1 0; background: #fff; border-radius: 14px; padding: 13px; box-shadow: inset 0 0 0 1px rgba(12,14,18,.04); }
.hstat__v { font-size: 19px; font-weight: 600; letter-spacing: -.5px; }
.hstat__v small { font-size: 12px; font-weight: 500; color: var(--content-subtle); }
.hstat__l { font-size: 11.5px; color: var(--content-subtle); margin-top: 2px; }
.hstat__d { font-size: 11.5px; font-weight: 600; margin-top: 7px; }
.hstat__d.down { color: #2fa36f; }
.hstat__d.flat { color: var(--content-subtle); }
.cadence { display: flex; align-items: center; gap: 12px; padding: 11px 0; border-top: 1px solid rgba(12,14,18,.05); }
.cadence:first-child { border-top: 0; }
.cadence__ic { width: 34px; height: 34px; border-radius: 10px; flex: 0 0 auto; display: grid; place-items: center; }
.cadence__ic svg { width: 18px; height: 18px; }
.cadence__b { flex: 1 1 auto; }
.cadence__t { font-size: 14px; font-weight: 500; }
.cadence__m { font-size: 12px; color: var(--content-subtle); margin-top: 1px; }
.cadence__w { font-size: 11.5px; font-weight: 600; color: #7a4d96; background: #efe6fa; border-radius: 9999px; padding: 3px 9px; flex: 0 0 auto; }

/* ---- Метод тарелки (обучалка) ---- */
.method { display: flex; gap: 13px; align-items: center; padding: 14px 16px; cursor: pointer; }
.method__plate { width: 58px; height: 58px; border-radius: 50%; flex: 0 0 auto; background: conic-gradient(#34c08a 0 50%, #8fc63d 50% 75%, #5aa0f2 75% 100%); box-shadow: inset 0 0 0 4px #fff, inset 0 0 0 5px rgba(12,14,18,.06); }
.method__b { flex: 1 1 auto; }
.method__t { font-size: 15px; font-weight: 600; }
.method__s { font-size: 12px; color: var(--content-subtle); margin-top: 2px; line-height: 1.4; }
.method__chev { color: rgba(12,14,18,.26); flex: 0 0 auto; }
.method__chev svg { width: 20px; height: 20px; }
.method-bar { display: flex; height: 16px; border-radius: 9999px; overflow: hidden; margin: 14px 0 8px; }
.method-bar i { height: 100%; }
.method-legend { display: flex; flex-wrap: wrap; gap: 8px 16px; }
.method-legend span { font-size: 12.5px; color: var(--content-subtle); display: inline-flex; align-items: center; gap: 6px; }
.method-legend em { width: 9px; height: 9px; border-radius: 3px; display: inline-block; }

/* ---- Избранное (сердце) ---- */
.icon-fav { width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center; flex: 0 0 auto; color: #cfd1d8; background: transparent; border: 0; cursor: pointer; padding: 0; }
.icon-fav svg { width: 21px; height: 21px; }
.icon-fav.on { color: #e0518f; }

/* ---- Замены продуктов ---- */
.swap { display: flex; gap: 8px; align-items: baseline; padding: 9px 0; border-top: 1px solid rgba(12,14,18,.05); font-size: 13.5px; line-height: 1.4; }
.swap:first-child { border-top: 0; }
.swap__from { font-weight: 600; flex: 0 0 auto; }
.swap__arrow { color: var(--content-subtle); flex: 0 0 auto; }
.swap__to { color: var(--content-subtle); }

/* Focus line */
.focus { display: flex; gap: 10px; align-items: flex-start; padding: 12px 14px; background: #faf3f7; border-radius: 14px; font-size: 13px; line-height: 1.35; margin: 2px 0 10px; }
.focus svg { width: 18px; height: 18px; color: #e0658a; flex: 0 0 auto; margin-top: 1px; }
.focus b { font-weight: 600; }

/* Journal feed */
.feed { display: flex; flex-direction: column; }
.feed-item { display: flex; gap: 12px; padding: 12px 2px; border-top: 1px solid rgba(12,14,18,.06); align-items: center; }
.feed-item:first-child { border-top: 0; }
.feed-thumb { width: 46px; height: 46px; border-radius: 12px; flex: 0 0 auto; background: var(--tile); display: grid; place-items: center; overflow: hidden; }
.feed-thumb img { width: 100%; height: 100%; object-fit: cover; }
.feed-thumb svg { width: 20px; height: 20px; }
.feed-b { flex: 1 1 auto; min-width: 0; }
.feed-t { font-size: 14px; font-weight: 500; }
.feed-n { font-size: 12px; color: var(--content-subtle); margin-top: 1px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.feed-time { font-size: 12px; color: var(--content-subtle); flex: 0 0 auto; }
.feed-menu { color: rgba(12,14,18,.28); flex: 0 0 auto; display: grid; place-items: center; }
.feed-menu svg { width: 18px; height: 18px; }
.feed-empty { text-align: center; color: var(--content-subtle); font-size: 13px; padding: 22px 10px; }
.addrow { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; margin-top: 10px; border: 1.5px dashed #d6d7dd; background: transparent; border-radius: 14px; padding: 13px; cursor: pointer; font-family: var(--font); font-size: 14px; font-weight: 500; color: var(--content-strong); }
.addrow svg { width: 18px; height: 18px; }

/* quick-log status pill on rows */
.qstat { font-size: 12px; font-weight: 500; padding: 4px 10px; border-radius: 9999px; background: #eef0f3; color: var(--content-subtle); flex: 0 0 auto; }
.qstat.done { background: #e7f3d4; color: #5b7d1f; }

/* Training section */
.tprog__pills { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 10px; }
.tweek { display: flex; gap: 5px; margin-top: 12px; }
.tday { flex: 1 1 0; text-align: center; padding: 9px 0 8px; border-radius: 12px; background: #f4f4f6; cursor: pointer; }
.tday small { font-size: 10px; color: var(--content-subtle); display: block; }
.tday b { font-size: 14px; font-weight: 600; display: block; margin-top: 2px; }
.tday i { width: 6px; height: 6px; border-radius: 50%; display: inline-block; margin-top: 6px; background: var(--border-base); }
.tday i.done { background: var(--positive); }
.tday.today { background: var(--brand-strong); }
.tday.today small, .tday.today b { color: #fff; }
.tday.rest { opacity: .55; }

/* Measurements (3 photos) */
.mgrid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; margin-top: 12px; }
.mslot { aspect-ratio: 3/4; border-radius: 14px; border: 1.5px dashed #cfd0d6; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; color: var(--content-subtle); background: #fff; font-size: 12px; cursor: pointer; }
.mslot svg { width: 22px; height: 22px; }
.mslot.filled { border-style: solid; border-color: transparent; background: linear-gradient(160deg,#eceaf2,#e3dcef); color: #9a90b8; }
.note-box { display: flex; gap: 10px; align-items: flex-start; background: #eef3ec; border-radius: 14px; padding: 12px 14px; font-size: 12.5px; line-height: 1.4; color: #3f6b46; margin-top: 14px; }
.note-box svg { width: 16px; height: 16px; flex: 0 0 auto; margin-top: 1px; }

/* Трекер не активирован (до первой встречи): прячем вкладки «Путь» и «Прогресс» —
   эти разделы открываются только когда коуч включил трекер (data-stage=active).
   Остальные 3 вкладки рефлоу (flex:1 1 0), подсветка меняет размер вместе с активной кнопкой. */
#device:not([data-stage="active"]) .tabbar .tab[data-tab="journey"],
#device:not([data-stage="active"]) .tabbar .tab[data-tab="progress"] { display: none !important; }
[hidden] { display: none !important; }
/* --- Этап клиента: «коуч собирает план» (building) ↔ активный клиент (active) --- */
#device[data-stage="active"] .s-build { display: none !important; }
#device[data-stage="building"] .s-active { display: none !important; }
/* Начальное состояние ДО загрузки бутстрапа — нейтральное «loading»: прячем И трекер,
   И заглушку, пока реальный этап клиента неизвестен. Иначе (при дефолте active) онбординг-
   клиент видел мелькание полного трекера — калории/тренировки/шаги — на каждом открытии
   и на медленной сети (кейс @anchich). Показывается только общая шапка (приветствие/дисциплина). */
#device[data-stage="loading"] .s-active,
#device[data-stage="loading"] .s-build { display: none !important; }
.plan-stage[hidden] { display: none; }
.plan-build { padding: 24px 18px; text-align: center; }
.plan-build__ic { width: 64px; height: 64px; border-radius: 50%; margin: 0 auto 14px; display: grid; place-items: center; background: linear-gradient(135deg, #eaf6db, #d4ecb6); color: #5f9e25; }
.plan-build__ic svg { width: 30px; height: 30px; }
.plan-build__t { font-size: 19px; font-weight: 600; letter-spacing: -.3px; }
.plan-build__s { font-size: 13.5px; color: var(--content-subtle); line-height: 1.5; margin-top: 8px; }
.plan-build__bar { height: 6px; border-radius: 9999px; background: rgba(12,14,18,.08); margin: 18px auto 0; max-width: 240px; overflow: hidden; }
.plan-build__bar i { display: block; height: 100%; width: 42%; border-radius: 9999px; background: linear-gradient(90deg, #a3d546, #7cc24a); }
.plan-build__eta { font-size: 12px; color: var(--content-subtle); margin-top: 10px; }
.mrow--lock { opacity: .55; cursor: default; }
.mrow--lock:active { transform: none; background: transparent; }
.mrow__lock { color: rgba(12,14,18,.3); display: grid; place-items: center; }
.mrow__lock svg { width: 18px; height: 18px; }
.conn-hint { font-size: 12.5px; color: var(--content-subtle); line-height: 1.45; padding: 0 2px 8px; }

/* --- Запись веса: ручной ввод + состояние «уже записано» --- */
.wlog-note { display: flex; gap: 10px; align-items: flex-start; background: #fdf0e3; border-radius: 14px; padding: 12px 14px; font-size: 12.5px; line-height: 1.4; color: #8a5a1f; margin-top: 8px; }
.wlog-note svg { width: 16px; height: 16px; flex: 0 0 auto; margin-top: 1px; }
.wmanual { display: flex; align-items: center; justify-content: center; gap: 16px; }
.wstep { width: 52px; height: 52px; border-radius: 50%; border: 0; background: #f1f1f3; font-size: 26px; font-weight: 400; color: var(--content-strong); cursor: pointer; display: grid; place-items: center; line-height: 1; }
.wstep:active { transform: scale(.94); }
.winput-wrap { display: inline-flex; align-items: baseline; gap: 5px; }
.winput { width: 104px; text-align: right; border: 0; background: transparent; font-family: var(--font); font-size: 40px; font-weight: 600; letter-spacing: -1px; color: var(--content-strong); }
.winput:focus { outline: none; }
.winput-u { font-size: 17px; color: var(--content-subtle); font-weight: 500; }

/* --- Захват еды: снятое фото (мультифото) --- */
.meal-shot { background: #fff; border-radius: 18px; padding: 14px; box-shadow: inset 0 0 0 1px rgba(12,14,18,.05); margin-top: 6px; }
.meal-shot__thumbs { display: flex; gap: 8px; }
.meal-shot__thumb { width: 64px; height: 64px; border-radius: 14px; flex: 0 0 auto; display: grid; place-items: center; font-size: 30px; background: linear-gradient(135deg,#fde9d2,#f7c89b); }
.meal-shot__thumb--add { background: #fafafb; box-shadow: inset 0 0 0 1.5px rgba(12,14,18,.14); color: var(--content-subtle); cursor: pointer; }
.meal-shot__thumb--add svg { width: 22px; height: 22px; }
.meal-shot__meta { display: flex; align-items: center; gap: 12px; margin-top: 12px; }
.meal-shot__txt { flex: 1 1 auto; min-width: 0; }
.meal-shot__est { display: block; font-size: 17px; font-weight: 600; letter-spacing: -.3px; }
.meal-shot__lbl { display: block; font-size: 12px; color: var(--content-subtle); margin-top: 2px; line-height: 1.35; }
.meal-shot__redo { flex: 0 0 auto; border: 0; background: #f1f1f3; border-radius: 9999px; padding: 8px 12px; font-family: var(--font); font-size: 12.5px; font-weight: 600; color: var(--content-strong); cursor: pointer; display: inline-flex; align-items: center; gap: 5px; }
.meal-shot__redo svg { width: 14px; height: 14px; }

/* --- Добавить активность --- */
.act-types { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 16px 0 4px; }
.act-type { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 7px; padding: 14px 6px; border: 0; border-radius: 16px; background: #fff; box-shadow: inset 0 0 0 1px rgba(12,14,18,.06); font-family: var(--font); font-size: 12.5px; font-weight: 500; color: var(--content-strong); cursor: pointer; transition: box-shadow .15s ease, background .15s ease; }
.act-type svg { width: 24px; height: 24px; color: var(--content-subtle); }
.act-type.on { background: #fdeaf2; box-shadow: inset 0 0 0 1.5px var(--brand-strong); }
.act-type.on svg { color: var(--brand-strong); }

/* --- Тренировка выполнена --- */
.wkdone { padding: 14px 16px; }
.wkdone__top { display: flex; align-items: center; gap: 13px; }
.wkdone__ic { width: 40px; height: 40px; border-radius: 50%; flex: 0 0 auto; display: grid; place-items: center; background: #eaf6db; color: #5f9e25; }
.wkdone__ic svg { width: 20px; height: 20px; }
.wkdone__b { flex: 1 1 auto; min-width: 0; }
.wkdone__t { font-size: 15px; font-weight: 600; letter-spacing: -.2px; }
.wkdone__m { font-size: 12px; color: var(--content-subtle); margin-top: 2px; }
.wkdone__edit { flex: 0 0 auto; border: 0; background: transparent; color: #2b7de3; font-family: var(--font); font-size: 13px; font-weight: 600; cursor: pointer; padding: 4px 2px; }
.wkdone__add { width: 100%; margin-top: 14px; border: 0; background: #f4f4f6; color: var(--content-strong); border-radius: 13px; padding: 12px; font-family: var(--font); font-size: 14px; font-weight: 600; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 7px; transition: background .15s ease; }
.wkdone__add:active { background: #ececef; }
.wkdone__add svg { width: 17px; height: 17px; }

/* Meal capture */
.pick { display: flex; flex-direction: column; gap: 10px; margin-top: 12px; }
.pick-card { display: flex; gap: 14px; align-items: center; padding: 18px 16px; background: #fff; border-radius: 16px; box-shadow: inset 0 0 0 1px rgba(12,14,18,.05); cursor: pointer; }
.pick-card__ic { width: 46px; height: 46px; border-radius: 14px; background: var(--tile); display: grid; place-items: center; flex: 0 0 auto; }
.pick-card__ic svg { width: 24px; height: 24px; }
.pick-card__t { font-size: 15px; font-weight: 600; }
.pick-card__s { font-size: 12px; color: var(--content-subtle); margin-top: 2px; }
.field { margin-top: 12px; }
.field__l { font-size: 12px; color: var(--content-subtle); margin-bottom: 6px; }
.field__c { display: flex; align-items: center; justify-content: space-between; background: #fff; border-radius: 12px; padding: 13px 14px; font-size: 15px; box-shadow: inset 0 0 0 1px rgba(12,14,18,.06); }
.field__c svg { width: 18px; height: 18px; color: var(--content-subtle); }
.field textarea { width: 100%; border: 0; background: #fff; border-radius: 12px; padding: 13px 14px; font-family: var(--font); font-size: 15px; resize: none; box-shadow: inset 0 0 0 1px rgba(12,14,18,.06); }
.meal-preview { width: 100%; height: 180px; border-radius: 16px; object-fit: cover; background: #eceaf2; }

/* Founder call card */
.founder { display: flex; gap: 12px; padding: 14px; border-radius: 16px; background: linear-gradient(120deg,#2a1430,#3c1d46); color: #fff; margin-top: 8px; }
.founder img { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; flex: 0 0 auto; }
.founder__t { font-size: 14px; font-weight: 600; }
.founder__s { font-size: 12px; color: rgba(255,255,255,.72); margin-top: 3px; line-height: 1.4; }
.founder__lnk { color: #f6a8cd; font-size: 12px; font-weight: 600; margin-top: 7px; display: inline-flex; align-items: center; gap: 5px; }
.founder__lnk svg { width: 14px; height: 14px; }
.step[data-open] { cursor: pointer; }

/* Weight ruler (горизонтальная линейка) */
.wr-val { text-align: center; font-size: 52px; font-weight: 600; letter-spacing: -2px; line-height: 1; margin: 18px 0 4px; }
.wr-val span { font-size: 18px; color: var(--content-subtle); font-weight: 500; letter-spacing: 0; margin-left: 3px; }
.wr-sub { text-align: center; font-size: 12.5px; color: var(--content-subtle); margin-bottom: 18px; }
.wr { position: relative; margin: 0 -20px; }
.wr__track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; -webkit-overflow-scrolling: touch; height: 92px; align-items: flex-start; padding: 28px calc(50% - 6px) 0; -webkit-mask-image: linear-gradient(90deg,transparent,#000 17%,#000 83%,transparent); mask-image: linear-gradient(90deg,transparent,#000 17%,#000 83%,transparent); }
.wr__track::-webkit-scrollbar { display: none; }
.wtk { flex: 0 0 12px; min-width: 0; display: flex; flex-direction: column; align-items: center; scroll-snap-align: center; }
.wtk b { white-space: nowrap; }
.wtk i { width: 2px; height: 13px; background: rgba(12,14,18,.16); border-radius: 2px; }
.wtk.h i { height: 28px; background: rgba(12,14,18,.3); }
.wtk b { font-size: 12px; font-weight: 600; color: var(--content-subtle); margin-top: 8px; letter-spacing: -.2px; }
.wr__cur { position: absolute; left: 50%; top: 20px; transform: translateX(-50%); width: 3px; height: 48px; background: var(--brand-strong); border-radius: 3px; pointer-events: none; }
.wr__cur::after { content: ""; position: absolute; top: -6px; left: 50%; transform: translateX(-50%); border: 5px solid transparent; border-top-color: var(--brand-strong); }
.wr-manual { display: block; margin: 18px auto 0; border: 0; background: transparent; color: var(--content-subtle); font-family: var(--font); font-size: 13px; font-weight: 500; cursor: pointer; }
.wr-mwrap { display: flex; gap: 8px; justify-content: center; align-items: center; margin-top: 14px; }
.wr-mwrap input { width: 130px; text-align: center; font-size: 18px; font-weight: 600; border: 0; background: #fff; border-radius: 12px; box-shadow: inset 0 0 0 1px var(--border-base); padding: 12px; font-family: var(--font); outline: none; }

/* Вода — трекер (по согласованному макету «наш ДНК»: мл, свайп-объёмы, +/↺/✓, недельные столбики, календарь). Префикс aq- — чтобы не конфликтовать с .wk-* (тренировки) */
.aq-ring { position: relative; width: 248px; height: 248px; margin: 14px auto 4px; }
.aq-ringc { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.aq-v { font-size: 52px; font-weight: 600; letter-spacing: -1.5px; line-height: 1; }
.aq-of { font-size: 14px; color: rgba(12,14,18,.58); margin-top: 6px; }
.aq-amts { display: flex; gap: 26px; justify-content: center; align-items: baseline; margin: 14px 0 4px; overflow: hidden; }
.aq-amt { border: 0; background: transparent; font-family: var(--font); cursor: pointer; font-size: 18px; font-weight: 500; color: rgba(12,14,18,.3); white-space: nowrap; padding: 0; }
.aq-amt.on { font-size: 24px; font-weight: 600; color: #0c0e12; letter-spacing: -.4px; }
.aq-ctrls { display: flex; align-items: center; justify-content: center; gap: 18px; margin: 16px 0 6px; }
.aq-cbtn { width: 60px; height: 60px; border-radius: 50%; display: grid; place-items: center; background: #fff; box-shadow: inset 0 0 0 1px rgba(12,14,18,.06); color: rgba(12,14,18,.58); border: 0; cursor: pointer; }
.aq-cbtn svg { width: 22px; height: 22px; }
.aq-cbtn.dis { opacity: .4; }
.aq-cbtn.ok { background: var(--brand-strong); color: #fff; box-shadow: none; }
.aq-add { width: 86px; height: 86px; border-radius: 50%; display: grid; place-items: center; background: var(--brand-strong); color: #fff; box-shadow: 0 14px 30px rgba(29,2,12,.28); border: 0; cursor: pointer; transition: transform .12s ease; }
.aq-add:active { transform: scale(.94); }
.aq-add svg { width: 32px; height: 32px; }
.aq-week { background: #fff; border-radius: 20px; box-shadow: 0 10px 26px rgba(20,4,12,.05), inset 0 0 0 1px rgba(12,14,18,.06); padding: 16px 16px 12px; margin-top: 22px; }
.aq-week__h { font-size: 15px; font-weight: 600; letter-spacing: -.2px; }
.aq-week__s { font-size: 12px; color: rgba(12,14,18,.42); margin-top: 2px; }
.aq-bars { display: flex; justify-content: space-between; align-items: flex-end; height: 64px; margin: 14px 0 6px; }
.aq-bar { width: 9px; border-radius: 100px; background: #efe7ec; }
.aq-bar.on { background: var(--brand-strong); }
.aq-days { display: flex; justify-content: space-between; }
.aq-days span { width: 9px; text-align: center; font-size: 11px; color: rgba(12,14,18,.42); }
/* календарь воды */
.aq-dim { position: absolute; inset: 0; background: rgba(20,4,12,.32); z-index: 1; }
.aq-sheet { position: absolute; left: 0; right: 0; bottom: 0; background: var(--neutral-bg); border-radius: 28px 28px 0 0; padding: 10px 18px 26px; box-shadow: 0 -18px 50px rgba(20,4,12,.2); z-index: 2; }
.aq-grab { width: 38px; height: 4px; border-radius: 100px; background: rgba(12,14,18,.16); margin: 4px auto 12px; }
.aq-calh { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.aq-calh b { font-size: 16px; font-weight: 600; }
.aq-navc { width: 34px; height: 34px; border-radius: 50%; background: #fff; box-shadow: inset 0 0 0 1px rgba(12,14,18,.06); display: grid; place-items: center; color: rgba(12,14,18,.58); border: 0; cursor: pointer; }
.aq-navc svg { width: 16px; height: 16px; }
.aq-cgrid { display: grid; grid-template-columns: repeat(7,1fr); gap: 4px 2px; }
.aq-cdow { text-align: center; font-size: 11px; color: rgba(12,14,18,.42); font-weight: 600; padding-bottom: 6px; }
.aq-cd { aspect-ratio: 1; display: grid; place-items: center; font-size: 13.5px; font-weight: 500; border-radius: 50%; color: #0c0e12; box-shadow: inset 0 0 0 1px rgba(12,14,18,.06); margin: 0 auto; width: 38px; }
.aq-cd.mut { color: rgba(12,14,18,.28); }
.aq-cd.on { background: var(--brand-strong); color: #fff; box-shadow: none; }
.aq-cd.has { box-shadow: inset 0 0 0 1.5px rgba(160,80,120,.14); background: #f6eef3; }

/* Светлая плашка «коуч собирает план» (вариант из макета) */
.bnote { display: flex; gap: 11px; align-items: center; padding: 12px 14px; border-radius: 16px; background: #f6eef3; box-shadow: inset 0 0 0 1px rgba(160,80,120,.14); }
.bnote__ic { width: 34px; height: 34px; border-radius: 10px; flex: 0 0 auto; display: grid; place-items: center; background: #fff; color: var(--brand-strong); }
.bnote__ic svg { width: 18px; height: 18px; }
.bnote__t { font-size: 13px; font-weight: 600; letter-spacing: -.1px; }
.bnote__s { font-size: 11.5px; color: rgba(12,14,18,.6); margin-top: 2px; line-height: 1.4; }

/* Журнал дня — лента записей */
.sect { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 6px 2px 11px; }
.sect__t { font-size: 16px; font-weight: 600; letter-spacing: -.2px; }
.feed { background: #fff; border-radius: 20px; box-shadow: 0 10px 26px rgba(20,4,12,.05), inset 0 0 0 1px rgba(12,14,18,.06); padding: 4px 16px; }
.fitem { display: flex; align-items: center; gap: 12px; padding: 12px 0; }
.fitem + .fitem { border-top: 1px solid rgba(12,14,18,.06); }
.fthumb { width: 38px; height: 38px; border-radius: 11px; flex: 0 0 auto; display: grid; place-items: center; background: center/cover no-repeat; }
.fthumb svg { width: 20px; height: 20px; }
.fthumb.t-amber { background: #fbe9d6; color: #c98a3c; }
.fthumb.t-green { background: #e6f0d6; color: #6b8f37; }
.fthumb.t-blue { background: #e2eefb; color: #3f7bc0; }
.fitem__b { flex: 1 1 auto; min-width: 0; }
.fitem__t { font-size: 14px; font-weight: 600; letter-spacing: -.1px; }
.fitem__s { font-size: 12px; color: rgba(12,14,18,.42); margin-top: 1px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fitem__time { font-size: 11.5px; color: rgba(12,14,18,.42); font-weight: 500; flex: 0 0 auto; }

/* Founder Call — баннер на «Сегодня» + полноэкранная карточка */
.founder { display: flex; align-items: center; gap: 13px; padding: 13px 15px; border-radius: 20px; cursor: pointer; background: linear-gradient(135deg,#26161f 0%,#3a2233 55%,#4a2740 100%); color: #fff; }
.founder__av { width: 46px; height: 46px; border-radius: 50%; flex: 0 0 auto; background: linear-gradient(150deg,#f6c8de,#caa0e0); box-shadow: 0 0 0 2px rgba(255,255,255,.18); background-size: cover; background-position: center; }
.founder__b { flex: 1 1 auto; min-width: 0; }
.founder__k { font-size: 10.5px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: #f6a8cd; }
.founder__t { font-size: 14.5px; font-weight: 600; letter-spacing: -.2px; margin-top: 2px; }
.founder__s { font-size: 12px; color: rgba(255,255,255,.6); margin-top: 2px; line-height: 1.4; }
.founder__chev { flex: 0 0 auto; color: rgba(255,255,255,.5); }
.founder__chev svg { width: 18px; height: 18px; }

/* «День замеров» — тёмный премиум-банер (винный градиент + тёплый блик + контур-мотив) */
.zmr { position: relative; overflow: hidden; display: flex; align-items: center; gap: 14px; width: 100%; text-align: left; border: 0; cursor: pointer; padding: 15px 16px; border-radius: 20px; color: #fff;
  background: radial-gradient(135% 130% at 86% -12%, rgba(246,168,205,.22), rgba(246,168,205,0) 54%), linear-gradient(135deg,#210a16 0%,#3a1628 52%,#4f2540 100%);
  box-shadow: 0 16px 34px rgba(20,4,12,.34), inset 0 1px 0 rgba(255,255,255,.06); transition: transform .12s ease; }
.zmr:active { transform: scale(.99); }
.zmr__motif { position: absolute; z-index: 1; bottom: -34px; right: -26px; width: 210px; height: 170px; opacity: .10; color: #fff; pointer-events: none; }
.zmr__ic { position: relative; z-index: 2; flex: 0 0 auto; width: 46px; height: 46px; border-radius: 14px; display: grid; place-items: center; color: #f7cfe1; background: rgba(255,255,255,.09); box-shadow: inset 0 0 0 1px rgba(255,255,255,.14), 0 4px 12px rgba(0,0,0,.18); }
.zmr__ic svg { width: 23px; height: 23px; }
.zmr__b { position: relative; z-index: 2; flex: 1 1 auto; min-width: 0; }
.zmr__k { font-size: 10.5px; font-weight: 600; letter-spacing: .09em; text-transform: uppercase; color: #f6a8cd; }
.zmr__t { font-size: 16px; font-weight: 600; letter-spacing: -.3px; margin-top: 3px; }
.zmr__s { font-size: 12px; color: rgba(255,255,255,.58); margin-top: 3px; line-height: 1.4; }
.zmr__chev { position: relative; z-index: 2; flex: 0 0 auto; color: rgba(255,255,255,.42); display: grid; place-items: center; }
.zmr__chev svg { width: 18px; height: 18px; }
/* «Подборка инвентаря» — светлый баннер на главной (в родстве с .zmr, но не тёмный:
   это приглашение, а не задача дня) */
.invb { position: relative; display: flex; align-items: center; gap: 13px; width: 100%; text-align: left;
  border: 0; cursor: pointer; padding: 14px 15px; border-radius: 20px; color: var(--content-strong);
  background: linear-gradient(135deg, #fdf1f7 0%, #f6effb 100%);
  box-shadow: 0 10px 26px rgba(20,4,12,.07), inset 0 0 0 1px rgba(12,14,18,.04);
  transition: transform .12s ease; }
.invb:active { transform: scale(.99); }
.invb__ic { flex: 0 0 auto; width: 44px; height: 44px; border-radius: 14px; display: grid; place-items: center;
  color: #a4478a; background: rgba(255,255,255,.72); box-shadow: inset 0 0 0 1px rgba(12,14,18,.05); }
.invb__ic svg { width: 22px; height: 22px; }
.invb__b { flex: 1 1 auto; min-width: 0; }
.invb__k { font-size: 10.5px; font-weight: 600; letter-spacing: .09em; text-transform: uppercase; color: #b3628f; }
.invb__t { font-size: 16px; font-weight: 600; letter-spacing: -.3px; margin-top: 3px; }
.invb__s { font-size: 12px; color: var(--content-subtle); margin-top: 3px; line-height: 1.4; }
.invb__chev { flex: 0 0 auto; color: rgba(12,14,18,.26); display: grid; place-items: center; }
.invb__chev svg { width: 18px; height: 18px; }

/* Карточка позиции подборки.
   Вариант, выбранный тренером, — единственное место, где сказано, ЧТО покупать,
   поэтому он идёт отдельной строкой во всю ширину и переносится, а не режется
   многоточием: в колонке под фото ему оставалось ~175px, а «средняя + жёсткая»
   занимает ~198px, и клиент уходил в магазин, не зная жёсткость. */
.invc { display: block; padding: 0; overflow: hidden; margin-bottom: 10px; }
.invc__top { display: flex; gap: 13px; align-items: flex-start; padding: 13px 14px 0; }
.invc__img { width: 88px; height: 88px; border-radius: var(--r-inset); flex: 0 0 auto;
  display: grid; place-items: center; background: var(--tile) center/cover no-repeat;
  box-shadow: inset 0 0 0 1px rgba(12,14,18,.05); overflow: hidden; }
.invc__img.is-ph { color: rgba(12,14,18,.3); }
.invc__img.is-ph svg { width: 32px; height: 32px; }
.invc__b { flex: 1 1 auto; min-width: 0; }
.invc__t { font-size: 15.5px; font-weight: 600; letter-spacing: -.2px; line-height: 1.28; }
.invc__s { font-size: 12.5px; color: var(--content-subtle); line-height: 1.45; margin-top: 7px; }
.invc__spec { margin: 11px 14px 0; padding: 10px 12px; border-radius: 14px;
  background: #fbe6f0; color: #8f1f52; }
.invc__spec b { display: block; font-size: 10.5px; font-weight: 700; letter-spacing: .09em;
  text-transform: uppercase; }
.invc__spec span { display: block; font-size: 13.5px; font-weight: 600; margin-top: 3px; line-height: 1.35; }
.invc__foot { padding: 12px 14px 13px; margin-top: 12px; border-top: 1px solid rgba(12,14,18,.06); }
/* Цена «от» печатается ТОЛЬКО когда у магазинов цен нет: price_rub при отсутствии
   собственной цены считается как min по ссылкам и буквально повторял бы чип. */
.invc__p { font-size: 15px; font-weight: 600; letter-spacing: -.2px; font-variant-numeric: tabular-nums; }
.invc__p em { font-style: normal; font-size: 12px; font-weight: 400; color: var(--content-subtle); margin-right: 4px; }
.invc__p.is-none { font-size: 12.5px; font-weight: 400; color: rgba(12,14,18,.6); }
.invc__shops { display: flex; flex-wrap: wrap; gap: 8px; }
/* Магазинов не больше двух (INVENTORY_SHOPS = wb, ozon), подписи разворачивает
   сервер через SHOP_RU — иначе на кнопке стояло бы «wb». */
.invc__shop { display: inline-flex; align-items: center; gap: 6px; cursor: pointer;
  min-height: 44px; padding: 0 14px; border-radius: var(--r-pill); background: var(--tile);
  text-decoration: none; font-size: 12.5px; font-weight: 600; color: var(--brand-strong);
  font-variant-numeric: tabular-nums; white-space: nowrap; }
.invc__shop em { font-style: normal; font-weight: 500; color: rgba(12,14,18,.62); }
.invc__shop svg { width: 13px; height: 13px; flex: 0 0 auto; opacity: .5; }
.invc__shop:active { opacity: .7; }
.invc__shop:focus-visible { outline: 2px solid var(--brand-strong); outline-offset: 2px; }
/* Ориентир по ценам — в конце списка и без претензии на цену одного заказа:
   слагаемые приходят из разных магазинов. */
.inv-total { display: flex; justify-content: space-between; align-items: baseline; gap: 12px;
  margin-top: 16px; padding: 13px 15px; border-radius: var(--r-inset); background: var(--tile); font-size: 13px; }
.inv-total b { font-size: 15px; font-weight: 600; font-variant-numeric: tabular-nums; letter-spacing: -.2px; }

.fcall { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 24px 0 4px; }
.fcall__av { width: 76px; height: 76px; border-radius: 50%; background: linear-gradient(150deg,#f6c8de,#caa0e0); box-shadow: 0 0 0 3px rgba(160,80,120,.12); margin-bottom: 15px; }
.fcall__title { font-size: 21px; font-weight: 600; letter-spacing: -.4px; }
.fcall__when { font-size: 14px; color: var(--brand-strong); font-weight: 600; margin-top: 7px; }
.fcall__p { font-size: 14px; line-height: 1.55; margin: 16px 2px 0; }
.fcall__p--muted { color: var(--content-subtle); font-size: 13px; }
.fcall__cal { width: 100%; margin-top: 22px; }
/* Founder-баннер по макету (#detail-founder): тёмный градиент + фото + RSVP «Буду/Не смогу» */
.fcall2 { border-radius: 24px; padding: 26px 20px; text-align: center; color: #fff; margin-top: 4px;
  background: linear-gradient(135deg,#241a20 0%,#34232e 60%,#3f2733 100%); box-shadow: 0 16px 36px rgba(20,12,16,.28); }
.fcall2__k { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; opacity: .5; margin-bottom: 12px; }
.fcall2__av { width: 84px; height: 84px; border-radius: 50%; margin: 0 auto 14px; background-size: cover; background-position: center;
  box-shadow: 0 0 0 3px rgba(255,255,255,.14), 0 10px 24px rgba(0,0,0,.32); }
.fcall2__t { font-size: 22px; font-weight: 700; letter-spacing: -.4px; }
.fcall2__when { font-size: 15px; font-weight: 500; margin-top: 8px; opacity: .92; }
.fcall2__s { font-size: 13.5px; line-height: 1.5; margin-top: 10px; opacity: .6; }
.fcall2-label { font-size: 13px; font-weight: 600; color: var(--content-subtle); margin-top: 22px; }
.fcall2-rsvp { display: flex; gap: 10px; margin-top: 16px; }
.fcall2-rsvp .fc-rsvp { flex: 1 1 0; border: 0; font-size: 15px; font-weight: 600; color: var(--content-strong);
  background: #fff; border-radius: 16px; padding: 15px 0; box-shadow: inset 0 0 0 1px rgba(12,14,18,.06); cursor: pointer; font-family: inherit; }
.fcall2-rsvp .fc-rsvp.sel { background: #ffc5dc; box-shadow: none; }
.fcall2-note { margin-top: 14px; }
.fcall2-confirm { width: 100%; margin-top: 22px; }
.fcall2-confirm:disabled { opacity: .45; }

/* Quick-add tiles on Сегодня (daily actions, harmonised with the cards) */
.quickadd { display: flex; gap: 8px; }
.qadd { flex: 1 1 0; display: flex; align-items: center; gap: 11px; padding: 14px 16px; border: 0; cursor: pointer; border-radius: var(--r-card); background: var(--card); box-shadow: 0 8px 24px rgba(20,4,12,.06), inset 0 0 0 1px rgba(12,14,18,.03); font-family: var(--font); transition: transform .12s ease; }
.qadd:active { transform: scale(.97); }
.qadd__ic { width: 42px; height: 42px; border-radius: 13px; display: grid; place-items: center; flex: 0 0 auto; }
.qadd__ic svg { width: 23px; height: 23px; }
.qadd__ic--food { background: #fbe1ec; color: #e0518f; }
.qadd__ic--weight { background: #e2f3e7; color: #2bbf6a; }
.qadd__t { font-size: 15px; font-weight: 600; letter-spacing: -.2px; }

/* Сегодня — meals grid (Завтрак/Обед/Ужин/Перекус), reference-level */
.section-label { display: flex; align-items: baseline; justify-content: space-between; padding: 4px 4px 2px; }
.section-label b { font-size: 15px; font-weight: 600; letter-spacing: -.2px; }
.section-link { font-size: 12px; color: var(--content-subtle); cursor: pointer; background: none; border: 0; font-family: var(--font); padding: 0; }
.meals { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.mealc { background: var(--card); border-radius: 20px; padding: 14px; text-align: left; border: 0; cursor: pointer; box-shadow: 0 8px 24px rgba(20,4,12,.06), inset 0 0 0 1px rgba(12,14,18,.03); transition: transform .12s ease; }
.mealc:active { transform: scale(.98); }
.mealc__top { display: flex; align-items: center; justify-content: space-between; }
.mealc__ic { width: 42px; height: 42px; border-radius: 13px; display: grid; place-items: center; }
.mealc__ic svg { width: 23px; height: 23px; }
.mealc__act { width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; background: #f1f1f4; color: #9a9ba2; }
.mealc__act svg { width: 15px; height: 15px; }
.mealc.done .mealc__act { background: #e7f3d4; color: #5b7d1f; }
.mealc__name { font-size: 16px; font-weight: 600; letter-spacing: -.2px; margin-top: 14px; }
.mealc__status { font-size: 12px; color: var(--content-subtle); margin-top: 2px; }
.mealc.done .mealc__status { color: #5b7d1f; font-weight: 500; }
.t-amber { background: #fdeccb; color: #d98a16; }
.t-orange { background: #ffe3d4; color: #ff7a3d; }
.t-purple { background: #ece4fb; color: #8b5cf6; }
.t-green { background: #e2f3e7; color: #2bbf6a; }
.t-pink { background: #fbe6f0; color: #c8377f; }
.t-blue { background: #e7f0fc; color: #2b7de3; }
/* «Путь»: расширенная палитра иконок недель (библиотека из 30 иконок). */
.t-red { background: #fde3e6; color: #e0455c; }
.t-lime { background: #eaf4d6; color: #6aa82f; }
.t-indigo { background: #e7e8fb; color: #5b62d6; }
.t-teal { background: #d8f3ee; color: #109a88; }

/* ===================== PWA: установка на домашний экран ===================== */
.install-steps { display: flex; flex-direction: column; gap: 0; margin-top: 22px; background: #fff; border: 0.5px solid var(--border-base); border-radius: 18px; padding: 4px 16px; box-shadow: var(--shadow-rest, 0 1px 2px rgba(12,14,18,.04)); }
.install-step { display: flex; align-items: flex-start; gap: 13px; padding: 15px 0; border-top: 0.5px solid var(--border-base); }
.install-step:first-child { border-top: 0; }
.install-step__n { flex: 0 0 auto; width: 26px; height: 26px; border-radius: 50%; background: #1f1b1d; color: #fff; font-size: 13px; font-weight: 700; display: grid; place-items: center; margin-top: 1px; }
.install-step__t { flex: 1; min-width: 0; font-size: 15px; line-height: 1.5; color: var(--content-strong); }
.install-step__t b { font-weight: 700; }
.install-handoff { text-align: center; padding: 16px 0 8px; }
.install-handoff__title { max-width: 330px; margin: 16px auto 0; color: var(--content-strong); font-size: 21px; font-weight: 700; line-height: 1.2; letter-spacing: -.3px; }
.install-handoff__text { max-width: 340px; margin: 9px auto 0; color: var(--content-subtle); font-size: 14px; line-height: 1.5; }
.install-handoff__domain { display: inline-flex; align-items: center; gap: 8px; margin: 22px auto 14px; padding: 9px 13px; border: .5px solid var(--border-base); border-radius: 999px; background: #fff; color: var(--content-strong); font-size: 13px; font-weight: 600; }
.install-handoff__dot { width: 8px; height: 8px; border-radius: 50%; background: #27ae60; box-shadow: 0 0 0 3px rgba(39,174,96,.12); }
.install-primary-button { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; height: 56px; padding: 0 20px; border: 0; border-radius: 9999px; background: #1d020c; color: #fff; box-shadow: 0 10px 24px rgba(29,2,12,.16); font-family: var(--font); font-size: 16px; font-weight: 600; letter-spacing: -.2px; cursor: pointer; transition: transform .12s ease, box-shadow .18s ease; }
.install-primary-button--spaced { margin-top: 22px; }
.install-primary-button svg { width: 19px; height: 19px; flex: 0 0 auto; }
.install-primary-button:active { transform: scale(.99); box-shadow: 0 6px 16px rgba(29,2,12,.14); }
.install-handoff__hint { max-width: 330px; margin: 12px auto 0; color: var(--content-subtle); font-size: 12.5px; line-height: 1.45; }

/* постоянная кнопка установки на экране входа (вне Telegram; баннер можно закрыть — эта остаётся) */
.auth-install { display: flex; align-items: center; justify-content: center; gap: 10px; width: 100%; margin-top: 22px; padding: 13px 16px; border: 0.5px solid var(--border-base); border-radius: 14px; background: #fff; color: var(--content-strong); font-size: 14.5px; font-weight: 600; font-family: var(--font); line-height: 1.2; cursor: pointer; box-shadow: var(--shadow-rest, 0 1px 2px rgba(12,14,18,.04)); }
.auth-install__ic { flex: 0 0 auto; display: inline-flex; width: 30px; height: 30px; border-radius: 9px; background: #1f1b1d; color: #fff; align-items: center; justify-content: center; }
.auth-install__ic svg { width: 17px; height: 17px; }
.auth-install:active { transform: scale(.99); }

/* iOS-гайд установки — поэтапно, с иллюстрациями (вместо сухого текста) */
.ios-guide { display: flex; flex-direction: column; gap: 10px; margin-top: 22px; }
.ios-step { display: flex; align-items: center; gap: 14px; background: #fff; border: 0.5px solid var(--border-base); border-radius: 16px; padding: 13px 15px; box-shadow: var(--shadow-rest, 0 1px 2px rgba(12,14,18,.04)); position: relative; }
.ios-step__ig { flex: 0 0 auto; width: 52px; height: 52px; }
.ios-step__ig svg { width: 52px; height: 52px; display: block; }
.ios-step__b { flex: 1; min-width: 0; }
.ios-step__n { font-size: 11px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--content-subtle); }
.ios-step__t { font-size: 16px; font-weight: 700; letter-spacing: -.2px; margin-top: 1px; color: var(--content-strong); }
.ios-step__s { font-size: 13px; line-height: 1.45; color: var(--content-subtle); margin-top: 3px; }
.ios-step.pulse .ios-step__ig { animation: igpulse 1.9s ease-in-out infinite; transform-origin: center; }
@keyframes igpulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.09); } }
.ios-hint { display: flex; flex-direction: column; align-items: center; gap: 7px; margin-top: 18px; color: #2b7de3; font-size: 13px; font-weight: 600; text-align: center; }
.ios-hint__arr { width: 24px; height: 24px; animation: hintbounce 1.4s ease-in-out infinite; }
@keyframes hintbounce { 0%, 100% { transform: translateY(0); opacity: .65; } 50% { transform: translateY(6px); opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .ios-step.pulse .ios-step__ig, .ios-hint__arr { animation: none; } }

.install-banner { position: fixed; left: 12px; right: 12px; bottom: calc(88px + env(safe-area-inset-bottom)); z-index: 70; display: flex; align-items: center; gap: 12px; background: #fff; border: 0.5px solid var(--border-base); border-radius: 18px; padding: 11px 11px 11px 14px; box-shadow: 0 14px 44px rgba(20,4,12,.20); transform: translateY(160%); opacity: 0; transition: transform .32s cubic-bezier(.34,1.2,.4,1), opacity .3s ease; }
.install-banner.on { transform: translateY(0); opacity: 1; }
.install-banner__ic { flex: 0 0 auto; width: 40px; height: 40px; border-radius: 11px; background: #1f1b1d; color: #fff; display: grid; place-items: center; }
.install-banner__ic svg { width: 21px; height: 21px; }
.install-banner__b { flex: 1; min-width: 0; }
.install-banner__t { font-size: 14.5px; font-weight: 700; letter-spacing: -.2px; }
.install-banner__s { font-size: 12px; color: var(--content-subtle); margin-top: 1px; }
.install-banner__go { flex: 0 0 auto; border: 0; background: #1f1b1d; color: #fff; font-size: 13px; font-weight: 700; padding: 9px 15px; border-radius: 10px; cursor: pointer; }
.install-banner__x { flex: 0 0 auto; border: 0; background: transparent; color: var(--content-subtle); width: 28px; height: 28px; display: grid; place-items: center; cursor: pointer; }
.install-banner__x svg { width: 16px; height: 16px; }

/* ===================== КВИЗ ПРИВЛЕЧЕНИЯ ===================== */
.q-app { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.q-top { flex: 0 0 auto; display: flex; align-items: center; gap: 12px; padding: 6px 16px 12px; }
.q-back { width: 40px; height: 40px; flex: 0 0 auto; border-radius: 50%; border: 0; cursor: pointer; background: rgba(12,14,18,.05); display: grid; place-items: center; color: var(--content-strong); }
.q-back svg { width: 22px; height: 22px; }
.q-top__b { flex: 1 1 auto; min-width: 0; }
.q-phase { font-size: 12px; font-weight: 600; color: var(--content-subtle); letter-spacing: .02em; }
.q-prog { height: 5px; border-radius: 9999px; background: rgba(12,14,18,.07); margin-top: 6px; overflow: hidden; }
.q-prog i { display: block; height: 100%; width: 0; border-radius: 9999px; background: linear-gradient(90deg,#e0518f,#c8377f); transition: width .35s cubic-bezier(.4,0,.2,1); }
.q-step { font-size: 12px; font-weight: 600; color: var(--content-subtle); flex: 0 0 auto; font-variant-numeric: tabular-nums; }
.q-scroll { padding-bottom: 16px; }
.q-foot { flex: 0 0 auto; padding: 10px 20px calc(16px + env(safe-area-inset-bottom)); background: linear-gradient(180deg, rgba(255,247,253,0), #fff7fd 38%); }
.q-foot:empty { display: none; }
.q-btn-ghost { width: 100%; border: 0; cursor: pointer; font-family: var(--font); font-size: 15px; font-weight: 600; color: var(--content-strong); background: transparent; padding: 13px; margin-top: 2px; }

/* intro */
.q-app.is-intro .q-top { visibility: hidden; height: 0; padding: 0; }
.q-hero { text-align: center; padding: 12px 6px 0; }
.q-hero__badge { display: inline-block; font-size: 12px; font-weight: 600; color: #c8377f; background: #fbe6f0; padding: 5px 12px; border-radius: 9999px; }
.q-hero__t { font-size: 27px; font-weight: 700; letter-spacing: -.6px; line-height: 1.12; margin-top: 14px; }
.q-hero__s { font-size: 14px; color: var(--content-subtle); line-height: 1.5; margin-top: 10px; }
.q-hero__plate { width: 148px; height: 148px; border-radius: 50%; margin: 24px auto 6px; background: conic-gradient(#34c08a 0 50%, #8fc63d 50% 75%, #5aa0f2 75% 100%); box-shadow: inset 0 0 0 10px #fff, inset 0 0 0 12px rgba(12,14,18,.05), 0 18px 40px rgba(20,4,12,.10); }
.q-hero__meta { display: flex; justify-content: center; gap: 22px; margin-top: 20px; }
.q-hero__meta div { font-size: 12px; color: var(--content-subtle); }
.q-hero__meta b { display: block; font-size: 16px; font-weight: 600; color: var(--content-strong); margin-bottom: 2px; }

/* question */
.q-h { font-size: 21px; font-weight: 700; letter-spacing: -.4px; line-height: 1.22; margin: 6px 0 4px; }
.q-sub { font-size: 13.5px; color: var(--content-subtle); line-height: 1.45; margin-bottom: 4px; }
.q-opts { display: flex; flex-direction: column; gap: 9px; margin-top: 14px; }
.q-opt { display: flex; align-items: flex-start; gap: 12px; text-align: left; width: 100%; border: 0; cursor: pointer; font-family: var(--font); background: var(--card); border-radius: 16px; padding: 15px 16px; box-shadow: inset 0 0 0 1.5px rgba(12,14,18,.06); transition: transform .12s ease, box-shadow .18s ease; }
.q-opt:active { transform: scale(.985); }
.q-opt.sel { box-shadow: inset 0 0 0 2px #e0518f, 0 8px 22px rgba(224,81,143,.16); }
.q-opt__r { width: 22px; height: 22px; flex: 0 0 auto; border-radius: 50%; box-shadow: inset 0 0 0 2px rgba(12,14,18,.18); margin-top: 1px; transition: box-shadow .18s ease; }
.q-opt.sel .q-opt__r { box-shadow: inset 0 0 0 7px #e0518f; }
.q-opt__b { flex: 1 1 auto; min-width: 0; }
.q-opt__t { display: block; font-size: 15px; font-weight: 600; letter-spacing: -.2px; line-height: 1.3; }
.q-opt__d { display: block; font-size: 12.5px; color: var(--content-subtle); line-height: 1.4; margin-top: 3px; }

/* input field */
.q-field { margin-top: 18px; }
.q-input__wrap { position: relative; }
.q-input { width: 100%; border: 0; background: var(--card); border-radius: 16px; padding: 17px 16px; font-family: var(--font); font-size: 18px; font-weight: 500; color: var(--content-strong); box-shadow: inset 0 0 0 1.5px rgba(12,14,18,.08); outline: none; }
.q-input:focus { box-shadow: inset 0 0 0 2px #e0518f; }
.q-input__suffix { position: absolute; right: 18px; top: 50%; transform: translateY(-50%); font-size: 15px; color: var(--content-subtle); font-weight: 500; pointer-events: none; }
.q-hint { font-size: 12.5px; color: var(--content-subtle); margin-top: 12px; line-height: 1.45; display: flex; gap: 8px; align-items: flex-start; }
.q-hint svg { width: 16px; height: 16px; flex: 0 0 auto; margin-top: 1px; color: #c8377f; }

/* archetype result */
.q-arche { border-radius: 22px; padding: 22px 18px; color: #1d020c; text-align: center; }
.q-arche__k { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; opacity: .6; }
.q-arche__emoji { font-size: 50px; line-height: 1; margin-top: 6px; }
.q-arche__t { font-size: 26px; font-weight: 700; letter-spacing: -.5px; margin-top: 6px; }
.q-arche__s { font-size: 14px; line-height: 1.5; margin-top: 8px; opacity: .82; }

/* booking */
.q-days { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px; margin-top: 14px; scrollbar-width: none; }
.q-days::-webkit-scrollbar { display: none; }
.q-day { flex: 0 0 auto; min-width: 62px; text-align: center; border: 0; cursor: pointer; font-family: var(--font); background: var(--card); border-radius: 16px; padding: 12px 6px; box-shadow: inset 0 0 0 1.5px rgba(12,14,18,.06); transition: all .15s ease; }
.q-day small { display: block; font-size: 11px; color: var(--content-subtle); }
.q-day b { display: block; font-size: 18px; font-weight: 600; margin-top: 3px; }
.q-day em { display: block; font-size: 10px; color: var(--content-subtle); font-style: normal; margin-top: 2px; }
.q-day.sel { background: var(--brand-strong); box-shadow: none; }
.q-day.sel small, .q-day.sel b, .q-day.sel em { color: #fff; }
.q-slots { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; margin-top: 16px; }
.q-slot { border: 0; cursor: pointer; font-family: var(--font); font-size: 15px; font-weight: 600; color: var(--content-strong); background: var(--card); border-radius: 13px; padding: 14px 0; box-shadow: inset 0 0 0 1.5px rgba(12,14,18,.06); transition: all .15s ease; }
.q-slot.sel { background: #fbe6f0; box-shadow: inset 0 0 0 2px #e0518f; color: #c8377f; }
.q-slot.gone { opacity: .3; pointer-events: none; text-decoration: line-through; }
.q-slots-h { font-size: 13px; font-weight: 600; color: var(--content-subtle); margin-top: 20px; }

/* done */
.q-done { text-align: center; padding: 24px 8px 0; }
.q-done__ic { width: 76px; height: 76px; border-radius: 50%; margin: 0 auto; display: grid; place-items: center; background: #e7f3d4; color: #5b8a1f; }
.q-done__ic svg { width: 38px; height: 38px; }
.q-done__t { font-size: 23px; font-weight: 700; letter-spacing: -.5px; margin-top: 18px; }
.q-done__s { font-size: 14px; color: var(--content-subtle); line-height: 1.5; margin-top: 10px; }
.q-card-line { display: flex; align-items: center; gap: 12px; padding: 14px 16px; text-align: left; }
.q-card-line__ic { width: 42px; height: 42px; border-radius: 12px; flex: 0 0 auto; display: grid; place-items: center; }
.q-card-line__ic svg { width: 22px; height: 22px; }
.q-card-line__t { font-size: 15px; font-weight: 600; }
.q-card-line__m { font-size: 12.5px; color: var(--content-subtle); margin-top: 1px; }

/* ===== Шторка «План на сегодня» (главная, в потоке) ===== */
.sheet--flow { scroll-margin-top: 6px; }
.sheet--flow .grabber { cursor: grab; touch-action: none; }
.sheet--flow .grabber:active { cursor: grabbing; }
.sheet--flow .sheet__head { padding: 2px 0 8px; }
.sheet--flow .navbtn:disabled { opacity: .35; cursor: default; }

/* ===== Полноэкранное редактирование поля (паттерн SAVE-бара) ===== */
#v-settings-foot { flex: 0 0 auto; }
.savebar { display: block; width: 100%; border: 0; background: linear-gradient(135deg, #241a20, #3f2733); color: #fff; font-family: inherit; font-size: 15px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; padding: 18px 0 calc(18px + env(safe-area-inset-bottom, 0px)); cursor: pointer; }
.savebar:active { opacity: .88; }
.pf-q { font-size: 28px; font-weight: 600; letter-spacing: -.5px; text-align: center; margin-top: 26px; }
.pf-val input, .pf-val { font-size: 32px; font-weight: 600; text-align: center; }
.pf-val { margin: 18vh auto 0; max-width: 320px; }
.pf-val input { width: 100%; border: 0; outline: none; background: transparent; border-bottom: 1px solid rgba(12,14,18,.12); padding: 6px 4px 10px; font-family: inherit; }
.pf-bigval { font-size: 34px; font-weight: 600; text-align: center; margin: 12vh 0 6px; }
.pf-bigval small { font-size: 17px; color: var(--content-subtle); font-weight: 500; margin-left: 6px; }
.pf-hr { width: 220px; margin: 0 auto 26px; border-bottom: 1px solid rgba(12,14,18,.12); }

/* ===== Отмена встречи (паттерн ob-lock прототипа) ===== */
.ob-lock { text-align: center; padding: 10px 10px 0; }
.ob-lock__t { font-size: 24px; font-weight: 600; letter-spacing: -.5px; margin-top: 18px; }
.ob-lock__s { font-size: 14px; color: var(--content-subtle); line-height: 1.55; margin-top: 10px; }
.ob-warn { width: 80px; height: 80px; border-radius: 24px; margin: 0 auto; display: grid; place-items: center; background: linear-gradient(160deg,#ffeccc,#ffd98a); color: #7a4d12; box-shadow: 0 14px 30px rgba(214,160,42,.25); }
.ob-warn svg { width: 38px; height: 38px; }
.ob-info { background: #fff; border-radius: 16px; box-shadow: inset 0 0 0 1px rgba(12,14,18,.04); padding: 14px 16px; margin-top: 20px; display: flex; align-items: center; gap: 12px; text-align: left; }
.ob-info__ic { width: 40px; height: 40px; border-radius: 11px; flex: 0 0 auto; display: grid; place-items: center; background: #fbe6f0; color: #c8377f; }
.ob-info__ic svg { width: 20px; height: 20px; }
.ob-info__t { font-size: 14px; font-weight: 600; color: var(--content-strong); }
.ob-info__m { font-size: 12.5px; color: var(--content-subtle); margin-top: 1px; }
.ob-actions { display: flex; gap: 10px; margin-top: 16px; }
.ob-actions button { flex: 1 1 0; border: 0; cursor: pointer; font-family: var(--font); font-size: 14px; font-weight: 600; border-radius: 14px; padding: 13px 0; }
.ob-actions .resch { color: var(--content-strong); background: #fff; box-shadow: inset 0 0 0 1px rgba(12,14,18,.10); }
.ob-actions .canc { color: #c2185b; background: #ffe1ee; }

/* ===== Видео-тренировка: плеер (деликатный, светлый экран; видео на брендовой тёмной рамке, не чёрный) ===== */
.vp-ov { position: fixed; inset: 0; z-index: 9999; background: var(--card); display: flex; flex-direction: column; }
.vp-top { display: flex; align-items: center; gap: 12px; padding: calc(12px + var(--safe-top)) 16px 10px; }
.vp-back { width: 38px; height: 38px; flex: 0 0 auto; border: 0; border-radius: 50%; background: #f3eef2; color: var(--content-strong); display: grid; place-items: center; cursor: pointer; }
.vp-back svg { width: 20px; height: 20px; }
.vp-ttl { font-weight: 700; font-size: 16px; letter-spacing: -.3px; color: var(--content-strong); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vp-sub { font-size: 12.5px; color: var(--content-subtle); margin-top: 1px; }
.vp-stage { margin: 2px 16px 0; border-radius: 18px; overflow: hidden; background: var(--brand-strong); aspect-ratio: 16 / 9; box-shadow: 0 12px 30px rgba(20, 4, 12, .18); }
.vp-stage video { width: 100%; height: 100%; object-fit: contain; background: var(--brand-strong); display: block; }
.vp-body { flex: 1; overflow-y: auto; padding: 16px; }
.vp-chaps-h { font-size: 11.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--content-subtle); margin: 0 2px 8px; }
.vp-chaps { display: flex; flex-direction: column; gap: 8px; }
.vp-chap { display: flex; align-items: center; gap: 12px; width: 100%; text-align: left; border: 0; background: #faf7f9; border-radius: 14px; padding: 11px 13px; cursor: pointer; font: inherit; transition: transform .1s ease, background .15s ease; }
.vp-chap:hover { background: #f6eef3; }
.vp-chap:active { transform: scale(.99); }
.vp-chap__t { font-variant-numeric: tabular-nums; font-weight: 700; font-size: 12.5px; color: var(--brand-strong); background: #f3e6ee; border-radius: 8px; padding: 4px 9px; flex: 0 0 auto; }
.vp-chap__l { font-size: 14px; color: var(--content-strong); }
.vp-foot { padding: 8px 16px calc(14px + env(safe-area-inset-bottom)); }
.vp-foot .btn-primary { margin-top: 0; }


/* ============================================================
   VIDEO-WORKOUT 1:1 (card → Focus/Info → player). Namespaced vw-/vp2-.
   Tokens from Figma 6KWwrdeFdRdcOKYdkQTprr (Geist palette).
   ============================================================ */
.vw-ov,.vw-sheet,.vp2{
  --vwink:#0c0e12;--vwink66:rgba(12,14,18,.66);--vwink40:rgba(12,14,18,.4);--vwink26:rgba(12,14,18,.26);
  --vwbd:rgba(12,14,18,.08);--vwbdc:rgba(12,14,18,.12);--vwbrand:#ffc5dc;--vwbrandp:#ffb0cd;--vwbrandd:#ff7eaa;
  --vwgoal:#ffedf2;--vwscreen:#efeff0;--vwinset:#f1f1f2;--vwtrack:rgba(153,160,174,.22);--vwneg:#ff383c;--vwtag:#ff7a3d;
  font-family:inherit;color:var(--vwink);-webkit-tap-highlight-color:transparent;
}
.vw-ov *,.vw-sheet *,.vp2 *{box-sizing:border-box}

/* ---------- CARD ---------- */
.vw-ov{position:fixed;inset:0;z-index:2200;background:var(--vwscreen);overflow:hidden}
.vw-scroll{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;z-index:2;background:transparent;will-change:transform}
.vw-scroll::-webkit-scrollbar{width:0}
/* Фото — ОТДЕЛЬНЫЙ слой ПОД скроллом (вне потока): верх приклеен к экрану,
   низ — к верху шторки (высота = 440 − scrollTop до киношного минимума).
   Cover-геометрия: пока контейнер выше «полного 16:9», виден весь вертикальный
   кадр (верх+низ зафиксированы) и при сжатии фото раскрывается ВШИРЬ —
   до исходного горизонтального кадра. Стягивание вниз — GPU-scale от верхней
   кромки (растёт вниз и вбок), ни одного layout-пересчёта в жесте. */
.vw-hero{position:absolute;top:0;left:0;right:0;z-index:0;height:440px;overflow:hidden;background:#c9b6a4;transform-origin:50% 0;will-change:transform,height}
.vw-hero.vw-snap{transition:transform .42s cubic-bezier(.2,.7,.3,1.06)}
.vw-scroll.vw-snap{transition:transform .42s cubic-bezier(.2,.7,.3,1.06)}
.vw-spacer{height:440px}
.vw-cover{position:absolute;inset:0;background-size:cover;background-position:center}
.vw-cover-grad{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.16),rgba(0,0,0,0) 24%);z-index:1}
.vw-cover-act{position:absolute;top:54px;left:16px;right:16px;display:flex;justify-content:space-between;z-index:5;pointer-events:none}
.vw-cover-act .vw-cb{pointer-events:auto}
.vw-cb{width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.92);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:grid;place-items:center;cursor:pointer;color:#0c0e12;box-shadow:0 4px 14px rgba(0,0,0,.1)}
.vw-cb svg{width:20px;height:20px}
.vw-panel{position:relative;z-index:2;background:var(--vwscreen);border-radius:24px 24px 0 0;margin-top:-26px;padding:18px 16px 64px;min-height:60vh}
.vw-title{font-size:26px;line-height:32px;font-weight:600;letter-spacing:-.02em;margin:2px 2px 4px}
.vw-instr{font-size:13px;color:var(--vwink66);margin:0 2px 14px}
.vw-coach{display:flex;align-items:center;gap:12px;background:#fff;border-radius:16px;padding:10px 12px;margin-bottom:10px;box-shadow:0 1px 2px rgba(16,18,22,.03);cursor:pointer}
.vw-coach-av{width:46px;height:46px;border-radius:50%;flex:0 0 auto;background:var(--vwinset) center 18%/cover no-repeat}
.vw-coach-b{flex:1;min-width:0}
.vw-coach-n{font-size:15px;font-weight:600;letter-spacing:-.01em}
.vw-coach-r{font-size:12.5px;color:var(--vwink40);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vw-coach .vw-chev{color:var(--vwink26);flex:0 0 auto}
.vw-fine{font-size:12px;color:var(--vwink40);margin-top:14px}
.vw-hwarn{background:var(--vwgoal);border-radius:14px;padding:12px 14px;font-size:13.5px;line-height:1.5;color:#0c0e12;margin-bottom:16px}
.vw-cbody{padding:16px 16px calc(44px + env(safe-area-inset-bottom))}
.vw-cprofile{display:flex;flex-direction:column;align-items:center;text-align:center;padding:2px 24px 4px}
.vw-cphoto{width:126px;height:126px;border-radius:32px;background:var(--vwinset) center 15%/cover no-repeat;box-shadow:0 8px 24px rgba(16,18,22,.14)}
.vw-cname{font-size:23px;font-weight:600;letter-spacing:-.02em;margin-top:16px}
.vw-crole2{font-size:14px;font-weight:500;color:var(--vwbrandd);margin-top:4px}
.vw-stats{display:flex;background:#fff;border-radius:14px;overflow:hidden;margin:12px 0 16px;box-shadow:0 1px 2px rgba(16,18,22,.03)}
.vw-stat{flex:1;padding:14px 4px 13px;text-align:center;position:relative}
.vw-stat+.vw-stat::before{content:"";position:absolute;left:0;top:22%;height:56%;width:1px;background:var(--vwbd)}
.vw-sic{width:17px;height:17px;margin:0 auto 8px;color:var(--vwink66)}
.vw-sic svg{width:100%;height:100%;display:block}
.vw-stat b{font-size:13px;font-weight:600;letter-spacing:-.01em}
.vw-cta{width:100%;border:0;border-radius:999px;background:var(--vwbrand);color:#0c0e12;font-family:inherit;font-size:16px;font-weight:600;padding:15px;cursor:pointer;transition:.15s;margin-bottom:20px}
.vw-cta:active{background:var(--vwbrandp)}
.vw-note{background:#fff;border-radius:16px;padding:14px;margin-bottom:10px;box-shadow:0 1px 2px rgba(16,18,22,.03)}
.vw-note-row{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.vw-note h4{font-size:14px;font-weight:600;margin:0 0 4px}
.vw-note p{font-size:12.5px;color:var(--vwink40);line-height:1.5;margin:0}
.vw-chev{color:var(--vwink26);flex:0 0 auto;margin-top:2px}
.vw-frow{display:flex;justify-content:space-between;align-items:center;background:#fff;border-radius:16px;padding:15px 14px;margin-bottom:20px;cursor:pointer;box-shadow:0 1px 2px rgba(16,18,22,.03)}
.vw-frl{font-size:14px;font-weight:500}
.vw-frr{display:flex;gap:8px;align-items:center;color:var(--vwink40);font-size:13px}
.vw-sech{font-size:13px;font-weight:600;color:var(--vwink66);margin:0 2px 9px}
.vw-eq{display:flex;align-items:center;gap:12px;background:#fff;border-radius:16px;padding:11px 12px;margin-bottom:8px;box-shadow:0 1px 2px rgba(16,18,22,.03)}
.vw-th{width:48px;height:48px;border-radius:11px;background:var(--vwinset);overflow:hidden;flex:0 0 auto}
.vw-th img{width:100%;height:100%;object-fit:cover;display:block}
.vw-th--img{background:#faf7f8}
.vw-th--img img{object-fit:contain;padding:3px}
.vw-th--rnd{border-radius:50%}
.vw-th--rnd{background-size:cover;background-position:center}
.vw-eqb{flex:1;min-width:0}
.vw-eqn{font-size:14px;font-weight:500}
.vw-lk{color:var(--vwink26)}
.vw-grp{background:#fff;border-radius:16px;padding:2px 14px;margin-bottom:20px;box-shadow:0 1px 2px rgba(16,18,22,.03)}
.vw-exr{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--vwbd)}
.vw-exr:last-child{border-bottom:0}
.vw-exb{flex:1;min-width:0}
.vw-exn{font-size:14px;font-weight:500}
.vw-exm{font-size:12px;color:var(--vwink40);margin-top:3px}
.vw-info{width:26px;height:26px;border-radius:50%;border:1px solid var(--vwbdc);display:grid;place-items:center;color:var(--vwink40);flex:0 0 auto;cursor:pointer;background:#fff}
.vw-info svg{width:13px;height:13px}
.vw-sec-btn{width:100%;border:1px solid var(--vwbdc);background:#fff;border-radius:999px;padding:13px;font-family:inherit;font-size:15px;font-weight:500;color:var(--vwink);cursor:pointer}

/* ---------- shared slide-up sheets (Focus + Info) ---------- */
.vw-sheet{position:fixed;inset:0;z-index:2300;background:var(--vwscreen);transform:translateY(100%);transition:transform .4s cubic-bezier(.32,.72,0,1);display:flex;flex-direction:column}
.vw-sheet.open{transform:translateY(0)}
/* Focus */
.vw-fhead{position:relative;flex:0 0 auto;height:96px;display:flex;align-items:flex-end;justify-content:center;padding-bottom:12px}
.vw-fback{position:absolute;left:16px;bottom:8px;width:40px;height:40px;border-radius:50%;border:0;background:#fff;display:grid;place-items:center;cursor:pointer;color:#0c0e12;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.vw-fback svg{width:20px;height:20px}
.vw-ftitle{font-size:17px;font-weight:600;letter-spacing:-.02em}
.vw-ffig{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;gap:10px;padding:12px 14px;overflow:hidden}
.vw-ffig .mm-col{width:50%;max-width:250px;text-align:center}
.vw-ffig .mm-figbox{display:flex;justify-content:center}
.vw-ffig .mm-svg{width:100%;height:auto;max-height:68vh;display:block}
.vw-ffig .mm-cap{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#c1b3aa;margin-top:4px}
.mm-m{stroke:#e7c0ca;stroke-width:.8;transition:fill .4s ease;transform-box:fill-box;transform-origin:center}
.mm-m.on{stroke:#8f0e2a;stroke-width:.9;filter:drop-shadow(0 0 5px rgba(214,28,66,.4))}
.mm-svg.play .mm-m.on{animation:mmpop .62s cubic-bezier(.2,.85,.25,1.3) both}
@keyframes mmpop{0%{opacity:.15;transform:scale(.55)}55%{opacity:1;transform:scale(1.1)}100%{transform:scale(1)}}
.vw-fcard{flex:0 0 auto;margin:0 20px calc(28px + env(safe-area-inset-bottom));background:#fff;border-radius:14px;padding:14px 16px;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.vw-fcard b{display:block;font-size:14px;font-weight:600;color:#2a2a2a}
.vw-fcard span{display:block;font-size:14px;font-weight:500;color:#9daabd;margin-top:4px}
/* Info */
.vw-infosheet{overflow-y:auto;display:block}
.vw-infosheet::-webkit-scrollbar{width:0}
.vw-ihero{position:relative;height:228px;overflow:hidden}
.vw-ihero img{width:100%;height:100%;object-fit:cover;display:block}
.vw-igrab{position:absolute;top:8px;left:50%;transform:translateX(-50%);width:38px;height:5px;border-radius:3px;background:rgba(255,255,255,.85);z-index:2}
.vw-iclose{position:absolute;top:50px;right:16px;width:34px;height:34px;border-radius:50%;border:0;background:rgba(255,255,255,.92);display:grid;place-items:center;cursor:pointer;color:#0c0e12;z-index:2}
.vw-iclose svg{width:17px;height:17px}
.vw-ibody{padding:18px 16px calc(44px + env(safe-area-inset-bottom))}
.vw-itag{display:inline-block;background:var(--vwgoal);color:var(--vwtag);font-size:10px;font-weight:600;padding:3px 8px;border-radius:6px;letter-spacing:.04em;margin-bottom:8px}
.vw-ittl{font-size:24px;font-weight:600;letter-spacing:-.02em;margin:0 0 6px}
.vw-idesc{font-size:13.5px;color:var(--vwink66);line-height:1.5;margin:0 0 20px}
.vw-ih{font-size:13px;font-weight:600;color:var(--vwink66);margin:0 2px 9px}
.vw-ieq{display:flex;align-items:center;gap:12px;background:#fff;border-radius:16px;padding:11px 12px;margin-bottom:20px;box-shadow:0 1px 2px rgba(16,18,22,.03)}
.vw-ieq .vw-th{width:44px;height:44px}
.vw-steps{background:#fff;border-radius:16px;padding:4px 14px;margin-bottom:20px;box-shadow:0 1px 2px rgba(16,18,22,.03)}
.vw-step{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--vwbd)}
.vw-step:last-child{border-bottom:0}
.vw-stepn{width:24px;height:24px;border-radius:50%;background:var(--vwinset);color:var(--vwink);font-size:12px;font-weight:600;display:grid;place-items:center;flex:0 0 auto}
.vw-step p{margin:0;font-size:13.5px;line-height:1.5}
.vw-blist{background:#fff;border-radius:16px;padding:6px 14px;margin-bottom:14px;box-shadow:0 1px 2px rgba(16,18,22,.03)}
.vw-bl{display:flex;gap:10px;align-items:flex-start;padding:9px 0;font-size:13.5px;line-height:1.45}
.vw-bd{width:6px;height:6px;border-radius:50%;background:var(--vwink26);margin-top:7px;flex:0 0 auto}

/* ---------- audio toggles ---------- */
.vp2-aud{position:absolute;top:54px;left:16px;z-index:13;display:flex;gap:8px}
.vw-audbtn{width:34px;height:34px;border-radius:50%;border:0;background:rgba(20,20,22,.42);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:grid;place-items:center;color:#fff;cursor:pointer;transition:.15s}
.vw-audbtn.off{opacity:.42}
.vw-audbtn svg{width:17px;height:17px}

/* ---------- PLAYER ---------- */
.vp2{position:fixed;inset:0;z-index:2400;background:#15110f;overflow:hidden}
.vp2-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#15110f;display:block}
.vp2-scrim{position:absolute;inset:0;z-index:1;pointer-events:none;transition:.3s}
.vp2.mode-sheet .vp2-scrim{background:linear-gradient(180deg,rgba(0,0,0,.2),rgba(0,0,0,0) 30%)}
.vp2.mode-im .vp2-scrim{background:linear-gradient(180deg,rgba(0,0,0,.42),rgba(0,0,0,.03) 26%,rgba(0,0,0,.03) 58%,rgba(0,0,0,.5))}
.vp2.mode-im.controls .vp2-scrim{background:linear-gradient(180deg,rgba(0,0,0,.5),rgba(0,0,0,.2) 32%,rgba(0,0,0,.2) 56%,rgba(0,0,0,.6))}
.vp2-restdim{position:absolute;inset:0;z-index:2;background:rgba(8,8,10,.55);opacity:0;transition:.4s ease;pointer-events:none}
.vp2.resting .vp2-restdim{opacity:1}
.vp2-x{position:absolute;top:54px;right:16px;width:34px;height:34px;border-radius:50%;border:0;background:rgba(255,255,255,.92);display:grid;place-items:center;cursor:pointer;z-index:14;color:#0c0e12}
.vp2.mode-im .vp2-x{background:rgba(255,255,255,.18);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff}
.vp2-x svg{width:17px;height:17px}
/* sheet-mode cover label */
.vp2-seg{position:absolute;left:18px;right:80px;z-index:12;color:#fff;text-shadow:0 1px 16px rgba(0,0,0,.45);transition:opacity .25s}
.vp2-seg .s{font-size:14px;font-weight:500;opacity:.95}
.vp2-seg .t{font-size:30px;font-weight:600;line-height:1.05;margin-top:2px;font-variant-numeric:tabular-nums;transition:transform .2s}
.vp2-seg .nx{font-size:12.5px;font-weight:500;opacity:.85;margin-top:3px}
.vp2-seg.warn .t{transform:scale(1.12);text-shadow:0 0 20px rgba(255,160,190,.9)}
.vp2.resting .vp2-seg .t{font-size:40px}
/* self-contained video: timecodes/sound/music are baked into the clip → use the
   NATIVE video player (controls = real seek bar; native fullscreen = real landscape
   + iOS hides the status bar). Show only the bare video + our close button; hide all
   custom chapter/timer/music/sheet chrome. object-fit:contain so nothing is cropped. */
.vp2.vp-plain .vp2-video{object-fit:contain}
.vp2.vp-plain .vp2-sheet,
.vp2.vp-plain .vp2-aud,
.vp2.vp-plain .vp2-seg,
.vp2.vp-plain .vp2-hud,
.vp2.vp-plain .vp2-imctrls,
.vp2.vp-plain .vp2-imbottom,
.vp2.vp-plain .vp2-rotate,
.vp2.vp-plain .vp2-expand,
.vp2.vp-plain .vp2-rest,
.vp2.vp-plain .vp2-go,
.vp2.vp-plain .vp2-scrim{display:none !important}
/* close button clears the iOS status bar (no overlap with time/wifi/battery) */
.vp2.vp-plain .vp2-x{top:max(16px,calc(var(--rf-top-inset,0px) + 8px))}
.vp2-expand{position:absolute;right:16px;z-index:12;width:34px;height:34px;border-radius:50%;background:rgba(20,20,22,.42);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:grid;place-items:center;color:#fff;cursor:pointer;border:0}
.vp2-expand svg{width:16px;height:16px}
/* GO + done */
.vp2-go{position:absolute;inset:0;display:grid;place-items:center;z-index:16;pointer-events:none;background:rgba(8,8,10,.4)}
.vp2-go b{font-size:84px;font-weight:600;color:#fff;letter-spacing:.04em;text-shadow:0 3px 30px rgba(0,0,0,.5)}
@keyframes vwGoPop{0%{transform:scale(.5);opacity:0}45%{transform:scale(1.12);opacity:1}100%{transform:scale(1);opacity:.96}}
.vw-pop b{animation:vwGoPop .5s cubic-bezier(.2,.85,.25,1)}
.vp2-donescr{position:absolute;inset:0;z-index:18;background:var(--vwscreen);display:none;flex-direction:column;align-items:center;justify-content:center;padding:30px;text-align:center;overflow:hidden}
.vp2-donescr>*:not(.gp-confetti){position:relative;z-index:2}
.vp2 .gp-confetti{--goal:#ffe9f1}
.vp2-donescr.show{display:flex}
.vp2-dring{width:96px;height:96px;border-radius:50%;background:var(--vwgoal);display:grid;place-items:center;margin-bottom:20px}
.vp2-dring svg{width:46px;height:46px;color:var(--vwbrandd)}
.vp2-dring svg path{stroke-dasharray:40;stroke-dashoffset:40;animation:vwDraw .5s .15s forwards cubic-bezier(.6,.1,.3,1)}
@keyframes vwDraw{to{stroke-dashoffset:0}}
.vp2-donescr h2{font-size:23px;font-weight:600;margin:0 0 6px;letter-spacing:-.02em}
.vp2-donescr p{font-size:14px;color:var(--vwink66);margin:0 0 24px}
.vp2-ds{display:flex;gap:10px;margin-bottom:28px;width:100%;max-width:330px}
.vp2-ds .c{flex:1;background:#fff;border-radius:14px;padding:14px 8px;box-shadow:0 1px 2px rgba(16,18,22,.04)}
.vp2-ds .c b{display:block;font-size:20px;font-weight:600}
.vp2-ds .c small{font-size:11px;color:var(--vwink40)}
.vp2-donescr .vw-cta{max-width:330px}
/* immersive HUD top-left */
.vp2-hud{position:absolute;top:58px;left:20px;z-index:6;color:#fff;transition:opacity .22s}
.vp2-hud .side{font-size:13px;font-weight:400;opacity:.85}
.vp2-hud .nm{font-size:18px;font-weight:500;margin:1px 0 2px;text-shadow:0 1px 14px rgba(0,0,0,.5)}
.vp2-hud .cd{font-size:46px;font-weight:600;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.02em;text-shadow:0 2px 18px rgba(0,0,0,.45);transition:transform .2s}
.vp2-hud .cd.warn{transform:scale(1.08);text-shadow:0 0 22px rgba(255,150,185,.95)}
.vp2.controls .vp2-hud,.vp2.resting .vp2-hud{opacity:0}
/* immersive center controls */
.vp2-imctrls{position:absolute;left:0;right:0;top:48%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;gap:30px;z-index:7;opacity:0;visibility:hidden;transition:.22s}
.vp2.controls .vp2-imctrls{opacity:1;visibility:visible}
.vp2-sb{width:48px;height:48px;border-radius:50%;background:rgba(255,255,255,.16);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:0;display:grid;place-items:center;color:#fff;cursor:pointer}
.vp2-sb svg{width:20px;height:20px}
.vp2-pp{width:78px;height:78px;border-radius:50%;background:rgba(255,255,255,.24);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:0;display:grid;place-items:center;color:#fff;cursor:pointer}
.vp2-pp svg{width:30px;height:30px}
/* rest ring */
.vp2-rest{position:absolute;left:0;right:0;top:46%;transform:translateY(-50%);z-index:7;display:none;flex-direction:column;align-items:center;color:#fff}
.vp2-rest .lbl{font-size:15px;font-weight:500;opacity:.92;margin-bottom:14px;letter-spacing:.02em}
.vp2-ring{position:relative;width:148px;height:148px}
.vp2-ring svg{width:148px;height:148px;transform:rotate(-90deg)}
.vp2-ring circle{fill:none;stroke-width:6}
.vp2-ring .bg{stroke:rgba(255,255,255,.22)}
.vp2-ring .fg{stroke:#fff;stroke-linecap:round;transition:stroke-dashoffset .2s linear}
.vp2-ring .num{position:absolute;inset:0;display:grid;place-items:center;font-size:42px;font-weight:600;font-variant-numeric:tabular-nums}
.vp2-rest .nx{font-size:14px;font-weight:500;opacity:.9;margin-top:16px}
/* rotate tip */
.vp2-rotate{position:absolute;left:50%;bottom:70px;transform:translateX(-50%);z-index:9;background:rgba(255,255,255,.16);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;border:0;font-family:inherit;font-size:12.5px;font-weight:500;padding:8px 14px;border-radius:999px;cursor:pointer;display:flex;gap:7px;align-items:center;opacity:0;visibility:hidden;transition:.2s}
.vp2.controls .vp2-rotate{opacity:1;visibility:visible}
.vp2-rotate svg{width:15px;height:15px}
/* immersive bottom */
.vp2-imbottom{position:absolute;left:0;right:0;bottom:0;padding:0 18px calc(22px + env(safe-area-inset-bottom));z-index:8;transition:opacity .25s}
.vp2.resting .vp2-imbottom{opacity:.5}
.vp2-immeta{display:flex;align-items:flex-end;justify-content:space-between;color:#fff;margin-bottom:12px}
.vp2-immeta .e b{display:block;font-size:15px;font-weight:500;font-variant-numeric:tabular-nums}
.vp2-immeta .e small{font-size:11px;opacity:.75}
.vp2-immeta .e.r{text-align:right}
.vp2-imseg{display:flex;gap:4px}
.vp2-imseg .vp2-sg{flex:1;height:4px;border-radius:3px;background:rgba(255,255,255,.3);overflow:hidden}
.vp2-imseg .vp2-sg i{display:block;height:100%;width:0;background:#fff;border-radius:3px;transition:width .2s linear}
/* ----- mode visibility ----- */
.vp2-hud,.vp2-imctrls,.vp2-rotate,.vp2-imbottom,.vp2-rest{display:none}
.vp2.mode-im .vp2-hud{display:block}
.vp2.mode-im .vp2-imctrls{display:flex}
.vp2.mode-im .vp2-rotate{display:flex}
.vp2.mode-im .vp2-imbottom{display:block}
.vp2.mode-im.resting .vp2-rest{display:flex}
.vp2.mode-im.resting .vp2-imctrls{display:none}
.vp2.mode-im .vp2-seg,.vp2.mode-im .vp2-expand{display:none}
.vp2.mode-im .vp2-sheet{transform:translateY(112%)!important}
/* ----- sheet (control panel) ----- */
.vp2-sheet{position:absolute;left:0;right:0;top:0;height:100%;z-index:10;transform:translateY(54%);background:#fff;border-radius:24px 24px 0 0;box-shadow:0 -14px 36px -18px rgba(0,0,0,.28);display:flex;flex-direction:column;touch-action:none;padding:0 18px}
.vp2-sheet.glide{transition:transform .42s cubic-bezier(.32,.72,0,1)}
.vp2-grab{width:38px;height:5px;border-radius:3px;background:#d7d9dd;margin:10px auto 14px;flex:0 0 auto;cursor:grab}
.vp2-bar{display:flex;gap:4px;margin-bottom:18px;flex:0 0 auto}
.vp2-bar .vp2-sg{flex:1;height:4px;border-radius:3px;background:var(--vwtrack);overflow:hidden}
.vp2-bar .vp2-sg i{display:block;height:100%;width:0;background:var(--vwink);border-radius:3px;transition:width .2s linear}
.vp2-tm{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;flex:0 0 auto}
.vp2-tm .side{text-align:center;min-width:50px}
.vp2-tm .side b{display:block;font-size:15px;font-weight:500;font-variant-numeric:tabular-nums}
.vp2-tm .side small{font-size:11px;color:var(--vwink40)}
.vp2-tm .big{font-size:35px;font-weight:600;letter-spacing:-.01em;font-variant-numeric:tabular-nums;transition:transform .2s,color .2s}
.vp2-tm .big.warn{color:var(--vwbrandd);transform:scale(1.06)}
.vp2-ctrls{display:flex;align-items:center;justify-content:center;gap:14px;margin-bottom:16px;flex:0 0 auto}
.vp2-pill{flex:1;border:1px solid var(--vwbdc);background:#fff;border-radius:999px;padding:13px;font-family:inherit;font-size:15px;font-weight:500;color:var(--vwink);cursor:pointer}
.vp2-pp2{width:60px;height:60px;border-radius:50%;background:var(--vwink);color:#fff;border:0;display:grid;place-items:center;cursor:pointer;flex:0 0 auto;box-shadow:0 8px 20px -6px rgba(12,14,18,.5)}
.vp2-pp2 svg{width:24px;height:24px}
.vp2-nowh{font-size:12px;font-weight:500;color:var(--vwink40);margin:2px 2px 8px;flex:0 0 auto;display:flex;justify-content:space-between;align-items:center}
.vp2-nowh .more{color:var(--vwink26)}
.vp2-sheet.expanded .vp2-nowh .lbl::after{content:" — вся программа"}
.vp2-sheet.expanded .vp2-nowh .more{opacity:0}
.vp2-list{flex:1;overflow-y:auto;margin:0 -4px;padding:0 4px 16px;min-height:0}
.vp2-list::-webkit-scrollbar{width:0}
.vp2-li{display:none;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--vwbd)}
.vp2-lth{width:48px;height:48px;border-radius:11px;overflow:hidden;background:var(--vwinset);flex:0 0 auto;cursor:pointer}
.vp2-lth img{width:100%;height:100%;object-fit:cover;display:block}
.vp2-lb{flex:1;min-width:0;cursor:pointer}
.vp2-ln{font-size:14px;font-weight:500}
.vp2-lm{font-size:12px;color:var(--vwink40);margin-top:2px}
.vp2-linfo{width:26px;height:26px;border-radius:50%;border:1px solid var(--vwbdc);display:grid;place-items:center;color:var(--vwink40);flex:0 0 auto;cursor:pointer;background:#fff}
.vp2-linfo svg{width:13px;height:13px}
.vp2-sheet:not(.expanded) .vp2-li.cur{display:flex;border-bottom:0}
.vp2-sheet.expanded .vp2-li{display:flex;opacity:.5}
.vp2-sheet.expanded .vp2-li.cur{opacity:1}
/* ----- forced landscape ----- */
.vp2.land{width:100vh;height:100vw;top:50%;left:50%;transform:translate(-50%,-50%) rotate(90deg);transform-origin:center center}

/* ===== Guided GIF player (premium white-minimal — matches the video player) ===== */
.gp,.gc,.gc-sheet,.gc-isheet{--ink:#0c0e12;--ink66:rgba(12,14,18,.62);--ink40:rgba(12,14,18,.4);--ink26:rgba(12,14,18,.24);--gphair:rgba(12,14,18,.06);--gpsoft:#f6f6f8;--brandd:#f0a0c0;--goal:#ffe9f1;--gpprimary:#2c0c17;--gpprimaryp:#3a1322;--gcbg:#f4f4f6;--border-ctl:rgba(12,14,18,.12)}
.gp{position:fixed;inset:0;z-index:2500;background:#fff;color:var(--ink);display:flex;flex-direction:column;overflow:hidden;font-family:var(--font)}
.gp-top{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:calc(var(--safe-top) + 12px) 20px 0}
.gp-ic{width:34px;height:34px;border-radius:50%;border:0;background:transparent;display:grid;place-items:center;cursor:pointer;color:var(--ink);flex:0 0 auto;padding:0}
.gp-ic:active{background:var(--gpsoft)}
.gp-ic svg{width:21px;height:21px;stroke-width:1.8}
.gp-ttl{font-size:15px;font-weight:600;letter-spacing:-.01em;text-align:center;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gp-segs{flex:0 0 auto;display:flex;gap:5px;padding:14px 20px 0}
.gp-sg{flex:1;height:3px;border-radius:2px;background:#ececef;overflow:hidden}
.gp-sg i{display:block;height:100%;width:0;background:#2a2d34;border-radius:2px;transition:width .4s cubic-bezier(.4,0,.2,1)}
.gp-sg.done i{width:100%}
.gp-sg.now{background:var(--goal)}
.gp-sg.now i{background:var(--brandd)}
.gp-stage{flex:1 1 auto;min-height:0;position:relative;display:flex;align-items:center;justify-content:center;padding:6px 8px 0}
.gp-stage video,.gp-stage img{width:100%;height:100%;object-fit:contain;display:block}
.gp-ph{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#cfd2da}
.gp-ph svg{width:92px;height:92px}
.gp-loop{position:absolute;right:18px;top:10px;color:var(--ink26);font-size:11px;font-weight:500;display:flex;gap:5px;align-items:center}
.gp-loop[hidden]{display:none}
/* Ролик ещё не показал кадр — мягкий индикатор вместо белой пустоты. */
.gp-stage--loading::after{content:"";position:absolute;left:50%;top:50%;width:30px;height:30px;margin:-15px 0 0 -15px;border-radius:50%;border:2.5px solid rgba(100,43,67,.14);border-top-color:rgba(100,43,67,.55);animation:gpspin .9s linear infinite;pointer-events:none}
@keyframes gpspin{to{transform:rotate(360deg)}}
.gp-ph--fail{flex-direction:column;gap:10px;text-align:center}
.gp-ph--fail svg{width:72px;height:72px}
.gp-ph__t{color:#8f8188;font-size:13px;font-weight:500}
.gp-ph__retry{border:1px solid rgba(100,43,67,.2);background:#fff;color:#642b43;border-radius:999px;padding:8px 18px;font:600 12.5px var(--font,inherit);cursor:pointer}
/* Показ не запустился (iOS блокирует автоплей в энергосбережении). Вместо
   стоп-кадра, который читается как «приложение зависло», — явная кнопка. */
.gp-demo-play{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);border:0;cursor:pointer;border-radius:999px;padding:9px 16px;background:rgba(20,10,14,.82);color:#fff;font:600 12.5px var(--font,inherit);box-shadow:0 6px 18px rgba(20,4,12,.22)}
.gp-loop svg{width:13px;height:13px}
.gp-info-b{flex:0 0 auto;padding:0 20px}
.gp-sec{font-size:11px;font-weight:600;letter-spacing:.07em;color:var(--ink40);text-transform:uppercase}
.gp-name{font-size:20px;font-weight:600;letter-spacing:-.02em;margin:3px 0 4px}
.gp-sub{font-size:13px;color:var(--ink40);margin-bottom:16px}
/* «В прошлый раз» — рабочий результат клиента по этому упражнению. Подсказка,
   а не назначение: она не спорит с числом, которое поставил тренер. */
.gp-last{font-size:12.5px;color:var(--ink40);margin:-10px 0 14px}
.gp-last[hidden]{display:none}
/* Комментарий тренера к упражнению — указание именно этому клиенту. */
.gp-note{font-size:13px;line-height:1.45;color:#5c2a3e;background:var(--goal);border-radius:12px;padding:9px 12px;margin:-8px 0 14px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.gp-note[hidden]{display:none}
.gp-note b{font-weight:600}
.gp-section--note .gp-note-body{font-size:14px;line-height:1.5;color:#5c2a3e;background:var(--goal);border-radius:12px;padding:10px 12px;white-space:pre-line}
.gp-sub b{color:var(--ink66);font-weight:500}
.gp-setline{display:flex;align-items:center;justify-content:space-between;padding-top:14px;border-top:1px solid var(--gphair)}
.gp-setline .t{font-size:14px;font-weight:600}
.gp-dots{display:flex;justify-content:flex-end;gap:0;max-width:55%;max-height:88px;overflow-y:auto;overscroll-behavior:contain}
.gp-dot{display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;padding:0;border:0;border-radius:12px;background:transparent;cursor:pointer;-webkit-tap-highlight-color:transparent}
.gp-dot::before{content:"";width:8px;height:8px;border-radius:50%;background:#dcdce0;transition:.2s}
.gp-dot.done::before{background:var(--brandd)}
.gp-dot.cur::before{background:#fff;box-shadow:0 0 0 2px var(--brandd)}
.gp-dot.done.cur::before{background:var(--brandd);box-shadow:0 0 0 2px #fff,0 0 0 4px var(--brandd)}
.gp-dot:focus-visible{outline:2px solid var(--brandd);outline-offset:-3px}
.gp-dot:active{background:var(--gpsoft)}
/* Упражнение по сторонам: бейдж стороны у «Подход N из M» и пары точек. */
.gp-side{display:inline-block;margin-right:8px;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:700;letter-spacing:.01em;background:var(--gpsoft);color:var(--brandd);vertical-align:1px}
.gp-side[hidden]{display:none}
.gp-side--left{background:#eef3ff;color:#2f55c8}
.gp-dot--left::before{border-radius:3px}
.gp-dot--pairend{margin-right:6px}
.gp-rows{flex:0 0 auto;padding:4px 20px 0}
.gp-row{display:flex;align-items:center;justify-content:space-between;padding:16px 0;border-bottom:1px solid var(--gphair)}
.gp-rl{font-size:14px;color:var(--ink66);font-weight:500}
.gp-rl__hint{display:block;margin-top:2px;font-size:11.5px;font-weight:400;color:var(--ink40)}
.gp-rc{display:flex;align-items:center;gap:20px}
.gp-rc button{width:34px;height:34px;border-radius:50%;border:1px solid rgba(12,14,18,.11);background:#fff;color:var(--ink66);cursor:pointer;display:grid;place-items:center;transition:background .15s,border-color .15s,transform .12s;padding:0}
.gp-rc button:active{background:var(--gpsoft);border-color:transparent;transform:scale(.9)}
.gp-rc button svg{width:15px;height:15px;stroke-width:1.6}
.gp-rv{min-width:70px;display:inline-flex;align-items:baseline;justify-content:center;gap:3px}
.gp-rv b{font-size:22px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.01em;display:inline-block}
.gp-rv b.bump{animation:gpbump .22s cubic-bezier(.3,.7,.3,1)}
@keyframes gpbump{0%{transform:scale(1)}45%{transform:scale(1.12)}100%{transform:scale(1)}}
.gp-rv i{font-size:12px;color:var(--ink26);font-style:normal}
.gp-extimer{padding:10px 2px 6px;text-align:center}
.gp-extimer .lab{font-size:11px;font-weight:600;letter-spacing:.07em;color:var(--ink40);text-transform:uppercase}
.gp-exnum{font-size:44px;font-weight:500;font-variant-numeric:tabular-nums;letter-spacing:-.02em;margin:4px 0 16px;transition:color .2s}
.gp-exnum.run{color:var(--brandd)}
.gp-exbar{height:4px;border-radius:2px;background:#ececef;overflow:hidden}
.gp-exbar i{display:block;height:100%;width:0;background:var(--brandd);border-radius:2px;transition:width .35s linear}
.gp-foot{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:14px 20px calc(16px + env(safe-area-inset-bottom,0px))}
.gp-go{flex:1 1 auto;min-width:0;border:0;border-radius:999px;background:var(--gpprimary);color:#fff;font-family:var(--font);font-size:14.5px;font-weight:500;letter-spacing:.01em;padding:15px;cursor:pointer;transition:.15s;display:flex;align-items:center;justify-content:center;gap:8px}
.gp-go svg{width:16px;height:16px;opacity:.92}
.gp-go:active{background:var(--gpprimaryp)}
.gp-nav{flex:0 0 auto;width:52px;height:52px;border-radius:50%;border:1px solid var(--gphair);background:#fff;color:var(--ink66);display:grid;place-items:center;cursor:pointer;transition:background .15s,transform .12s,opacity .15s;padding:0}
.gp-nav svg{width:20px;height:20px}
.gp-nav:active{background:var(--gpsoft);transform:scale(.92)}
.gp-nav:disabled{opacity:.28;pointer-events:none}
/* rest — full-screen, soft warm gradient */
.gp-ov{position:absolute;inset:0;z-index:20;display:none;background:radial-gradient(135% 92% at 50% -8%,#fff2f7 0%,#fff 58%)}
.gp-ov.show{display:flex}
.gp-ov-in{margin:auto;display:flex;flex-direction:column;align-items:center;padding:24px;width:100%}
.gp-ov .lbl{font-size:13px;font-weight:600;color:var(--brandd);letter-spacing:.14em;text-transform:uppercase;margin-bottom:24px}
.gp-ring{position:relative;width:210px;height:210px;animation:gpbreath 3.4s ease-in-out infinite}
.gp-ring svg{width:210px;height:210px;transform:rotate(-90deg)}
.gp-ring circle{fill:none;stroke-width:4}
.gp-ring .bg{stroke:#f1e7eb}
.gp-ring .fg{stroke:var(--brandd);stroke-linecap:round;transition:stroke-dashoffset .3s linear}
.gp-ring .num{position:absolute;inset:0;display:grid;place-items:center;font-size:54px;font-weight:500;font-variant-numeric:tabular-nums;letter-spacing:-.03em;color:var(--gpprimary)}
@keyframes gpbreath{0%,100%{transform:scale(1)}50%{transform:scale(1.018)}}
.gp-ov .nx{font-size:15px;color:var(--ink66);font-weight:500;margin-top:26px;text-align:center;max-width:78%;line-height:1.4}
.gp-ov .nx b{color:var(--ink);font-weight:600}
.gp-ov .acts{display:flex;gap:10px;margin-top:34px}
.gp-ov .acts button{border:0;border-radius:14px;font-family:var(--font);font-size:14px;font-weight:500;padding:13px 24px;cursor:pointer;white-space:nowrap;transition:transform .12s,background .15s}
.gp-ov .acts button:active{transform:scale(.95)}
.gp-ov .gp-rest-add{background:#fff;color:var(--ink66);box-shadow:inset 0 0 0 1px var(--gphair)}
.gp-ov .gp-rest-skip{background:var(--gpprimary);color:#fff}
.gp-done{position:absolute;inset:0;z-index:24;background:#fff;display:none;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px}
.gp-done.show{display:flex}
.gp-done .ring{width:92px;height:92px;border-radius:50%;background:var(--goal);display:grid;place-items:center;margin-bottom:22px}
.gp-done .ring svg{width:44px;height:44px;color:var(--brandd)}
.gp-done .ring svg path{stroke-dasharray:40;stroke-dashoffset:40;animation:gpdraw .5s .15s forwards cubic-bezier(.6,.1,.3,1)}
@keyframes gpdraw{to{stroke-dashoffset:0}}
.gp-done h2{font-size:20px;font-weight:600;margin:0 0 6px;letter-spacing:-.02em}
.gp-done p{font-size:14px;color:var(--ink66);margin:0 0 26px}
.gp-ds{display:flex;gap:28px;margin-bottom:30px}
.gp-ds .c b{display:block;font-size:22px;font-weight:600;font-variant-numeric:tabular-nums}
.gp-ds .c small{font-size:12px;color:var(--ink40)}
.gp-fin{width:100%;max-width:320px;border:0;border-radius:999px;background:var(--gpprimary);color:#fff;font-family:var(--font);font-size:14.5px;font-weight:500;padding:16px;cursor:pointer}
/* Шторка описания упражнения: скроллит ТЕЛО (.gp-ibody), а не весь лист.
   Раньше скроллился сам лист, и кнопка закрытия (position:absolute) уезжала
   вверх вместе с контентом — из описания было НЕ ВЫЙТИ, приходилось убивать
   приложение (жалоба @asipcova). Теперь кнопка всегда на экране. */
.gp-info{position:absolute;inset:0;z-index:26;background:#fff;transform:translateY(100%);transition:transform .42s cubic-bezier(.32,.72,0,1);overflow:hidden;display:flex;flex-direction:column}
.gp-info.open{transform:translateY(0)}
.gp-info::-webkit-scrollbar{width:0}
.gp-ihero{position:relative;flex:0 0 auto;height:300px;display:flex;align-items:center;justify-content:center;background:#fff}
.gp-ihero video,.gp-ihero img{width:100%;height:100%;object-fit:contain}
/* top с safe-area — иначе на iPhone с нотчем кнопка пряталась под статус-баром */
.gp-iclose{position:absolute;top:max(50px,calc(env(safe-area-inset-top,0px) + 14px));right:18px;width:34px;height:34px;border-radius:50%;border:0;background:var(--gpsoft);display:grid;place-items:center;cursor:pointer;color:#0c0e12;z-index:5}
.gp-iclose svg{width:18px;height:18px}
.gp-ibody{flex:1 1 auto;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:6px 22px 44px}
.gp-ibody::-webkit-scrollbar{width:0}
.gp-itag{display:inline-block;background:var(--goal);color:var(--gpprimary);font-size:10px;font-weight:600;padding:3px 9px;border-radius:6px;margin-bottom:8px;letter-spacing:.03em}
.gp-ittl{font-size:20px;font-weight:600;margin:0 0 18px;letter-spacing:-.02em}
.gp-ih{font-size:12px;font-weight:600;color:var(--ink40);text-transform:uppercase;letter-spacing:.05em;margin:0 0 10px}
.gp-step{display:flex;gap:14px;padding:11px 0;border-bottom:1px solid var(--gphair)}
.gp-step:last-child{border-bottom:0}
.gp-stepn{width:24px;height:24px;border-radius:50%;background:var(--gpsoft);font-size:12px;font-weight:600;display:grid;place-items:center;flex:0 0 auto}
.gp-step p{margin:0;font-size:14px;line-height:1.5}
.gp-section{margin-bottom:24px}
.gp-bl{display:flex;gap:11px;align-items:flex-start;padding:8px 0;font-size:14px;line-height:1.5}
.gp-bd{width:5px;height:5px;border-radius:50%;background:var(--ink26);margin-top:8px;flex:0 0 auto}
/* overall timer + progress strip */
.gp-strip{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 20px 0}
.gp-clock{display:inline-flex;align-items:center;gap:5px;color:var(--ink40);font-size:12.5px;font-weight:500}
.gp-clock svg{width:13px;height:13px}
.gp-clock b{font-variant-numeric:tabular-nums;color:var(--ink66);font-weight:600;letter-spacing:-.01em}
.gp-prog{font-size:12.5px;color:var(--ink40);font-weight:500;font-variant-numeric:tabular-nums;flex:0 0 auto}
.gp-prog b{color:var(--ink66);font-weight:600}
.gp-vol{font-size:12.5px;color:var(--ink40);font-weight:500;font-variant-numeric:tabular-nums}
.gp-vol b{color:var(--brandd);font-weight:600}
.gp-vol.hide{display:none}
.gp-next{flex:0 0 auto;text-align:center;font-size:12px;color:var(--ink26);font-weight:500;padding:0 20px 2px;min-height:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* GO countdown intro */
.gp-go-intro{position:absolute;inset:0;z-index:30;display:none;align-items:center;justify-content:center;background:rgba(255,255,255,.86);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
.gp-go-intro.show{display:flex}
.gp-go-intro b{font-size:128px;font-weight:600;letter-spacing:-.04em;color:var(--gpprimary);font-variant-numeric:tabular-nums;line-height:1}
.gp-go-intro b.go{color:var(--brandd);font-size:96px}
.gp-go-intro b.pulse{animation:gopop .58s cubic-bezier(.2,.8,.3,1)}
@keyframes gopop{0%{transform:scale(.4);opacity:0}40%{transform:scale(1.06);opacity:1}100%{transform:scale(1);opacity:1}}
/* last-3s warn pulse */
.gp-exnum.warn,.gp-ring .num.warn{color:#e0608f}
.gp-exnum.warn,.gp-ring .num.warn{animation:gowarn .9s ease-in-out infinite}
@keyframes gowarn{0%,100%{transform:scale(1)}50%{transform:scale(1.07)}}
/* exercise-change fade */
.gp-stage.fade video,.gp-stage.fade img{animation:gpfade .34s ease}
@keyframes gpfade{0%{opacity:0;transform:scale(.985)}100%{opacity:1;transform:scale(1)}}
/* ---- early-exit confirm dialog ---- */
.gp-confirm{position:absolute;inset:0;z-index:34;display:none;align-items:center;justify-content:center;padding:28px;background:rgba(12,8,12,.34);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.gp-confirm.show{display:flex;animation:gpfadein .2s ease}
@keyframes gpfadein{from{opacity:0}to{opacity:1}}
.gp-confirm-card{width:100%;max-width:330px;background:#fff;border-radius:22px;padding:22px 20px 16px;text-align:center;box-shadow:0 24px 60px -16px rgba(20,4,12,.4);animation:gppop .26s cubic-bezier(.3,.8,.3,1)}
@keyframes gppop{0%{transform:scale(.9);opacity:0}100%{transform:scale(1);opacity:1}}
.gp-confirm-t{font-size:18px;font-weight:600;letter-spacing:-.01em;margin-bottom:6px}
.gp-confirm-s{font-size:13.5px;color:var(--ink40);line-height:1.45;margin-bottom:18px}
.gp-confirm-acts{display:flex;flex-direction:column;gap:9px}
.gp-confirm-acts button{border:0;border-radius:14px;font-family:var(--font);font-size:15px;font-weight:500;padding:14px;cursor:pointer;transition:transform .12s}
.gp-confirm-acts button:active{transform:scale(.97)}
.gp-cf-stay{background:var(--gpprimary);color:#fff}
.gp-cf-exit{background:transparent;color:var(--ink40)}
/* ---- surveys (onboarding-question style) ---- */
.gp-survey{position:absolute;inset:0;z-index:36;display:none;flex-direction:column;background:radial-gradient(135% 80% at 50% -8%,#fff2f7 0%,#fff 56%)}
.gp-survey.show{display:flex;animation:gpslideup .34s cubic-bezier(.32,.72,0,1)}
@keyframes gpslideup{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
.gp-survey-head{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:calc(var(--safe-top) + 22px) 20px 0}
.gp-survey-k{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--brandd)}
.gp-survey-skip{border:0;background:transparent;color:var(--ink40);font-family:var(--font);font-size:14px;font-weight:500;cursor:pointer;padding:6px 4px}
.gp-survey-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:22px 22px calc(28px + env(safe-area-inset-bottom,0px))}
.gp-survey-q{font-size:24px;font-weight:600;letter-spacing:-.02em;line-height:1.18;margin:8px 0 8px}
.gp-survey-sub{font-size:14px;color:var(--ink40);line-height:1.5;margin:0 0 22px}
.gp-survey-opts{display:flex;flex-direction:column;gap:9px}
.gp-opt{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;text-align:left;border:0;cursor:pointer;font-family:var(--font);background:#fff;border-radius:14px;padding:13px 15px;min-height:62px;box-shadow:0 4px 12px rgba(20,4,12,.045),inset 0 0 0 1px rgba(12,14,18,.03);transition:background .15s,box-shadow .15s,transform .12s}
.gp-opt:active{transform:scale(.99)}
.gp-opt.sel{background:#f6eef3;box-shadow:inset 0 0 0 1.5px rgba(160,80,120,.22)}
.gp-opt-e{font-size:26px;line-height:1;flex:0 0 auto}
.gp-opt-b{min-width:0;flex:1 1 auto}
.gp-opt-t{display:block;font-size:15.5px;font-weight:500;letter-spacing:-.2px;color:var(--ink);line-height:1.2}
.gp-opt-d{display:block;font-size:12.5px;color:rgba(12,14,18,.5);line-height:1.3;margin-top:2px}
.gp-opt-ck{width:24px;height:24px;flex:0 0 auto;border-radius:50%;box-shadow:inset 0 0 0 1.5px rgba(12,14,18,.14);display:grid;place-items:center;color:#fff;transition:background .15s,box-shadow .15s}
.gp-opt-ck svg{width:14px;height:14px;opacity:0;transition:opacity .15s}
.gp-opt.sel .gp-opt-ck{background:#1d020c;box-shadow:none}
.gp-opt.sel .gp-opt-ck svg{opacity:1}
.gp-survey-other{display:none;margin-top:10px}
.gp-survey-other.show{display:block;animation:gpfadein .2s ease}
.gp-survey-other textarea{width:100%;border:0;background:#fff;border-radius:14px;padding:14px 16px;font-family:var(--font);font-size:15px;color:var(--ink);outline:none;resize:none;line-height:1.45;box-sizing:border-box;box-shadow:inset 0 0 0 1px rgba(12,14,18,.08)}
.gp-survey-other textarea:focus{box-shadow:inset 0 0 0 1.5px rgba(160,80,120,.28)}
.gp-feel-opts{gap:9px}
.gp-survey-foot{flex:0 0 auto;padding:10px 20px calc(16px + env(safe-area-inset-bottom,0px))}
.gp-survey-go{width:100%;height:56px;border:0;border-radius:999px;background:#1d020c;color:#fff;font-family:var(--font);font-size:16px;font-weight:600;letter-spacing:-.2px;cursor:pointer;transition:opacity .18s,transform .12s}
.gp-survey-go:active{transform:scale(.99)}
.gp-survey-go.off{opacity:.4;pointer-events:none}
/* ---- finish: confetti + burst + count-up ---- */
.gp-done-card{margin:auto;display:flex;flex-direction:column;align-items:center;text-align:center;padding:24px;position:relative;z-index:2}
.gp-done .ring{position:relative}
.gp-burst{position:absolute;inset:-14px;border-radius:50%;background:radial-gradient(circle,rgba(240,160,192,.5),rgba(240,160,192,0) 70%);transform:scale(0);animation:gpburst .7s .05s ease-out forwards}
@keyframes gpburst{0%{transform:scale(0);opacity:.9}100%{transform:scale(1.9);opacity:0}}
.gp-confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:1}
.gp-confetti i{position:absolute;top:-12%;width:9px;height:14px;border-radius:2px;opacity:0;animation-name:gpfall;animation-timing-function:cubic-bezier(.35,.15,.6,1);animation-iteration-count:1;animation-fill-mode:forwards}
@keyframes gpfall{0%{opacity:0;transform:translateY(-10px) rotate(0)}12%{opacity:1}100%{opacity:0;transform:translateY(120vh) rotate(560deg)}}

/* ===== Constructed-workout CARD (premium white — same level as the video card) ===== */
.gc{position:fixed;inset:0;z-index:2200;background:#fceef4;color:var(--ink);overflow:hidden;font-family:var(--font)}
.gc-scroll{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden}
.gc-scroll::-webkit-scrollbar{width:0}
.gc-hero{position:relative;height:386px;overflow:hidden;background:linear-gradient(180deg,#fceef4 0%,#fdf3f7 60%,var(--gcbg) 100%);display:flex;align-items:center;justify-content:center}
.gc-hero.nohero{height:320px}
.gc-soft{position:absolute;width:300px;height:300px;border-radius:50%;background:radial-gradient(circle,rgba(255,200,224,.45),rgba(255,200,224,0) 70%);top:70px;filter:blur(10px)}
.gc-heromedia{position:relative;width:calc(100% - 32px);max-width:560px;height:300px;background:#fff;border-radius:22px;box-shadow:0 16px 36px -18px rgba(20,4,12,.24);display:flex;align-items:center;justify-content:center;overflow:hidden;padding:0;transform-origin:center;will-change:transform}
.gc-heromedia video,.gc-heromedia img{width:100%;height:100%;object-fit:cover;display:block}
.gc-ph{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#cfd2da}
.gc-ph svg{width:90px;height:90px}
.gc-cov{position:absolute;top:calc(var(--safe-top) + 16px);left:16px;right:16px;display:flex;justify-content:space-between;z-index:4}
.gc-cbtn{width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.86);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:grid;place-items:center;cursor:pointer;color:#0c0e12;box-shadow:0 4px 14px rgba(20,4,12,.08);padding:0}
.gc-cbtn svg{width:20px;height:20px}
.gc-loop{position:absolute;right:16px;top:calc(var(--safe-top) + 16px);color:var(--ink26);font-size:11px;font-weight:500;display:flex;gap:5px;align-items:center;z-index:3}
.gc-loop svg{width:13px;height:13px}
.gc-panel{position:relative;z-index:2;background:var(--gcbg);border-radius:24px 24px 0 0;margin-top:-26px;min-height:calc(100vh - 330px);padding:18px 16px calc(40px + env(safe-area-inset-bottom,0px))}
.gc-title{font-size:26px;line-height:32px;font-weight:600;letter-spacing:-.02em;margin:2px 2px 4px}
.gc-sub{font-size:13px;color:var(--ink40);line-height:1.5;margin:0 2px 16px}
.gc-stats{display:flex;background:#fff;border-radius:14px;overflow:hidden;margin-bottom:16px;box-shadow:0 1px 2px rgba(16,18,22,.03)}
.gc-stat{flex:1;padding:13px 4px 12px;text-align:center;position:relative}
.gc-stat+.gc-stat::before{content:"";position:absolute;left:0;top:22%;height:56%;width:1px;background:var(--gphair)}
.gc-stat .ic{width:17px;height:17px;margin:0 auto 7px;color:var(--ink66)}
.gc-stat .ic svg{width:17px;height:17px}
.gc-stat b{font-size:13px;font-weight:600;letter-spacing:-.01em;display:block}
.gc-stat small{font-size:11px;color:var(--ink40)}
.gc-cta{width:100%;border:0;border-radius:999px;background:var(--gpprimary);color:#fff;font-family:var(--font);font-size:15.5px;font-weight:500;padding:16px;cursor:pointer;transition:.15s;margin-bottom:20px;display:flex;align-items:center;justify-content:center;gap:8px}
.gc-cta svg{width:17px;height:17px}
.gc-cta:active{background:var(--gpprimaryp)}
.gc-card{background:#fff;border-radius:16px;box-shadow:0 1px 2px rgba(16,18,22,.03)}
.gc-notice{padding:14px;margin-bottom:10px}
.gc-notice h4{font-size:14px;font-weight:600;margin:0 0 4px}
.gc-notice p{font-size:12.5px;color:var(--ink40);line-height:1.5;margin:0}
.gc-frow{display:flex;justify-content:space-between;align-items:center;padding:14px;margin-bottom:20px;cursor:pointer}
.gc-frow .l{display:flex;gap:11px;align-items:center;min-width:0}
.gc-fic{width:34px;height:34px;border-radius:50%;background:var(--goal);display:grid;place-items:center;color:#b06a86;flex:0 0 auto}
.gc-fic svg{width:18px;height:18px}
.gc-ft,.gc-fm{display:block}
.gc-ft{font-size:14px;font-weight:500}
.gc-fm{font-size:12px;color:var(--ink40);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gc-frow .r{color:var(--ink26);flex:0 0 auto;display:flex;align-items:center}
.gc-frow .r svg{width:18px;height:18px}
.gc-sech{font-size:13px;font-weight:600;color:var(--ink66);margin:0 2px 9px}
.gc-eq{display:flex;align-items:center;gap:12px;padding:11px 12px}
.gc-eq+.gc-eq{border-top:1px solid var(--gphair)}
.gc-eth2{width:46px;height:46px;border-radius:11px;background:var(--goal);display:grid;place-items:center;color:#b06a86;flex:0 0 auto}
.gc-eth2 svg{width:22px;height:22px}
.gc-eqn{font-size:14px;font-weight:500}
.gc-card+.gc-sech,.gc-grp+.gc-sech{margin-top:20px}
.gc-grp{padding:2px 14px;margin-bottom:8px}
.gc-exr{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--gphair);cursor:pointer}
.gc-exr:last-child{border-bottom:0}
.gc-eth{width:54px;height:54px;border-radius:12px;background:#fff;border:1px solid var(--gphair);overflow:hidden;flex:0 0 auto;display:grid;place-items:center}
.gc-eth video,.gc-eth img{width:100%;height:100%;object-fit:contain}
.gc-eth .gc-ph svg{width:26px;height:26px}
.gc-eth>*{grid-area:1/1}
.gc-thumb-ph{display:grid;place-items:center;color:#d3b7c5}
.gc-thumb-ph svg{width:26px;height:26px}
.gc-exb{flex:1;min-width:0}
.gc-exn{font-size:14px;font-weight:500}
.gc-exm{font-size:12px;color:var(--ink40);margin-top:3px}
.gc-exnote{font-size:12px;color:#7a3a55;margin-top:3px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gc-secnote{font-size:12.5px;color:var(--ink66);margin:-4px 2px 9px;line-height:1.4}
.gc-exinfo{width:28px;height:28px;border-radius:50%;border:1px solid var(--border-ctl);display:grid;place-items:center;color:var(--ink40);flex:0 0 auto;cursor:pointer;background:#fff;padding:0}
.gc-exinfo svg{width:14px;height:14px}
.gc-sec2{width:100%;border:0;border-radius:14px;background:#fff;color:var(--ink66);font-family:var(--font);font-size:14px;font-weight:500;padding:15px;cursor:pointer;box-shadow:0 1px 2px rgba(16,18,22,.03);margin-top:12px}
/* focus sheet */
.gc-sheet{position:fixed;inset:0;z-index:2300;background:var(--gcbg);transform:translateY(100%);transition:transform .4s cubic-bezier(.32,.72,0,1);display:flex;flex-direction:column}
.gc-sheet.open{transform:translateY(0)}
.gc-fhead{position:relative;flex:0 0 auto;height:96px;display:flex;align-items:flex-end;justify-content:center;padding-bottom:12px;padding-top:var(--safe-top)}
.gc-fback{position:absolute;left:16px;bottom:8px;width:40px;height:40px;border-radius:50%;border:0;background:#fff;display:grid;place-items:center;cursor:pointer;color:#0c0e12;box-shadow:0 1px 3px rgba(20,4,12,.08);padding:0}
.gc-fback svg{width:20px;height:20px}
.gc-ftitle{font-size:17px;font-weight:600;letter-spacing:-.02em}
.gc-fz{flex:1;min-height:0;overflow-y:auto;padding:4px 16px 28px}
.gc-fzcard{background:#fff;border-radius:14px;padding:6px 16px;box-shadow:0 1px 3px rgba(20,4,12,.05)}
.gc-fzrow{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--gphair)}
.gc-fzrow:last-child{border-bottom:0}
.gc-fzdot{width:10px;height:10px;border-radius:50%;background:var(--brandd);flex:0 0 auto}
.gc-fznm{font-size:14px;font-weight:500;flex:1}
.gc-fzbar{height:6px;border-radius:3px;background:#ececef;overflow:hidden;width:84px;flex:0 0 auto}
.gc-fzbar i{display:block;height:100%;background:var(--brandd)}
/* exercise info sheet (reuses gp- inner classes) */
/* Та же шторка описания, но из СПИСКА упражнений — та же ловушка с уезжающей
   кнопкой закрытия. Скроллит тело (.gp-ibody), кнопка закреплена. */
.gc-isheet{position:fixed;inset:0;z-index:2300;background:#fff;transform:translateY(100%);transition:transform .42s cubic-bezier(.32,.72,0,1);overflow:hidden;display:flex;flex-direction:column}
.gc-isheet.open{transform:translateY(0)}
.gc-isheet::-webkit-scrollbar{width:0}


/* ===================== ПРОМЕЖУТОЧНЫЙ СРЕЗ · «Карта освоения тем» =====================
   Эталон: design-preview/miniapp-redesign/srez-diagnostic.html.
   Оверлей живёт на .detail-слое (#detail-srez), но ВСЯ его внутренняя вёрстка
   scoped под .srez — потому что bare-классы .q-app/.q-top/.q-prog/.q-hero* уже
   заняты «квизом привлечения» (выше в этом файле) и онбордингом (.obx). Поэтому
   корневой контейнер внутри детали имеет class="srez" и переопределяет их локально.
   Баннер на Главной (.srez-banner) — в розовой теме трекера, НЕ scoped.
   ================================================================================= */

/* ---- внутренний корень оверлея (внутри #detail-srez .detail) ---- */
#detail-srez .srez {
  display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0;
  font-family: var(--font); color: var(--content-strong);
  --pink-deep: #ff9ec4;
}

/* ---- шапка: назад / тема / 14-сегментный прогресс / счётчик ---- */
.srez .q-top { flex: 0 0 auto; display: flex; align-items: center; gap: 12px; padding: 6px 20px 10px; }
.srez .q-back { width: 44px; height: 44px; border-radius: 50%; border: 0; cursor: pointer; background: #fff; box-shadow: 0 2px 10px rgba(20,4,12,.08), inset 0 0 0 1px rgba(12,14,18,.04); display: grid; place-items: center; color: #404040; transition: transform .12s ease; }
.srez .q-back:active { transform: scale(.92); }
.srez .q-back svg { width: 22px; height: 22px; }
.srez .q-top__b { flex: 1 1 auto; min-width: 0; }
.srez .q-phase { font-size: 12px; font-weight: 600; color: var(--content-subtle); letter-spacing: .02em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.srez .q-prog { display: flex; gap: 4px; margin-top: 7px; height: auto; background: transparent; overflow: visible; }
.srez .q-prog i { display: block; flex: 1 1 0; height: 5px; width: auto; border-radius: 9999px; background: rgba(12,14,18,.10); overflow: hidden; position: relative; }
.srez .q-prog i b { position: absolute; inset: 0; width: 0; background: var(--pink-deep); border-radius: 9999px; transition: width .3s ease; }
.srez .q-prog i.cur b { background: #e0518f; }
.srez .q-step { font-size: 12px; font-weight: 600; color: var(--content-subtle); flex: 0 0 auto; font-variant-numeric: tabular-nums; }
.srez .q-top.hide { display: none; }

/* ---- футер (прилипший) ---- */
.srez .q-foot { flex: 0 0 auto; padding: 10px 20px calc(18px + env(safe-area-inset-bottom)); background: linear-gradient(180deg, rgba(245,245,246,0), #fff 38%); }
.srez .q-foot:empty { display: none; }

/* ---- появление шага / stagger результата ---- */
.srez .q-fade { animation: srez-fade .28s cubic-bezier(.4,0,.2,1); }
@keyframes srez-fade { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.srez .q-rise { opacity: 0; transform: translateY(10px); transition: opacity .42s cubic-bezier(.22,.61,.36,1), transform .42s cubic-bezier(.22,.61,.36,1); }
.srez .q-rise.in { opacity: 1; transform: none; }

/* ---- интро ---- */
.srez .q-hero { text-align: center; padding: 6px 4px 0; }
.srez .q-hero__badge { display: inline-block; font-size: 12px; font-weight: 600; color: #c8377f; background: #fbe6f0; padding: 5px 12px; border-radius: 9999px; }
.srez .q-hero__plate { width: 108px; height: 108px; border-radius: 28px; margin: 22px auto 6px; display: grid; place-items: center; background: linear-gradient(160deg,#ffe3ef,#ffc5dc); box-shadow: 0 18px 40px rgba(224,81,143,.16), inset 0 1px 0 rgba(255,255,255,.6); }
.srez .q-hero__plate svg { width: 52px; height: 52px; display: block; }
.srez .q-hero__t { font-size: 26px; font-weight: 700; letter-spacing: -.6px; line-height: 1.14; margin-top: 18px; }
.srez .q-hero__s { font-size: 14px; color: var(--content-subtle); line-height: 1.55; margin-top: 12px; text-align: left; }
.srez .q-hero__meta { display: flex; justify-content: center; gap: 22px; margin-top: 22px; }
.srez .q-hero__meta div { font-size: 12px; color: var(--content-subtle); }
.srez .q-hero__meta b { display: block; font-size: 16px; font-weight: 600; color: var(--content-strong); margin-bottom: 2px; }
.srez .q-how { margin-top: 22px; text-align: left; background: #fff; border-radius: 16px; padding: 15px 16px; box-shadow: inset 0 0 0 1px rgba(12,14,18,.04); }
.srez .q-how__h { font-size: 13px; font-weight: 700; color: var(--content-strong); }
.srez .q-how__s { font-size: 12.5px; color: var(--content-subtle); line-height: 1.45; margin-top: 6px; }
.srez .q-how__scale { display: flex; align-items: center; gap: 6px; margin-top: 13px; }
.srez .q-how__scale i { flex: 1 1 0; height: 8px; border-radius: 9999px; background: linear-gradient(90deg,#fbe6f0,#ff9ec4); }
.srez .q-how__ends { display: flex; justify-content: space-between; margin-top: 7px; font-size: 11.5px; color: var(--content-subtle); }

/* ---- шаг-утверждение (селектор 1–5) ---- */
.srez .q-stmt { margin-top: 2px; background: var(--card); border-radius: 18px; padding: 20px 18px 18px; box-shadow: 0 10px 28px rgba(20,4,12,.06), inset 0 0 0 1px rgba(12,14,18,.04); }
.srez .q-stmt__lead { display: flex; align-items: center; gap: 8px; font-size: 12px; font-weight: 600; color: #c8377f; margin-bottom: 11px; }
.srez .q-stmt__lead .pair { font-variant-numeric: tabular-nums; color: var(--content-subtle); font-weight: 600; }
.srez .q-stmt__lead .dotsep { width: 3px; height: 3px; border-radius: 50%; background: rgba(12,14,18,.22); }
.srez .q-stmt__text { font-size: 19px; font-weight: 600; letter-spacing: -.3px; line-height: 1.34; color: var(--content-strong); }
.srez .q-ask { font-size: 13px; font-weight: 600; color: var(--content-subtle); margin: 22px 0 12px; text-align: center; }
.srez .q-scale5 { display: flex; gap: 8px; }
.srez .q-scale5 button { flex: 1 1 0; min-height: 62px; border: 0; cursor: pointer; font-family: var(--font); background: var(--card); border-radius: 15px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; box-shadow: inset 0 0 0 1.5px rgba(12,14,18,.08); transition: transform .12s ease, box-shadow .18s ease, background .15s; }
.srez .q-scale5 button:active { transform: scale(.95); }
.srez .q-scale5 .n { font-size: 20px; font-weight: 700; color: var(--content-strong); font-variant-numeric: tabular-nums; line-height: 1; }
.srez .q-scale5 .dot { width: 8px; height: 8px; border-radius: 50%; background: rgba(12,14,18,.16); transition: background .18s, transform .18s; }
.srez .q-scale5 button.sel { background: #1d020c; box-shadow: none; }
.srez .q-scale5 button.sel .n { color: #fff; }
.srez .q-scale5 button.sel .dot { background: #ff9ec4; transform: scale(1.25); }
.srez .q-scale5 button.flash { animation: srez-flash .26s ease; }
@keyframes srez-flash { 0% { transform: scale(1); } 45% { transform: scale(1.06); } 100% { transform: scale(1); } }
.srez .q-scale5-ends { display: flex; justify-content: space-between; margin-top: 11px; font-size: 12px; color: var(--content-subtle); line-height: 1.3; }
.srez .q-scale5-ends span { max-width: 44%; }
.srez .q-scale5-ends span:last-child { text-align: right; }

/* ---- «не относится» ---- */
.srez .q-na { margin-top: 16px; }
.srez .q-na button { width: 100%; border: 0; cursor: pointer; font-family: var(--font); font-size: 13.5px; font-weight: 600; color: var(--content-subtle); background: transparent; padding: 14px; min-height: 48px; border-radius: 12px; box-shadow: inset 0 0 0 1.5px rgba(12,14,18,.07); transition: box-shadow .18s, color .15s, background .15s; }
.srez .q-na button.sel { color: #1d020c; background: #f6eef3; box-shadow: inset 0 0 0 1px rgba(160,80,120,.18); }
.srez .q-na__hint { font-size: 12px; color: var(--content-subtle); text-align: center; margin-top: 9px; line-height: 1.4; }

/* ---- кнопки футера ---- */
.srez .ob-btn { width: 100%; height: 56px; border: 0; cursor: pointer; border-radius: 9999px; background: #1d020c; color: #fff; font-family: var(--font); font-size: 16px; font-weight: 600; letter-spacing: -.2px; transition: opacity .18s ease, transform .12s ease; }
.srez .ob-btn:active { transform: scale(.99); }
.srez .ob-btn.off { opacity: .45; pointer-events: none; }
.srez .q-btn-ghost { width: 100%; border: 0; cursor: pointer; font-family: var(--font); font-size: 15px; font-weight: 500; color: var(--content-subtle); background: transparent; padding: 15px; margin-top: 2px; }

/* ---- результат: hero + сводка ---- */
.srez .map-hero { text-align: center; padding: 2px 2px 0; }
.srez .map-hero__badge { display: inline-block; font-size: 12px; font-weight: 600; color: #c8377f; background: #fbe6f0; padding: 5px 12px; border-radius: 9999px; }
.srez .map-hero__t { font-size: 23px; font-weight: 700; letter-spacing: -.5px; margin-top: 14px; }
.srez .map-hero__s { font-size: 13.5px; color: var(--content-subtle); line-height: 1.5; margin-top: 8px; }
.srez .map-sum { display: flex; gap: 9px; margin: 18px 0 6px; }
.srez .map-sum__cell { flex: 1 1 0; background: #fff; border-radius: 16px; padding: 14px 10px; text-align: center; box-shadow: inset 0 0 0 1px rgba(12,14,18,.04); }
.srez .map-sum__big { font-size: 25px; font-weight: 700; letter-spacing: -.6px; line-height: 1; color: var(--content-strong); font-variant-numeric: tabular-nums; }
.srez .map-sum__big small { font-size: 12px; font-weight: 600; color: var(--content-subtle); }
.srez .map-sum__lbl { font-size: 11px; color: var(--content-subtle); margin-top: 6px; line-height: 1.3; }
.srez .map-meaning { font-size: 12.5px; color: var(--content-subtle); text-align: center; line-height: 1.45; margin: 6px 4px 0; }

/* ---- результат: секции бэндов ---- */
.srez .map-sec { margin-top: 18px; }
.srez .map-sec__head { display: flex; align-items: center; gap: 9px; margin: 0 2px 8px; }
.srez .map-sec__chip { font-size: 12px; font-weight: 700; padding: 4px 11px; border-radius: 9999px; }
.srez .map-sec__tail { font-size: 12px; color: var(--content-subtle); }
.srez .map-sec__cnt { margin-left: auto; font-size: 12px; font-weight: 600; color: var(--content-subtle); font-variant-numeric: tabular-nums; }
.srez .map-sec__blurb { font-size: 12px; color: var(--content-subtle); margin: 0 2px 10px; line-height: 1.4; }

/* ---- результат: карточка темы (5-точечный индикатор) ---- */
.srez .map-row { display: flex; align-items: center; gap: 12px; background: #fff; border-radius: 15px; padding: 13px 14px; margin-bottom: 8px; box-shadow: inset 0 0 0 1px rgba(12,14,18,.04); }
.srez .map-row__b { flex: 1 1 auto; min-width: 0; }
.srez .map-row__name { font-size: 14.5px; font-weight: 600; color: var(--content-strong); letter-spacing: -.2px; }
.srez .map-row__interp { font-size: 12px; color: var(--content-subtle); margin-top: 4px; line-height: 1.4; }
.srez .map-row__dots { display: flex; gap: 4px; flex: 0 0 auto; }
.srez .map-row__dots i { width: 9px; height: 9px; border-radius: 50%; background: rgba(12,14,18,.12); }
.srez .map-row__val { flex: 0 0 auto; width: 34px; text-align: right; font-size: 15px; font-weight: 700; color: var(--content-strong); font-variant-numeric: tabular-nums; }
.srez .map-row.na { opacity: .72; }
.srez .map-row.na .map-row__val { font-size: 11px; color: var(--content-subtle); font-weight: 600; width: auto; }

/* ---- результат: «Что дальше — в Пути» ---- */
.srez .map-next { margin-top: 20px; background: #fff; border-radius: 16px; padding: 15px 16px; box-shadow: inset 0 0 0 1px rgba(12,14,18,.04); }
.srez .map-next__h { font-size: 14px; font-weight: 700; color: var(--content-strong); }
.srez .map-next__s { font-size: 12.5px; color: var(--content-subtle); margin-top: 5px; line-height: 1.45; }
.srez .map-next__list { margin: 12px 0 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 10px; }
.srez .map-next__list li { display: flex; align-items: flex-start; gap: 11px; line-height: 1.35; }
.srez .map-next__wk { flex: 0 0 auto; min-width: 50px; height: 24px; padding: 0 9px; border-radius: 8px; background: #fbe6f0; color: #c8377f; font-size: 11px; font-weight: 700; display: grid; place-items: center; }
.srez .map-next__b { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.srez .map-next__b b { color: var(--content-strong); font-weight: 700; font-size: 13.5px; }
.srez .map-next__b span { font-size: 12.5px; color: rgba(12,14,18,.6); line-height: 1.35; }

@media (prefers-reduced-motion: reduce) {
  .srez .q-scale5 button.flash { animation: none; }
  .srez .q-rise { transition: none; opacity: 1; transform: none; }
}

/* ---- баннер-приглашение на Главной (розовая тема трекера, НЕ scoped под .srez) ---- */
.srez-banner { display: flex; align-items: center; gap: 12px; background: #fff; border: .5px solid var(--border-base); border-radius: 18px; padding: 11px 11px 11px 14px; box-shadow: 0 12px 30px rgba(20,4,12,.10), inset 0 0 0 1px rgba(12,14,18,.02); cursor: pointer; }
.srez-banner__ic { flex: 0 0 auto; width: 40px; height: 40px; border-radius: 11px; background: #fbe6f0; color: #c8377f; display: grid; place-items: center; }
.srez-banner__ic svg { width: 22px; height: 22px; }
.srez-banner__b { flex: 1; min-width: 0; }
.srez-banner__t { font-size: 14.5px; font-weight: 700; letter-spacing: -.2px; color: var(--content-strong); }
.srez-banner__s { font-size: 12px; color: var(--content-subtle); margin-top: 1px; }
.srez-banner__go { flex: 0 0 auto; border: 0; background: #ff9ec4; color: #3a0820; font-size: 13px; font-weight: 700; min-height: 40px; padding: 11px 16px; border-radius: 10px; cursor: pointer; transition: transform .12s ease; }
.srez-banner__go:active { transform: scale(.96); }
.srez-banner.done .srez-banner__ic { background: #e7f3d4; color: #5b8a1f; }
.srez-banner.done .srez-banner__go { background: #f6eef3; color: #1d020c; }

/* срез: тело-скролл растягивается, прилипший футер снизу (гасим .detail .scroll padding) */
#detail-srez .scroll { flex: 1 1 auto; min-height: 0; padding-bottom: 0; }

/* ===== Дневник питания: КБЖУ-итог + записи (FatSecret) ===== */
/* Донут «съедено/цель» с калоражем в центре + макро-бары (клетчатка отдельно). */
.kb-sum { padding: 16px 16px 14px; }
.kb-sum__top { display: flex; align-items: center; gap: 16px; }
.kb-ring { position: relative; flex: 0 0 auto; width: 116px; height: 116px; display: grid; place-items: center; }
.kb-donut { display: block; }
.kb-donut__c { position: absolute; inset: 0; z-index: 2; display: flex; flex-direction: column; align-items: center; justify-content: center; pointer-events: none; }
.kb-donut__c b { font-size: 27px; font-weight: 800; letter-spacing: -.6px; color: var(--content-strong); line-height: 1; }
.kb-donut__c span { font-size: 11.5px; color: var(--content-subtle); margin-top: 3px; }
.kb-sum__side { flex: 1; min-width: 0; }
.kb-sum__hl { font-size: 16px; font-weight: 700; letter-spacing: -.3px; color: var(--content-strong); line-height: 1.25; }
.kb-sum__goal { font-size: 12.5px; color: var(--content-subtle); margin-top: 6px; }
.kb-sum__eaten { font-size: 12.5px; color: var(--content-subtle); margin-top: 2px; }
.kb-macros { display: grid; grid-template-columns: 1fr 1fr; gap: 9px 14px; margin-top: 14px; }
.kb-macro__t { display: flex; align-items: baseline; justify-content: space-between; gap: 6px; }
.kb-macro__t span { font-size: 12.5px; color: var(--content-subtle); }
.kb-macro__t b { font-size: 13px; font-weight: 700; color: var(--content-strong); }
.kb-macro__t b i { font-style: normal; font-weight: 500; color: var(--content-subtle); font-size: 11.5px; }
.kb-macro__bar { height: 6px; border-radius: 100px; background: var(--tile); overflow: hidden; margin-top: 5px; }
.kb-macro__bar span { display: block; height: 100%; border-radius: 100px; transition: width .3s ease; }

/* строка структурированной записи (продукт + граммы → ккал) */
.fe-row { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; background: none; border: 0; padding: 10px 2px; border-top: .5px solid var(--border-base); cursor: pointer; font: inherit; }
.meal-items > .fe-row:first-child { border-top: 0; }
.fe-row__b { flex: 1; min-width: 0; }
.fe-row__n { display: block; font-size: 14px; font-weight: 600; color: var(--content-strong); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fe-row__m { display: block; font-size: 12px; color: var(--content-subtle); margin-top: 1px; }
.fe-row__k { flex: 0 0 auto; font-size: 14px; font-weight: 700; color: var(--content-strong); }
.fe-row__k i { font-style: normal; font-weight: 500; color: var(--content-subtle); font-size: 11px; margin-left: 3px; }
.fe-row:active { opacity: .6; }

/* лист выбора способа добавления (фото / поиск / вручную) */
.fa-choices { display: flex; flex-direction: column; gap: 8px; margin-top: 12px; }
.fa-choice { display: flex; align-items: center; gap: 12px; width: 100%; text-align: left; background: var(--card); border: .5px solid var(--border-base); border-radius: var(--r-inset); padding: 12px 12px; cursor: pointer; font: inherit; }
.fa-choice:active { transform: scale(.985); }
.fa-choice__ic { flex: 0 0 auto; width: 40px; height: 40px; border-radius: 11px; display: grid; place-items: center; }
.fa-choice__ic svg { width: 21px; height: 21px; }
.fa-choice__ic--a { background: #fbe6f0; color: #c8377f; }
.fa-choice__ic--b { background: #e7f3d4; color: #5b8a1f; }
.fa-choice__ic--c { background: #e8eefb; color: #3f6fd6; }
.fa-choice__b { flex: 1; min-width: 0; }
.fa-choice__b b { display: block; font-size: 14.5px; font-weight: 700; color: var(--content-strong); }
.fa-choice__b small { display: block; font-size: 12px; color: var(--content-subtle); margin-top: 1px; }
.fa-choice__chev { flex: 0 0 auto; color: var(--content-subtle); display: grid; place-items: center; }
.fa-choice__chev svg { width: 18px; height: 18px; }

/* карточка порции / правка записи: превью КБЖУ */
.pt-macros { margin-top: 12px; padding: 12px 14px; background: var(--tile); border-radius: var(--r-inset); }
.pt-k { font-size: 14px; color: var(--content-subtle); }
.pt-k b { font-size: 22px; font-weight: 800; letter-spacing: -.4px; color: var(--content-strong); margin-right: 4px; }
.pt-bd { font-size: 13px; color: var(--content-subtle); margin-top: 3px; }
.fe-del { display: block; width: 100%; margin-top: 8px; background: none; border: 0; padding: 12px; font: inherit; font-size: 14px; font-weight: 600; color: #e0483d; cursor: pointer; border-radius: var(--r-inset); }
.fe-del:active { background: rgba(224,72,61,.08); }

/* компактная карточка-вход в дневник на Главной */
.kb-home { display: flex; align-items: center; gap: 12px; background: var(--card); border: .5px solid var(--border-base); border-radius: var(--r-card); padding: 12px 14px; margin-bottom: 10px; cursor: pointer; box-shadow: 0 8px 24px rgba(20,4,12,.05); }
.kb-home:active { transform: scale(.99); }
.kb-home__l { flex: 1; min-width: 0; }
.kb-home__k { display: flex; align-items: baseline; gap: 6px; }
.kb-home__k b { font-size: 20px; font-weight: 800; letter-spacing: -.4px; color: var(--content-strong); line-height: 1; }
.kb-home__k span { font-size: 12px; color: var(--content-subtle); }
.kb-home__bar { height: 6px; border-radius: 100px; background: var(--tile); overflow: hidden; margin: 8px 0 5px; }
.kb-home__bar i { display: block; height: 100%; border-radius: 100px; transition: width .3s ease; }
.kb-home__sub { font-size: 12px; color: var(--content-subtle); }
.kb-home__go { flex: 0 0 auto; color: var(--content-subtle); display: grid; place-items: center; }
.kb-home__go svg { width: 20px; height: 20px; }

/* ===== Разбор коуча в дневнике: заключение дня + сниппет приёма ===== */
/* «Слово коуча»: тёплая карточка, похвала ведёт, примечания мягкие, ярлык позитивный. БЕЗ баллов. */
.cr-day { padding: 15px 16px; margin-bottom: 12px; background: linear-gradient(180deg, #fff, #fff6fb); border: .5px solid rgba(200,55,127,.14); }
.cr-day__head { display: flex; align-items: center; gap: 10px; }
.cr-day__ic { flex: 0 0 auto; width: 34px; height: 34px; border-radius: 10px; background: #fbe6f0; color: #c8377f; display: grid; place-items: center; }
.cr-day__ic svg { width: 19px; height: 19px; }
.cr-day__ttl { flex: 1; min-width: 0; }
.cr-day__ttl b { display: block; font-size: 14.5px; font-weight: 700; letter-spacing: -.2px; color: var(--content-strong); }
.cr-day__ttl small { display: block; font-size: 11.5px; color: var(--content-subtle); margin-top: 1px; }
.cr-chip { flex: 0 0 auto; font-size: 12px; font-weight: 700; color: #5b8a1f; background: #eef7dd; border-radius: 100px; padding: 5px 11px; }
.cr-praise { font-size: 14.5px; line-height: 1.5; color: var(--content-strong); margin-top: 11px; }
.cr-notes { margin-top: 12px; padding-top: 11px; border-top: .5px solid var(--border-base); }
.cr-notes__h { font-size: 12px; font-weight: 700; color: var(--content-subtle); text-transform: uppercase; letter-spacing: .3px; margin-bottom: 7px; }
.cr-note { display: flex; gap: 9px; align-items: flex-start; font-size: 13.5px; line-height: 1.45; color: var(--content-strong); padding: 3px 0; }
.cr-note__d { flex: 0 0 auto; width: 6px; height: 6px; border-radius: 50%; background: var(--positive); margin-top: 7px; }
/* сниппет разбора под фото-приёмом (одна строка, откроется полный при тапе на приём) */
.mealday.has-cr { align-items: flex-start; }
.cr-snippet { display: block; font-size: 12px; line-height: 1.35; color: #c8377f; margin-top: 3px; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }

/* ---- ИИ-флоу еды: подсказка «ИИ определит» + необязательная подпись ---- */
.mealnote__optlbl { font-size: 11px; color: var(--content-subtle); font-weight: 600; }
.mealai { display: flex; align-items: center; gap: 8px; font-size: 12.5px; font-weight: 500; color: #2e7d4f;
  background: rgba(163,213,70,.13); border-radius: 12px; padding: 10px 13px; margin: 4px 0 12px; line-height: 1.35; }
.mealai__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--positive); flex: none;
  box-shadow: 0 0 0 0 rgba(163,213,70,.6); animation: mealai-pulse 1.6s ease-out infinite; }
@keyframes mealai-pulse { 0% { box-shadow: 0 0 0 0 rgba(163,213,70,.55); } 70% { box-shadow: 0 0 0 7px rgba(163,213,70,0); } 100% { box-shadow: 0 0 0 0 rgba(163,213,70,0); } }

/* ---- Оверлей «Анализируем фото…» (Figma 618-15054) ---- */
.analyze { position: fixed; inset: 0; z-index: 3000; display: grid; place-items: center;
  background: radial-gradient(120% 80% at 50% 8%, #6f7d6a 0%, #cdd2cc 45%, #e9ebe8 100%);
  opacity: 0; transition: opacity .28s ease; -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
  padding: env(safe-area-inset-top) 0 0; }
.analyze.on { opacity: 1; }
.analyze__x { position: absolute; top: calc(env(safe-area-inset-top) + 14px); left: 16px; width: 40px; height: 40px;
  border-radius: 50%; border: 0; background: rgba(255,255,255,.82); color: #1c1c1e; font-size: 17px; cursor: pointer;
  display: grid; place-items: center; -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.analyze__body { display: flex; flex-direction: column; align-items: center; gap: 18px; transform: translateY(-6%); }
.analyze__t { font-size: 16px; font-weight: 600; color: #1c1c1e; letter-spacing: -.2px; }
.analyze__ph { position: relative; width: 232px; height: 232px; border-radius: 22px; overflow: hidden;
  background-size: cover; background-position: center; box-shadow: 0 24px 60px rgba(20,30,20,.28); }
.analyze__scan { position: absolute; top: 0; bottom: 0; width: 3px; left: 0;
  background: linear-gradient(180deg, transparent, #fff 12%, #fff 88%, transparent);
  box-shadow: 0 0 16px 3px rgba(255,255,255,.85); animation: analyze-scan 1.5s cubic-bezier(.6,0,.4,1) infinite; }
@keyframes analyze-scan { 0% { left: 4%; } 50% { left: 96%; } 100% { left: 4%; } }
.analyze__sub { font-size: 13px; color: rgba(28,28,30,.6); font-weight: 500; }

/* ---- Дневник калорий: сводка 1:1 с Figma 617-9626 (сегментный бар + 3 макро) ---- */
.kb2 { padding: 18px 18px 16px; }
.kb2__top { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.kb2__hl { line-height: 1; }
.kb2__hl b { font-size: 29px; font-weight: 700; letter-spacing: -1px; color: var(--content-strong); }
.kb2__hl span { font-size: 15px; font-weight: 500; color: var(--content-subtle); }
.kb2__edit { border: 0; background: var(--border-base); color: var(--content-strong); font-family: var(--font); font-size: 12.5px; font-weight: 600; padding: 7px 15px; border-radius: 100px; cursor: pointer; flex: none; }
.kb2__lbl { font-size: 13px; color: var(--content-subtle); font-weight: 500; margin-top: 4px; }
.kb2__ticks { display: flex; gap: 2px; margin: 13px 0 16px; align-items: center; }
.kb2__ticks i { flex: 1 1 0; height: 16px; border-radius: 2.5px; background: var(--border-base); transition: background .2s; }
.kb2__ticks i.on { background: var(--positive); }
.kb2__ticks i.over { background: var(--streak); }
.kb2__macros { display: grid; grid-template-columns: 1fr 1fr 1fr; }
.kb2-macro { position: relative; padding: 0 14px; }
.kb2-macro:first-child { padding-left: 0; }
.kb2-macro:last-child { padding-right: 0; }
.kb2-macro + .kb2-macro::before { content: ""; position: absolute; left: 0; top: 3px; bottom: 3px; width: 1px; background: var(--border-base); }
.kb2-macro__l { font-size: 12.5px; color: var(--content-subtle); font-weight: 500; }
.kb2-macro__v { font-size: 15px; font-weight: 700; color: var(--content-strong); margin: 3px 0 8px; letter-spacing: -.2px; }
.kb2-macro__v i { font-size: 12px; font-weight: 500; color: var(--content-subtle); font-style: normal; }
.kb2-macro__bar { height: 4px; border-radius: 3px; background: var(--border-base); overflow: hidden; }
.kb2-macro__bar span { display: block; height: 100%; border-radius: 3px; }

/* ---- Свайп-удаление блюда (Figma 618-15360): строка едет влево → красная корзина ---- */
.fe-swipe { position: relative; overflow: hidden; }
.meal-items > .fe-swipe:first-child .fe-row { border-top: 0; }
.fe-swipe .fe-row { position: relative; z-index: 1; background: #fff; will-change: transform; touch-action: pan-y; }
.fe-swipe__del { position: absolute; right: 6px; top: 50%; transform: translateY(-50%) scale(.72); width: 44px; height: 44px; border-radius: 50%; border: 0; background: #ff3b30; color: #fff; display: grid; place-items: center; cursor: pointer; opacity: 0; transition: opacity .16s ease, transform .16s cubic-bezier(.3,0,.3,1); }
.fe-swipe.open .fe-swipe__del { opacity: 1; transform: translateY(-50%) scale(1); }
.fe-swipe__del:active { background: #e02b21; }
.fe-swipe__del svg { width: 20px; height: 20px; }

/* ---- Экран 7 «Что на фото»: результат ИИ-анализа (мокап reforma-calories-tracker) ---- */
.rec-shot { position: relative; width: 100%; height: 210px; border-radius: 20px; margin: 6px 0 2px; overflow: hidden; background-size: cover; background-position: center; background-color: #e8e0d4; box-shadow: inset 0 0 0 1px var(--border-base); }
.rec-badge { position: absolute; left: 12px; top: 12px; display: inline-flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 600; color: #fff; background: rgba(12,4,10,.55); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); padding: 6px 11px; border-radius: 100px; }
.rec-badge svg { width: 13px; height: 13px; }
.rec-time { position: absolute; right: 12px; bottom: 12px; font-size: 12px; font-weight: 600; color: #fff; background: rgba(12,4,10,.5); padding: 5px 10px; border-radius: 100px; -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.grouplbl2 { margin: 18px 4px 8px; font-size: 12px; font-weight: 500; color: var(--content-subtle); }
.rec-card { display: flex; align-items: center; gap: 13px; padding: 16px; border-radius: 18px; background: linear-gradient(180deg,#fff6fb,#ffffff); box-shadow: 0 8px 24px rgba(20,4,12,.06), inset 0 0 0 1px rgba(29,2,12,.06); }
.rec-pend-dot { width: 36px; height: 36px; border-radius: 50%; flex: 0 0 auto; position: relative; background: radial-gradient(120% 120% at 30% 20%,#ffd7e8,#f0b8d0); }
.rec-pend-dot::after { content: ""; position: absolute; inset: 0; border-radius: 50%; box-shadow: 0 0 0 0 rgba(240,184,208,.6); animation: rec-pp 1.7s ease-out infinite; }
@keyframes rec-pp { to { box-shadow: 0 0 0 13px rgba(240,184,208,0); } }
.rec-pend-b { flex: 1 1 auto; min-width: 0; }
.rec-pend-t { font-size: 14px; font-weight: 600; }
.rec-pend-s { font-size: 12px; color: var(--content-subtle); margin-top: 2px; line-height: 1.4; }
.rec-hint { display: flex; align-items: flex-start; gap: 7px; margin: 12px 4px 0; font-size: 12px; color: var(--content-subtle); line-height: 1.4; }
.rec-hint svg { width: 14px; height: 14px; flex: 0 0 auto; color: #c8377f; margin-top: 1px; }
.rec-note { margin: 12px 4px 0; font-size: 13px; color: var(--content-strong); line-height: 1.45; background: #fff; border-radius: 14px; padding: 12px 14px; box-shadow: inset 0 0 0 1px var(--border-base); }
.rec-note b { color: var(--content-subtle); font-weight: 600; }
.mealsel2 { margin: 14px 0 0; display: flex; align-items: center; justify-content: space-between; background: #fff; border-radius: 16px; padding: 14px; box-shadow: inset 0 0 0 1px var(--border-base); position: relative; }
.mealsel2 .l { font-size: 14px; color: var(--content-subtle); }
.mealsel2 .r { display: flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 500; color: var(--content-strong); }
.mealsel2 .r svg { width: 18px; height: 18px; color: var(--content-subtle); }
.mealsel2 select { position: absolute; inset: 0; opacity: 0; width: 100%; border: 0; cursor: pointer; -webkit-appearance: none; appearance: none; }
/* Экран 15 · «Коуч смотрит тарелку…» в строке приёма */
.cr-pending { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--content-subtle); margin-top: 3px; }
.cr-pending__d { width: 7px; height: 7px; border-radius: 50%; background: #f0b8d0; flex: 0 0 auto; position: relative; }
.cr-pending__d::after { content: ""; position: absolute; inset: 0; border-radius: 50%; box-shadow: 0 0 0 0 rgba(240,184,208,.6); animation: rec-pp 1.7s ease-out infinite; }
/* Экран 7 · распознанные блюда + итог КБЖУ по фото */
.airlist { background: #fff; border-radius: 16px; padding: 2px 14px; box-shadow: inset 0 0 0 1px var(--border-base); }
.airow { display: flex; align-items: center; gap: 10px; padding: 12px 0; }
.airow + .airow { border-top: 1px solid var(--border-base); }
.airow__b { flex: 1 1 auto; min-width: 0; }
.airow__n { font-size: 14px; font-weight: 500; color: var(--content-strong); }
.airow__m { font-size: 12px; color: var(--content-subtle); margin-top: 1px; }
.airow__k { flex: 0 0 auto; font-size: 13px; font-weight: 600; color: var(--content-strong); }
.airow__del { flex: 0 0 auto; width: 28px; height: 28px; border-radius: 50%; background: #efeff0; border: 0; color: var(--content-subtle); font-size: 13px; cursor: pointer; display: grid; place-items: center; }
.rec-total { display: flex; align-items: center; gap: 18px; padding: 16px 18px; background: #fff; border-radius: 16px; box-shadow: inset 0 0 0 1px var(--border-base); }
.rec-total__k { flex: 0 0 auto; text-align: center; min-width: 66px; }
.rec-total__k b { display: block; font-size: 26px; font-weight: 700; letter-spacing: -.6px; color: var(--content-strong); }
.rec-total__k span { font-size: 11px; color: var(--content-subtle); }
.rec-total__leg { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 9px; }
.rec-leg { display: flex; align-items: center; gap: 9px; font-size: 13px; }
.rec-leg i { width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; }
.rec-leg em { font-style: normal; color: var(--content-subtle); }
.rec-leg b { margin-left: auto; font-weight: 600; color: var(--content-strong); }

/* ============================================================================
   ТРЕКЕР КАЛОРИЙ — стиль 1:1 с макетом ~/Downloads/reforma-calories-tracker.html
   (Figma 644-13360 / 644-13551). Порт дизайн-системы макета, ЗАскоуплен под
   `.trkscreen`, чтобы не конфликтовать с остальным app.css. Каждый экран еды
   (дневник, съёмка, «что на фото», разбор, цели, ручной ввод, история) рендерит
   разметку макета внутри <div class="trkscreen">. НЕ править вручную — генерится
   scope_css.py из макета. Токены макета живут на .trkscreen (не в :root).
   ============================================================================ */
.trkscreen{
  --bg-page:#f5f5f6;--bg-screen:#efeff0;--bg-elevated-1:#ffffff;--bg-elevated-2:#f4f4f5;
  --content-strong:#0c0e12;--content-subtle:rgba(12,14,18,0.4);--content-inverse:#ffffff;
  --brand-strong:#1d020c;--positive:#a3d546;--negative:#ff383c;
  --border-base:rgba(12,14,18,0.08);--gray-5:#e5e5ea;--carb:#ff8a34;
  --r-card:20px;--r-inset:16px;--r-btn:100px;
  --font:"Geist",-apple-system,BlinkMacSystemFont,"SF Pro Text","Helvetica Neue",Inter,system-ui,sans-serif;
  font-family:var(--font);color:var(--content-strong);-webkit-font-smoothing:antialiased;
  margin:0 -4px;/* контейнер детали = padding 20px → 16px как в макете */
}
.trkscreen *{box-sizing:border-box}
.trkscreen button{font-family:var(--font)}
/* CTA: в приложении у деталей свой футер — делаем кнопку обычной, во всю ширину */
.trkscreen .week{display:flex;gap:6px;justify-content:space-between}
.trkscreen .day{flex:1 1 0;min-width:0;background:var(--bg-screen);border-radius:var(--r-btn);padding:2px;text-align:center}
.trkscreen .day .dow{font-size:10px;font-weight:500;letter-spacing:-.2px;line-height:1.6;color:var(--content-strong);height:20px;display:flex;align-items:flex-end;justify-content:center}
.trkscreen .day .cell{position:relative;aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:2px 8px}
.trkscreen .day .num{font-size:14px;line-height:1;color:var(--content-strong)}
.trkscreen .day .dot{width:5px;height:5px;border-radius:50%;background:transparent}
.trkscreen .dot--amber{background:#ff9f43}
.trkscreen .dot--green{background:var(--positive)}
.trkscreen .day.is-muted .dow,.trkscreen .day.is-muted .num{color:var(--content-subtle)}
.trkscreen .day.is-active{background:var(--brand-strong)}
.trkscreen .day.is-active .dow{color:var(--content-inverse)}
.trkscreen .day.is-active .disc{width:34px;height:34px;border-radius:50%;background:#fff;display:grid;place-items:center;margin-top:2px}
.trkscreen .day.is-active .num{color:var(--content-strong);font-weight:500}
.trkscreen .card{background:var(--bg-elevated-1);border-radius:var(--r-card);box-shadow:0 8px 22px rgba(20,4,12,.05),inset 0 0 0 1px rgba(12,14,18,.03)}
.trkscreen .goals{margin-top:8px;padding:16px;display:flex;flex-direction:column;gap:16px}
.trkscreen .goals__head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.trkscreen .goals__kcal{display:flex;align-items:baseline;gap:4px}
.trkscreen .goals__kcal b{font-size:20px;font-weight:500;line-height:24px;letter-spacing:-.2px}
.trkscreen .goals__kcal span{font-size:14px;color:var(--content-subtle)}
.trkscreen .goals__sub{margin-top:2px;font-size:12px;line-height:16px;color:var(--content-subtle)}
.trkscreen .goals__sub em{font-style:normal;color:var(--content-strong)}
.trkscreen .edit{height:28px;padding:0 12px;border:0;border-radius:var(--r-btn);background:rgba(0,0,0,.08);
    font-family:var(--font);font-size:10px;font-weight:500;letter-spacing:-.2px;color:var(--content-strong);cursor:pointer;white-space:nowrap}
.trkscreen .kbar{display:flex;gap:4px;height:16px;align-items:stretch}
.trkscreen .kbar i{flex:1 1 0;border-radius:9999px;background:var(--border-base)}
.trkscreen .kbar i.on{background:var(--positive)}
.trkscreen .macros{display:flex;align-items:stretch;position:relative}
.trkscreen .macro{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:5px;padding:0 12px}
.trkscreen .macro:first-child{padding-left:0}
.trkscreen .macro:last-child{padding-right:0}
.trkscreen .macro+.macro{border-left:1px solid var(--border-base)}
.trkscreen .macro .lbl{font-size:10px;letter-spacing:-.2px;color:var(--content-strong)}
.trkscreen .macro .val{font-size:12px;font-weight:500;letter-spacing:-.24px;line-height:1.6}
.trkscreen .macro .val u{font-style:normal;text-decoration:none;color:var(--content-subtle);font-size:10px}
.trkscreen .macro .spark{height:3px;width:72px;max-width:100%;border-radius:9999px;background:var(--border-base);overflow:hidden}
.trkscreen .macro .spark i{display:block;height:100%;border-radius:9999px}
.trkscreen .sec-title{padding:12px 0 0;font-size:14px;font-weight:500;line-height:22px;color:var(--content-strong)}
.trkscreen .meal{margin-top:12px;padding:4px;background:var(--bg-elevated-1);border-radius:var(--r-card);overflow:hidden}
.trkscreen .meal__head{display:flex;align-items:center;gap:12px;padding:4px 8px;border-radius:var(--r-card)}
.trkscreen .meal__ic{width:44px;height:44px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;font-size:22px;
    background:radial-gradient(120% 120% at 30% 20%,#fbe6cf,#eaad74);box-shadow:inset 0 0 0 1px rgba(12,14,18,.05)}
.trkscreen .meal__b{flex:1 1 auto;min-width:0}
.trkscreen .meal__name{font-size:14px;font-weight:500;line-height:22px;color:var(--content-strong)}
.trkscreen .meal__kcal{font-size:12px;line-height:16px;color:var(--content-subtle)}
.trkscreen .add{width:44px;height:44px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;cursor:pointer;
    background:rgba(255,255,255,.6);border:1px solid var(--border-base);color:var(--content-strong)}
.trkscreen .add svg{width:20px;height:20px}
.trkscreen .items{background:var(--bg-elevated-1)}
.trkscreen .item{display:flex;align-items:center;gap:8px;padding:15px 12px;position:relative}
.trkscreen .item+.item .in,.trkscreen .item.has-border .in{border-top:1px solid var(--border-base)}
.trkscreen .item .in{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:8px;padding:1px 0}
.trkscreen .item__name{flex:1 1 0;min-width:0;font-size:14px;line-height:22px;color:var(--content-strong)}
.trkscreen .item__kcal{flex:0 0 auto;font-size:14px;line-height:22px;color:var(--content-subtle);text-align:right;padding-right:12px}
.trkscreen .item .caret{flex:0 0 auto;width:20px;height:20px;color:var(--content-subtle)}
.trkscreen .item .caret svg{width:20px;height:20px}
.trkscreen .item--swiped{padding:0 0 0 12px}
.trkscreen .item--swiped .swipe-inner{flex:1 1 auto;display:flex;align-items:center;gap:8px;background:var(--gray-5);border-radius:100px;
    padding:12px 16px;transform:translateX(-2px)}
.trkscreen .item--swiped .in{border-top:0}
.trkscreen .trash{flex:0 0 auto;width:50px;height:50px;margin:0 12px 0 10px;border-radius:50%;background:var(--negative);
    display:grid;place-items:center;color:#fff;box-shadow:0 8px 18px rgba(255,56,60,.35);cursor:pointer}
.trkscreen .trash svg{width:24px;height:24px}
.trkscreen .search{margin-top:8px;display:flex;align-items:center;gap:9px;background:#fff;border-radius:var(--r-inset);padding:12px 14px;box-shadow:inset 0 0 0 1px var(--border-base)}
.trkscreen .search svg{width:18px;height:18px;color:var(--content-subtle);flex:0 0 auto}
.trkscreen .search input{border:0;outline:0;flex:1 1 auto;min-width:0;font-family:var(--font);font-size:14px;color:var(--content-strong);background:transparent}
.trkscreen .search input::placeholder{color:var(--content-subtle)}
.trkscreen .chips{display:flex;gap:6px;overflow-x:auto;margin-top:12px;padding-bottom:2px}
.trkscreen .chips::-webkit-scrollbar{display:none}
.trkscreen .chip{flex:0 0 auto;height:30px;padding:0 13px;border-radius:100px;background:rgba(0,0,0,.06);display:inline-flex;align-items:center;
    font-size:12px;font-weight:500;letter-spacing:-.2px;color:var(--content-strong);cursor:pointer;border:0;white-space:nowrap}
.trkscreen .chip.is-on{background:var(--brand-strong);color:#fff}
.trkscreen .grouplbl{margin:18px 4px 8px;font-size:12px;font-weight:500;color:var(--content-subtle)}
.trkscreen .flist{padding:2px 4px;background:#fff;border-radius:var(--r-card)}
.trkscreen .fitem{display:flex;align-items:center;gap:12px;padding:11px 8px}
.trkscreen .fitem+.fitem{border-top:1px solid var(--border-base)}
.trkscreen .fitem__b{flex:1 1 auto;min-width:0}
.trkscreen .fitem__n{font-size:14px;font-weight:500;color:var(--content-strong)}
.trkscreen .fitem__m{margin-top:1px;font-size:12px;color:var(--content-subtle)}
.trkscreen .fitem__k{flex:0 0 auto;font-size:13px;font-weight:500;color:var(--content-strong)}
.trkscreen .addsm{width:32px;height:32px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;background:var(--bg-screen);color:var(--content-strong);border:0;cursor:pointer}
.trkscreen .addsm svg{width:18px;height:18px}
.trkscreen .pcard{margin-top:8px;padding:20px 16px;display:flex;flex-direction:column;align-items:center;gap:5px;text-align:center}
.trkscreen .pcard .kc{font-size:36px;font-weight:600;letter-spacing:-1.2px;line-height:1}
.trkscreen .pcard .kc u{font-style:normal;text-decoration:none;font-size:15px;color:var(--content-subtle);font-weight:500}
.trkscreen .pcard .nm{font-size:13px;color:var(--content-subtle)}
.trkscreen .amount{margin-top:12px;display:flex;align-items:center;justify-content:space-between;background:#fff;border-radius:var(--r-inset);padding:11px 14px;box-shadow:inset 0 0 0 1px var(--border-base)}
.trkscreen .amount .lb{font-size:14px;color:var(--content-strong)}
.trkscreen .stepper{display:flex;align-items:center;gap:12px}
.trkscreen .stepper button{width:30px;height:30px;border-radius:50%;border:0;background:var(--bg-screen);display:grid;place-items:center;cursor:pointer;color:var(--content-strong)}
.trkscreen .stepper button svg{width:16px;height:16px}
.trkscreen .stepper .amt{font-size:15px;font-weight:600;min-width:58px;text-align:center}
.trkscreen .qchips{display:flex;gap:6px;margin-top:8px}
.trkscreen .qchip{flex:1 1 0;height:34px;border-radius:100px;background:rgba(0,0,0,.06);border:0;font-family:var(--font);font-size:12px;font-weight:500;color:var(--content-strong);cursor:pointer}
.trkscreen .qchip.is-on{background:var(--brand-strong);color:#fff}
.trkscreen .mealsel{margin-top:12px;display:flex;align-items:center;justify-content:space-between;background:#fff;border-radius:var(--r-inset);padding:14px;box-shadow:inset 0 0 0 1px var(--border-base)}
.trkscreen .mealsel .l{font-size:14px;color:var(--content-subtle)}
.trkscreen .mealsel .r{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:500;color:var(--content-strong)}
.trkscreen .mealsel .r svg{width:18px;height:18px;color:var(--content-subtle)}
.trkscreen .cta{position:absolute;left:16px;right:16px;bottom:30px;height:52px;border:0;border-radius:100px;background:var(--brand-strong);color:#fff;
    font-family:var(--font);font-size:15px;font-weight:600;letter-spacing:-.2px;cursor:pointer;box-shadow:0 12px 26px rgba(20,4,12,.30);z-index:15}
.trkscreen .coachx{margin-top:12px;padding:15px}
.trkscreen .coachx__h{display:flex;align-items:center;gap:10px}
.trkscreen .coachx__av{width:34px;height:34px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;font-size:13px;font-weight:700;color:#3a0a18;background:radial-gradient(120% 120% at 30% 20%,#ffd7e8,#f0b8d0)}
.trkscreen .coachx__nm{font-size:13px;font-weight:700;line-height:1.15}
.trkscreen .coachx__nm em{display:block;font-style:normal;font-size:11px;font-weight:500;color:var(--content-subtle);margin-top:2px}
.trkscreen .coachx__time{margin-left:auto;font-size:11px;color:var(--content-subtle)}
.trkscreen .coachx__body{margin-top:11px;font-size:13.5px;line-height:1.5;color:#241a1f}
.trkscreen .coachx__body b{font-weight:700}
.trkscreen .vchip{display:inline-flex;align-items:center;gap:5px;margin-top:12px;font-size:11px;font-weight:600;padding:5px 10px;border-radius:100px}
.trkscreen .vchip svg{width:12px;height:12px}
.trkscreen .vc-ok{background:#eaf6d4;color:#5b7d1f}
.trkscreen .vc-tune{background:#ffe9e1;color:#c85a34}
.trkscreen .mnote{display:flex;align-items:center;gap:9px;padding:11px 8px 7px;margin-top:4px;border-top:1px solid var(--border-base)}
.trkscreen .mnote__av{width:24px;height:24px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;font-size:10px;font-weight:700;color:#3a0a18;background:radial-gradient(120% 120% at 30% 20%,#ffd7e8,#f0b8d0)}
.trkscreen .mnote__t{flex:1 1 auto;min-width:0;font-size:12.5px;line-height:1.38;color:#4a3c43;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.trkscreen .mnote__chev{flex:0 0 auto;color:rgba(12,14,18,.3);display:grid;place-items:center}
.trkscreen .mnote__chev svg{width:16px;height:16px}
.trkscreen .scrim{position:absolute;inset:0;background:rgba(12,4,10,.4);z-index:30}
.trkscreen .sheet{position:absolute;left:0;right:0;bottom:0;z-index:31;background:#fff;border-radius:28px 28px 0 0;padding:8px 16px 26px;box-shadow:0 -12px 40px rgba(20,4,12,.22)}
.trkscreen .grab{width:36px;height:5px;border-radius:100px;background:#d8d9dd;margin:6px auto 10px}
.trkscreen .sheet h3{margin:4px 4px 14px;font-size:18px;font-weight:600;letter-spacing:-.4px}
.trkscreen .opt{display:flex;align-items:center;gap:13px;padding:12px;border-radius:var(--r-inset);background:var(--bg-page);cursor:pointer}
.trkscreen .opt+.opt{margin-top:8px}
.trkscreen .opt__ic{width:46px;height:46px;border-radius:14px;flex:0 0 auto;display:grid;place-items:center;color:#fff}
.trkscreen .opt__ic svg{width:24px;height:24px}
.trkscreen .opt__b{flex:1 1 auto;min-width:0}
.trkscreen .opt__t{font-size:15px;font-weight:600}
.trkscreen .opt__s{font-size:12px;color:var(--content-subtle);margin-top:2px;line-height:1.35}
.trkscreen .opt__chev{flex:0 0 auto;color:rgba(12,14,18,.3)}
.trkscreen .opt__chev svg{width:20px;height:20px}
.trkscreen .shot{margin-top:8px;width:100%;height:200px;border-radius:var(--r-card);position:relative;overflow:hidden;display:grid;place-items:center;font-size:76px;
    background:radial-gradient(130% 130% at 30% 15%,#fbe6cf,#e19a63);box-shadow:inset 0 0 0 1px rgba(12,14,18,.05)}
.trkscreen .aibadge{position:absolute;left:12px;top:12px;display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;color:#fff;background:rgba(12,4,10,.55);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:6px 11px;border-radius:100px}
.trkscreen .aibadge svg{width:13px;height:13px}
.trkscreen .airow{display:flex;align-items:center;gap:10px;padding:12px 8px}
.trkscreen .airow+.airow{border-top:1px solid var(--border-base)}
.trkscreen .airow__b{flex:1 1 auto;min-width:0}
.trkscreen .airow__n{font-size:14px;font-weight:500}
.trkscreen .airow__m{font-size:12px;color:var(--content-subtle);margin-top:1px}
.trkscreen .airow__k{flex:0 0 auto;font-size:13px;font-weight:500}
.trkscreen .airow__ed{flex:0 0 auto;width:30px;height:30px;border-radius:50%;background:var(--bg-screen);display:grid;place-items:center;color:var(--content-subtle);border:0;cursor:pointer}
.trkscreen .airow__ed svg{width:15px;height:15px}
.trkscreen .aiadd{display:flex;align-items:center;gap:8px;padding:12px 8px;border-top:1px solid var(--border-base);color:var(--content-subtle);font-size:13px;cursor:pointer}
.trkscreen .aiadd svg{width:18px;height:18px}
.trkscreen .aitotal{display:flex;align-items:center;justify-content:space-between;margin-top:12px;padding:14px;background:#fff;border-radius:var(--r-inset);box-shadow:inset 0 0 0 1px var(--border-base)}
.trkscreen .aitotal .tl{font-size:13px;color:var(--content-subtle)}
.trkscreen .aitotal .tr{font-size:14px;font-weight:600}
.trkscreen .aihint{display:flex;align-items:flex-start;gap:7px;margin:12px 4px 0;font-size:12px;color:var(--content-subtle);line-height:1.4}
.trkscreen .aihint svg{width:14px;height:14px;flex:0 0 auto;color:#c8377f;margin-top:1px}
/* Экран уточнений (ИИ переспрашивает): карточка вопроса + чипы-варианты (radio) */
.trkscreen .qcard{margin-top:12px;background:#fff;border-radius:var(--r-inset,16px);padding:14px;box-shadow:inset 0 0 0 1px var(--border-base)}
.trkscreen .qcard__q{font-size:14px;font-weight:500;color:var(--content-strong);margin-bottom:11px;line-height:1.35}
.trkscreen .qcard__opts{display:flex;flex-wrap:wrap;gap:8px}
.trkscreen .qchip{appearance:none;border:0;cursor:pointer;font-family:var(--font);font-size:13px;color:var(--content-strong);background:var(--bg-elevated-2,#f4f4f5);box-shadow:inset 0 0 0 1px var(--border-base);border-radius:100px;padding:9px 15px;transition:background .12s,color .12s,box-shadow .12s}
/* Уточнения могут содержать сгенерированные ИИ длинные варианты. Сбрасываем
   фиксированные flex/height общих быстрых qchip: карточка растёт по тексту,
   а на узком экране варианты переносятся на следующую строку. */
.trkscreen .qcard__opts>.qchip{flex:1 1 140px;min-width:140px;max-width:100%;height:auto;min-height:38px;padding:9px 12px;display:flex;align-items:center;justify-content:center;text-align:center;white-space:normal;line-height:1.25;overflow-wrap:anywhere}
.trkscreen .qchip.on{background:var(--brand-strong,#1d020c);color:#fff;box-shadow:none}
/* Плашка «Учтено» на Экране 7 — ответы клиента приняты в расчёт */
.trkscreen .qdone{display:flex;align-items:flex-start;gap:8px;margin:12px 4px 0;padding:11px 13px;font-size:12.5px;line-height:1.4;color:#2f6b1e;background:rgba(163,213,70,.16);border-radius:12px}
.trkscreen .qdone svg{width:15px;height:15px;flex:0 0 auto;color:#4c9a2a;margin-top:1px}
.trkscreen .mrings{display:flex;gap:4px;width:100%}
.trkscreen .mring{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:7px}
.trkscreen .mring__d{position:relative;width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--c,#a3d546) calc(var(--p,50)*1%),#edeef1 0)}
.trkscreen .mring__d::after{content:"";position:absolute;inset:5px;border-radius:50%;background:#fff}
.trkscreen .mring__d span{position:relative;z-index:1;font-size:13px;font-weight:600;letter-spacing:-.3px}
.trkscreen .mring__l{font-size:11px;font-weight:500;color:var(--content-strong);line-height:1}
.trkscreen .mring__t{font-size:10px;color:var(--content-subtle);line-height:1}
.trkscreen .mstats{display:flex;gap:8px}
.trkscreen .mstat{flex:1 1 0;min-width:0;background:var(--bg-page);border-radius:14px;padding:10px 4px;text-align:center;box-shadow:inset 0 0 0 1px var(--border-base)}
.trkscreen .mstat .v{font-size:15px;font-weight:600;letter-spacing:-.3px}
.trkscreen .mstat .l{font-size:10px;color:var(--content-subtle);margin-top:3px;display:inline-flex;align-items:center;gap:4px;justify-content:center}
.trkscreen .mstat .l i{width:6px;height:6px;border-radius:50%;flex:0 0 auto}
.trkscreen .capphoto{margin-top:8px;position:relative;width:100%;height:300px;border-radius:var(--r-card);overflow:hidden;display:grid;place-items:center;
    background:linear-gradient(157deg,#c9b7a4 0%,#efe4d3 44%,#8d7b6b 100%);box-shadow:inset 0 0 0 1px rgba(12,14,18,.05)}
.trkscreen .capphoto .cam{color:rgba(255,255,255,.5)}
.trkscreen .capphoto .cam svg{width:52px;height:52px}
.trkscreen .reshoot{position:absolute;right:14px;top:14px;display:inline-flex;align-items:center;gap:7px;border:0;cursor:pointer;color:#fff;font-family:var(--font);
    font-size:14px;font-weight:600;padding:9px 15px;border-radius:100px;background:rgba(60,44,36,.72);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.trkscreen .reshoot svg{width:17px;height:17px}
.trkscreen .capmeal{position:absolute;left:16px;bottom:15px;display:inline-flex;align-items:center;gap:6px;color:#fff;font-size:22px;font-weight:700;letter-spacing:-.4px;text-shadow:0 1px 10px rgba(0,0,0,.4);cursor:pointer}
.trkscreen .capmeal svg{width:20px;height:20px;opacity:.9}
.trkscreen .captime{position:absolute;right:16px;bottom:17px;display:inline-flex;align-items:center;gap:7px;color:#fff;font-size:17px;font-weight:600;
    text-shadow:0 1px 10px rgba(0,0,0,.4);border-bottom:1.5px solid rgba(255,255,255,.75);padding-bottom:2px;cursor:pointer}
.trkscreen .captime svg{width:16px;height:16px}
.trkscreen .thumbs{display:flex;gap:8px;margin-top:10px}
.trkscreen .thumb{width:62px;height:62px;border-radius:14px;flex:0 0 auto;display:grid;place-items:center;font-size:28px;
    background:linear-gradient(135deg,#fde9d2,#f0c79b);box-shadow:inset 0 0 0 1px rgba(12,14,18,.06)}
.trkscreen .thumb.on{box-shadow:inset 0 0 0 2px var(--brand-strong)}
.trkscreen .thumb-add{width:62px;height:62px;border-radius:14px;flex:0 0 auto;display:grid;place-items:center;color:var(--content-subtle);border:0;cursor:pointer;
    background:#fff;box-shadow:inset 0 0 0 1.5px rgba(12,14,18,.14)}
.trkscreen .thumb-add svg{width:24px;height:24px}
.trkscreen .cfield{margin-top:12px;display:flex;align-items:flex-start;gap:10px;background:#fff;border-radius:var(--r-inset);padding:14px;box-shadow:inset 0 0 0 1px var(--border-base)}
.trkscreen .cfield svg{width:18px;height:18px;color:var(--content-subtle);flex:0 0 auto;margin-top:1px}
.trkscreen .cfield .ph{font-size:14px;color:var(--content-subtle)}
.trkscreen .coachx{background:linear-gradient(180deg,#fff6fb,#ffffff);padding:16px}
.trkscreen .score{position:relative;width:54px;height:54px;flex:0 0 auto;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--sc,#a3d546) calc(var(--s,70)*1%),#edeef1 0)}
.trkscreen .score::after{content:"";position:absolute;inset:4px;border-radius:50%;background:#fff}
.trkscreen .score b{position:relative;z-index:1;font-size:16px;font-weight:700;letter-spacing:-.5px;color:var(--content-strong)}
.trkscreen .coachx__foot{display:flex;align-items:center;justify-content:space-between;margin-top:13px}
.trkscreen .mbar{display:flex;gap:3px;height:12px;border-radius:100px;overflow:hidden;margin:2px 0 14px}
.trkscreen .mbar i{height:100%}
.trkscreen .mleg{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 16px}
.trkscreen .mleg span{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--content-subtle)}
.trkscreen .mleg span i{width:8px;height:8px;border-radius:50%;flex:0 0 auto}
.trkscreen .mleg span b{color:var(--content-strong);font-weight:600}
.trkscreen .stars{display:inline-flex;gap:2px}
.trkscreen .stars svg{width:17px;height:17px}
.trkscreen .ratecap{font-size:10px;font-weight:600;letter-spacing:.3px;color:var(--content-subtle);margin-top:3px}
.trkscreen .mnote__b{flex:1 1 auto;min-width:0}
.trkscreen .mnote__b .stars{margin-bottom:3px}
.trkscreen .mnote__b .stars svg{width:13px;height:13px}
.trkscreen .pchip{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:5px 11px;border-radius:100px;background:#eaf6d4;color:#5b7d1f;flex:0 0 auto}
/* «Можно ровнее» — мягко-оранжевый (честный сигнал без тревоги; не красный) */
.trkscreen .pchip.warn{background:#fdeeda;color:#9a5b00}
.trkscreen .pchip svg{width:12px;height:12px}
.trkscreen .praise{margin-top:12px;font-size:14.5px;font-weight:500;line-height:1.5;color:#241a1f}
.trkscreen .praise b{font-weight:700}
.trkscreen .notes{margin-top:13px;border-top:1px solid rgba(29,2,12,.07);padding-top:12px}
.trkscreen .notes__l{font-size:11px;font-weight:600;letter-spacing:.3px;text-transform:uppercase;color:var(--content-subtle);margin-bottom:9px}
.trkscreen .note{display:flex;gap:9px;align-items:flex-start;font-size:13px;line-height:1.45;color:#4a3c43}
.trkscreen .note+.note{margin-top:9px}
.trkscreen .note i{flex:0 0 auto;width:6px;height:6px;border-radius:50%;background:#e0a24a;margin-top:7px}
.trkscreen .streak{display:flex;align-items:center;gap:12px;margin-top:15px;padding-top:14px;border-top:1px solid rgba(29,2,12,.08)}
.trkscreen .streak__fire{font-size:22px;flex:0 0 auto;line-height:1}
.trkscreen .streak__b{flex:1 1 auto;min-width:0}
.trkscreen .streak__t{font-size:13px;font-weight:700;color:var(--content-strong)}
.trkscreen .streak__s{font-size:11.5px;color:var(--content-subtle);margin-top:1px}
.trkscreen .streak__dots{display:flex;gap:5px;flex:0 0 auto}
.trkscreen .streak__dots i{width:9px;height:9px;border-radius:50%;background:rgba(12,14,18,.12)}
.trkscreen .streak__dots i.on{background:#ff6f46}
.trkscreen .streak__top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.trkscreen .cal-mhead{display:flex;align-items:center;justify-content:space-between;margin-top:10px;padding:0 4px 16px}
.trkscreen .cal-mhead h3{margin:0;font-size:19px;font-weight:600;letter-spacing:-.4px}
.trkscreen .cal-nav{display:flex;gap:8px}
.trkscreen .cal-nav button{width:34px;height:34px;border-radius:50%;border:0;background:var(--bg-screen);display:grid;place-items:center;cursor:pointer;color:var(--content-strong)}
.trkscreen .cal-nav button svg{width:18px;height:18px}
.trkscreen .cal-wd{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:8px}
.trkscreen .cal-wd span{text-align:center;font-size:11px;font-weight:600;color:var(--content-subtle)}
.trkscreen .cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.trkscreen .cal-day{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border-radius:14px;font-size:15px;font-weight:500;color:var(--content-strong);cursor:pointer;padding-top:2px}
.trkscreen .cal-day .cdot{width:5px;height:5px;border-radius:50%;background:transparent}
.trkscreen .cal-day.logged .cdot{background:#a3d546}
.trkscreen .cal-day.today{background:var(--brand-strong);color:#fff}
.trkscreen .cal-day.today .cdot{background:#fff}
.trkscreen .cal-day.future{color:var(--content-subtle)}
.trkscreen .cal-day.empty{visibility:hidden}
.trkscreen .cal-hint{display:flex;align-items:center;gap:8px;margin-top:18px;font-size:12px;color:var(--content-subtle);line-height:1.4}
.trkscreen .cal-hint i{width:7px;height:7px;border-radius:50%;background:#a3d546;flex:0 0 auto}
.trkscreen .field{margin-top:10px;background:#fff;border-radius:var(--r-inset);padding:13px 15px;box-shadow:inset 0 0 0 1px var(--border-base)}
.trkscreen .field__l{font-size:11px;font-weight:600;color:var(--content-subtle);letter-spacing:.3px;text-transform:uppercase;margin-bottom:6px}
.trkscreen .field__v{font-size:16px;color:var(--content-strong)}
.trkscreen .field__v.ph{color:var(--content-subtle)}
.trkscreen .frow{margin-top:10px;display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fff;border-radius:var(--r-inset);padding:14px 15px;box-shadow:inset 0 0 0 1px var(--border-base)}
.trkscreen .frow__l{font-size:14px;color:var(--content-strong);display:flex;align-items:center;gap:9px}
.trkscreen .frow__l i{width:10px;height:10px;border-radius:50%;flex:0 0 auto}
.trkscreen .frow__r{display:flex;align-items:baseline;gap:5px}
.trkscreen .frow__r b{font-size:16px;font-weight:600;color:var(--content-strong)}
.trkscreen .frow__r em{font-style:normal;font-size:12.5px;color:var(--content-subtle)}
.trkscreen .frow__r.ph b{color:var(--content-subtle);font-weight:400}
.trkscreen .per100{margin-top:12px;padding:12px 14px;border-radius:14px;background:rgba(153,160,174,.12);font-size:12.5px;color:var(--content-subtle);line-height:1.5}
.trkscreen .per100 b{color:var(--content-strong);font-weight:600}
.trkscreen .fnote{margin:14px 4px 0;font-size:12px;color:var(--content-subtle);line-height:1.45}
.trkscreen .goalcard{margin-top:8px;padding:16px 18px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.trkscreen .goalcard .l{font-size:12px;color:var(--content-subtle)}
.trkscreen .goalcard .v{font-size:30px;font-weight:700;letter-spacing:-1px;margin-top:2px}
.trkscreen .goalcard .v span{font-size:15px;font-weight:500;color:var(--content-subtle);letter-spacing:0}
.trkscreen .dangerbtn{width:100%;margin-top:12px;border:0;border-radius:100px;padding:14px;background:#ffe9ea;color:var(--negative);font-family:var(--font);font-size:14.5px;font-weight:600;cursor:pointer}
.trkscreen .pending{display:flex;align-items:center;gap:13px;padding:16px;border-radius:var(--r-card);background:linear-gradient(180deg,#fff6fb,#ffffff);box-shadow:0 8px 24px rgba(20,4,12,.06),inset 0 0 0 1px rgba(29,2,12,.06)}
.trkscreen .pending__p{width:36px;height:36px;border-radius:50%;flex:0 0 auto;position:relative;background:radial-gradient(120% 120% at 30% 20%,#ffd7e8,#f0b8d0)}
.trkscreen .pending__p::after{content:"";position:absolute;inset:0;border-radius:50%;box-shadow:0 0 0 0 rgba(240,184,208,.6);animation:pp 1.7s ease-out infinite}
@keyframes pp{to{box-shadow:0 0 0 13px rgba(240,184,208,0)}}
.trkscreen .pending__b{flex:1 1 auto;min-width:0}
.trkscreen .pending__t{font-size:14px;font-weight:600}
.trkscreen .pending__s{font-size:12px;color:var(--content-subtle);margin-top:2px;line-height:1.4}
.trkscreen .greet{display:flex;align-items:center;gap:13px;margin-bottom:18px}
.trkscreen .greet__t h1{margin:0;font-size:21px;font-weight:600;letter-spacing:-.5px}
.trkscreen .greet__t p{margin:2px 0 0;font-size:12px;color:var(--content-subtle)}
.trkscreen .qlhead{display:flex;align-items:center;justify-content:space-between;padding:10px 4px 6px}
.trkscreen .qlhead b{font-size:15px;font-weight:600}
.trkscreen .qlhead span{font-size:12px;color:var(--content-subtle)}
.trkscreen .qrow{display:flex;align-items:center;gap:12px;padding:12px 4px}
.trkscreen .qrow+.qrow{border-top:1px solid var(--border-base)}
.trkscreen .qrow__ic{width:28px;height:28px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center}
.trkscreen .qrow__ic svg{width:15px;height:15px}
.trkscreen .qrow__ic.done{background:#eaf6d4;color:#5b7d1f}
.trkscreen .qrow__ic.todo{background:var(--bg-screen);color:var(--content-subtle)}
.trkscreen .qrow__b{flex:1 1 auto;min-width:0}
.trkscreen .qrow__n{font-size:14px;font-weight:500}
.trkscreen .qrow__s{font-size:12px;color:var(--content-subtle);margin-top:1px}
.trkscreen .qrow__s em{font-style:normal;color:#5b7d1f;font-weight:600}
.trkscreen .qrow__chev{flex:0 0 auto;color:rgba(12,14,18,.28)}
.trkscreen .qrow__chev svg{width:18px;height:18px}
.trkscreen .ktotal{display:flex;align-items:center;gap:18px;padding:16px 18px}
.trkscreen .kdonut{width:100px;height:100px;flex:0 0 auto;border-radius:50%;position:relative;
    background:conic-gradient(#a3d546 0 var(--a,33%),#ffb020 var(--a,33%) var(--b,66%),#5aa0f2 var(--b,66%) 100%)}
.trkscreen .kdonut::after{content:"";position:absolute;inset:11px;border-radius:50%;background:#fff}
.trkscreen .kdonut__c{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}
.trkscreen .kdonut__c b{font-size:22px;font-weight:700;letter-spacing:-.6px}
.trkscreen .kdonut__c span{font-size:10.5px;color:var(--content-subtle);margin-top:3px}
.trkscreen .klegend{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:11px}
.trkscreen .kleg{display:flex;align-items:center;gap:9px;font-size:13px}
.trkscreen .kleg i{width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.trkscreen .kleg em{font-style:normal;color:var(--content-subtle)}
.trkscreen .kleg b{margin-left:auto;font-weight:600;letter-spacing:-.2px}
.trkscreen .kdlet{display:none}
.trkscreen .kdlet b{position:absolute;transform:translate(-50%,-50%);font-size:13px;font-weight:800;color:#fff;text-shadow:0 1px 2px rgba(20,4,12,.35)}
.trkscreen .kt2{padding:16px}
.trkscreen .kdonut2{position:relative;width:180px;height:180px;margin:4px auto 0}
.trkscreen .kdonut2 .ring{position:absolute;top:20px;left:20px;width:140px;height:140px;border-radius:50%;background:conic-gradient(#a3d546 0 var(--a),#ffb020 var(--a) var(--b),#5aa0f2 var(--b) 100%)}
.trkscreen .kdonut2 .ring::after{content:"";position:absolute;inset:19px;border-radius:50%;background:#fff}
.trkscreen .kdonut2 .c{position:absolute;top:20px;left:20px;width:140px;height:140px;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1;z-index:2}
.trkscreen .kdonut2 .c b{font-size:22px;font-weight:700;letter-spacing:-.6px}
.trkscreen .kdonut2 .c span{font-size:10px;color:var(--content-subtle);margin-top:3px}
.trkscreen .kdlbl{position:absolute;top:90px;left:90px;width:0;height:0;z-index:3;transform:rotate(var(--t)) translate(80px) rotate(calc(-1 * var(--t)))}
.trkscreen .kdlbl b{position:absolute;transform:translate(-50%,-50%);white-space:nowrap;text-align:center;font-size:12.5px;font-weight:700;letter-spacing:-.3px}
.trkscreen .kdlbl b small{display:block;font-size:9.5px;font-weight:700;letter-spacing:.2px;margin-bottom:1px}
.trkscreen .kfiber{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:8px;padding-top:13px;border-top:1px solid var(--border-base);font-size:12.5px;color:var(--content-subtle)}
.trkscreen .kfiber i{width:8px;height:8px;border-radius:50%;background:#34c08a;flex:0 0 auto}
.trkscreen .kfiber b{color:var(--content-strong);font-weight:600}
.trkscreen .cta{position:static;left:auto;right:auto;bottom:auto;width:100%;margin-top:8px}

/* --- трекер: интерактивные надстройки поверх порта макета (свайп/оверлеи) --- */
.trkscreen .item-sw{position:relative;overflow:hidden;border-radius:0;background:transparent}
.trkscreen .item-sw__row{position:relative;z-index:1;width:100%;background:var(--bg-elevated-1);border:0;cursor:pointer;text-align:left;transition:transform .2s cubic-bezier(.3,0,.3,1);will-change:transform}
.trkscreen .item-sw__row .item__name{text-align:left}
.trkscreen .item-sw+.item-sw .item-sw__row{border-top:1px solid var(--border-base)}
/* корзина = чистый КРУГ по центру открытой зоны справа (без квадратного фона/тени) */
.trkscreen .item-sw__trash{position:absolute;right:9px;top:50%;transform:translateY(-50%) scale(.55);z-index:0;width:40px;height:40px;border-radius:50%;background:var(--negative);color:#fff;border:0;padding:0;-webkit-appearance:none;appearance:none;display:grid;place-items:center;opacity:0;transition:opacity .16s,transform .16s;cursor:pointer}
.trkscreen .item-sw__trash svg{width:20px;height:20px;display:block}
.trkscreen .item-sw.open .item-sw__row{transform:translateX(-56px)}
.trkscreen .item-sw.open .item-sw__trash{opacity:1;transform:translateY(-50%) scale(1)}
.trkscreen button.mnote{width:100%;background:transparent;border:0;text-align:left;cursor:pointer}
.trkscreen .mnote__av--pulse{background:radial-gradient(120% 120% at 30% 20%,#ffd7e8,#f0b8d0);position:relative}
.trkscreen .mnote__av--pulse::after{content:"";position:absolute;inset:0;border-radius:50%;box-shadow:0 0 0 0 rgba(240,184,208,.6);animation:pp 1.7s ease-out infinite}
/* Экран 6 · съёмка: реальные фото + оверлеи выбора приёма/времени */
.trkscreen .capphoto.has-photo{background:#141414}
.trkscreen .capphoto .cam svg{width:52px;height:52px}
.trkscreen .capmeal select,.trkscreen .captime input{position:absolute;inset:0;width:100%;height:100%;opacity:0;border:0;cursor:pointer}
.trkscreen .thumb{position:relative;overflow:hidden;background-size:cover;background-position:center}
.trkscreen .thumb__x{position:absolute;top:2px;right:2px;width:18px;height:18px;border-radius:50%;border:0;background:rgba(12,4,10,.62);color:#fff;font-size:11px;line-height:1;cursor:pointer;display:grid;place-items:center}
.trkscreen .cfield textarea{flex:1 1 auto;min-width:0;border:0;outline:0;resize:none;background:transparent;font-family:var(--font);font-size:14px;color:var(--content-strong);line-height:1.4;max-height:120px}
.trkscreen .cfield textarea::placeholder{color:var(--content-subtle)}
/* Экран 7 · что на фото: select приёма поверх .mealsel .r; удаление строки */
.trkscreen .mealsel .r{position:relative}
.trkscreen .mealsel select{position:absolute;inset:0;width:100%;height:100%;opacity:0;border:0;cursor:pointer}
.trkscreen .airow__del{flex:0 0 auto;width:30px;height:30px;border-radius:50%;background:#ffe9ea;color:var(--negative);border:0;display:grid;place-items:center;cursor:pointer;font-size:15px;line-height:1}
/* трекер: редактируемые поля в карточке блюда (12) и ручном вводе (14) */
.trkscreen .field input{width:100%;border:0;outline:0;background:transparent;font-family:var(--font);font-size:16px;color:var(--content-strong);margin-top:2px}
.trkscreen .field input::placeholder{color:var(--content-subtle)}
.trkscreen .frow-inp{width:70px;text-align:right;border:0;outline:0;background:transparent;font-family:var(--font);font-size:16px;font-weight:600;color:var(--content-strong)}
.trkscreen .frow-inp::placeholder{color:var(--content-subtle);font-weight:400}
/* приём: галочка «заполнено» + кликабельный заголовок */
.trkscreen .meal__head--tap{width:100%;text-align:left;background:transparent;border:0;cursor:pointer;font-family:var(--font)}
.trkscreen .meal__done{width:44px;height:44px;flex:0 0 auto;display:grid;place-items:center;border-radius:50%;background:#eaf6d4;color:#5b7d1f}
.trkscreen .meal__done svg{width:20px;height:20px}
/* «Пропустить» на оверлее ИИ-распознавания (глобальный оверлей, не .trkscreen) */
/* оверлей анализа — СВЕТЛЫЙ, поэтому кнопка тёмная и заметная (была бела-на-белом = невидима) */
.analyze__skip{margin-top:24px;border:0;background:#1d020c;color:#fff;font-family:"Geist",-apple-system,BlinkMacSystemFont,sans-serif;font-size:15px;font-weight:700;padding:14px 26px;border-radius:100px;cursor:pointer;box-shadow:0 10px 26px rgba(20,4,12,.30)}
.analyze__skip:active{transform:scale(.97)}
/* «Найти в базе» строка в форме ручного ввода */
.trkscreen .v-linkrow{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin:2px 0 10px;padding:11px;border:0;border-radius:var(--r-inset);background:var(--bg-elevated-2);color:var(--content-strong);font-family:var(--font);font-size:13px;font-weight:600;cursor:pointer}
.trkscreen .v-linkrow:active{background:var(--gray-5)}
/* разбор приёма — отдельный экран: оверлей «Изменить фото» + серая «Добавить ещё» + анимация анализа */
.trkscreen .shot-edit{position:absolute;top:12px;right:12px;display:inline-flex;align-items:center;gap:6px;border:0;cursor:pointer;color:#fff;font-family:var(--font);font-size:13px;font-weight:600;padding:8px 13px;border-radius:100px;background:rgba(60,44,36,.72);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.trkscreen .shot-edit svg{width:15px;height:15px}
.mv-addbtn{width:100%;padding:16px;border:0;border-radius:100px;background:#e5e5ea;color:#0c0e12;font-family:"Geist",-apple-system,BlinkMacSystemFont,sans-serif;font-size:15px;font-weight:600;cursor:pointer}
.mv-addbtn:active{background:#dadadf}
/* Экран приёма — геометрия по ТЗ: «Добавить ещё» закреплена в футере; «Удалить приём
   целиком» СТАТИЧНАЯ в потоке, но высота страницы подогнана так, что конец скролла =
   она ровно над «Добавить ещё» (без пустого хвоста). Короткий контент — распорка
   .mv-grow опускает её в ту же позицию: пара кнопок внизу экрана в обоих случаях.
   ВАЖНО: прошлая версия не работала из-за процентной min-height у ребёнка без
   definite height родителя — теперь flex-цепочка (.scroll с высотой → #v-mealview
   min-height:100% → .mv-fill flex:1 → .mv-grow flex:1). */
#detail-mealview .scroll{padding-bottom:0}
#v-mealview{min-height:100%;box-sizing:border-box;display:flex;flex-direction:column}
#v-mealview>.trkscreen.mv-fill{display:flex;flex-direction:column;flex:1 1 auto;width:100%}
.trkscreen .mv-grow{flex:1 1 0;min-height:0}
.trkscreen .analyzing-card{position:relative;overflow:hidden;margin-top:2px;padding:18px 16px;border-radius:var(--r-card);background:linear-gradient(180deg,#f4faec,#fff);box-shadow:inset 0 0 0 1px rgba(12,14,18,.05)}
.trkscreen .analyzing-card__scan{position:absolute;top:0;bottom:0;left:0;width:45%;background:linear-gradient(90deg,transparent,rgba(163,213,70,.28),transparent);animation:scanx 1.3s ease-in-out infinite}
@keyframes scanx{0%{transform:translateX(-110%)}100%{transform:translateX(320%)}}
.trkscreen .analyzing-card__t{position:relative;font-size:14px;font-weight:700;color:var(--content-strong)}
.trkscreen .analyzing-card__s{position:relative;font-size:12px;color:var(--content-subtle);margin-top:3px;line-height:1.4}
/* ТОП-анимация анализа: ЯРКИЙ сканер-баннер (карточка дневника + экран приёма) + скан по фото + скелетон блюд */
.trkscreen .mscan{position:relative;overflow:hidden;width:100%;display:flex;align-items:center;gap:11px;margin:6px 0 2px;padding:15px 16px 17px;border:0;cursor:pointer;border-radius:16px;background:linear-gradient(135deg,#dff3b0,#f3fbe4 58%,#e6f5cf);box-shadow:inset 0 0 0 1px rgba(140,190,50,.55),0 8px 20px -10px rgba(120,170,40,.6)}
.trkscreen .mscan__shine{position:absolute;inset:0;background:linear-gradient(105deg,transparent 24%,rgba(255,255,255,.78) 47%,rgba(163,213,70,.4) 54%,transparent 78%);transform:translateX(-120%);animation:mshine 1.15s linear infinite}
@keyframes mshine{to{transform:translateX(120%)}}
.trkscreen .mscan::after{content:"";position:absolute;left:0;bottom:0;height:3px;width:38%;background:linear-gradient(90deg,transparent,#7fb52e,#b6ec5a,transparent);border-radius:3px;animation:mbar 1.2s ease-in-out infinite}
@keyframes mbar{0%{transform:translateX(-60%)}100%{transform:translateX(320%)}}
.trkscreen .mscan__spark{position:relative;flex:0 0 auto;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#89c220;color:#1c2a06;box-shadow:0 0 0 0 rgba(137,194,32,.55);animation:mspark 1.4s ease-in-out infinite}
.trkscreen .mscan__spark svg{width:17px;height:17px}
@keyframes mspark{0%{transform:scale(1) rotate(0);box-shadow:0 0 0 0 rgba(137,194,32,.55)}50%{transform:scale(1.14) rotate(15deg);box-shadow:0 0 0 9px rgba(137,194,32,0)}100%{transform:scale(1) rotate(0);box-shadow:0 0 0 0 rgba(137,194,32,0)}}
.trkscreen .mscan__t{position:relative;flex:1 1 auto;text-align:left;font-size:14.5px;font-weight:800;color:#35500f;letter-spacing:-.1px}
.trkscreen .mscan__dots{position:relative;display:inline-flex;gap:3px;margin-left:2px;vertical-align:middle}
.trkscreen .mscan__dots i{width:5px;height:5px;border-radius:50%;background:#4f6f1a;opacity:.3;animation:mdot 1.1s infinite}
.trkscreen .mscan__dots i:nth-child(2){animation-delay:.16s}
.trkscreen .mscan__dots i:nth-child(3){animation-delay:.32s}
@keyframes mdot{0%,60%,100%{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}
/* скелетон будущих блюд — shimmer, пока идёт распознавание */
.trkscreen .mskel{display:flex;flex-direction:column;gap:8px;margin-top:9px}
.trkscreen .mskel__row{height:54px;border-radius:14px;background:linear-gradient(90deg,#eef0ea 8%,#dfe4d8 20%,#eef0ea 33%);background-size:800px 100%;animation:mskel 1.2s linear infinite}
.trkscreen .mskel__row:nth-child(2){animation-delay:.3s;opacity:.72}
@keyframes mskel{0%{background-position:-360px 0}100%{background-position:360px 0}}
/* сканирующая линия по фото — ЯРКАЯ, со свечением; фото притемняется, чтобы линия читалась */
.trkscreen .shot--scan::before{content:"";position:absolute;inset:0;background:rgba(10,18,3,.3);pointer-events:none;z-index:1}
.trkscreen .shot--scan::after{content:"";position:absolute;left:0;right:0;height:44%;top:-44%;z-index:2;background:linear-gradient(180deg,transparent,rgba(163,213,70,.35),rgba(190,240,90,.95),rgba(255,255,255,.9),rgba(190,240,90,.95),rgba(163,213,70,.35),transparent);box-shadow:0 0 28px 7px rgba(163,213,70,.6);animation:shotscan 1.5s ease-in-out infinite;pointer-events:none}
@keyframes shotscan{0%{top:-44%}100%{top:100%}}
/* ЧЕСТНОСТЬ БЕЗ JS (зомби-вебвью Telegram: JS заморожен, а CSS-анимация крутится вечно
   и врёт «анализирую»). Живой анализ решается за 3-10с; если баннер на экране дольше
   25с — что-то заморожено: гасим анимацию (~30с) и чисто CSS-ом (animation-delay,
   работает даже с мёртвым JS) проявляем честную подсказку. */
.trkscreen .mscan__shine{animation-iteration-count:26}
.trkscreen .mscan__spark{animation-iteration-count:21}
.trkscreen .mscan__dots i{animation-iteration-count:27}
.trkscreen .shot--scan::after{animation-iteration-count:20}
.trkscreen .mscan-stale{display:block;max-height:0;opacity:0;overflow:hidden;margin:0;font-size:12.5px;line-height:1.45;color:#5b6470;text-align:center;animation:mstale .4s ease-out 25s forwards}
@keyframes mstale{to{max-height:64px;opacity:1;margin-top:8px}}
.trkscreen .shot--scan .aibadge,.trkscreen .shot--scan .shot-edit{z-index:3}
/* «живой» бейдж на фото во время анализа */
.trkscreen .aibadge--live{display:inline-flex;align-items:center;gap:5px;background:rgba(18,28,5,.74);color:#cdf07a;font-weight:800}
.trkscreen .aibadge--live svg{width:13px;height:13px;animation:mspark 1.4s ease-in-out infinite}
/* мини-полоска всех фото приёма (обложка + добавленные) — кликабельные миниатюры */
.trkscreen .mshots{display:flex;gap:7px;margin-top:8px;flex-wrap:wrap}
.trkscreen .mshots__t{width:52px;height:52px;border:0;padding:0;border-radius:11px;background-size:cover;background-position:center;box-shadow:inset 0 0 0 1px rgba(12,14,18,.08);cursor:pointer}
.trkscreen .mshots__t.is-on{box-shadow:0 0 0 2px #a3d546}
.trkscreen .mshots__t:active{transform:scale(.96)}
/* скрим снизу фото под выпадающий приём/время (белый текст читается на светлом фото) */
.trkscreen .shot-scrim{position:absolute;left:0;right:0;bottom:0;height:44%;background:linear-gradient(0deg,rgba(0,0,0,.55),rgba(0,0,0,.14) 55%,transparent);pointer-events:none;z-index:1}
.trkscreen .shot .capmeal,.trkscreen .shot .captime{z-index:2}

/* ==========================================================
   «Цель месяца» — блок на главной вместо «Дисциплины».
   Две шкалы во всю ширину карточки: вес тиками и время месяца.
   Подписи стоят под своей шкалой, поэтому легенда не нужна.
   ========================================================== */
.gm { padding: 16px 14px; --gm-acc: #a6d84e; --gm-ink: #5c7a15; }
.gm--am { --gm-acc: #f6b43f; --gm-ink: #986012; }
.gm--nu { --gm-acc: rgba(12,14,18,.2); --gm-ink: rgba(12,14,18,.5); }
.gm-head { display: flex; align-items: baseline; justify-content: space-between; }
.gm-l { font-size: 16px; font-weight: 600; letter-spacing: -.2px; }
.gm-to { font-size: 11.5px; font-weight: 500; color: rgba(12,14,18,.4); }

.gm-zlab, .gm-ztip, .gm-ztip2 { position: relative; }
.gm-zlab { height: 21px; margin-top: 15px; }
.gm-ztip, .gm-ztip2 { height: 9px; }
.gm-lab { position: absolute; top: 0; left: 0; white-space: nowrap; font-size: 15px; font-weight: 600;
  letter-spacing: -.2px; font-variant-numeric: tabular-nums; color: var(--gm-ink); line-height: 21px;
  transition: left .85s cubic-bezier(.22,1,.36,1); }
.gm-lab s { text-decoration: none; font-size: 9.5px; font-weight: 600; color: rgba(12,14,18,.38); margin-left: 3px; }
.gm-lab em { font-style: normal; font-size: 12.5px; font-weight: 600; color: rgba(12,14,18,.42); }
.gm-lab2 { position: absolute; top: 0; left: 0; white-space: nowrap; font-size: 10.5px; font-weight: 700;
  color: rgba(12,14,18,.72); line-height: 16px; transition: left .85s cubic-bezier(.22,1,.36,1); }
.gm-tip { position: absolute; bottom: 1px; left: 0; width: 0; height: 0;
  border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 7px solid var(--gm-ink);
  transition: left .85s cubic-bezier(.22,1,.36,1); }
.gm-tip2 { position: absolute; top: 1px; left: 0; width: 0; height: 0;
  border-left: 5px solid transparent; border-right: 5px solid transparent; border-bottom: 7px solid rgba(12,14,18,.36);
  transition: left .85s cubic-bezier(.22,1,.36,1); }
.gm .gm-lab em ~ * { display: none; }
.gm:not(.run) .gm-tip { opacity: 0; }

.gm-wbar { display: flex; gap: 2px; height: 26px; }
.gm-wbar i { flex: 1 1 0; height: 26px; border-radius: 2px; background: rgba(12,14,18,.09);
  transition: background .38s ease; }
.gm.run .gm-wbar i.on { background: var(--gm-acc); }
.gm-tbar { position: relative; height: 11px; border-radius: 100px; background: rgba(12,14,18,.10);
  overflow: hidden; margin-top: 13px; }
.gm-tbar > i { display: block; height: 100%; width: 0; border-radius: 100px; background: rgba(12,14,18,.36);
  transition: width .85s .1s cubic-bezier(.22,1,.36,1); }
.gm.run .gm-tbar > i { width: var(--tw); }
.gm-tbar u { position: absolute; top: 2.5px; bottom: 2.5px; width: 1.5px; border-radius: 1px;
  transform: translateX(-50%); z-index: 2; }

.gm-ends { position: relative; display: flex; justify-content: space-between; margin-top: 7px; height: 16px; }
.gm-ends span { font-size: 11px; font-weight: 600; color: rgba(12,14,18,.6); line-height: 16px;
  font-variant-numeric: tabular-nums; transition: opacity .25s; }
.gm-ends span i { font-style: normal; font-weight: 500; color: rgba(12,14,18,.38); }
.gm-ends--d span { font-size: 10.5px; color: rgba(12,14,18,.45); }
.gm-ends span.hide { opacity: 0; }

.gm-v { margin-top: 14px; display: flex; align-items: center; gap: 7px; font-size: 13.5px; font-weight: 600;
  color: var(--gm-ink); opacity: 0; transform: translateY(5px); }
.gm.run .gm-v { opacity: 1; transform: none;
  transition: opacity .45s .7s, transform .45s .7s cubic-bezier(.2,1,.36,1); }
.gm-v svg { width: 16px; height: 16px; stroke-width: 2.5; flex: 0 0 auto; display: block; fill: none; }
.gm-v .gm-mut { color: rgba(12,14,18,.45); font-weight: 500; }
.gm-note { margin-top: 8px; font-size: 12px; line-height: 1.45; color: rgba(12,14,18,.5); }

/* «Ваши цели» на экране «Прогресс»: три горизонта и динамика месяца */
.gcard { padding: 16px 14px; }
.gcard .mini-h { margin-bottom: 12px; display: block; }
.gcard-row { display: grid; grid-template-columns: 104px 1fr 82px; gap: 10px; align-items: center;
  padding: 10px 0; border-bottom: 1px solid var(--border-base); }
.gcard-row:last-of-type { border-bottom: 0; padding-bottom: 0; }
.gcard-k b { display: block; font-size: 13px; font-weight: 600; letter-spacing: -.1px; }
.gcard-k span { display: block; margin-top: 2px; font-size: 10.5px; color: rgba(12,14,18,.4); }
.gcard-bar { position: relative; height: 8px; border-radius: 100px; background: var(--tile); }
.gcard-bar i { display: block; height: 100%; border-radius: 100px; background: var(--positive); }
.gcard-bar i.mid { background: rgba(12,14,18,.42); }
.gcard-bar i.far { background: rgba(12,14,18,.22); }
.gcard-bar u { position: absolute; top: -3px; bottom: -3px; width: 2px; border-radius: 1px;
  background: rgba(12,14,18,.45); transform: translateX(-50%); }
.gcard-v { text-align: right; }
.gcard-v b { display: block; font-size: 14px; font-weight: 700; letter-spacing: -.2px;
  font-variant-numeric: tabular-nums; }
.gcard-v span { display: block; margin-top: 2px; font-size: 10.5px; color: rgba(12,14,18,.4); }
.gcard-note { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--border-base);
  font-size: 12px; line-height: 1.45; color: rgba(12,14,18,.5); }

/* ============ Серия после первой записи к коучу (Лиана vs коуч · старт месяца) ============ */
.fbk{position:absolute;inset:0;z-index:75;display:none;flex-direction:column;
  background:radial-gradient(135% 68% at 50% -6%,#ffd9ec 0%,#fbe6f0 34%,#fdf3f8 66%,var(--neutral-bg) 100%)}
.fbk.on{display:flex}
.fbk__bars{display:flex;gap:6px;padding:calc(14px + var(--safe-top)) 24px 0}
.fbk__bars i{flex:1;height:4px;border-radius:3px;background:rgba(29,2,12,.12);overflow:hidden}
.fbk__bars i b{display:block;height:100%;width:0;background:#c8377f;border-radius:3px}
.fbk__stage{position:relative;flex:1 1 auto;min-height:0}
.fbk__p{position:absolute;inset:0;padding:22px 24px 0;display:none;flex-direction:column;opacity:0;transform:translateY(10px);transition:opacity .45s ease,transform .45s ease;overflow-y:auto}
.fbk__p.on{display:flex;opacity:1;transform:none}
.fbk__k{font-size:12px;letter-spacing:.09em;text-transform:uppercase;color:#a3286a;font-weight:700}
.fbk__h{font-size:27px;line-height:1.14;font-weight:800;letter-spacing:-.03em;margin:10px 0 0;color:var(--brand-strong)}
.fbk__sub{font-size:15px;color:rgba(12,14,18,.55);margin:13px 0 0;line-height:1.5}
.fbk__sub b{color:var(--content-strong);font-weight:700}
.fbk__foot{padding:14px 24px calc(18px + env(safe-area-inset-bottom))}
.fbk__cta{width:100%;border:0;border-radius:9999px;height:56px;background:var(--brand-strong);color:#fff;font-family:var(--font);font-size:16px;font-weight:600;cursor:pointer;box-shadow:0 12px 30px rgba(29,2,12,.28)}
.fbk__cta:active{transform:scale(.985)}
.fbk__center{align-items:center;text-align:center}
.fbk__sp{flex:1 1 auto;min-height:12px}
.fbk__burst{width:108px;height:108px;border-radius:50%;background:linear-gradient(150deg,#e8478f,#c8377f);display:grid;place-items:center;margin:26px auto 12px;position:relative;box-shadow:0 22px 52px -6px rgba(200,55,127,.5);animation:fbkpop .55s cubic-bezier(.34,1.56,.64,1) both}
.fbk__burst svg{width:52px;height:52px;position:relative;z-index:2}
.fbk__burst .rg{position:absolute;inset:0;border-radius:50%;border:2px solid #e8478f}
.fbk__p.on .fbk__burst .rg{animation:fbkring .9s ease forwards}
.fbk__p.on .fbk__burst .rg.d{animation:fbkring .9s .2s ease forwards}
@keyframes fbkpop{0%{transform:scale(.35);opacity:0}100%{transform:scale(1);opacity:1}}
@keyframes fbkring{0%{transform:scale(.6);opacity:.8}100%{transform:scale(1.42);opacity:0}}
.fbk-chk{stroke-dasharray:46;stroke-dashoffset:46}.fbk__p.on .fbk-chk{animation:fbkchk .55s .28s ease forwards}
@keyframes fbkchk{to{stroke-dashoffset:0}}
.fbk .stcard{opacity:0;transform:translateY(12px)}
.fbk__p.on .stcard{animation:fbkcard .55s .16s cubic-bezier(.22,1,.36,1) forwards}
.fbk__p.on .stcard.d2{animation-delay:.28s}
@keyframes fbkcard{to{opacity:1;transform:none}}
.fbk .meet-hero,.fbk .founder{overflow:visible;position:relative;cursor:default}
.fbk-num{position:absolute;top:-9px;left:-7px;width:26px;height:26px;border-radius:50%;background:#fff;color:var(--brand-strong);font-size:12px;font-weight:800;display:grid;place-items:center;box-shadow:0 4px 12px rgba(20,4,12,.18);z-index:3}
.fbk-num.pink{background:#c8377f;color:#fff}
.fbk-seq{text-align:center;font-size:12px;font-weight:600;color:rgba(12,14,18,.4);margin:9px 0}
.fbk-fdate{display:inline-block;font-size:10px;font-weight:600;color:#fff;background:rgba(255,255,255,.16);padding:1.5px 8px;border-radius:100px;margin-left:6px;vertical-align:middle}
.fbk-mcard{position:relative;overflow:hidden;border-radius:26px;padding:24px 22px 22px;color:#fff;margin-top:22px;background:linear-gradient(142deg,#2b1420 0%,#3c2032 50%,var(--brand-strong) 100%);box-shadow:0 28px 56px -16px rgba(29,2,12,.6);opacity:0;transform:translateY(14px) scale(.985)}
.fbk__p.on .fbk-mcard{animation:fbkmc .6s .18s cubic-bezier(.22,1,.36,1) forwards}
@keyframes fbkmc{to{opacity:1;transform:none}}
.fbk-mcard__glow{position:absolute;top:-70px;right:-46px;width:220px;height:220px;border-radius:50%;background:radial-gradient(closest-side,rgba(232,71,143,.55),transparent);pointer-events:none}
.fbk-mcard__k{position:relative;font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:#f6a8cd;font-weight:700}
.fbk-mcard__row{position:relative;display:flex;align-items:flex-end;gap:16px;margin-top:14px}
.fbk-mcard__lbl{font-size:10.5px;color:rgba(255,255,255,.5);font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.fbk-mcard__date{font-size:25px;font-weight:800;letter-spacing:-.02em;line-height:1.05;margin-top:3px}
.fbk-mcard__arr{font-size:22px;color:rgba(255,255,255,.42);padding-bottom:3px}
.fbk-mcard__bar{position:relative;height:7px;border-radius:100px;background:rgba(255,255,255,.16);margin:18px 0 13px;overflow:hidden}
.fbk-mcard__bar i{position:absolute;left:0;top:0;height:100%;width:0;border-radius:100px;background:linear-gradient(90deg,#e8478f,#ffc5dc);box-shadow:0 0 14px rgba(255,197,220,.6)}
.fbk__p.on .fbk-mcard__bar i{animation:fbkbar 1.15s .4s cubic-bezier(.4,0,.2,1) forwards}
@keyframes fbkbar{to{width:100%}}
.fbk-mcard__meta{position:relative;font-size:12.5px;color:rgba(255,255,255,.66);line-height:1.5}
.fbk-mcard__meta b{color:#ffd0e4;font-weight:700}
/* пояс: бейдж + полоса-подсказка (Блок 1) */
.tzpill{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;color:#9a2f66;background:#f3e3ec;padding:3px 9px;border-radius:100px;vertical-align:middle}
.tzstrip{display:flex;align-items:center;gap:8px;background:#f3e3ec;color:#9a2f66;font-size:12.5px;font-weight:600;border-radius:13px;padding:10px 12px;margin:0 0 12px;line-height:1.35}
.tzstrip svg{width:15px;height:15px;flex:none}
@media (prefers-reduced-motion:reduce){.fbk *{animation:none!important;transition:none!important}}

/* ==========================================================
   Еженедельный срез самочувствия («Больше энергии»)
   ========================================================== */
/* Баннер-кнопка на главной — в один рост с .invb / .zmr: те же отступы, размер
   заголовка и отклик на тап (было .card-div без :active и без фокуса) */
.wk-banner { display: flex; align-items: center; gap: 13px; width: 100%; text-align: left;
  border: 0; font-family: var(--font); color: var(--content-strong);
  padding: 14px 15px; cursor: pointer; transition: transform .12s ease; }
.wk-banner:active { transform: scale(.99); }
.wk-banner__ic { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 14px;
  background: rgba(255,111,70,.12); color: var(--streak); flex: 0 0 auto; }
.wk-banner__ic svg { width: 22px; height: 22px; }
.wk-banner__b { flex: 1 1 auto; min-width: 0; }
.wk-banner__t { font-size: 16px; font-weight: 600; letter-spacing: -.3px; }
.wk-banner__s { font-size: 12px; color: var(--content-subtle); margin-top: 3px; line-height: 1.4; }
.wk-banner__go { color: rgba(12,14,18,.26); flex: 0 0 auto; display: grid; place-items: center; }
.wk-banner__go svg { width: 18px; height: 18px; }

/* Опрос — самостоятельный экран, а не content-height модалка поверх приложения. */
body.wk-is-open { overflow: hidden; }
.wk-overlay { position: fixed; inset: 0; z-index: 90; display: none; overflow: hidden;
  background: linear-gradient(180deg, #fff9fd 0%, #fff5fb 58%, #f8eaf2 100%);
  overscroll-behavior: contain; }
.wk-overlay.open { display: block; animation: wkfade .22s ease-out; }
.wk-wrap { position: absolute; inset: 0; overflow: hidden; display: flex; justify-content: center; }
.wk-card { position: relative; isolation: isolate; width: 100%; max-width: 480px; height: 100%; min-height: 100%;
  padding: max(16px, calc(var(--safe-top) + 6px)) 18px max(16px, env(safe-area-inset-bottom));
  display: flex; flex-direction: column; overflow: hidden; }
.wk-card::before { content: ""; position: absolute; z-index: -1; width: 360px; height: 360px;
  top: 13%; right: -230px; border-radius: 50%; pointer-events: none;
  background: radial-gradient(circle, rgba(232,71,143,.12) 0%, rgba(232,71,143,0) 70%); }
@keyframes wkfade { from { opacity: 0; } }
@keyframes wkstep { from { opacity: 0; transform: translateX(10px); } }
.wk-top { flex: 0 0 auto; display: grid; grid-template-columns: 44px 1fr 64px; align-items: center; gap: 8px; }
.wk-back { width: 40px; height: 40px; border: 0; border-radius: 50%; padding: 0; display: grid; place-items: center;
  color: var(--content-strong); background: rgba(255,255,255,.72); box-shadow: inset 0 0 0 1px rgba(12,14,18,.06);
  cursor: pointer; transition: transform .12s ease, background .15s ease; }
.wk-back:active { transform: scale(.93); background: #fff; }
.wk-back.is-hidden { visibility: hidden; pointer-events: none; }
.wk-back svg { width: 20px; height: 20px; }
.wk-step { text-align: center; font-size: 12px; font-weight: 600; letter-spacing: .01em; color: rgba(12,14,18,.46); }
.wk-skip { justify-self: end; padding: 10px 0 10px 10px; font-size: 13px; color: rgba(12,14,18,.45);
  font-weight: 550; background: none; border: 0; font-family: inherit; cursor: pointer; }
.wk-dots { flex: 0 0 auto; display: flex; gap: 5px; margin-top: 13px; }
.wk-dot { flex: 1 1 0; height: 4px; border-radius: 999px; background: rgba(29,2,12,.10); transition: background .2s ease; }
.wk-dot.on { background: var(--brand-strong); }
.wk-flow { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: clamp(30px, 7vh, 56px) 0 24px;
  scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.wk-flow::-webkit-scrollbar { display: none; }
.wk-stage { width: 100%;
  scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.wk-stage::-webkit-scrollbar { display: none; }
.wk-question { width: 100%; padding: 24px 18px 18px; border-radius: 24px;
  background: rgba(255,255,255,.72); box-shadow: 0 18px 48px rgba(67,25,45,.07), inset 0 0 0 1px rgba(29,2,12,.035);
  animation: wkstep .28s cubic-bezier(.2,1,.36,1); }
.wk-kicker { font-size: 11px; line-height: 1.2; font-weight: 700; letter-spacing: .095em; text-transform: uppercase;
  color: #a9507b; margin-bottom: 10px; }
.wk-q-t { max-width: 390px; margin: 0; font-size: clamp(22px, 5.8vw, 27px); font-weight: 650;
  letter-spacing: -.03em; line-height: 1.16; text-wrap: balance; }
.wk-scale-card { margin-top: 24px; }
.wk-scale { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 7px; }
.wk-s { height: 50px; border: 0; border-radius: 15px; background: rgba(29,2,12,.055); font-family: inherit;
  font-size: 17px; font-weight: 650; color: rgba(12,14,18,.42); cursor: pointer;
  transition: transform .14s ease, background .18s ease, color .18s ease, box-shadow .18s ease; }
.wk-s:active { transform: scale(.94); }
.wk-s.on { background: var(--brand-strong); color: #fff; box-shadow: 0 9px 20px rgba(29,2,12,.20); }
.wk-s:focus-visible, .wk-back:focus-visible, .wk-skip:focus-visible, .wk-cta:focus-visible { outline: 3px solid rgba(232,71,143,.34); outline-offset: 2px; }
.wk-ends { display: flex; justify-content: space-between; gap: 20px; margin-top: 11px; font-size: 11px; line-height: 1.25;
  color: rgba(12,14,18,.42); }
.wk-ends span:last-child { text-align: right; }
.wk-hint { margin: 14px 0 0; font-size: 12px; line-height: 1.45; color: rgba(12,14,18,.42); }
.wk-note-help { margin: 12px 0 0; font-size: 14px; line-height: 1.5; color: rgba(12,14,18,.5); }
.wk-note-wrap { position: relative; margin-top: 22px; }
.wk-note { width: 100%; min-height: 132px; border: 0; border-radius: 18px; padding: 15px 15px 32px;
  background: rgba(255,255,255,.86); box-shadow: inset 0 0 0 1px rgba(29,2,12,.055), 0 14px 36px rgba(67,25,45,.06);
  color: var(--content-strong); font-family: inherit; font-size: 15px; line-height: 1.5; resize: none; }
.wk-note::placeholder { color: rgba(12,14,18,.30); }
.wk-note:focus { outline: 0; box-shadow: inset 0 0 0 2px rgba(169,80,123,.42), 0 14px 36px rgba(67,25,45,.07); }
.wk-count { position: absolute; right: 15px; bottom: 12px; font-size: 10.5px; color: rgba(12,14,18,.32); }
.wk-actions { flex: 0 0 auto; padding-top: 14px; }
.wk-error { margin: 0 4px 10px; color: #9d3153; font-size: 12.5px; line-height: 1.4; text-align: center; }
.wk-error[hidden] { display: none; }
.wk-cta { width: 100%; min-height: 54px; border: 0; border-radius: 18px; background: var(--brand-strong); color: #fff;
  font-family: inherit; font-size: 16px; font-weight: 650; cursor: pointer;
  box-shadow: none; transition: transform .12s ease, opacity .18s ease; }
.wk-cta:active:not(:disabled) { transform: scale(.985); }
.wk-cta:disabled { opacity: .22; box-shadow: none; cursor: default; }
.wk-card--result { padding-top: max(28px, var(--safe-top)); }
.wk-result { width: 100%; padding: 30px 22px 22px; border-radius: 28px; text-align: center;
  background: rgba(255,255,255,.78); box-shadow: 0 24px 60px rgba(67,25,45,.10), inset 0 0 0 1px rgba(29,2,12,.04);
  animation: wkstep .32s cubic-bezier(.2,1,.36,1); margin: auto 0; }
.wk-result__icon { width: 58px; height: 58px; margin: 0 auto 18px; border-radius: 50%; display: grid; place-items: center;
  background: var(--brand-strong); color: #fff; box-shadow: 0 14px 28px rgba(29,2,12,.18); }
.wk-result__icon svg { width: 28px; height: 28px; }
.wk-result .wk-kicker { margin-bottom: 8px; }
.wk-result__title { margin: 0; font-size: 28px; line-height: 1.12; letter-spacing: -.035em; }
.wk-result__lead { margin: 18px 0 0; font-size: 15px; color: rgba(12,14,18,.62); }
.wk-result__score { margin-top: 22px; padding: 17px 18px; border-radius: 20px; background: rgba(169,80,123,.08); }
.wk-result__score strong { display: flex; align-items: baseline; justify-content: center; gap: 7px; font-size: 34px; line-height: 1; letter-spacing: -.04em; }
.wk-result__score small { font-size: 12px; font-weight: 600; letter-spacing: 0; color: rgba(12,14,18,.45); }
.wk-result__score span { display: block; margin-top: 9px; font-size: 13px; color: rgba(12,14,18,.58); }
.wk-result__copy { margin: 18px auto 0; max-width: 320px; font-size: 13.5px; line-height: 1.5; color: rgba(12,14,18,.5); }
.wk-result__cta { margin-top: 0; }
@media (max-height: 650px) {
  .wk-card { padding-top: max(12px, var(--safe-top)); padding-bottom: max(12px, env(safe-area-inset-bottom)); }
  .wk-dots { margin-top: 8px; }
  .wk-flow { padding-top: 18px; padding-bottom: 12px; }
  .wk-question { padding: 20px 16px 16px; }
  .wk-q-t { font-size: 22px; }
  .wk-scale-card { margin-top: 18px; }
  .wk-s { height: 46px; }
  .wk-note { min-height: 110px; }
  .wk-result { padding-top: 24px; }
  .wk-result__icon { width: 50px; height: 50px; margin-bottom: 14px; }
  .wk-result__score { margin-top: 16px; padding: 13px 16px; }
  .wk-result__copy { margin-top: 13px; }
  .wk-actions { padding-top: 10px; }
}
@media (prefers-reduced-motion: reduce) {
  .wk-overlay.open, .wk-question { animation: none; }
}

/* динамика в «Прогрессе» */
.wk-prog { padding: 16px 14px; }
.wk-prog__h { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 12px; }
.wk-prog__h b { font-size: 16px; font-weight: 600; letter-spacing: -.2px; }
.wk-prog__h span { font-size: 11.5px; color: var(--content-subtle); }
.wk-prog__big { display: flex; align-items: flex-end; gap: 9px; }
.wk-prog__big b { font-size: 38px; font-weight: 700; letter-spacing: -1px; line-height: 1; }
.wk-prog__big small { font-size: 12.5px; color: var(--content-subtle); padding-bottom: 6px; }
.wk-prog__big i { font-style: normal; font-size: 13px; font-weight: 600; padding-bottom: 6px; }
.wk-prog__big i.up { color: #4e8c1f; } .wk-prog__big i.down { color: var(--streak); }
.wk-bars { display: flex; align-items: flex-end; gap: 6px; height: 72px; margin: 16px 0 5px; }
.wk-bar { flex: 1; border-radius: 5px 5px 3px 3px; background: linear-gradient(180deg, #a6d84e, #8ec735); }
.wk-bar.gap { background: repeating-linear-gradient(45deg, rgba(12,14,18,.06), rgba(12,14,18,.06) 3px, transparent 3px, transparent 6px); }
.wk-wks { display: flex; gap: 6px; font-size: 9.5px; color: rgba(12,14,18,.35); }
.wk-wks span { flex: 1; text-align: center; }
.wk-prog__sum { margin-top: 13px; padding-top: 11px; border-top: 1px solid var(--border-base);
  font-size: 13px; line-height: 1.5; color: rgba(12,14,18,.62); }
.wk-prog__sum b { color: var(--content-strong); font-weight: 650; }

/* ============================================================
   Цель месяца при рекомпозиции: результат в сантиметрах маяка +
   недельная сетка выполнения опор (то, что видно каждый день).
   ============================================================ */
.gm.rc { padding: 16px 15px 15px; }
.rc-res { font-size: 26px; font-weight: 600; letter-spacing: -.8px; margin-top: 10px;
  font-variant-numeric: tabular-nums; }
.rc-res s { text-decoration: none; font-size: 12px; font-weight: 600; margin-left: 7px;
  color: rgba(12,14,18,.42); letter-spacing: 0; }
.rc-res em { font-style: normal; font-size: 15px; font-weight: 500; color: rgba(12,14,18,.42); }
.rc-next { font-size: 12.5px; font-weight: 600; color: rgba(12,14,18,.5); margin-top: 3px; }
.rc-hr { height: 1px; background: rgba(12,14,18,.08); margin: 14px 0 13px; }
.rc-t { font-size: 12px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
  color: rgba(12,14,18,.42); margin-bottom: 9px; }

/* Колонка подписей опор: 62px хватает самому длинному слову («силовые» = 52px),
   но подпись с бейджем роста («сила −100%» = 73px) в неё не влезала и рвалась на
   две строки — ряд становился выше остальных и ритм матрицы ломался. Поэтому
   ширина колонки — переменная: с бейджем grid получает класс rc-grid--grow. */
.rc-grid { display: flex; flex-direction: column; gap: 4px; --rc-l: 62px; }
.rc-grid--grow { --rc-l: 76px; }
.rc-row { display: grid; grid-template-columns: var(--rc-l) 1fr; align-items: center; gap: 9px; }
.rc-rl { font-size: 11.5px; font-weight: 600; color: rgba(12,14,18,.5); text-align: right;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rc-rl b { font-weight: 700; color: #5c7a15; }
.rc-rl b.dn { color: rgba(12,14,18,.42); }
.rc-cells { display: flex; gap: 4px; }
.rc-cell { flex: 1 1 0; height: 15px; border-radius: 3px; background: rgba(12,14,18,.06);
  transition: background .3s ease; }
.rc-cell.rc-full { background: #a6d84e; }
.rc-cell.rc-part { background: rgba(166,216,78,.42); }
.rc-cell.rc-none { background: rgba(12,14,18,.13); }
.rc-cell.now { box-shadow: 0 0 0 1.5px rgba(12,14,18,.18); }
.rc-row--wl .rc-cells span { flex: 1 1 0; text-align: center; font-size: 10.5px;
  font-weight: 700; color: rgba(12,14,18,.32); }
.rc-row--wl .rc-cells span.now { color: rgba(12,14,18,.6); }
.rc-calm { margin-top: 12px; font-size: 12px; line-height: 1.45; color: rgba(12,14,18,.52);
  background: rgba(12,14,18,.035); border-radius: 10px; padding: 10px 12px; }

/* Строка веса в баннере рекомпозиции. Появляется только при наборе и снижении:
   там вес — часть договорённости, и клиенту важно видеть, что цифра на весах
   идёт по плану. При удержании строки нет — вес там намеренно не главный. */
.rc-w { margin-top: 11px; padding: 9px 11px; border-radius: 11px;
  background: rgba(12,14,18,.035); font-variant-numeric: tabular-nums; }
.rc-w-n { display: flex; align-items: baseline; gap: 7px; }
.rc-w b { font-size: 15px; font-weight: 650; letter-spacing: -.2px; white-space: nowrap; }
.rc-w s { text-decoration: none; font-size: 11.5px; font-weight: 650;
  color: rgba(12,14,18,.42); white-space: nowrap; }
.rc-w-s { margin-top: 2px; font-size: 11.5px; font-weight: 600;
  color: rgba(12,14,18,.45); line-height: 1.35; }
.rc-w--ok { background: rgba(166,216,78,.14); }
.rc-w--ok b { color: #5c7a15; }
.rc-w--warn { background: rgba(246,180,63,.14); }
.rc-w--warn b { color: #986012; }

/* Плашка «предварительно» — цель нового месяца раскатана без разбора с коучем. */
.gm-chip { display: inline-flex; margin-left: 6px; padding: 2px 7px; border-radius: 100px;
  background: rgba(12,14,18,.06); color: rgba(12,14,18,.5); font-size: 9.5px; font-weight: 600;
  vertical-align: middle; }

/* Конфетти на вехах месяца (половина пути, взятая цель, перевыполнение).
   Живёт внутри карточки, поэтому не мешает остальной главной. */
.gm { position: relative; overflow: hidden; }
.gm-cf { position: absolute; inset: 0; pointer-events: none; }
.gm-cf i { position: absolute; top: -12px; width: 6px; height: 10px; border-radius: 1px;
  opacity: .9; animation: gmCf linear forwards; }
@keyframes gmCf {
  0% { transform: translateY(0) rotate(0); opacity: 0; }
  10% { opacity: .95; }
  100% { transform: translateY(240px) rotate(420deg); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) { .gm-cf { display: none; } }

/* ============================================================
   Постоянный видеоконтроль техники — внутри реального GIF-плеера.
   Тихая cream/wine поверхность: заметно ровно в контрольном подходе.
   ============================================================ */
.gp-control { display:none;margin:0 16px 10px;padding:12px 13px;border:1px solid rgba(116,70,91,.12);
  border-radius:15px;background:linear-gradient(145deg,#fbf6f8,#f6edf1);color:#281b22; }
.gp-control.show { display:block; }.gp-control.active { border-color:rgba(156,76,111,.32);
  box-shadow:0 8px 24px rgba(89,45,65,.08),inset 0 1px rgba(255,255,255,.75); }
.gp-control.done { display:flex;align-items:center;gap:10px;background:#f3f8f4;border-color:rgba(56,130,83,.14); }
.gp-control-k { display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px; }
.gp-control-k span { font-size:10px;font-weight:750;letter-spacing:.075em;text-transform:uppercase;color:#965571; }
.gp-control-k em { font-style:normal;font-size:10.5px;font-weight:650;color:rgba(40,27,34,.48); }
.gp-control-guide { display:flex;flex-direction:column;gap:3px; }.gp-control-guide b { font-size:13px;font-weight:680; }
.gp-control-guide span { font-size:11px;line-height:1.4;color:rgba(40,27,34,.57); }
.gp-control button { width:100%;height:38px;margin-top:10px;border:0;border-radius:11px;background:#321d27;color:#fff;
  font:650 12px/1 var(--font);box-shadow:0 5px 13px rgba(50,29,39,.16); }
.gp-control-mark { width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:#dceee2;color:#2b7750;font-weight:800; }
.gp-control-b { display:flex;flex-direction:column;gap:2px;min-width:0; }.gp-control-b b { font-size:12.5px; }
.gp-control-b span { font-size:10.5px;color:rgba(40,27,34,.5);white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.gp-capture { position:fixed;inset:0;z-index:250;display:flex;align-items:flex-end;justify-content:center;
  background:rgba(28,19,24,.48);backdrop-filter:blur(12px);opacity:0;pointer-events:none;transition:opacity .22s ease; }
.gp-capture.show { opacity:1;pointer-events:auto; }
.gp-capture-card { width:min(100%,520px);max-height:94dvh;overflow:auto;padding:12px 18px calc(18px + env(safe-area-inset-bottom));
  border-radius:26px 26px 0 0;background:#fcfafb;box-shadow:0 -18px 55px rgba(36,20,29,.2);transform:translateY(24px);transition:transform .25s ease; }
.gp-capture.show .gp-capture-card { transform:translateY(0); }
.gp-cap-x { float:right;width:34px;height:34px;border:0;border-radius:50%;display:grid;place-items:center;background:rgba(38,27,33,.06);color:#34232c; }
.gp-cap-x svg { width:17px;height:17px; }.gp-cap-k { margin-top:7px;color:#9a5974;font-size:10px;font-weight:780;letter-spacing:.085em;text-transform:uppercase; }
.gp-capture-card h2 { margin:6px 42px 4px 0;font-size:23px;line-height:1.15;letter-spacing:-.03em; }
.gp-capture-card>p { margin:0 42px 14px 0;font-size:11.5px;line-height:1.45;color:rgba(28,21,25,.52); }
.gp-cap-preview { position:relative;width:100%;aspect-ratio:4/3;border-radius:17px;overflow:hidden;background:#1b1719;display:grid;place-items:center; }
.gp-cap-preview video { width:100%;height:100%;object-fit:contain;background:#171315; }
.gp-cap-placeholder { padding:28px;color:rgba(255,255,255,.62);font-size:12px;text-align:center;line-height:1.5; }
.gp-cap-pick { width:100%;height:42px;margin-top:9px;border:1px solid rgba(83,51,66,.14);border-radius:12px;background:#f4edf1;color:#6f3f55;font:670 12px var(--font); }
.gp-cap-fields { display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px; }
.gp-cap-fields label { display:flex;flex-direction:column;gap:6px;font-size:10.5px;font-weight:680;color:rgba(36,25,31,.58); }
.gp-cap-fields label:first-child,.gp-cap-fields label:last-child,.gp-cap-area { grid-column:1/-1; }
.gp-cap-fields label>span { float:right;color:#7d4660;align-self:flex-end;margin-top:-17px; }
.gp-cap-fields select,.gp-cap-fields input:not([type=range]),.gp-cap-fields textarea { width:100%;border:1px solid rgba(70,47,58,.12);border-radius:11px;
  background:#fff;padding:10px 11px;color:#24191f;font:12px/1.35 var(--font);resize:none; }
.gp-cap-fields input[type=range] { width:100%;accent-color:#8c526c; }.gp-cap-area { display:none!important; }.gp-cap-area.show { display:flex!important; }
.gp-cap-send { width:100%;height:48px;margin-top:14px;border:0;border-radius:14px;background:#301c26;color:#fff;font:680 13px var(--font);
  box-shadow:0 7px 18px rgba(48,28,38,.18); }.gp-cap-send:disabled { opacity:.42;box-shadow:none; }
.gp-coachq-person { display:flex;align-items:center;gap:12px;margin:7px 0 27px; }
.gp-coachq-person img { width:52px;height:52px;border-radius:50%;object-fit:cover;box-shadow:0 0 0 4px #f1e5eb; }
.gp-coachq-person div { display:flex;flex-direction:column;gap:3px; }.gp-coachq-person strong { font-size:15px; }.gp-coachq-person span { font-size:11.5px;color:var(--content-subtle); }
.gp-coachq-bio { margin:-16px 0 24px;padding:11px 12px;border-radius:12px;background:#f6eef2;color:rgba(42,28,35,.62);font-size:11.5px;line-height:1.45; }
.gp-coachq textarea { width:100%;margin-top:18px;padding:14px;border:1px solid rgba(72,48,59,.12);border-radius:14px;
  background:#fff;color:var(--content-strong);font:14px/1.45 var(--font);resize:none;box-shadow:0 4px 16px rgba(52,33,42,.04); }
.gp-coachq textarea:focus { outline:0;border-color:rgba(148,78,109,.48);box-shadow:0 0 0 3px rgba(148,78,109,.09); }
.gp-coachq-foot { display:grid!important;grid-template-columns:1fr 1.35fr;gap:9px; }
.gp-coachq-skip { height:50px;border:1px solid rgba(60,41,50,.1);border-radius:14px;background:#f5f1f3;color:#705364;font:650 12px var(--font); }
.ex-control-badge { display:inline-flex;align-items:center;margin-left:7px;padding:3px 6px;border-radius:99px;
  background:#f3e6ec;color:#8b4e69;font-size:8.5px;font-weight:780;letter-spacing:.025em;vertical-align:2px;white-space:nowrap; }

/* Онлайн с тренером — самостоятельный paid add-on, встроенный в тренировочный хаб. */
.ot-teaser { width:100%;display:grid;grid-template-columns:44px 1fr 20px;gap:12px;align-items:center;margin-top:10px;padding:14px;border:0;border-radius:var(--r-card);background:var(--card);color:var(--content-strong);text-align:left;font-family:var(--font);cursor:pointer;box-shadow:0 8px 24px rgba(20,4,12,.06),inset 0 0 0 1px rgba(12,14,18,.03); }
.ot-teaser__mark { width:44px;height:44px;display:grid;place-items:center;border-radius:13px;background:var(--brand-strong);color:#fff;font-family:Georgia,serif;font-size:19px;font-style:italic; }
.ot-teaser>span:nth-child(2) { display:flex;flex-direction:column;min-width:0; }
.ot-teaser small { font-size:12px;color:var(--content-subtle); }
.ot-teaser strong { margin-top:1px;font-size:14px;font-weight:500;line-height:20px; }
.ot-teaser em { margin-top:1px;color:var(--content-subtle);font-size:12px;font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.ot-teaser>i { color:rgba(12,14,18,.3); }.ot-teaser>i svg { width:20px;height:20px; }
@media(max-width:390px){.gp-control{margin-left:12px;margin-right:12px}.gp-cap-fields{grid-template-columns:1fr}.gp-cap-fields label{grid-column:1!important}.gp-coachq-foot{grid-template-columns:1fr}}

/* Training care · approved client-side visual language. Scoped so the
   editorial cards cannot bleed into diary, onboarding or booking screens. */
.training-care-detail {
  --care-bg:#fcf9fa;--care-ink:#171216;--care-muted:rgba(23,18,22,.52);
  --care-line:rgba(29,2,12,.075);--care-wine:#35101f;
  background:radial-gradient(520px 250px at 50% -70px,rgba(244,222,233,.5),rgba(252,249,250,0) 72%),var(--care-bg);
}
.training-care-detail .dhead { background:rgba(252,249,250,.86);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px); }
.training-care-wrap { padding:4px 20px 48px; }
.training-care-info svg { width:19px;height:19px; }
.training-care-stack { display:flex;flex-direction:column;gap:12px; }
.training-care-motion { animation:careIn .3s cubic-bezier(.32,.72,0,1) both; }
@keyframes careIn { from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none} }
.training-care-section { padding:10px 3px 0;color:rgba(23,18,22,.68);font-size:13px;font-weight:620;letter-spacing:-.01em; }
.training-care-detail .card { box-shadow:0 1px 0 rgba(29,2,12,.02),0 9px 26px rgba(29,2,12,.035),inset 0 0 0 .5px rgba(29,2,12,.05); }
.training-care-primary { height:52px;margin:2px 0 0;background:var(--brand-strong);color:#fff;box-shadow:none; }
.training-care-quiet { width:100%;height:44px;border:0;border-radius:999px;background:rgba(255,255,255,.65);color:var(--care-ink);font:620 13px var(--font);box-shadow:inset 0 0 0 .5px rgba(29,2,12,.1); }
.training-care-note { padding:2px 5px;color:var(--care-muted);font-size:11.5px;line-height:1.48; }


.training-care-avatar--empty { display:grid;place-items:center;background:#efe4e8;color:#7d3150;font-size:11px;font-weight:750; }









.training-topic-picker button.on { background:var(--brand-strong);color:#fff; }.training-topic-picker button.on.danger { background:#93463e; }










/* Общий .coach (карточка коуча из другого раздела, :544) перехватывал пузырь
   тренера: display:flex ставил текст и время в один ряд, а вложение сжимал в
   вертикальную полоску. Пузырь — обычный блок со своими отступами. */

/* Вложения тренера в ответе (фото / видео / голосовое) и в карточке разбора. */
.training-attachments { display:grid;gap:8px;margin-top:10px; }
.training-attachment { overflow:hidden;border-radius:14px;background:rgba(0,0,0,.06); }
.training-attachment--image img,.training-attachment--video video { display:block;width:100%;max-height:280px;border-radius:14px;background:#0d0508;object-fit:cover; }
.training-attachment--video video { object-fit:contain; }
.training-attachment--audio { padding:6px 8px;background:rgba(255,255,255,.55); }
.training-attachment--audio audio { display:block;width:100%;height:34px; }
.training-attachment--file { display:flex;align-items:center;gap:9px;width:100%;padding:11px 12px;border:0;background:rgba(255,255,255,.6);color:inherit;font:600 11.5px var(--font);text-align:left; }
.training-attachment--file>span { width:22px;height:22px;display:grid;place-items:center;flex:none;border-radius:8px;background:#f1e5ea;color:#873452;font-size:11px; }
.training-attachment--file>b { min-width:0;overflow:hidden;font-weight:600;text-overflow:ellipsis;white-space:nowrap; }

















.training-profile-empty-card { padding:15px 16px; }.training-profile-empty-card b { font-size:12px; }.training-profile-empty-card p { margin:4px 0 0;color:var(--care-muted);font-size:10.5px;line-height:1.45; }










.training-policy-replay.is-armed { border-color:#cfe6d8;background:#f7fcf9; }.training-policy-replay.is-armed .training-policy-replay__icon { background:#e3f2e8;color:#2d7d55; }.training-policy-replay.is-armed>i { display:none; }

/* Entrypoints in the existing training hub / workout card. */
.training-ask-row{ width:100%;display:flex;align-items:center;gap:11px;border:0;border-radius:18px;background:#fff;color:var(--content-strong);padding:12px 13px;text-align:left;box-shadow:0 8px 22px rgba(29,2,12,.04),inset 0 0 0 .5px rgba(29,2,12,.06); }
.training-ask-row>div{ min-width:0;flex:1;display:flex;flex-direction:column; }
.training-ask-row b{ margin-top:2px;font-size:13px; }.training-ask-row small{ margin-top:2px;color:var(--content-subtle);font-size:10px;font-style:normal; }
.training-ask-row>i{ color:rgba(23,18,22,.26); }.training-ask-row svg{ width:18px;height:18px; }
.training-ask-row>span{ width:38px;height:38px;display:grid;place-items:center;flex:none;border-radius:13px;background:#f1e5ea;color:#873452;font-size:16px;font-weight:700; }
.training-ask-row { margin-top:16px;background:#fbf8f9; }
.training-control-explainer { width:100%;display:grid;grid-template-columns:auto minmax(0,1fr) 18px;gap:11px;align-items:center;margin-top:8px;padding:12px 13px;border:0;border-radius:17px;background:#fbf8f9;color:var(--content-strong);text-align:left;box-shadow:inset 0 0 0 .5px rgba(29,2,12,.07); }.training-control-explainer>span { padding:7px 8px;border-radius:999px;background:#f7e8ee;color:#7d2949;font-size:9.5px;font-weight:700;white-space:nowrap; }.training-control-explainer b { font-size:12px; }.training-control-explainer small { display:block;margin-top:2px;color:var(--content-subtle);font-size:9.5px;line-height:1.35; }.training-control-explainer>i { color:rgba(23,18,22,.25); }.training-control-explainer svg { width:17px;height:17px; }
.training-control-overview { margin:14px 0 12px;padding:15px 16px!important; }.training-control-overview--loading { color:var(--content-subtle); }.training-control-overview--loading b { display:block;color:var(--content-strong);font-size:14px; }.training-control-overview--loading span { display:block;margin-top:3px;font-size:10.5px; }
.training-control-overview__head { display:flex;align-items:flex-start;justify-content:space-between;gap:10px; }.training-control-overview__head b { font-size:15px;letter-spacing:-.2px; }.training-control-overview__head span { display:block;margin-top:3px;color:var(--content-subtle);font-size:10px;line-height:1.35; }.training-control-overview__head strong { padding:6px 8px;border-radius:999px;background:#f7e8ee;color:#7d2949;font-size:10px;white-space:nowrap; }
.training-control-slot { display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:10px;align-items:center;padding:12px 0 0;margin-top:12px;border-top:.5px solid rgba(29,2,12,.07); }.training-control-slot>span { width:22px;height:22px;display:grid;place-items:center;border-radius:50%;background:var(--brand-strong);color:#fff;font-size:10px;font-weight:700; }.training-control-slot.conditional>span { background:#f3e7ec;color:#8c3556; }
.training-control-slot b { display:block;font-size:12px; }.training-control-slot small { display:block;margin-top:2px;color:var(--content-subtle);font-size:9.5px; }.training-control-slot em { padding:5px 7px;border-radius:8px;background:#faf0f4;color:#7f3853;font-size:8.8px;font-style:normal;font-weight:650;white-space:nowrap; }
.training-control-coverage { display:flex;justify-content:space-between;gap:12px;padding-top:11px;margin-top:12px;border-top:.5px solid rgba(29,2,12,.07);color:var(--content-subtle);font-size:9.5px; }.training-control-coverage b { color:var(--content-strong);font-size:10px; }

/* Workout player request: same approved dark control card, still beside the
   real ExerciseLibraryItem media and the live set state. */
.gp-control { margin:0 16px 10px;padding:14px 15px;border:0;border-radius:18px;background:linear-gradient(145deg,#250811,#411425);color:#fff;box-shadow:0 16px 32px rgba(29,2,12,.18); }
.gp-control.active { border:0;background:linear-gradient(145deg,#250811,#411425); }.gp-control.done { border:1px solid rgba(56,130,83,.14);background:#f3f8f4;color:#241a1f;box-shadow:none; }
.gp-control-k span { color:rgba(255,255,255,.94);font-size:9.5px; }.gp-control-k em { padding:4px 6px;border-radius:7px;background:rgba(255,255,255,.1);color:rgba(255,255,255,.66);font-size:9px; }
.gp-control-guide { gap:4px; }.gp-control-guide b { color:#fff;font-size:13px; }.gp-control-guide span { color:rgba(255,255,255,.68);font-size:10.5px;line-height:1.45; }
.gp-control-rules { display:flex;flex-wrap:wrap;gap:6px;margin-top:10px; }.gp-control-rules span { padding:5px 7px;border-radius:8px;background:rgba(255,255,255,.09);color:rgba(255,255,255,.7);font-size:8.8px; }
.gp-control button#gpControlRecord { min-height:39px;height:auto;margin-top:11px;padding:9px 12px;border-radius:12px;background:#fff;color:#3a1020;box-shadow:none;font-size:10.5px;line-height:1.2; }
.gp-control-question { width:30px!important;height:30px!important;margin:0!important;flex:none;border-radius:50%!important;background:#e9f2ec!important;color:#337351!important; }
.gp-cap-preview { position:relative;overflow:hidden; }.gp-cap-preview.uploading video { opacity:.58; }.gp-cap-upload { position:absolute;left:10px;right:10px;bottom:10px;padding:10px 11px;border-radius:12px;background:rgba(29,2,12,.84);color:#fff;backdrop-filter:blur(8px); }
.gp-cap-upload b,.gp-cap-upload span { display:block; }.gp-cap-upload b { font-size:10.5px; }.gp-cap-upload span { margin-top:2px;color:rgba(255,255,255,.6);font-size:8.5px; }.gp-cap-upload>i { display:block;height:3px;margin-top:8px;border-radius:3px;background:linear-gradient(90deg,#fff 0 68%,rgba(255,255,255,.18) 68%);animation:careUpload 1.35s ease-in-out infinite; }
@keyframes careUpload { 50%{opacity:.55} }

/* Training analytics: answer first, then trend and coach decision. */
.training-progress-section { padding-top:20px; }.training-progress-head { display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:0 2px 10px; }
.training-progress-head small { color:var(--content-subtle);font-size:10px; }.training-progress-head h2 { margin:3px 0 0;font-size:21px;letter-spacing:-.45px; }.training-progress-head>span { padding:7px 9px;border-radius:999px;background:#f4eff2;color:#7d3150;font-size:9.5px; }
.training-progress-summary { display:grid;grid-template-columns:1fr 1fr;gap:0;padding:14px 16px!important; }.training-progress-summary>div+div { padding-left:15px;border-left:.5px solid rgba(29,2,12,.08); }.training-progress-summary b { display:block;font-size:20px;letter-spacing:-.4px; }.training-progress-summary span { display:block;margin-top:2px;color:var(--content-subtle);font-size:9.5px; }
.training-decisions { padding:3px 15px!important; }.training-decision { display:flex;align-items:flex-start;gap:10px;padding:12px 0;border-top:.5px solid rgba(29,2,12,.07); }.training-decision:first-child { border:0; }
.training-decision>span { width:27px;height:27px;display:grid;place-items:center;flex:none;border-radius:50%;background:#f2e5eb;color:#8b4e69;font-size:10px;font-weight:800; }.training-decision>span.ok { background:#e5f3e9;color:#337351; }
.training-decision>span.attention { background:#f2e5eb;color:#8b4e69; }
.training-decision>span.waiting { background:#fdf0d8;color:#a3701a; }.training-decision b { font-size:11.5px; }.training-decision small { display:block;margin-top:2px;color:var(--content-subtle);font-size:9.5px; }.training-decision p { margin:6px 0 0;padding:8px 9px;border-radius:9px;background:#f8f4f6;color:rgba(28,20,24,.65);font-size:10px;line-height:1.4; }

/* Online training v5 · вся типографика и радиусы взяты из домашнего экрана
   (--r-card, --tile, шкала 12/14/16). Прежний блок жил на собственной шкале
   8.5–12.5px и своих радиусах 17/18/24 — рядом с остальным приложением это
   читалось как чужой раздел. Контейнер #v-online-training-detail держит
   padding 0 20px, поэтому полноширинные блоки уходят в margin:0 -20px. */
#detail-online-training { background: var(--neutral-bg); }
/* Липкий футер должен прилипать к краю ЭКРАНА. Снизу его отжимали два
   padding-bottom сразу: 40px у .detail .scroll (позиция sticky считается от
   скроллпорта за вычетом его padding) и 48px у самого контейнера (столько
   оставалось под футером в потоке). Итого футер вставал на 88px выше низа, и
   в эту щель было видно проезжающий контент. Горизонтальные поля оставляем —
   на них завязаны выносы через margin:0 -20px. */
#detail-online-training .scroll { padding-bottom: 0; }
#detail-online-training .dhead { background: rgba(255,247,253,.9); -webkit-backdrop-filter: blur(20px); backdrop-filter: blur(20px); }
/* Без анимации на обёртке: она держит липкий .ot-foot, а transform у предка
   на время проигрывания делает его containing block — футер дёргался. */
.ot-editorial { display: block; }
/* Экраны без липкого футера сами держат нижний отступ: у контейнера раздела
   его больше нет, иначе футер вставал бы выше края экрана. */
.ot-editorial--nofoot { padding-bottom: calc(24px + max(var(--rf-bottom-inset,0px), env(safe-area-inset-bottom,0px), 8px)); }

/* ----- Баннер ----- */
/* Слот ровно 1290×960 (@3x от 430×320): пропорция файла совпадает со слотом,
   поэтому cover ничего не срезает и композиция видна целиком. */
/* Обёртка держит высоту и служит системой координат для текста и чипа. Сама
   она НЕ трансформируется — поэтому надписи стоят на месте, пока фото под
   ними тянется. */
.ot-bnr-wrap { position: relative; margin: 0 -20px; height: 320px; }
/* transform-origin сверху: при оттягивании фото растёт ВНИЗ, за листом, а не
   расползается в обе стороны из центра. will-change убирает дрожь на первом
   кадре жеста. */
.ot-bnr { position: absolute; inset: 0; background: #2a1d24; overflow: hidden; transform-origin: 50% 0; will-change: transform; }
/* Скролл вверх слегка отдаляет кадр — тот же приём, что у карточки
   тренировки. Масштабируем ИЗОБРАЖЕНИЕ внутри баннера, а не сам баннер:
   уменьшить баннер значило бы открыть щель над листом. */
.ot-bnr img { transform-origin: 50% 40%; will-change: transform; }
/* Пружина только на ВОЗВРАТ. Во время жеста транзишна быть не должно — иначе
   лист тащится за пальцем с задержкой. Кривая та же, что у карточки
   тренировки перед плеером. */
.ot-snap { transition: transform .42s cubic-bezier(.2,.7,.3,1.06); }
.ot-bnr img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 46%; display: block; }
.ot-bnr::after { content: ""; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(184deg, rgba(20,6,13,.30) 0%, rgba(20,6,13,.04) 30%, rgba(20,6,13,.55) 72%, rgba(20,6,13,.86) 100%); }
/* Чип держится справа вверху: в обоих кадрах устройство с тренером стоит
   слева по центру — единственное доказательство «с тренером», перекрывать его
   плашкой нельзя. */
.ot-bnr__chip { position: absolute; z-index: 2; right: 16px; top: 16px; display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 12px; border-radius: var(--r-pill);
  background: rgba(255,255,255,.22); -webkit-backdrop-filter: blur(16px) saturate(150%); backdrop-filter: blur(16px) saturate(150%);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.32); color: #fff; font-size: 11px; font-weight: 500; letter-spacing: -.2px; }
.ot-bnr__chip i { width: 6px; height: 6px; border-radius: 50%; background: #e0518f; }
/* 48px, а не 26: лист наезжает на баннер на 28px (`.ot-sheet` margin-top),
   поэтому прежние 26 оставляли описание на два пикселя НИЖЕ кромки листа —
   отсюда и ощущение слипшегося текста. */
.ot-bnr__txt { position: absolute; z-index: 2; left: 0; right: 0; bottom: 0; padding: 0 20px 48px; }
.ot-bnr__txt h1 { margin: 0; font-size: 27px; font-weight: 600; letter-spacing: -.6px; line-height: 1.09; color: #fff; max-width: 320px; }
.ot-bnr__txt p { margin: 8px 0 0; font-size: 13px; line-height: 19px; color: rgba(255,255,255,.78); max-width: 315px; }
.ot-bnr-wrap--short { height: 168px; }
.ot-bnr-wrap--short .ot-bnr__txt { display: none; }

/* Лист контента наезжает на баннер скруглением */
.ot-sheet { position: relative; z-index: 3; margin: -28px -20px 0; padding: 10px 20px 8px; background: var(--neutral-bg); border-radius: var(--r-sheet) var(--r-sheet) 0 0; }
.ot-grab { width: 36px; height: 5px; border-radius: 9999px; background: rgba(12,14,18,.14); margin: 0 auto 14px; }

.ot-sect { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin: 22px 2px 11px; }
.ot-sect__t { font-size: 16px; font-weight: 600; letter-spacing: -.2px; }
.ot-sect__n { font-size: 12px; color: var(--content-subtle); }

/* ----- Тёмные карточки: вход и ближайшая запись ----- */
.ot-dark { position: relative; overflow: hidden; border-radius: var(--r-card); padding: 16px;
  background: linear-gradient(252deg,#3a2430 -6%,#25121c 52%,#1d020c 104%); box-shadow: 0 12px 26px rgba(20,4,12,.30); }
.ot-dark::after { content: "R"; position: absolute; right: -4px; bottom: -46px; color: rgba(255,255,255,.045); font: italic 500 152px/1 Georgia, serif; pointer-events: none; }
.ot-dark__tag { display: inline-flex; align-items: center; gap: 6px; height: 24px; padding: 0 10px; border-radius: var(--r-pill);
  background: rgba(255,255,255,.16); box-shadow: inset 0 0 0 1px rgba(255,255,255,.24); color: #fff; font-size: 11px; font-weight: 500; letter-spacing: -.2px; }
.ot-dark__tag i { width: 6px; height: 6px; border-radius: 50%; background: #a3d546; }
.ot-dark__t { position: relative; margin-top: 11px; font-size: 17px; font-weight: 500; line-height: 23px; color: #fff; max-width: 262px; }
.ot-dark__s { position: relative; margin-top: 4px; font-size: 12px; line-height: 17px; color: var(--content-inverse-medium); max-width: 258px; }
.ot-dark__when { position: relative; margin-top: 11px; font-size: 22px; font-weight: 600; letter-spacing: -.45px; line-height: 1.1; color: #fff; }
.ot-dark__who { position: relative; margin-top: 5px; display: flex; align-items: center; gap: 8px; }
.ot-dark__who .ot-coach-av { width: 26px; height: 26px; font-size: 10px; }
.ot-dark__who span { font-size: 12px; color: var(--content-inverse-medium); }
.ot-dark__row { position: relative; margin-top: 15px; display: flex; align-items: center; gap: 10px; }
.ot-dark__price { font-size: 24px; font-weight: 600; letter-spacing: -.5px; color: #fff; }
.ot-dark__old { font-size: 12px; color: var(--content-inverse-subtle); }
.ot-dark__cta { margin-left: auto; height: 36px; padding: 0 16px; border: 0; border-radius: var(--r-pill); background: #fff; color: var(--brand-strong); font: 600 13px var(--font); letter-spacing: -.2px; cursor: pointer; }
.ot-dark__foot { position: relative; margin-top: 11px; font-size: 11px; line-height: 16px; color: var(--content-inverse-subtle); }
.ot-dark__btns { position: relative; margin-top: 15px; display: flex; gap: 8px; }
.ot-dark__btns button { height: 40px; border: 0; border-radius: var(--r-pill); font: 600 13px var(--font); letter-spacing: -.2px; cursor: pointer; }
.ot-dark__btns button:first-child { flex: 1 1 auto; background: #fff; color: var(--brand-strong); }
.ot-dark__btns button + button { padding: 0 16px; background: rgba(255,255,255,.14); box-shadow: inset 0 0 0 1px rgba(255,255,255,.2); color: #fff; }

/* ----- Как это устроено ----- */
.ot-facts { padding: 16px; }
.ot-facts > b { display: block; font-size: 16px; font-weight: 500; line-height: 22px; margin-bottom: 13px; }
.ot-fact { display: flex; align-items: flex-start; gap: 10px; }
.ot-fact + .ot-fact { margin-top: 11px; }
.ot-fact > i { width: 28px; height: 28px; flex: 0 0 auto; border-radius: 9px; background: var(--tile); display: grid; place-items: center; color: #a8446f; }
.ot-fact > i svg { width: 15px; height: 15px; display: block; }
.ot-fact b { display: block; font-size: 14px; font-weight: 500; line-height: 20px; }
.ot-fact span { display: block; margin-top: 1px; font-size: 12px; line-height: 17px; color: var(--content-subtle); }
.ot-note { margin-top: 14px; padding: 11px 12px; border-radius: var(--r-inset); background: var(--tile); font-size: 12px; line-height: 17px; color: rgba(12,14,18,.62); }

/* ----- Дома или в зале ----- */
.ot-where { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.ot-where > div { overflow: hidden; border-radius: var(--r-card); background: var(--card); box-shadow: 0 8px 24px rgba(20,4,12,.06), inset 0 0 0 1px rgba(12,14,18,.03); }
.ot-where__ph { height: 108px; background: var(--tile); }
.ot-where__ph img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ot-where b { display: block; margin: 12px 14px 0; font-size: 14px; font-weight: 500; line-height: 20px; }
.ot-where span { display: block; margin: 3px 14px 14px; font-size: 12px; line-height: 17px; color: var(--content-subtle); }

/* ----- Тренеры ----- */
.ot-coach-av { width: 36px; height: 36px; display: grid; place-items: center; flex: none; border-radius: 50%; background: #eadde3 center/cover; color: #7f5066; font-size: 12px; font-weight: 600; }

/* ----- Кто проводит ----- */
.ot-coach { padding: 14px; display: flex; align-items: center; gap: 13px; cursor: pointer; }
.ot-coach__ph { width: 64px; height: 64px; flex: 0 0 auto; border-radius: var(--r-inset); overflow: hidden; background: var(--tile); box-shadow: inset 0 0 0 1px rgba(12,14,18,.05); display: grid; place-items: center; }
.ot-coach__ph img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 18%; display: block; }
.ot-coach__ph .ot-coach-av { width: 100%; height: 100%; border-radius: 0; font-size: 20px; }
.ot-coach__b { flex: 1 1 auto; min-width: 0; }
.ot-chip-rose { display: inline-block; font-size: 11px; font-weight: 500; line-height: 1; padding: 4px 8px; border-radius: 9999px; background: #ffd9e6; color: #b81e57; }
.ot-coach__n { margin-top: 5px; font-size: 14px; font-weight: 500; line-height: 20px; }
.ot-coach__r { margin-top: 1px; font-size: 12px; line-height: 17px; color: var(--content-subtle); }
.ot-coach__note { margin: 9px 4px 0; font-size: 12px; line-height: 17px; color: var(--content-subtle); }

/* ----- Баланс ----- */
.ot-bal { padding: 16px; }
.ot-bal__top { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.ot-bal__t { font-size: 16px; font-weight: 500; line-height: 22px; }
.ot-bal__n { font-size: 22px; font-weight: 600; letter-spacing: -.45px; line-height: 1; font-variant-numeric: tabular-nums; }
.ot-bal__n em { color: var(--content-subtle); font-size: 13px; font-weight: 400; font-style: normal; letter-spacing: 0; }
.ot-bars { margin-top: 12px; display: flex; align-items: stretch; gap: 4px; height: 16px; }
.ot-bars i { flex: 1 1 0; border-radius: 9999px; background: var(--border-base); }
.ot-bars i.on { background: var(--positive); }
.ot-bars i.res { background: #f0a0c0; }
.ot-bal__legend { margin-top: 10px; display: flex; gap: 14px; flex-wrap: wrap; }
.ot-bal__legend span { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--content-subtle); }
.ot-bal__legend em { width: 8px; height: 8px; border-radius: 3px; background: var(--positive); font-style: normal; }
.ot-bal__legend span.res em { background: #f0a0c0; }
.ot-bal__legend span.done em { background: var(--border-base); }
/* Кредиты живут ПО ДЛИТЕЛЬНОСТИ: 30 и 60 минут — независимые пулы, их нельзя
   свести к одному числу, иначе бронь упрётся в «нет кредита» на ровном месте. */
.ot-bal__dur { margin-top: 12px; display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 8px; }
.ot-bal__dur > div { padding: 10px 12px; border-radius: var(--r-inset); background: var(--tile); }
.ot-bal__dur span { display: block; font-size: 12px; line-height: 16px; color: var(--content-subtle); }
.ot-bal__dur b { display: block; margin-top: 2px; font-size: 18px; font-weight: 600; letter-spacing: -.3px; }
.ot-bal__cta { margin-top: 14px; width: 100%; border: 0; cursor: pointer; border-radius: var(--r-pill); padding: 13px 18px; font: 600 14px var(--font); letter-spacing: -.2px; background: var(--brand-strong); color: #fff; }
.ot-bal__hint { margin: 9px 0 0; font-size: 12px; line-height: 17px; color: var(--content-subtle); }

/* ----- Ритм и пакеты ----- */
.ot-rhythm { padding: 14px 16px 16px; }
.ot-rhythm__q { font-size: 14px; font-weight: 500; line-height: 20px; }
.ot-rhythm__h { margin-top: 2px; font-size: 12px; line-height: 17px; color: var(--content-subtle); }
.ot-seg { margin-top: 12px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; padding: 4px; border-radius: 14px; background: var(--tile); }
.ot-seg button { height: 38px; border: 0; border-radius: 11px; background: transparent; font: 500 13px var(--font); letter-spacing: -.2px; color: rgba(12,14,18,.55); cursor: pointer; transition: background .18s ease, color .18s ease, box-shadow .18s ease; }
.ot-seg button.on { background: #fff; color: var(--content-strong); font-weight: 600; box-shadow: 0 2px 8px rgba(20,4,12,.10); }
.ot-packs { padding: 4px; margin-top: 8px; }
.ot-pack { width: 100%; display: flex; align-items: flex-start; gap: 12px; padding: 12px 10px; border: 0; background: transparent; border-radius: var(--r-inset); cursor: pointer; text-align: left; font-family: var(--font); transition: background .16s ease, transform .12s ease; }
.ot-pack:active { transform: scale(.99); }
.ot-pack.on { background: #fff4f9; box-shadow: inset 0 0 0 1px rgba(168,38,95,.16); }
.ot-pack.disabled { opacity: .5; cursor: default; }
.ot-pack__radio { width: 22px; height: 22px; flex: 0 0 auto; margin-top: 2px; border-radius: 50%; border: 1.5px solid rgba(12,14,18,.18); display: grid; place-items: center; transition: border-color .16s ease; }
.ot-pack.on .ot-pack__radio { border-color: var(--brand-strong); }
.ot-pack.on .ot-pack__radio::after { content: ""; width: 11px; height: 11px; border-radius: 50%; background: var(--brand-strong); }
.ot-pack__body { flex: 1 1 auto; min-width: 0; }
.ot-pack__name { display: block; font-size: 14px; font-weight: 500; line-height: 22px; }
.ot-pack__meta { display: block; margin-top: 1px; font-size: 12px; font-weight: 400; line-height: 17px; color: var(--content-subtle); }
.ot-pack__meta b { color: var(--content-strong); font-weight: 500; }
.ot-tag { display: inline-block; margin-bottom: 4px; font-size: 11px; font-weight: 500; line-height: 1; padding: 4px 9px; border-radius: 9999px; background: #ffd9e6; color: #b81e57; }
.ot-pack__price { flex: 0 0 auto; display: flex; flex-direction: column; align-items: flex-end; text-align: right; padding-top: 1px; }
.ot-pack__price b { font-size: 16px; font-weight: 600; letter-spacing: -.3px; line-height: 22px; white-space: nowrap; font-variant-numeric: tabular-nums; }
.ot-pack__price s { font-size: 12px; line-height: 16px; color: rgba(12,14,18,.34); }
.ot-pack__price span { margin-top: 1px; font-size: 12px; line-height: 16px; color: var(--content-subtle); white-space: nowrap; font-variant-numeric: tabular-nums; }
.ot-pack__save { margin-top: 2px; font-size: 11px; font-weight: 500; color: #4d7014; white-space: nowrap; }
.ot-pack__div { height: 1px; background: rgba(12,14,18,.07); margin: 0 10px; }

.ot-buy-inline { margin-top: 12px; background: var(--brand-strong); color: #fff; box-shadow: 0 8px 20px rgba(20,4,12,.22); }

/* ----- Разовые форматы ----- */
.ot-single { display: flex; align-items: center; gap: 12px; padding: 14px 16px; cursor: pointer; width: 100%; border: 0; background: transparent; text-align: left; font-family: var(--font); }
.ot-single + .ot-single { box-shadow: inset 0 1px 0 rgba(12,14,18,.07); }
.ot-single.disabled { opacity: .5; cursor: default; }
.ot-single__b { flex: 1 1 auto; min-width: 0; }
.ot-single .ot-tag { display: block; width: fit-content; }
/* display:block обязателен: в разметке это <span>, и без него название с
   подписью слипались в одну строку — «Техника с тренером30 минут», а
   margin-top на инлайне не работал вовсе. */
.ot-single__name { display: block; font-size: 14px; font-weight: 500; line-height: 20px; }
.ot-single__meta { display: block; margin-top: 2px; font-size: 12px; line-height: 16px; color: var(--content-subtle); }
.ot-single__price { font-size: 14px; font-weight: 500; white-space: nowrap; font-variant-numeric: tabular-nums; }
.ot-chev { flex: 0 0 auto; color: rgba(12,14,18,.3); display: grid; place-items: center; }
.ot-chev svg { width: 20px; height: 20px; display: block; }

/* ----- Что нужно с вашей стороны ----- */
.ot-need { padding: 14px 16px 16px; }
.ot-need > b { display: block; font-size: 14px; font-weight: 500; line-height: 20px; }
.ot-tabs { margin-top: 12px; display: grid; grid-template-columns: 1fr 1fr; gap: 4px; padding: 4px; border-radius: 14px; background: var(--tile); }
.ot-tabs button { height: 36px; border: 0; border-radius: 11px; background: transparent; font: 500 13px var(--font); letter-spacing: -.2px; color: rgba(12,14,18,.55); cursor: pointer; transition: background .18s ease, color .18s ease, box-shadow .18s ease; }
.ot-tabs button.on { background: #fff; color: var(--content-strong); font-weight: 600; box-shadow: 0 2px 8px rgba(20,4,12,.10); }
.ot-need__l { margin-top: 13px; display: flex; flex-direction: column; gap: 9px; }
.ot-need__l div { display: flex; align-items: flex-start; gap: 9px; font-size: 12px; line-height: 17px; color: rgba(12,14,18,.62); }
.ot-need__l i { width: 16px; height: 16px; flex: 0 0 auto; margin-top: 1px; color: #6f8c37; }
.ot-need__l i svg { width: 100%; height: 100%; display: block; }
.ot-need__l b { color: var(--content-strong); font-weight: 500; }

/* ----- Правила ----- */
.ot-rules { padding: 4px 16px; }
.ot-rule { display: flex; gap: 10px; padding: 12px 0; align-items: flex-start; }
.ot-rule + .ot-rule { box-shadow: inset 0 1px 0 rgba(12,14,18,.07); }
.ot-rule > i { width: 18px; height: 18px; flex: 0 0 auto; margin-top: 2px; color: #6f8c37; }
.ot-rule > i svg { width: 100%; height: 100%; display: block; }
.ot-rule b { display: block; font-size: 13px; font-weight: 500; line-height: 19px; }
.ot-rule span { display: block; margin-top: 1px; font-size: 12px; line-height: 17px; color: var(--content-subtle); }

/* ----- Прилипший футер ----- */
.ot-foot { position: sticky; bottom: 0; z-index: 5; margin: 16px -20px 0; padding: 12px 20px calc(14px + max(var(--rf-bottom-inset,0px), env(safe-area-inset-bottom,0px), 8px));
  background: rgba(255,247,253,.94); -webkit-backdrop-filter: blur(20px) saturate(160%); backdrop-filter: blur(20px) saturate(160%);
  box-shadow: 0 -1px 0 rgba(12,14,18,.06), 0 -8px 28px rgba(20,4,12,.07); }
.ot-foot__row { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; padding: 0 2px 11px; }
.ot-foot__l b { display: block; font-size: 14px; font-weight: 500; line-height: 20px; }
.ot-foot__l span { display: block; margin-top: 1px; font-size: 12px; line-height: 16px; color: var(--content-subtle); }
.ot-foot__p { font-size: 22px; font-weight: 600; letter-spacing: -.45px; line-height: 1; white-space: nowrap; font-variant-numeric: tabular-nums; }
.ot-foot .btn-primary { margin-top: 0; background: var(--brand-strong); color: #fff; padding: 16px 18px; box-shadow: 0 8px 20px rgba(20,4,12,.22); }
.ot-foot .btn-primary:disabled { background: #e6e0e3; color: rgba(12,14,18,.34); box-shadow: none; cursor: default; }
.ot-foot__hint { margin: 9px 0 0; text-align: center; font-size: 11px; line-height: 15px; color: var(--content-subtle); }

/* ----- Экран оплаты ----- */
.ot-order { padding: 16px; }
.ot-order__top { display: flex; align-items: center; gap: 13px; }
.ot-order__nm { font-size: 16px; font-weight: 500; line-height: 22px; }
.ot-order__sb { margin-top: 1px; font-size: 12px; line-height: 17px; color: var(--content-subtle); }
.ot-order__lines { margin-top: 14px; }
.ot-oline { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding: 10px 0; font-size: 13px; color: var(--content-subtle); }
.ot-oline + .ot-oline { box-shadow: inset 0 1px 0 rgba(12,14,18,.07); }
.ot-oline b { color: var(--content-strong); font-weight: 500; font-variant-numeric: tabular-nums; }
.ot-oline s { color: rgba(12,14,18,.34); }
.ot-oline strong { color: #4d7014; font-weight: 500; }
.ot-order__total { margin-top: 6px; padding-top: 14px; border-top: 1px solid rgba(12,14,18,.12); display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; }
.ot-order__total span { font-size: 13px; color: var(--content-subtle); }
.ot-order__total b { font-size: 26px; font-weight: 600; letter-spacing: -.6px; line-height: 1; font-variant-numeric: tabular-nums; }
.ot-steps { padding: 4px 16px; }
.ot-step { display: flex; gap: 11px; padding: 12px 0; align-items: flex-start; }
.ot-step + .ot-step { box-shadow: inset 0 1px 0 rgba(12,14,18,.07); }
.ot-step > i { width: 24px; height: 24px; flex: 0 0 auto; border-radius: 50%; background: var(--brand-strong); color: #fff; display: grid; place-items: center; font: 600 12px var(--font); font-style: normal; }
.ot-step b { display: block; font-size: 13px; font-weight: 500; line-height: 19px; }
.ot-step span { display: block; margin-top: 1px; font-size: 12px; line-height: 17px; color: var(--content-subtle); }
/* Возврат из окна банка — самая хрупкая точка. Отдельное состояние вместо
   мутации кнопки «Оплатить» в «Проверить оплату». */
.ot-await { padding: 18px 16px; text-align: center; }
.ot-await__ic { width: 52px; height: 52px; margin: 0 auto; border-radius: 50%; background: var(--tile); display: grid; place-items: center; color: #a8446f; }
.ot-await__ic svg { width: 24px; height: 24px; animation: otSpin 1.4s linear infinite; }
@keyframes otSpin { to { transform: rotate(360deg); } }
.ot-await b { display: block; margin-top: 12px; font-size: 16px; font-weight: 500; line-height: 22px; }
.ot-await p { margin: 5px auto 0; max-width: 290px; font-size: 12px; line-height: 18px; color: var(--content-subtle); }
.ot-await__btns { margin-top: 15px; display: flex; flex-direction: column; gap: 8px; }
.ot-await__btns button { height: 46px; border: 0; border-radius: var(--r-pill); font: 600 14px var(--font); letter-spacing: -.2px; cursor: pointer; background: var(--tile); color: var(--content-strong); }
.ot-await__btns button:first-child { background: var(--brand-strong); color: #fff; }

/* ----- Экран выбора времени ----- */
.ot-tz { padding: 11px 13px; border-radius: var(--r-inset); background: var(--tile); display: flex; align-items: center; gap: 9px; font-size: 12px; line-height: 17px; color: rgba(12,14,18,.62); }
.ot-tz > i { width: 16px; height: 16px; flex: 0 0 auto; color: #a8446f; }
.ot-tz > i svg { width: 100%; height: 100%; display: block; }
.ot-tz b { color: var(--content-strong); font-weight: 500; }
.ot-days { margin: 14px -20px 0; display: flex; gap: 8px; overflow-x: auto; padding: 2px 20px 4px; scrollbar-width: none; }
.ot-days::-webkit-scrollbar { display: none; }
.ot-day { flex: 0 0 auto; width: 58px; padding: 10px 0 11px; border: 0; border-radius: var(--r-inset); background: var(--card); cursor: pointer; font-family: var(--font);
  box-shadow: 0 6px 18px rgba(20,4,12,.05), inset 0 0 0 1px rgba(12,14,18,.04); transition: background .16s ease, color .16s ease, transform .12s ease; }
.ot-day:active { transform: scale(.96); }
.ot-day small { display: block; font-size: 11px; font-weight: 500; color: var(--content-subtle); }
.ot-day b { display: block; margin-top: 3px; font-size: 17px; font-weight: 600; letter-spacing: -.3px; font-variant-numeric: tabular-nums; }
.ot-day span { display: block; margin-top: 4px; font-size: 11px; font-weight: 500; color: var(--content-subtle); font-variant-numeric: tabular-nums; }
.ot-day.on { background: var(--brand-strong); box-shadow: 0 10px 22px rgba(20,4,12,.26); }
.ot-day.on small { color: rgba(255,255,255,.55); }
.ot-day.on b { color: #fff; }
.ot-day.on span { color: rgba(255,255,255,.6); }
.ot-slot-grp { margin-top: 20px; }
.ot-slot-grp__h { display: flex; align-items: center; gap: 8px; padding: 0 2px 10px; font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: rgba(12,14,18,.5); }
.ot-slot-grp__h i { width: 15px; height: 15px; color: #a8446f; }
.ot-slot-grp__h i svg { width: 100%; height: 100%; display: block; }
.ot-slot-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.ot-slot { min-height: 56px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; border: 0; border-radius: var(--r-inset); background: var(--card); cursor: pointer; font-family: var(--font); color: var(--content-strong);
  box-shadow: 0 6px 18px rgba(20,4,12,.05), inset 0 0 0 1px rgba(12,14,18,.04); transition: background .16s ease, color .16s ease, transform .12s ease; }
.ot-slot:active { transform: scale(.97); }
.ot-slot b { font-size: 15px; font-weight: 500; letter-spacing: -.2px; font-variant-numeric: tabular-nums; }
/* Слоты приходят от РАЗНЫХ тренеров: имя в ячейке — не украшение, а
   единственный способ понять, к кому попадёшь. */
.ot-slot small { max-width: 100%; padding: 0 6px; font-size: 11px; color: var(--content-subtle); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ot-slot.on { background: var(--brand-strong); color: #fff; box-shadow: 0 10px 22px rgba(20,4,12,.26); }
.ot-slot.on b { font-weight: 600; }
.ot-slot.on small { color: rgba(255,255,255,.6); }
.ot-empty { margin-top: 22px; padding: 26px 20px; text-align: center; }
.ot-empty b { display: block; font-size: 15px; font-weight: 500; line-height: 21px; }
.ot-empty p { margin: 5px auto 0; max-width: 280px; font-size: 12px; line-height: 18px; color: var(--content-subtle); }

/* ----- Подтверждение записи (шторка) ----- */
.ot-cnf-coach { display: flex; align-items: center; gap: 11px; padding: 11px; border-radius: var(--r-inset); background: var(--tile); }
.ot-cnf-coach .ot-coach-av { width: 44px; height: 44px; border-radius: 12px; }
.ot-cnf-coach b { display: block; font-size: 14px; font-weight: 500; line-height: 20px; }
.ot-cnf-coach span { display: block; margin-top: 1px; font-size: 12px; line-height: 17px; color: var(--content-subtle); }
.ot-cnf-when { margin-top: 15px; font-size: 24px; font-weight: 600; letter-spacing: -.5px; line-height: 1.1; }
.ot-cnf-tz { margin-top: 3px; font-size: 12px; line-height: 17px; color: var(--content-subtle); }
.ot-cnf-lines { margin-top: 15px; }
.ot-cnf-l { display: flex; gap: 10px; padding: 11px 0; align-items: flex-start; }
.ot-cnf-l + .ot-cnf-l { box-shadow: inset 0 1px 0 rgba(12,14,18,.07); }
.ot-cnf-l > i { width: 17px; height: 17px; flex: 0 0 auto; margin-top: 2px; color: #6f8c37; }
.ot-cnf-l > i svg { width: 100%; height: 100%; display: block; }
.ot-cnf-l b { display: block; font-size: 13px; font-weight: 500; line-height: 19px; }
.ot-cnf-l span { display: block; margin-top: 1px; font-size: 12px; line-height: 17px; color: var(--content-subtle); }
.ot-cancel-booking { display: flex; flex-direction: column; margin: 14px 0; padding: 12px 13px; border-radius: var(--r-inset); background: var(--tile); }
.ot-cancel-booking b { font-size: 14px; font-weight: 500; line-height: 20px; }
.ot-cancel-booking span { margin-top: 2px; font-size: 12px; line-height: 17px; color: var(--content-subtle); }
.ot-cancel-outcome { display: grid; grid-template-columns: 1fr auto; gap: 12px; align-items: center; padding: 12px 0; border-top: 1px solid rgba(12,14,18,.07); border-bottom: 1px solid rgba(12,14,18,.07); }
.ot-cancel-outcome b { font-size: 13px; font-weight: 500; line-height: 19px; }
.ot-cancel-outcome span { display: block; margin-top: 2px; font-size: 12px; line-height: 17px; color: var(--content-subtle); }
.ot-cancel-outcome strong { font-size: 12px; font-weight: 500; }
.ot-cancel-outcome strong.positive { color: #4d7014; }
.ot-cancel-outcome strong.warning { color: #8a5f1c; }
.ot-duration-pick { display: flex; flex-direction: column; gap: 8px; margin-top: 15px; }
.ot-duration-pick button { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; padding: 14px; border: 0; border-radius: var(--r-inset); background: var(--tile); color: var(--content-strong); text-align: left; font-family: var(--font); cursor: pointer; }
.ot-duration-pick b { font-size: 14px; font-weight: 500; line-height: 20px; }
.ot-duration-pick span { font-size: 12px; color: var(--content-subtle); }

.ot-loading { margin-top: 20px; padding: 36px 22px; border-radius: var(--r-card); background: var(--card); color: var(--content-subtle); text-align: center; font-size: 13px; line-height: 1.55; box-shadow: 0 8px 24px rgba(20,4,12,.06), inset 0 0 0 1px rgba(12,14,18,.03); }
.ot-loading b { display: block; color: var(--content-strong); font-size: 15px; font-weight: 500; margin-bottom: 4px; }
.ot-back-inline { margin: 4px 0 14px; padding: 7px 0; border: 0; background: transparent; color: #8a3454; font: 600 13px var(--font); cursor: pointer; }

/* Полоска «оплата не завершена». Намеренно НЕ карточка каталога: это
   обращение к клиенту, а не очередной блок с ценами. И намеренно не
   полноэкранная подмена — незавершённая покупка не повод отнимать доступ к
   уже оплаченному. */
.ot-pendbar { margin-top: 12px; padding: 15px 16px 16px; border-radius: var(--r-card); background: #fff6ec; box-shadow: inset 0 0 0 1px rgba(150,90,20,.14); }
.ot-pendbar b { display: block; font-size: 15px; font-weight: 500; line-height: 21px; }
.ot-pendbar p { margin: 6px 0 0; font-size: 12px; line-height: 17px; color: var(--content-subtle); }
.ot-pendbar__row { margin-top: 13px; display: flex; flex-wrap: wrap; gap: 8px; }
.ot-pendbar__row button { flex: 1 1 auto; border: 0; cursor: pointer; border-radius: var(--r-pill); padding: 11px 16px; font: 600 13px var(--font); letter-spacing: -.15px; background: var(--brand-strong); color: #fff; }
.ot-pendbar__row button.ghost { background: #fff; color: var(--brand-strong); box-shadow: inset 0 0 0 1px rgba(138,52,84,.22); }

/* ----- Постоянное расписание ----- */
/* Экраны развилки и конструктора живут без баннера, поэтому лист начинается
   сверху страницы: отрицательный отступ .ot-sheet тут не нужен и оставлял бы
   дыру под топбаром. */
.ot-sheet--plain { margin-top: 0; border-radius: 0; padding-top: 0; }
.ot-pagetitle { margin: 0 2px 16px; }
.ot-pagetitle h1 { margin: 0; font-size: 24px; font-weight: 600; letter-spacing: -.6px; line-height: 30px; }
.ot-pagetitle p { margin: 4px 0 0; font-size: 13px; line-height: 18px; color: var(--content-subtle); }
.ot-tz { margin: 0 0 14px; padding: 11px 13px; display: flex; align-items: flex-start; gap: 9px; border-radius: var(--r-inset); background: var(--tile); font-size: 12px; line-height: 17px; color: var(--content-subtle); }
.ot-tz i { flex: none; width: 16px; height: 16px; margin-top: 1px; }
.ot-tz i svg { width: 100%; height: 100%; }
.ot-tz b { color: var(--content-strong); font-weight: 500; }
.ot-hint--left { text-align: left; }

.ot-plan { padding: 15px 16px 16px; }
.ot-plan__top { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.ot-plan__t { font-size: 16px; font-weight: 500; line-height: 22px; }
.ot-plan__ed { border: 0; background: transparent; padding: 4px 0; color: #8a3454; font: 600 13px var(--font); cursor: pointer; }
.ot-plan__pat { margin-top: 11px; display: flex; flex-wrap: wrap; gap: 7px; }
.ot-plan__pat span { padding: 8px 12px; border-radius: var(--r-pill); background: var(--tile); font-size: 13px; font-weight: 500; letter-spacing: -.1px; font-variant-numeric: tabular-nums; }
.ot-plan__till { margin-top: 12px; font-size: 12px; line-height: 17px; color: var(--content-subtle); }
.ot-plan__till b { color: var(--content-strong); font-weight: 500; }
.ot-plan__pause { margin-top: 13px; width: 100%; border: 0; cursor: pointer; border-radius: var(--r-pill); padding: 11px 16px; font: 600 13px var(--font); letter-spacing: -.15px; background: var(--tile); color: var(--content-strong); }
.ot-plan--paused .ot-plan__t { color: var(--content-subtle); }

/* Нудж — не карточка каталога, а обращение: другой фон, чтобы его не читали
   как очередной блок с ценами. */
.ot-nudge { margin-top: 12px; padding: 15px 16px 16px; border-radius: var(--r-card); background: #fdf1f6; box-shadow: inset 0 0 0 1px rgba(138,52,84,.12); }
.ot-nudge b { display: block; font-size: 15px; font-weight: 500; line-height: 21px; }
.ot-nudge p { margin: 6px 0 0; font-size: 12px; line-height: 17px; color: var(--content-subtle); }
.ot-nudge__row { margin-top: 13px; display: flex; flex-wrap: wrap; gap: 8px; }
.ot-nudge__row button { flex: 1 1 auto; border: 0; cursor: pointer; border-radius: var(--r-pill); padding: 11px 16px; font: 600 13px var(--font); letter-spacing: -.15px; background: var(--brand-strong); color: #fff; }
.ot-nudge__row button.ghost { background: #fff; color: var(--brand-strong); box-shadow: inset 0 0 0 1px rgba(138,52,84,.22); }

.ot-mode { margin-top: 12px; padding: 15px 16px 16px; cursor: pointer; }
.ot-mode.on { box-shadow: 0 8px 24px rgba(20,4,12,.06), inset 0 0 0 1.5px var(--brand-strong); }
.ot-mode__top { display: flex; align-items: flex-start; gap: 12px; }
.ot-mode__ic { flex: none; width: 38px; height: 38px; display: grid; place-items: center; border-radius: var(--r-inset); background: var(--tile); color: var(--brand-strong); }
.ot-mode__ic svg { width: 21px; height: 21px; }
.ot-mode__b { flex: 1 1 auto; }
.ot-mode__nm { font-size: 16px; font-weight: 500; line-height: 22px; }
.ot-mode__ds { margin-top: 3px; font-size: 12px; line-height: 17px; color: var(--content-subtle); }
.ot-mode__radio { flex: none; width: 21px; height: 21px; margin-top: 2px; border-radius: 50%; box-shadow: inset 0 0 0 1.6px var(--border-base); }
.ot-mode.on .ot-mode__radio { background: var(--brand-strong); box-shadow: inset 0 0 0 4.5px #fff, inset 0 0 0 6px var(--brand-strong); }
.ot-mode__pros { margin-top: 13px; display: grid; gap: 9px; }
.ot-mode__pros > div { display: flex; align-items: flex-start; gap: 9px; font-size: 12px; line-height: 17px; color: var(--content-subtle); }
.ot-mode__pros b { color: var(--content-strong); font-weight: 500; }
.ot-mode__pros i { flex: none; width: 17px; height: 17px; margin-top: 1px; }
.ot-mode__pros i svg { width: 100%; height: 100%; }
.ot-mode__pros i.yes { color: var(--positive); }
.ot-mode__pros i.no { color: rgba(12,14,18,.36); }

.ot-stp { margin-top: 12px; padding: 15px 16px 16px; }
.ot-stp__h { display: flex; align-items: center; gap: 10px; }
.ot-stp__n { flex: none; width: 22px; height: 22px; display: grid; place-items: center; border-radius: 50%; background: var(--brand-strong); color: #fff; font-size: 12px; font-weight: 600; }
.ot-stp__t { flex: 1 1 auto; font-size: 15px; font-weight: 500; letter-spacing: -.2px; }
.ot-stp__c { font-size: 12px; color: var(--content-subtle); font-variant-numeric: tabular-nums; }
.ot-stp__hint { margin-top: 11px; font-size: 12px; line-height: 17px; color: var(--content-subtle); }

.ot-dows { margin-top: 13px; display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.ot-dow { border: 0; cursor: pointer; padding: 12px 0; border-radius: var(--r-inset); background: var(--tile); font: 500 13px var(--font); letter-spacing: -.1px; color: var(--content-strong); }
.ot-dow.on { background: var(--brand-strong); color: #fff; font-weight: 600; }
/* Дни без открытого времени не прячем, а гасим: пустая сетка не объясняет,
   почему выбора нет, а серый день объясняет. */
.ot-dow.off { color: rgba(12,14,18,.28); cursor: default; }

/* Строка на день: слева день, справа его окна. Время выбирается для каждого
   дня отдельно, поэтому колонки времени не общие. */
.ot-tline { margin-top: 13px; }
.ot-tline + .ot-tline { margin-top: 15px; padding-top: 14px; box-shadow: inset 0 1px 0 rgba(12,14,18,.06); }
.ot-tline__d { font-size: 12px; font-weight: 600; letter-spacing: .2px; text-transform: uppercase; color: var(--content-subtle); }
.ot-tline .ot-times { margin-top: 9px; }
/* flex, а не grid с auto-fit: единственное окно в дне растягивалось на всю
   ширину и читалось как баннер, а не как один из вариантов. */
.ot-times { margin-top: 13px; display: flex; flex-wrap: wrap; gap: 8px; }
.ot-times .ot-time { flex: 0 1 auto; min-width: 104px; }
.ot-time { border: 0; cursor: pointer; padding: 11px 12px; border-radius: var(--r-inset); background: var(--tile); text-align: left; font-family: var(--font); }
.ot-time b { display: block; font-size: 15px; font-weight: 600; letter-spacing: -.2px; font-variant-numeric: tabular-nums; }
.ot-time span { display: block; margin-top: 2px; font-size: 11px; line-height: 15px; color: var(--content-subtle); }
.ot-time.on { background: var(--brand-strong); }
.ot-time.on b { color: #fff; }
.ot-time.on span { color: rgba(255,255,255,.72); }
.ot-times__empty { margin-top: 13px; padding: 13px; border-radius: var(--r-inset); background: var(--tile); font-size: 12px; line-height: 17px; color: var(--content-subtle); }

.ot-rules { padding: 6px 16px; }
.ot-rule { display: flex; align-items: flex-start; gap: 11px; padding: 12px 0; }
.ot-rule + .ot-rule { box-shadow: inset 0 1px 0 rgba(12,14,18,.06); }
.ot-rule i { flex: none; width: 19px; height: 19px; margin-top: 1px; color: var(--positive); }
.ot-rule i svg { width: 100%; height: 100%; }
.ot-rule b { display: block; font-size: 13px; font-weight: 500; line-height: 18px; }
.ot-rule span { display: block; margin-top: 2px; font-size: 12px; line-height: 17px; color: var(--content-subtle); }

@media (max-width: 359px) {
  .ot-where { grid-template-columns: 1fr; }
  .ot-slot-grid { grid-template-columns: repeat(2, 1fr); }
  .ot-bnr__txt h1 { font-size: 24px; }
}
@media(max-width:390px){
  .training-control-slot{grid-template-columns:22px 1fr}.training-control-slot em{grid-column:2;justify-self:start}
}
@media(prefers-reduced-motion:reduce){.training-care-motion,.gp-cap-upload>i,.ot-await__ic svg{animation:none}}

/* ===== Training journey revision: one continuous, editorial experience ===== */
#detail-trainhub,#detail-summary{background:radial-gradient(640px 320px at 50% -120px,rgba(245,219,232,.62),rgba(252,248,250,0) 72%),#fcf8fa}
#detail-trainhub .dhead,#detail-summary .dhead{background:rgba(252,248,250,.84);-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px)}
#v-trainhub-detail{padding-top:2px!important}
.sr-only {
  position:absolute!important;width:1px!important;height:1px!important;
  padding:0!important;margin:-1px!important;overflow:hidden!important;
  clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;
}
.training-control-explainer{margin-top:9px!important;padding:13px 14px!important;border-radius:18px!important;background:rgba(255,255,255,.72)!important;box-shadow:inset 0 0 0 .5px rgba(29,2,12,.07)!important}
.training-control-overview--error{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;background:#fff4f3!important}.training-control-overview--error b,.training-control-overview--error span{display:block}.training-control-overview--error b{font-size:11px}.training-control-overview--error span{margin-top:3px;color:#8f5754;font-size:8.8px;line-height:1.35}.training-control-overview--error button{height:34px;padding:0 11px;border:0;border-radius:11px;background:#4a1a2d;color:#fff;font:700 9px var(--font)}
.training-history{overflow:hidden;padding:0 14px 3px!important}.training-history>.training-care-section{padding:15px 0 9px}.training-history-row{display:grid;grid-template-columns:32px 1fr;gap:10px;align-items:start;width:100%;padding:12px 0;border:0;border-top:.5px solid rgba(29,2,12,.07);background:transparent;color:#291821;text-align:left;font-family:var(--font)}.training-history-row>span{width:30px;height:30px;display:grid;place-items:center;border-radius:10px;background:#f3e6ec;color:#96516d;font-size:11px;font-weight:750}.training-history-row>span.ok{background:#e7f3ea;color:#347354}.training-history-row>span.attention{background:#f5e5eb;color:#984b68}.training-history-row b,.training-history-row small{display:block}.training-history-row b{font-size:11px;line-height:1.3}.training-history-row small{margin-top:3px;color:var(--content-subtle);font-size:8.8px}.training-history-row p{margin:6px 0 0;color:rgba(35,23,29,.55);font-size:9px;line-height:1.4}.training-history-row--button{grid-template-columns:32px 1fr 17px}.training-history-row--button>i{align-self:center;color:rgba(29,2,12,.25)}.training-history-row--button svg{width:17px;height:17px}
#detail-trainhub .seg{height:42px;padding:4px;border-radius:14px;background:#eee8eb}
#detail-trainhub .seg button{border-radius:10px;font-size:10.5px}

/* Capture is a considered full screen, not a generic browser form. */
.gp-capture{align-items:stretch;background:#fcf9fa}
.gp-go:disabled{opacity:.42;pointer-events:none}
.gp-capture-card{width:100%;height:100dvh;max-height:none;padding:calc(var(--safe-top) + 18px) 20px calc(22px + env(safe-area-inset-bottom));border-radius:0;background:radial-gradient(500px 250px at 50% -40px,rgba(245,220,231,.62),rgba(252,249,250,0) 72%),#fcf9fa;box-shadow:none}
.gp-cap-x{position:sticky;z-index:2;top:0;float:right;background:rgba(255,255,255,.76);box-shadow:inset 0 0 0 .5px rgba(29,2,12,.07);padding:0}
.gp-cap-k{margin-top:8px;color:#94506d;font-size:9px}.gp-capture-card h2{margin-top:7px;font-size:25px;letter-spacing:-.65px}.gp-capture-card>p{max-width:390px;margin-bottom:16px;font-size:11px;line-height:1.5}
.gp-cap-preview{aspect-ratio:16/10;border-radius:22px;background:linear-gradient(145deg,#f0e5ea,#f9f5f7);box-shadow:inset 0 0 0 .5px rgba(29,2,12,.07)}
.gp-cap-preview video{background:#1d171a;object-fit:contain}
.gp-cap-empty{display:flex;flex-direction:column;align-items:center;text-align:center;padding:20px}
.gp-cap-empty>b{margin-top:12px;font-size:12px}.gp-cap-empty>span{margin-top:4px;color:rgba(35,24,30,.47);font-size:9.5px}
.gp-cap-phone{position:relative;width:70px;height:96px;border:1.5px solid rgba(86,49,66,.24);border-radius:15px;background:#fff;box-shadow:0 12px 30px rgba(72,34,51,.1)}
.gp-cap-phone::before{content:"";position:absolute;width:22px;height:3px;left:50%;top:7px;transform:translateX(-50%);border-radius:3px;background:#e9dce2}
.gp-cap-phone i{position:absolute;left:16px;right:16px;top:22px;bottom:17px;border:1px dashed rgba(139,69,101,.26);border-radius:8px}
.gp-cap-phone span{position:absolute;right:-24px;top:38px;padding:5px 6px;border-radius:8px;background:#381523;color:#fff;font-size:8px;font-weight:700}
.gp-cap-pick{height:48px;margin-top:10px;border:0;border-radius:15px;background:#f0e4e9;color:#6f3650;font-size:11px}
.gp-cap-fields{grid-template-columns:1fr;gap:13px;margin-top:17px}
.gp-cap-fields label,.gp-cap-feel-field{grid-column:1/-1;font-size:9.5px;font-weight:700;color:rgba(36,25,31,.56)}
.gp-cap-fields input[type=range]{height:28px;margin-top:2px;accent-color:#87435f}
.gp-cap-feel-field>span{display:block;margin-bottom:7px}.gp-cap-feelings{display:flex;flex-wrap:wrap;gap:6px}
.gp-cap-feelings button{min-height:34px;padding:0 11px;border:1px solid rgba(70,47,58,.09);border-radius:999px;background:#fff;color:rgba(36,25,31,.58);font:600 9px var(--font)}
.gp-cap-feelings button.on{border-color:#7e3c58;background:#3b1726;color:#fff}
.gp-cap-fields input:not([type=range]),.gp-cap-fields textarea{padding:11px 12px!important;border:0!important;border-radius:13px!important;background:#fff!important;box-shadow:inset 0 0 0 .5px rgba(29,2,12,.09)!important;font-size:12px!important}
.gp-cap-send{position:sticky;bottom:0;height:52px;margin-top:18px;border-radius:16px;background:#351321;font-size:12px;box-shadow:0 12px 28px rgba(45,13,27,.22)}

/* First control onboarding — full-scale iOS story, only once. */
.gp-control-intro{position:absolute;inset:0;z-index:48;display:none;flex-direction:column;overflow:hidden;padding:calc(var(--safe-top) + 18px) 22px calc(18px + env(safe-area-inset-bottom));background:radial-gradient(120% 58% at 50% -3%,#f6dce7 0%,#fff9fb 54%,#fff 100%)}
.gp-control-intro.show{display:flex;animation:gpfadein .25s ease}
.gp-control-intro__progress{display:flex;gap:7px;padding-right:92px}.gp-control-intro__progress i{flex:1;height:4px;border-radius:4px;background:rgba(54,17,32,.12)}.gp-control-intro__progress i.on{background:#74304c}
.gp-control-intro__skip{position:absolute;right:18px;top:calc(var(--safe-top) + 9px);min-width:78px;height:44px;padding:0 4px;border:0;background:transparent;color:rgba(35,20,27,.45);font:650 14px var(--font)}
.gp-control-intro__visual{position:relative;isolation:isolate;flex:1 1 auto;min-height:286px;width:calc(100% + 44px);margin-inline:-22px;display:grid;place-items:center;padding:14px 0 12px}
.gp-control-intro__visual::before{content:"";position:absolute;z-index:-1;inset:8% 0 3%;background:radial-gradient(ellipse at center,rgba(235,213,220,.42),rgba(255,249,251,0) 70%);filter:blur(22px);pointer-events:none}
.gp-control-intro__visual .gp-intro-art{-webkit-mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.08) 6%,rgba(0,0,0,.42) 15%,#000 27%,#000 68%,rgba(0,0,0,.56) 82%,rgba(0,0,0,.12) 94%,transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.08) 6%,rgba(0,0,0,.42) 15%,#000 27%,#000 68%,rgba(0,0,0,.56) 82%,rgba(0,0,0,.12) 94%,transparent 100%);-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
.gp-control-intro__copy{flex:0 0 auto}.gp-control-intro__copy>small{display:block;color:#98536e;font-size:12px;line-height:1.25;font-weight:780;letter-spacing:.075em;text-transform:uppercase}
.gp-control-intro__copy h2{max-width:460px;margin:10px 0 10px;font-size:34px;line-height:1.04;letter-spacing:-1.15px;text-wrap:balance}.gp-control-intro__copy>p{max-width:470px;margin:0;color:rgba(31,20,25,.62);font-size:16px;line-height:1.48}
.gp-control-intro__foot{flex:0 0 auto;padding-top:18px}.gp-control-intro__foot button{width:100%;height:58px;border:0;border-radius:19px;background:#35111f;color:#fff;font:720 16px var(--font);box-shadow:0 16px 34px rgba(44,11,25,.19)}

/* Slide 1: the illustration is the opening frame, not a card inside a card. */
.gp-intro-report{width:100%;background:transparent}
.gp-intro-report__media{position:relative;height:344px;overflow:hidden;background:transparent;-webkit-mask-image:linear-gradient(to bottom,#000 0,#000 72%,rgba(0,0,0,.74) 84%,rgba(0,0,0,.28) 94%,transparent 100%);mask-image:linear-gradient(to bottom,#000 0,#000 72%,rgba(0,0,0,.74) 84%,rgba(0,0,0,.28) 94%,transparent 100%)}.gp-intro-report__media video,.gp-intro-report__media img{width:100%;height:100%;object-fit:contain;display:block}.gp-intro-report__media .gp-ph{height:100%}
.gp-intro-report__media::before{content:"";position:absolute;z-index:0;inset:-18px;background:url("assets/training-intro-report-liana.jpg") center 54%/cover no-repeat;filter:blur(22px) saturate(.72);opacity:.46;transform:scale(1.09);-webkit-mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.72) 12%,#000 28%,rgba(0,0,0,.62) 78%,transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.72) 12%,#000 28%,rgba(0,0,0,.62) 78%,transparent 100%);pointer-events:none}
.gp-intro-report__media img.gp-intro-art{position:absolute;z-index:1;left:0;top:58px;width:100%;height:auto;object-fit:initial;object-position:initial;-webkit-mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.28) 2%,rgba(0,0,0,.72) 4%,#000 6%,#000 100%);mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.28) 2%,rgba(0,0,0,.72) 4%,#000 6%,#000 100%)}
.gp-intro-report__rec,.gp-intro-report__set{position:absolute;display:flex;align-items:center;border-radius:999px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.gp-intro-report__rec{left:22px;top:18px;gap:7px;padding:8px 11px;background:rgba(52,16,30,.9);color:#fff;font-size:11px;font-weight:760;letter-spacing:.045em;text-transform:uppercase}.gp-intro-report__rec i{width:7px;height:7px;border-radius:50%;background:#ff9aba;box-shadow:0 0 0 4px rgba(255,154,186,.14)}
.gp-intro-report__set{right:22px;bottom:18px;padding:8px 11px;background:rgba(255,255,255,.9);color:#482033;font-size:12px;font-weight:720}
.gp-intro-rule{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:12px;align-items:center;margin-top:16px;padding:13px 14px;border-radius:18px;background:#fff;box-shadow:inset 0 0 0 .5px rgba(29,2,12,.07)}
.gp-intro-rule>span{width:42px;height:42px;display:grid;place-items:center;border-radius:13px;background:#431728;color:#fff}.gp-intro-rule>span svg{width:23px;height:23px}.gp-intro-rule b,.gp-intro-rule small{display:block}.gp-intro-rule b{font-size:14px;line-height:1.2}.gp-intro-rule small{margin-top:3px;color:var(--content-subtle);font-size:12px;line-height:1.25}.gp-intro-rule>i{color:#8e4764;font-size:12px;font-style:normal;font-weight:750;white-space:nowrap}

/* Slide 2: the review context is stable; the coach portrait always comes from the CRM profile. */
.gp-intro-coach-scene{position:relative;width:100%;height:316px;overflow:hidden;background:transparent}
.gp-intro-coach-scene::before{content:"";position:absolute;inset:3% 0 0;background:radial-gradient(ellipse at 70% 44%,rgba(255,255,255,.96),rgba(242,219,227,.42) 43%,rgba(255,249,251,0) 74%);filter:blur(22px)}
.gp-intro-coach-scene__video{position:absolute;z-index:1;left:-6%;top:20%;width:64%;height:62%;overflow:hidden;border-radius:30px;background:rgba(255,255,255,.5);box-shadow:0 20px 50px rgba(58,20,37,.08),inset 0 0 0 1px rgba(96,40,64,.07);transform:rotate(-1.5deg);-webkit-mask-image:linear-gradient(102deg,transparent 0,#000 14%,#000 74%,rgba(0,0,0,.18) 94%,transparent 100%);mask-image:linear-gradient(102deg,transparent 0,#000 14%,#000 74%,rgba(0,0,0,.18) 94%,transparent 100%)}
.gp-intro-coach-scene__video img{width:100%;height:100%;display:block;object-fit:cover;object-position:center 52%;filter:saturate(.7) contrast(.93);opacity:.7}
.gp-intro-coach-scene__video::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,249,251,.04),rgba(255,249,251,.18) 62%,rgba(255,249,251,.82))}
.gp-intro-coach-scene__video-label{position:absolute;z-index:2;left:19%;bottom:16%;display:flex;align-items:center;gap:8px;padding:9px 11px;border-radius:14px;background:rgba(61,21,37,.9);color:#fff;box-shadow:0 10px 26px rgba(57,16,33,.18);font-size:11px;line-height:1;font-weight:720;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.gp-intro-coach-scene__video-label svg{width:19px;height:19px}.gp-intro-coach-scene__video-label b{font:inherit;white-space:nowrap}
.gp-intro-coach-scene__profile{position:absolute;z-index:3;right:6%;top:2%;width:49%;height:79%;padding:7px;overflow:hidden;border-radius:31px;background:rgba(255,255,255,.9);box-shadow:0 26px 58px rgba(66,25,43,.14),inset 0 0 0 1px rgba(75,31,49,.06);transform:rotate(.7deg);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}
.gp-intro-coach-scene__photo{width:100%;height:100%;display:grid;place-items:center;overflow:hidden;border-radius:25px;object-fit:cover;object-position:center 18%;background:linear-gradient(145deg,#f4e8ed,#fff);color:#7d3150;font-size:46px;font-weight:750}
.gp-intro-coach-scene__identity{position:absolute;z-index:4;right:2%;bottom:2%;width:66%;min-height:78px;display:flex;flex-direction:column;justify-content:center;padding:12px 14px;border-radius:19px;background:rgba(255,255,255,.94);box-shadow:0 16px 36px rgba(56,18,34,.13),inset 0 0 0 .5px rgba(74,29,48,.08);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}
.gp-intro-coach-scene__role{color:#9a536e;font-size:10px;line-height:1.2;font-weight:780;letter-spacing:.055em;text-transform:uppercase}.gp-intro-coach-scene__identity strong{margin-top:4px;color:#24171d;font-size:17px;line-height:1.12;letter-spacing:-.2px}.gp-intro-coach-scene__credential{margin-top:5px;color:#765464;font-size:11px;line-height:1.25;font-weight:610}
.gp-intro-proof{display:grid;grid-template-columns:42px minmax(0,1fr);gap:12px;align-items:center;margin-top:16px;padding:13px 14px;border-radius:18px;background:#fff;box-shadow:inset 0 0 0 .5px rgba(29,2,12,.07)}.gp-intro-proof>span{width:42px;height:42px;display:grid;place-items:center;border-radius:14px;background:#e8f4eb;color:#337453}.gp-intro-proof svg{width:22px;height:22px}.gp-intro-proof b,.gp-intro-proof small{display:block}.gp-intro-proof b{font-size:14px}.gp-intro-proof small{margin-top:3px;color:var(--content-subtle);font-size:12px;line-height:1.3}

/* Slide 3: camera, sightline and the complete exercise frame are explicit. */
.gp-intro-how{width:100%}.gp-intro-how__scene{position:relative;height:292px;background:transparent}
.gp-intro-how__scene--art>img{width:100%;height:100%;display:block;object-fit:cover;object-position:center}
.gp-intro-how__phone{position:absolute;z-index:3;left:16px;bottom:45px;width:64px;text-align:center;color:#60283f}.gp-intro-how__phone svg{width:44px;height:71px;filter:drop-shadow(0 8px 10px rgba(61,20,38,.12))}.gp-intro-how__phone b{display:block;margin-top:3px;font-size:11px}
.gp-intro-how__ray{position:absolute;z-index:1;left:62px;bottom:101px;width:83px;border-top:2px dashed rgba(126,61,88,.34);transform:rotate(-18deg);transform-origin:left center}.gp-intro-how__angle{position:absolute;z-index:4;left:22px;top:18px;padding:7px 9px;border-radius:10px;background:rgba(67,23,40,.91);color:#fff;font-size:12px;font-weight:750;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.gp-intro-how__frame-note{position:absolute;z-index:4;right:22px;bottom:18px;padding:8px 10px;border-radius:999px;background:rgba(255,255,255,.89);color:#6e3c52;font-size:10.5px;font-weight:720;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.gp-intro-how__frame{position:absolute;z-index:2;right:14px;top:14px;width:216px;height:222px;overflow:hidden;border-radius:22px;background:#fff;box-shadow:inset 0 0 0 1px rgba(100,43,67,.13)}.gp-intro-how__media{position:absolute;inset:13px 12px 37px}.gp-intro-how__media video,.gp-intro-how__media img{width:100%;height:100%;object-fit:contain;display:block}.gp-intro-how__media .gp-ph{height:100%}.gp-intro-how__frame>span{position:absolute;left:10px;right:10px;bottom:10px;text-align:center;color:#75445a;font-size:11px;font-weight:700}
.gp-intro-corner{position:absolute;width:20px;height:20px;border-color:#974c69;border-style:solid}.gp-intro-corner--tl{left:8px;top:8px;border-width:2px 0 0 2px;border-radius:7px 0 0}.gp-intro-corner--tr{right:8px;top:8px;border-width:2px 2px 0 0;border-radius:0 7px 0 0}.gp-intro-corner--bl{left:8px;bottom:32px;border-width:0 0 2px 2px;border-radius:0 0 0 7px}.gp-intro-corner--br{right:8px;bottom:32px;border-width:0 2px 2px 0;border-radius:0 0 7px}
.gp-intro-checks{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:16px}.gp-intro-checks span{min-width:0;padding:10px 7px;border-radius:14px;background:#fff;color:#774159;font-size:11px;line-height:1.25;text-align:center}.gp-intro-checks b{display:block;margin-bottom:4px;color:#3f1727;font-size:13px}

/* Slide 4: a recognisable video → human review → saved decision stack. */
.gp-intro-review{position:relative;width:100%;padding-bottom:48px}.gp-intro-review__video{position:relative;height:282px;background:transparent}.gp-intro-review__video video,.gp-intro-review__video img{width:100%;height:100%;object-fit:contain;display:block}.gp-intro-review__video .gp-ph{height:100%}
.gp-intro-review__video--art{overflow:hidden;-webkit-mask-image:linear-gradient(to bottom,#000 0,#000 70%,rgba(0,0,0,.76) 83%,rgba(0,0,0,.3) 94%,transparent 100%);mask-image:linear-gradient(to bottom,#000 0,#000 70%,rgba(0,0,0,.76) 83%,rgba(0,0,0,.3) 94%,transparent 100%)}
.gp-intro-review__video--art::before{content:"";position:absolute;z-index:0;inset:-18px;background:url("assets/training-intro-feedback-liana.jpg") center/cover no-repeat;filter:blur(22px) saturate(.74);opacity:.46;transform:scale(1.09);-webkit-mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.7) 12%,#000 28%,rgba(0,0,0,.62) 78%,transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.7) 12%,#000 28%,rgba(0,0,0,.62) 78%,transparent 100%);pointer-events:none}
.gp-intro-review__video--art img.gp-intro-art{position:absolute;z-index:1;left:0;top:28px;width:100%;height:auto;object-fit:initial;object-position:initial;-webkit-mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.28) 2%,rgba(0,0,0,.72) 4%,#000 6%,#000 100%);mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.28) 2%,rgba(0,0,0,.72) 4%,#000 6%,#000 100%)}
.gp-intro-review__note{position:relative;z-index:2;margin:-18px 22px 0;padding:13px 13px 14px;border-radius:20px;background:#fff;box-shadow:0 16px 34px rgba(55,17,34,.13)}.gp-intro-review__note>div{display:grid;grid-template-columns:42px minmax(0,1fr);gap:11px;align-items:center}.gp-intro-review__photo{width:42px;height:42px;display:grid;place-items:center;border-radius:14px;object-fit:cover;background:#eee2e7;color:#7d3150}.gp-intro-review__note small,.gp-intro-review__note b{display:block}.gp-intro-review__note small{color:#9b5671;font-size:11px;font-weight:720}.gp-intro-review__note b{margin-top:3px;font-size:13px;line-height:1.25}
.gp-intro-review__decision{position:absolute;z-index:3;right:18px;bottom:0;display:grid;grid-template-columns:38px auto;gap:10px;align-items:center;min-width:190px;padding:11px 13px;border-radius:18px;background:#eef7f0;box-shadow:0 14px 30px rgba(35,93,58,.12)}.gp-intro-review__decision>span{width:38px;height:38px;display:grid;place-items:center;border-radius:13px;background:#dcefe1;color:#2f7650}.gp-intro-review__decision svg{width:21px;height:21px}.gp-intro-review__decision b{display:block;font-size:14px}
.gp-intro-timeline{display:grid;grid-template-columns:auto 1fr auto 1fr auto;align-items:center;margin-top:16px}.gp-intro-timeline span{display:flex;align-items:center;gap:5px;padding:8px 9px;border-radius:999px;background:#f0e8ec;color:#7b5365;font-size:11px;font-weight:650;white-space:nowrap}.gp-intro-timeline span b{display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:rgba(123,83,101,.11);font-size:10px}.gp-intro-timeline span.done{background:#3d1726;color:#fff}.gp-intro-timeline span.done b{background:rgba(255,255,255,.18)}.gp-intro-timeline i{height:1px;background:#dfd0d7}

@media(max-height:740px){
  .gp-control-intro{padding-top:calc(var(--safe-top) + 14px)}.gp-control-intro__visual{min-height:222px;padding-top:9px;padding-bottom:8px}.gp-control-intro__copy h2{font-size:31px}.gp-control-intro__copy>p{font-size:15px;line-height:1.42}.gp-control-intro__foot{padding-top:13px}.gp-control-intro__foot button{height:54px}.gp-intro-report__media{height:238px}.gp-intro-report__media img.gp-intro-art{top:36px}.gp-intro-coach-scene{height:242px}.gp-intro-how__scene{height:218px}.gp-intro-how__frame{height:188px}.gp-intro-review__video{height:204px}.gp-intro-review__video--art img.gp-intro-art{top:18px}.gp-intro-rule,.gp-intro-proof,.gp-intro-checks,.gp-intro-timeline{margin-top:12px}
}

/* Missed-video intervention happens before the player advances. */
.gp-missed{position:absolute;inset:0;z-index:47;display:none;align-items:flex-end;padding:16px 16px calc(16px + env(safe-area-inset-bottom));background:rgba(25,12,18,.42);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.gp-missed.show{display:flex;animation:gpfadein .2s ease}.gp-missed-card{width:100%;padding:20px 18px 17px;border-radius:26px;background:#fff;box-shadow:0 30px 70px rgba(29,2,12,.22)}
.gp-missed-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:16px;background:#f4e6ec}.gp-missed-icon>span{position:relative;width:21px;height:16px;border:1.7px solid #8e4562;border-radius:5px}.gp-missed-icon>span::after{content:"";position:absolute;width:6px;height:6px;right:-4px;top:-4px;border-radius:50%;background:#d96f97;box-shadow:0 0 0 3px #f4e6ec}
.gp-missed-card>small{display:block;margin-top:15px;color:#96536d;font-size:9px;font-weight:750;text-transform:uppercase;letter-spacing:.07em}.gp-missed-card h2{margin:6px 0 7px;font-size:23px;line-height:1.13;letter-spacing:-.6px}.gp-missed-card>p{margin:0;color:rgba(35,23,29,.58);font-size:11.5px;line-height:1.48}
.gp-missed-guide{margin:14px 0;padding:11px 12px;border-radius:14px;background:#f8f3f5}.gp-missed-guide b,.gp-missed-guide span{display:block}.gp-missed-guide b{font-size:10.5px}.gp-missed-guide span{margin-top:3px;color:var(--content-subtle);font-size:9px;line-height:1.4}
.gp-missed-primary,.gp-missed-secondary{width:100%;height:48px;border-radius:15px;font:700 11px var(--font)}.gp-missed-primary{border:0;background:#371321;color:#fff}.gp-missed-secondary{margin-top:7px;border:1px solid rgba(29,2,12,.08);background:#f7f3f5;color:#765468}.gp-missed-card>em{display:block;margin-top:10px;color:rgba(35,23,29,.42);font-size:8.5px;font-style:normal;line-height:1.4;text-align:center}

/* Contextual trainer question stays inside the mounted player. */
.gp-question{position:absolute;inset:0;z-index:46;display:none;flex-direction:column;background:radial-gradient(560px 270px at 50% -50px,rgba(245,218,231,.62),rgba(252,249,250,0) 72%),#fcf9fa}
.gp-question.show{display:flex;animation:gpslideup .32s cubic-bezier(.32,.72,0,1)}
.gp-question-top{display:grid;grid-template-columns:36px 1fr 36px;gap:10px;align-items:center;padding:calc(var(--safe-top) + 10px) 18px 10px}.gp-question-top>div{text-align:center}.gp-question-top b,.gp-question-top span{display:block}.gp-question-top b{font-size:14px}.gp-question-top span{margin-top:1px;color:var(--content-subtle);font-size:8.5px}
.gp-question-scroll{flex:1;min-height:0;overflow-y:auto;padding:10px 20px 20px}
.gp-question-coach{display:flex;align-items:center;gap:12px;padding:14px;border-radius:20px;background:#fff;box-shadow:0 12px 32px rgba(29,2,12,.05),inset 0 0 0 .5px rgba(29,2,12,.06)}.gp-question-coach img{width:48px;height:48px;border-radius:50%;object-fit:cover}.gp-question-coach small,.gp-question-coach b,.gp-question-coach span{display:block}.gp-question-coach small{color:#95516d;font-size:8px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.gp-question-coach b{margin-top:2px;font-size:12.5px}.gp-question-coach span{margin-top:2px;color:var(--content-subtle);font-size:9px}
.gp-question-context{display:grid;grid-template-columns:62px 1fr;gap:11px;align-items:center;margin-top:10px;padding:10px;border-radius:18px;background:#fff;box-shadow:inset 0 0 0 .5px rgba(29,2,12,.06)}.gp-question-context__media{width:62px;height:62px;overflow:hidden;border-radius:13px;background:#f1eaed;display:grid;place-items:center;color:#8b4964;font-size:10px;font-weight:750}.gp-question-context__media img,.gp-question-context__media video{width:100%;height:100%;object-fit:cover}.gp-question-context small,.gp-question-context b,.gp-question-context span{display:block}.gp-question-context small{color:#98516d;font-size:8px}.gp-question-context b{margin-top:2px;font-size:11.5px}.gp-question-context span{margin-top:3px;color:var(--content-subtle);font-size:8.8px}
.gp-question-label{display:block;margin:18px 2px 7px;color:rgba(35,23,29,.52);font-size:9px;font-weight:700}.gp-question-topics{display:flex;flex-wrap:wrap;gap:6px}.gp-question-topics button{height:34px;padding:0 11px;border:1px solid rgba(29,2,12,.08);border-radius:999px;background:#fff;color:#755366;font:600 9px var(--font)}.gp-question-topics button.on{border-color:#3c1525;background:#3c1525;color:#fff}
.gp-question textarea{width:100%;min-height:126px;padding:13px 14px;border:0;border-radius:17px;background:#fff;color:#22151b;font:400 13px/1.48 var(--font);resize:none;box-shadow:inset 0 0 0 .5px rgba(29,2,12,.09)}.gp-question textarea:focus{outline:0;box-shadow:inset 0 0 0 1.3px rgba(131,61,91,.36),0 0 0 4px rgba(131,61,91,.06)}
.gp-question-note{margin-top:9px;padding:10px 11px;border-radius:13px;background:#f5eef1;color:rgba(39,24,31,.54);font-size:9px;line-height:1.42}.gp-question-note.danger{background:#fff0ef;color:#9a4d48}
.gp-question-foot{display:grid;grid-template-columns:.8fr 1.2fr;gap:8px;padding:10px 20px calc(16px + env(safe-area-inset-bottom))}.gp-question-foot button{height:50px;border-radius:15px;font:700 10.5px var(--font)}.gp-question-foot button:first-child{border:1px solid rgba(29,2,12,.08);background:#f2ecef;color:#725164}.gp-question-foot button:last-child{border:0;background:#351321;color:#fff}.gp-question-foot button:disabled{opacity:.35}
.gp-info-coach{width:100%;display:grid;grid-template-columns:42px 1fr 18px;gap:11px;align-items:center;margin:22px 0 10px;padding:12px;border:0;border-radius:18px;background:linear-gradient(135deg,#f5e9ee,#fbf8f9);color:#2c1b23;text-align:left;font-family:var(--font);box-shadow:inset 0 0 0 .5px rgba(29,2,12,.07)}
.gp-info-coach__avatar{width:42px;height:42px;display:grid;place-items:center;border-radius:50%;object-fit:cover;background:#e9dce2;color:#7d3150;font-size:11px;font-weight:750}.gp-info-coach>span{min-width:0}.gp-info-coach small,.gp-info-coach b,.gp-info-coach em{display:block}.gp-info-coach small{color:#94516c;font-size:8px;font-weight:700}.gp-info-coach b{margin-top:2px;font-size:11.5px}.gp-info-coach em{margin-top:2px;color:var(--content-subtle);font-size:8.5px;font-style:normal}.gp-info-coach>i{color:rgba(29,2,12,.25)}.gp-info-coach svg{width:17px;height:17px}

/* Post-workout question: compact report context, human presence, no empty void. */
.gp-done{padding:24px 20px;background:radial-gradient(560px 300px at 50% -30px,rgba(246,218,231,.82),rgba(252,249,250,0) 72%),#fcf9fa}.gp-done-card{width:100%;max-width:430px;padding:24px 0}.gp-done .ring{width:78px;height:78px;margin-bottom:24px;background:#351321;color:#fff;box-shadow:0 18px 40px rgba(50,13,29,.2)}.gp-done .ring svg{width:33px;height:33px;color:#fff}.gp-done-card>small{color:#96516d;font-size:8.5px;font-weight:750;letter-spacing:.08em;text-transform:uppercase}.gp-done h2{max-width:330px;margin:7px 0 8px;font-size:27px;line-height:1.08;letter-spacing:-.8px}.gp-done p{max-width:340px;margin:0;color:rgba(38,24,31,.55);font-size:11px;line-height:1.48}.gp-done .gp-ds{width:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:0;overflow:hidden;margin:26px 0 12px;border-radius:19px;background:#fff;box-shadow:0 12px 34px rgba(29,2,12,.05),inset 0 0 0 .5px rgba(29,2,12,.06)}.gp-done .gp-ds .c{padding:14px 6px;border-left:.5px solid rgba(29,2,12,.07)}.gp-done .gp-ds .c:first-child{border-left:0}.gp-done .gp-ds .c b{font-size:16px}.gp-done .gp-ds .c small{display:block;margin-top:3px;color:var(--content-subtle);font-size:8px}.gp-done .gp-fin{max-width:none;height:52px;padding:0;border-radius:16px;background:#351321;font-size:11.5px;font-weight:700;box-shadow:0 13px 28px rgba(45,13,27,.18)}.gp-done .gp-confetti{opacity:.16}
.gp-coachq .gp-survey-body{padding-top:16px}.gp-coachq-report{margin:0 0 12px;padding:14px 15px;border-radius:18px;background:#fff;box-shadow:inset 0 0 0 .5px rgba(29,2,12,.06)}.gp-coachq-report small,.gp-coachq-report b,.gp-coachq-report span{display:block}.gp-coachq-report small{color:#96516d;font-size:8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.gp-coachq-report b{margin-top:4px;font-size:13px}.gp-coachq-report span{margin-top:3px;color:var(--content-subtle);font-size:9px}
.gp-coachq-person{margin:0 0 20px;padding:12px 14px;border-radius:18px;background:rgba(255,255,255,.72)}.gp-coachq-person img{width:48px;height:48px;box-shadow:0 0 0 4px #f1e5eb}.gp-coachq-person small{color:#96516d;font-size:8px;font-weight:700;text-transform:uppercase}.gp-coachq-person strong{margin-top:1px;font-size:13px}
.gp-coachq .gp-survey-q{font-size:26px;letter-spacing:-.65px}.gp-coachq-topics{margin-top:13px}.gp-coachq textarea{margin-top:13px;min-height:118px;border:0;border-radius:17px;background:#fff;box-shadow:inset 0 0 0 .5px rgba(29,2,12,.09)}

/* Results: plan/fact and coach handoff instead of generic dashboard rings. */
#v-summary-body{padding:0 0 32px}.training-summary{display:flex;flex-direction:column;gap:11px;padding-top:3px}
.training-summary-hero{padding:19px 18px 17px;border-radius:24px;background:linear-gradient(145deg,#2a0b16,#48182b);color:#fff;box-shadow:0 20px 42px rgba(42,8,22,.18)}.training-summary-hero>small{color:#f0abc5;font-size:9px;font-weight:750;letter-spacing:.08em;text-transform:uppercase}.training-summary-hero h1{margin:7px 0 7px;font-size:25px;line-height:1.1;letter-spacing:-.75px}.training-summary-hero>p{max-width:450px;margin:0;color:rgba(255,255,255,.61);font-size:10.5px;line-height:1.5}
.training-summary-progress{height:5px;margin-top:18px;overflow:hidden;border-radius:5px;background:rgba(255,255,255,.12)}.training-summary-progress i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#e890b1,#f3c5d7)}
.training-summary-progress__meta{display:flex;justify-content:space-between;margin-top:7px;color:rgba(255,255,255,.48);font-size:8.5px}.training-summary-progress__meta em{font-style:normal}
.training-summary-stats{display:grid;grid-template-columns:repeat(4,1fr);overflow:hidden;border-radius:20px;background:#fff;box-shadow:0 10px 28px rgba(29,2,12,.045),inset 0 0 0 .5px rgba(29,2,12,.06)}.training-summary-stats>div{min-width:0;padding:13px 8px;text-align:center;border-left:.5px solid rgba(29,2,12,.07)}.training-summary-stats>div:first-child{border-left:0}.training-summary-stats b,.training-summary-stats span{display:block}.training-summary-stats b{font-size:13.5px;white-space:nowrap}.training-summary-stats span{margin-top:3px;color:var(--content-subtle);font-size:8px}
.training-summary-load{display:grid;grid-template-columns:repeat(3,1fr);overflow:hidden;border-radius:20px;background:linear-gradient(135deg,#f5ecef,#faf7f8);box-shadow:inset 0 0 0 .5px rgba(49,12,27,.06)}.training-summary-load>div{min-width:0;padding:13px 11px;border-left:.5px solid rgba(49,12,27,.08)}.training-summary-load>div:first-child{border-left:0}.training-summary-load small,.training-summary-load b,.training-summary-load span{display:block}.training-summary-load small{color:#96516d;font-size:7.5px;font-weight:750;letter-spacing:.035em;text-transform:uppercase}.training-summary-load b{margin-top:5px;color:#2e1721;font-size:13px;letter-spacing:-.15px;white-space:nowrap}.training-summary-load span{margin-top:3px;color:rgba(46,23,33,.47);font-size:7.6px;line-height:1.25}
.training-summary-section{padding:15px 15px 3px;border-radius:22px;background:#fff;box-shadow:0 10px 28px rgba(29,2,12,.045),inset 0 0 0 .5px rgba(29,2,12,.06)}.training-summary-section__head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:0 1px 11px}.training-summary-section__head small{display:block;color:#98516d;font-size:8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.training-summary-section__head h2{margin:3px 0 0;font-size:16px;letter-spacing:-.25px}.training-summary-section__head>span{padding:6px 8px;border-radius:999px;background:#f4eff1;color:#785266;font-size:8px}.training-summary-section__head>span.ok{background:#e9f4eb;color:#397556}.training-summary-section__head>span.attention{background:#f8ebef;color:#974b67}
.training-summary-control{display:grid;grid-template-columns:31px 1fr;gap:10px;padding:11px 0;border-top:.5px solid rgba(29,2,12,.07)}.training-summary-control>span{width:29px;height:29px;display:grid;place-items:center;border-radius:50%;font-size:10px;font-weight:800}.training-summary-control>span.ok{background:#e7f3ea;color:#347354}.training-summary-control>span.attention{background:#f5e5eb;color:#984b68}.training-summary-control>span.waiting{background:#fdf0d8;color:#a3701a}.training-summary-control b,.training-summary-control small{display:block}.training-summary-control b{font-size:11px}.training-summary-control small{margin-top:2px;color:var(--content-subtle);font-size:8.8px}.training-summary-control p{margin:5px 0 0;color:rgba(35,23,29,.52);font-size:8.8px;line-height:1.4}
.training-summary-exercise{padding:11px 0;border-top:.5px solid rgba(29,2,12,.07)}.training-summary-exercise__top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.training-summary-exercise b,.training-summary-exercise span{display:block}.training-summary-exercise b{font-size:11px}.training-summary-exercise span{margin-top:2px;color:var(--content-subtle);font-size:8.8px}.training-summary-exercise em{padding:5px 7px;border-radius:999px;background:#f1edef;color:#79576a;font-size:7.8px;font-style:normal;white-space:nowrap}.training-summary-exercise em.ok{background:#e9f4eb;color:#347354}.training-summary-exercise em.partial{background:#fbf0dd;color:#956029}.training-summary-exercise em.missed{background:#f3eff1;color:#8b7c83}
.training-summary-exercise__bar{height:3px;margin-top:8px;overflow:hidden;border-radius:3px;background:#eee9eb}.training-summary-exercise__bar i{display:block;height:100%;border-radius:inherit;background:#a65374}
.training-summary-coach{display:grid;grid-template-columns:45px 1fr;gap:11px;align-items:center;padding:14px 15px;border-radius:20px;background:linear-gradient(135deg,#f4e7ed,#faf7f8);box-shadow:inset 0 0 0 .5px rgba(29,2,12,.06)}.training-summary-coach__avatar{width:45px;height:45px;display:grid;place-items:center;border-radius:50%;object-fit:cover;background:#e9dce2;color:#7d3150;font-size:11px;font-weight:750}.training-summary-coach__copy small,.training-summary-coach__copy b,.training-summary-coach__copy span{display:block}.training-summary-coach__copy small{color:#96516d;font-size:8px;font-weight:700;text-transform:uppercase}.training-summary-coach__copy b{margin-top:1px;font-size:11.5px}.training-summary-coach__copy span{margin-top:3px;color:var(--content-subtle);font-size:8.8px;line-height:1.4}
.training-summary-close{height:52px;margin-top:2px;background:#351321;box-shadow:none}.training-summary-delete{align-self:center;border:0;background:transparent;color:rgba(77,43,57,.4);font:600 9px var(--font);padding:7px 10px}

@media(max-width:390px){
  .training-summary-stats{grid-template-columns:1fr 1fr}.training-summary-stats>div:nth-child(3){border-left:0;border-top:.5px solid rgba(29,2,12,.07)}.training-summary-stats>div:nth-child(4){border-top:.5px solid rgba(29,2,12,.07)}
  .training-summary-load>div{padding-left:9px;padding-right:8px}.training-summary-load small{font-size:6.8px}.training-summary-load b{font-size:11.5px}.training-summary-load span{font-size:6.9px}
  .gp-control-intro__copy h2{font-size:32px}.gp-question-foot{grid-template-columns:1fr}
}

/* Mobile polish: iOS-scale type, tactile controls and a calmer training hub. */
#v-trainhub-detail,#v-summary-body{width:100%;max-width:520px;margin:0 auto}
.training-control-explainer{min-height:66px;margin-top:11px!important;padding:13px 15px!important;border-radius:20px!important}.training-control-explainer>span{padding:8px 9px;font-size:12px}.training-control-explainer b{font-size:15px}.training-control-explainer small{margin-top:3px;font-size:12.5px;line-height:1.35}
#detail-trainhub .seg{height:52px;padding:4px;border-radius:16px}#detail-trainhub .seg button{min-height:44px;border-radius:12px;font-size:14px}
#detail-trainhub .wkdone__edit{min-width:64px;min-height:44px;padding:0 8px}#detail-trainhub .wkdone__add{min-height:48px}

.gp-control{margin-bottom:13px;padding:17px 16px;border-radius:20px}.gp-control-k{margin-bottom:10px}.gp-control-k span{font-size:11px}.gp-control-k em{padding:6px 8px;border-radius:9px;font-size:11px;line-height:1.2}.gp-control-guide b{font-size:16px}.gp-control-guide span{font-size:13px;line-height:1.45}.gp-control-rules{gap:7px;margin-top:12px}.gp-control-rules span{padding:6px 8px;font-size:11px}.gp-control button#gpControlRecord{min-height:48px;margin-top:13px;border-radius:14px;font-size:14px}
.gp-info-coach{grid-template-columns:52px minmax(0,1fr) 22px;gap:13px;min-height:76px;padding:13px 14px;border-radius:20px}.gp-info-coach__avatar{width:52px;height:52px;font-size:15px;box-shadow:0 0 0 5px #f5edf1}.gp-info-coach small{font-size:11px}.gp-info-coach b{font-size:16px;line-height:1.25}.gp-info-coach em{font-size:13px;line-height:1.35}.gp-info-coach svg{width:20px;height:20px}

#v-summary-body{padding-bottom:38px}.training-summary{gap:14px;padding-top:7px}
.training-summary-hero{padding:24px 21px 20px;border-radius:27px}.training-summary-hero>small{font-size:11px}.training-summary-hero h1{margin:8px 0 9px;font-size:30px;line-height:1.08;letter-spacing:-.9px}.training-summary-hero>p{font-size:16px;line-height:1.48}.training-summary-progress{height:6px;margin-top:21px}.training-summary-progress__meta{margin-top:9px;font-size:13px}
.training-summary-stats{border-radius:22px}.training-summary-stats>div{min-height:76px;display:flex;flex-direction:column;justify-content:center;padding:14px 10px}.training-summary-stats b{font-size:19px}.training-summary-stats span{margin-top:5px;font-size:13px}
.training-summary-load{border-radius:22px}.training-summary-load>div{min-height:88px;padding:16px 13px}.training-summary-load small{font-size:11px;line-height:1.25}.training-summary-load b{margin-top:7px;font-size:18px}.training-summary-load span{margin-top:4px;font-size:12px;line-height:1.3}
.training-summary-section{padding:20px 19px 5px;border-radius:24px}.training-summary-section__head{padding-bottom:14px}.training-summary-section__head small{font-size:11px}.training-summary-section__head h2{margin-top:5px;font-size:22px}.training-summary-section__head>span{padding:7px 9px;font-size:12px}
.training-summary-control{grid-template-columns:40px 1fr;gap:13px;padding:15px 0}.training-summary-control>span{width:38px;height:38px;font-size:14px}.training-summary-control b{font-size:16px;line-height:1.3}.training-summary-control small{margin-top:3px;font-size:13px;line-height:1.35}.training-summary-control p{margin-top:7px;font-size:13px;line-height:1.48}
.training-summary-exercise{padding:15px 0}.training-summary-exercise__top{gap:10px}.training-summary-exercise b{font-size:16px;line-height:1.3}.training-summary-exercise span{margin-top:4px;font-size:13px}.training-summary-exercise em{padding:6px 8px;font-size:11px}.training-summary-exercise__bar{height:4px;margin-top:11px}
.training-summary-coach{grid-template-columns:56px 1fr;gap:14px;padding:17px 18px;border-radius:23px}.training-summary-coach__avatar{width:56px;height:56px;font-size:15px;box-shadow:0 0 0 5px rgba(255,255,255,.7)}.training-summary-coach__copy small{font-size:11px}.training-summary-coach__copy b{margin-top:3px;font-size:16px}.training-summary-coach__copy span{margin-top:4px;font-size:13px;line-height:1.42}
.btn-primary.training-summary-close{height:56px;margin-top:2px;border-radius:18px;background:#351321;color:#fff;font-size:16px;box-shadow:0 14px 28px rgba(45,13,27,.16)}.training-summary-delete{min-height:44px;color:rgba(77,43,57,.5);font-size:13px}

@media(max-width:480px){
  .training-summary-stats{grid-template-columns:1fr 1fr}.training-summary-stats>div:nth-child(3){border-left:0;border-top:.5px solid rgba(29,2,12,.07)}.training-summary-stats>div:nth-child(4){border-top:.5px solid rgba(29,2,12,.07)}
  .training-summary-load>div{padding:15px 9px}.training-summary-load small{font-size:10px}.training-summary-load b{font-size:16px}.training-summary-load span{font-size:11px}
  .training-summary-section__head{align-items:flex-start}.training-summary-section__head h2{font-size:21px}
}
@media(prefers-reduced-motion:reduce){.gp-control-intro.show,.gp-missed.show,.gp-question.show{animation:none}}

/* ==========================================================
   «Что есть дома» и «Подборка для дома» — экраны инвентаря клиента

   Первый заход был формой: квадратики-чекбоксы и список слов. Второй — списком
   одинаковых карточек с серой заглушкой-кружком и стеной из десяти пилюль-весов.
   Владелец забраковал оба словами «топорный ИИ-шный дешёвый интерфейс».

   Здесь своих классов ровно столько, сколько нужно: отметка — родной .ck, чипы
   весов — .chip-f, кнопки — .btn-primary/.btn-secondary, панель — .detail__foot
   БРАТОМ .scroll (как v-booking-foot), диалог — .gp-confirm, шапки состояний —
   .wk-notice / .plan-intro / .note-box, сноска — .rec-fs.
   ========================================================== */

/* Общее для обеих деталей */
.d-wrap { padding: 0 20px 22px; }
.d-wrap > :first-child { margin-top: 0; }
.d-sect { padding: 18px 2px 8px; }
.d-sect:first-child { padding-top: 6px; }
/* Заголовок секции со ссылкой-связкой: мишень добираем паддингом кнопки и
   уменьшенным паддингом секции — отрицательные поля наезжали на первую карточку
   на 5px, и тап в её верхний угол уводил на другой экран. */
.d-sect--lk { padding-top: 4px; padding-bottom: 0; }
button.sect-h__lk { border: 0; background: none; font-family: inherit; min-height: 44px;
  padding: 0 2px; color: var(--brand-strong); cursor: pointer; }
button.sect-h__lk:focus-visible { outline: 2px solid var(--brand-strong); outline-offset: 2px; border-radius: 8px; }
/* .detail .scroll держит padding-bottom:40px — с панелью-братом это мёртвая полоса */
#detail-homeequip .scroll { padding-bottom: 10px; }
/* У «Подборки» панели нет — нижний инсет держит сам скролл */
#detail-inventory .scroll { padding-bottom: calc(16px + max(var(--rf-bottom-inset,0px), env(safe-area-inset-bottom,0px), 34px)); }
/* env(safe-area-inset-bottom) в Telegram-фулскрине равен нулю — именно поэтому
   .tabbar держит bottom:34px хардкодом. Тот же пол и здесь, иначе главная кнопка
   садится на домашний индикатор. */
.he-foot { padding-bottom: calc(12px + max(var(--rf-bottom-inset,0px), env(safe-area-inset-bottom,0px), 34px)); }
.he-foot__st { font-size: 12px; color: rgba(12,14,18,.6); text-align: center; margin-bottom: 9px;
  min-height: 16px; line-height: 1.35; }
/* Тёмная главная кнопка — тем же приёмом, что у брони и фаундер-звонка */
.he-foot .btn-primary { margin: 0; height: 54px; border-radius: 9999px;
  background: var(--brand-strong); color: #fff; box-shadow: none; }
.he-foot .btn-primary:disabled { opacity: .45; }
.he-foot .btn-primary.is-busy { opacity: .62; }

/* ----- Web/PWA: mandatory Telegram reachability gate ----- */
.tg-gate {
  position: absolute; inset: 0; z-index: 96; display: none;
  background: radial-gradient(125% 62% at 50% -12%, #fbe6f0 0%, rgba(251,230,240,0) 60%), #f6f4f5;
  color: var(--content-strong);
}
.tg-gate.on { display: block; }
.tg-gate [hidden] { display: none !important; }
.tg-gate__main {
  position: absolute; inset: 0; display: flex; flex-direction: column; overflow: auto;
  padding: max(28px, var(--safe-top)) 24px max(24px, env(safe-area-inset-bottom));
}
.tg-gate__brand { height: 22px; margin-bottom: 36px; display: flex; align-items: center; }
.tg-gate__brand img { display: block; width: auto; height: 22px; }
.tg-gate__hero {
  width: 92px; height: 92px; border-radius: 30px; margin: 0 auto 22px;
  background: linear-gradient(145deg, #fff, #ffe4ef); color: var(--brand-strong);
  box-shadow: 0 22px 44px rgba(76,16,42,.12), inset 0 0 0 1px rgba(255,255,255,.9);
  display: grid; place-items: center; position: relative; flex: 0 0 auto;
}
.tg-gate__hero::before, .tg-gate__hero::after {
  content: ""; position: absolute; border-radius: 50%; border: 1px solid rgba(231,169,200,.42);
}
.tg-gate__hero::before { width: 116px; height: 116px; }
.tg-gate__hero::after { width: 140px; height: 140px; border-color: rgba(231,169,200,.18); }
.tg-gate__hero svg { width: 44px; height: 44px; position: relative; z-index: 1; }
.tg-gate h1 { font-size: 27px; line-height: 1.08; letter-spacing: -.7px; text-align: center; margin: 0 auto 10px; max-width: 310px; }
.tg-gate h1:focus, .tg-gate h2:focus { outline: none; }
.tg-gate__lead { font-size: 15px; line-height: 1.5; text-align: center; color: rgba(12,14,18,.64); margin: 0 auto 18px; max-width: 330px; }
.tg-gate__steps {
  background: var(--card); border-radius: var(--r-card); padding: 8px 16px; margin: 0 0 18px;
  box-shadow: 0 8px 24px rgba(20,4,12,.055), inset 0 0 0 1px rgba(12,14,18,.035);
}
.tg-gate__step { display: grid; grid-template-columns: 28px 1fr; gap: 11px; align-items: center; min-height: 48px; padding: 7px 0; border-bottom: 1px solid var(--border-base); font-size: 14px; line-height: 1.35; }
.tg-gate__step:last-child { border-bottom: 0; }
.tg-gate__step b { width: 28px; height: 28px; border-radius: 50%; background: #fbe6f0; display: grid; place-items: center; font-size: 12px; }
.tg-gate__account { font-size: 12px; line-height: 1.4; color: rgba(12,14,18,.64); text-align: center; margin: -7px auto 12px; max-width: 330px; }
.tg-gate__account b { color: var(--content-strong); overflow-wrap: anywhere; }
.tg-gate__actions { margin-top: auto; padding-top: 4px; }
.tg-gate__btn {
  width: 100%; min-height: 54px; border: 0; border-radius: var(--r-pill); padding: 0 16px;
  font-family: var(--font); font-size: 15px; font-weight: 600; display: flex; align-items: center;
  justify-content: center; gap: 9px; text-decoration: none; cursor: pointer;
}
.tg-gate__btn svg { width: 20px; height: 20px; }
.tg-gate__btn--primary { background: var(--brand-strong); color: #fff; box-shadow: 0 12px 26px rgba(29,2,12,.2); }
.tg-gate__btn--primary:active { transform: scale(.985); }
.tg-gate__btn--check { background: transparent; color: var(--content-strong); margin-top: 3px; min-height: 48px; }
.tg-gate__btn:disabled, .tg-gate__btn.is-disabled { opacity: .42; pointer-events: none; }
.tg-gate__btn:focus-visible, .tg-gate__support a:focus-visible, .tg-gate__logout:focus-visible { outline: 3px solid #d4588d; outline-offset: 3px; }
.tg-gate__mini-spin { width: 16px; height: 16px; border: 2px solid rgba(29,2,12,.18); border-top-color: var(--brand-strong); border-radius: 50%; animation: vspin .8s linear infinite; }
.tg-gate__notice { display: none; margin: 0 0 10px; border-radius: 14px; padding: 11px 13px; background: #fff0f5; color: rgba(29,2,12,.78); font-size: 13px; line-height: 1.42; text-align: center; }
.tg-gate__notice.on { display: block; }
.tg-gate__notice.error { background: #fff1ef; color: #78271f; }
.tg-gate__support { text-align: center; color: rgba(12,14,18,.64); font-size: 13px; line-height: 1.4; margin: 0; }
.tg-gate__support a { color: var(--content-strong); font-weight: 600; text-underline-offset: 3px; display: inline-flex; align-items: center; min-height: 44px; padding: 0 3px; }
.tg-gate__logout { border: 0; background: transparent; color: rgba(12,14,18,.64); font-family: var(--font); font-size: 13px; font-weight: 500; min-height: 44px; width: 100%; margin-top: 4px; cursor: pointer; }
.tg-gate__logout span:not(:empty)::before { content: " · "; }
.tg-gate__state {
  position: absolute; inset: 0; display: none; align-items: center; justify-content: safe center;
  flex-direction: column; text-align: center; overflow: auto;
  padding: max(32px, var(--safe-top)) 32px max(32px, env(safe-area-inset-bottom));
}
.tg-gate__state.on { display: flex; }
.tg-gate__spinner { width: 32px; height: 32px; border-radius: 50%; border: 3px solid rgba(20,4,12,.12); border-top-color: #c8377f; animation: vspin .8s linear infinite; margin-bottom: 16px; }
.tg-gate__state h2 { font-size: 21px; margin: 0 0 8px; }
.tg-gate__state p { font-size: 14px; line-height: 1.5; color: rgba(12,14,18,.64); max-width: 300px; margin: 0 0 20px; }
.tg-gate__state .tg-gate__btn { max-width: 300px; }
.tg-gate__ok { width: 64px; height: 64px; border-radius: 50%; display: grid; place-items: center; background: #e4f4d2; color: #427b10; font-size: 30px; margin-bottom: 18px; }
.tg-gate__sr { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }
@media (max-height: 700px) {
  .tg-gate__main { padding-top: max(20px, var(--safe-top)); }
  .tg-gate__brand { margin-bottom: 20px; }
  .tg-gate__hero { width: 72px; height: 72px; border-radius: 22px; margin-bottom: 16px; }
  .tg-gate__hero::before { width: 90px; height: 90px; }
  .tg-gate__hero::after { display: none; }
  .tg-gate__hero svg { width: 36px; height: 36px; }
  .tg-gate__lead { margin-bottom: 12px; }
  .tg-gate__steps { margin-bottom: 10px; }
  .tg-gate__step { min-height: 42px; }
  .tg-gate__account { margin-bottom: 8px; }
  .tg-gate__btn { min-height: 48px; }
}

.he-list { display: flex; flex-direction: column; gap: 8px; }
.he-item { overflow: hidden; transition: background .16s ease, box-shadow .16s ease; }
/* «Выбрано» = оттенок приложения (.daychip.on / .slot.on / .gp-opt.sel) + кольцо.
   Тень не меняем: разницу несёт кольцо, как везде в мини-аппе. */
.he-item.on { background: #f6eef3; box-shadow: 0 8px 24px rgba(20,4,12,.06), inset 0 0 0 1.5px var(--brand-strong); }
.he-pick { display: flex; align-items: center; gap: 13px; width: 100%; text-align: left; border: 0;
  background: none; font-family: inherit; color: var(--content-strong); padding: 12px 14px;
  cursor: pointer; min-height: 68px; }
.he-pick:active { transform: scale(.995); }
.he-pick:focus-visible { outline: 2px solid var(--brand-strong); outline-offset: -3px; }
.he-ic { width: 44px; height: 44px; flex: 0 0 auto; border-radius: 14px; background: var(--tile);
  display: grid; place-items: center; color: rgba(12,14,18,.45);
  transition: background .16s ease, color .16s ease; }
.he-ic svg { width: 22px; height: 22px; }
.he-item.on .he-ic { background: var(--brand-strong); color: #fff; }
.he-b { flex: 1 1 auto; min-width: 0; }
.he-t { display: block; font-size: 15px; font-weight: 600; letter-spacing: -.2px; line-height: 1.25; }
.he-s { display: block; font-size: 12px; color: var(--content-subtle); margin-top: 3px;
  line-height: 1.3; font-variant-numeric: tabular-nums; }
/* Цифра, ради которой существует экран, обязана читаться на солнце: 5,6:1 */
.he-item.on .he-s { color: #99406f; font-weight: 500; }
/* Родной .ck слишком бледен для переключателя (1,36:1) — усиливаем кольцо только
   внутри этих карточек, класс остаётся общим. */
.he-item .ck { box-shadow: inset 0 0 0 2px rgba(12,14,18,.3); }
.he-item.on .ck { background: var(--brand-strong); box-shadow: none; color: #fff; }
/* Отмечено, но вес не выбран, и клиент уже нажал «Отправить» */
.he-item.warn { box-shadow: 0 8px 24px rgba(20,4,12,.06), inset 0 0 0 1.5px #d9902f; }
.he-item.warn .he-s { color: #8a5a14; font-weight: 500; }
/* Режим «дома ничего нет»: гасим ИКОНКУ и ОТМЕТКУ, а не контейнер — opacity на
   контейнере стирала подпись с весами до 1,56:1, то есть ровно то, что режим
   обязан сохранить. Строки остаются кликабельными: тап = «передумал». */
.he-item.is-off { background: var(--card); box-shadow: 0 8px 24px rgba(20,4,12,.06), inset 0 0 0 1px rgba(12,14,18,.03); }
.he-item.is-off .he-ic, .he-item.is-off .ck { opacity: .35; }
/* Отправка в процессе: замораживаем ввод, но ничего не гасим — правки во время
   запроса иначе затрёт ответ сервера (save() делает loadDraft(); render()). */
.d-wrap.is-busy { pointer-events: none; }

/* Шкала весов. Цифры без единицы — единица в подписи над шкалой (сервер отдаёт
   и «1,5 кг» в label, и «1,5» в short: резать « кг» регуляркой на фронте нельзя). */
.he-kg { margin: 0 12px 12px; padding: 12px; border-radius: var(--r-inset); background: var(--tile); }
.he-kg__h { font-size: 12.5px; color: rgba(12,14,18,.6); margin-bottom: 9px; line-height: 1.35; }
.he-kg__grid { display: grid; grid-template-columns: repeat(5, minmax(0,1fr)); gap: 6px; }
.he-kg__grid .chip-f { flex: none; min-height: 44px; padding: 0 4px; display: flex; align-items: center;
  justify-content: center; font-size: 14px; font-weight: 600; color: rgba(12,14,18,.62);
  font-variant-numeric: tabular-nums; }
.he-kg__grid .chip-f.on { color: #fff; }
.he-kg__grid .chip-f:focus-visible { outline: 2px solid var(--brand-strong); outline-offset: 1px; }
/* «Разборные» — не число и в числовую шкалу не встаёт */
.he-kg__grid .chip-f--wide { grid-column: 1 / -1; font-size: 13.5px; font-weight: 500; }

/* Выход «дома нет ничего» — родной .btn-secondary, в конце ПОЛНОГО списка:
   под первой группой слово «этого» читалось как «ничего из этой группы». */
.btn-secondary.he-nothing { margin-top: 18px; min-height: 48px; font-size: 14px; font-weight: 500; }
.btn-secondary.he-nothing:focus-visible { outline: 2px solid var(--brand-strong); outline-offset: 2px; }
/* Возврат из режима — текстовая кнопка, а не тёмная плашка: тёмное в мини-аппе
   означает событие-призыв (.zmr), а это пассивное состояние. */
.he-undo { border: 0; background: none; font-family: inherit; font-size: 13.5px; font-weight: 600;
  color: var(--brand-strong); min-height: 44px; padding: 0 2px; cursor: pointer; text-align: left; display: block; }

.he-note { margin-top: 20px; padding: 14px; }
.he-note label { display: block; font-size: 13.5px; font-weight: 600; margin-bottom: 8px; }
/* Оформление поля — как у соседнего экрана «Вопрос тренеру». Потолок в пикселях,
   а не 40vh: под клавиатурой vh не сжимается, и поле съело бы счётчик. */
.he-note textarea { width: 100%; border: 0; background: #fbf9fa;
  box-shadow: inset 0 0 0 1px rgba(12,14,18,.07); border-radius: var(--r-inset); padding: 12px;
  font-family: inherit; font-size: 15px; line-height: 1.4; resize: none; min-height: 84px;
  max-height: 150px; box-sizing: border-box; scroll-margin-bottom: 180px; }
.he-note textarea:focus-visible { outline: 2px solid var(--brand-strong); outline-offset: 2px; }
.he-note__c { text-align: right; font-size: 11.5px; color: rgba(12,14,18,.55); margin-top: 6px;
  font-variant-numeric: tabular-nums; }
.he-note__c.is-max { color: #b3701a; font-weight: 500; }

/* Холодный старт. Высота строки равна живой (68px), иначе при подмене всё прыгает.
   Заголовков групп тут нет: группы приходят с сервера, до бутстрапа их не знаем.
   .mskel переиспользовать нельзя — он заскоуплен на .trkscreen; берём только keyframes. */
.he-skel { display: flex; flex-direction: column; gap: 8px; }
.he-skel__row { height: 68px; border-radius: var(--r-card);
  background: linear-gradient(90deg,#f6eef3 8%,#ece0e8 20%,#f6eef3 33%); background-size: 800px 100%;
  animation: mskel 1.2s linear infinite; }
.he-skel__row:nth-child(2) { animation-delay: .25s; }
.he-skel__row:nth-child(3) { animation-delay: .5s; }
@media (prefers-reduced-motion: reduce) { .he-skel__row { animation: none; } }

/* Родной .gp-confirm красит подзаголовок var(--ink40), а переменная объявлена
   только в скоупах .vp2 и .gp,.gc — внутри детали её нет, текст стал бы чёрным. */
.detail .gp-confirm { --gpprimary: #2c0c17; --ink: #0c0e12; --ink40: rgba(12,14,18,.4); }
.detail .gp-cf-exit { margin-top: 8px; }

/* ======================================================================
   Training experience v3 — one product language across hub, player, report
   ====================================================================== */
:root{--training-ink:#35111f;--training-ink-soft:#4a2030;--training-canvas:#f5f5f7;--training-rose:#f3e8ed;--training-line:rgba(53,17,31,.09)}

/* The feedback slide keeps the generated scene readable before UI overlays. */
.gp-intro-review{padding-bottom:68px}
.gp-intro-review__video{height:316px}
.gp-intro-review__video--art{-webkit-mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.2) 4%,rgba(0,0,0,.82) 12%,#000 22%,#000 71%,rgba(0,0,0,.74) 84%,rgba(0,0,0,.26) 95%,transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.2) 4%,rgba(0,0,0,.82) 12%,#000 22%,#000 71%,rgba(0,0,0,.74) 84%,rgba(0,0,0,.26) 95%,transparent 100%)}
.gp-intro-review__video--art::before{inset:-28px;background-position:center 48%;filter:blur(30px) saturate(.68);opacity:.34;transform:scale(1.14);-webkit-mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.2) 5%,rgba(0,0,0,.78) 17%,#000 32%,rgba(0,0,0,.7) 78%,transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.2) 5%,rgba(0,0,0,.78) 17%,#000 32%,rgba(0,0,0,.7) 78%,transparent 100%)}
.gp-intro-review__video--art img.gp-intro-art{top:12px;-webkit-mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.12) 2%,rgba(0,0,0,.58) 5%,#000 10%,#000 100%);mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.12) 2%,rgba(0,0,0,.58) 5%,#000 10%,#000 100%)}
.gp-intro-review__note{margin:7px 22px 0;padding:14px;border-radius:21px}
.gp-intro-review__decision{right:18px;bottom:-2px;min-width:188px;padding:12px 14px}

/* Main training hub: next action first, schedule second, support after it. */
#detail-trainhub,#detail-summary{background:var(--training-canvas)}
#detail-trainhub .dhead,#detail-summary .dhead{background:rgba(245,245,247,.88);border-bottom:.5px solid rgba(31,31,35,.05)}
#v-trainhub-detail{display:flex;flex-direction:column;padding-top:4px!important}

.ot-teaser{margin-bottom:28px}
#detail-trainhub .seg{background:#e8e6e7}#detail-trainhub .seg button.on{background:#fff;color:var(--training-ink);box-shadow:0 3px 12px rgba(28,22,25,.07)}
.training-control-explainer>span{background:var(--training-rose)!important;color:var(--training-ink)!important}

/* Capture: full iOS scale, one dark-burgundy palette, clear filming brief. */
.gp-capture{background:#f8f6f7}
.gp-capture-card{overflow-y:auto;padding:calc(var(--safe-top) + 18px) 20px calc(26px + env(safe-area-inset-bottom));background:#f8f6f7}
.gp-cap-x{width:46px;height:46px;background:#fff;color:var(--training-ink);box-shadow:inset 0 0 0 1px var(--training-line)}
.gp-cap-x svg{width:20px;height:20px}
.gp-cap-k{margin-top:10px;color:#795264;font-size:12px;letter-spacing:.085em}
.gp-capture-card h2{margin:8px 0 0;color:#121214;font-size:34px;line-height:1.05;letter-spacing:-1.05px}
.gp-capture-card>p{max-width:470px;margin:9px 0 17px;color:#777176;font-size:16px;line-height:1.45}
.gp-cap-preview{aspect-ratio:4/3;min-height:0;border-radius:26px;background:#f1edef;box-shadow:inset 0 0 0 1px var(--training-line)}
.gp-cap-empty{height:100%;justify-content:center;padding:18px 18px 15px}
.gp-cap-scene{position:relative;width:166px;height:116px;margin:0 auto 11px}
.gp-cap-phone{position:absolute;left:5px;bottom:8px;width:58px;height:94px;border:2px solid rgba(53,17,31,.72);border-radius:14px;background:#fff;box-shadow:0 10px 24px rgba(53,17,31,.1)}
.gp-cap-phone::before{width:20px;height:3px;top:6px;background:#d9d2d5}.gp-cap-phone i{left:11px;right:11px;top:19px;bottom:13px;border-color:rgba(53,17,31,.22)}
.gp-cap-phone span{right:auto;left:50%;top:auto;bottom:3px;transform:translateX(-50%);padding:0;background:transparent;color:var(--training-ink);font-size:7px;letter-spacing:.08em}
.gp-cap-sight{position:absolute;left:54px;bottom:23px;width:82px;height:54px;border-top:1.5px dashed rgba(53,17,31,.28);border-right:1.5px dashed rgba(53,17,31,.28);transform:skewY(-16deg);transform-origin:left bottom}
.gp-cap-person{position:absolute;right:3px;bottom:3px;width:42px;height:92px}.gp-cap-person>span{position:absolute;left:12px;top:0;width:17px;height:17px;border-radius:50%;background:var(--training-ink)}.gp-cap-person>i,.gp-cap-person>i::before,.gp-cap-person>i::after{position:absolute;content:"";display:block;background:var(--training-ink);border-radius:10px}.gp-cap-person>i{left:16px;top:16px;width:10px;height:42px}.gp-cap-person>i::before{width:8px;height:38px;left:-10px;top:29px;transform:rotate(14deg)}.gp-cap-person>i::after{width:8px;height:38px;left:12px;top:29px;transform:rotate(-14deg)}
.gp-cap-scene>b{position:absolute;left:65px;top:17px;padding:7px 8px;border-radius:10px;background:var(--training-ink);color:#fff;font-size:11px}
.gp-cap-empty>strong{display:block;color:#171719;font-size:17px;line-height:1.2}.gp-cap-empty>p{max-width:360px;margin:6px auto 0;color:#787277;font-size:13px;line-height:1.35}
.gp-cap-brief{width:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:14px;padding-top:12px;border-top:1px solid var(--training-line)}
.gp-cap-brief span{color:#918a8e;font-size:10px;line-height:1.2}.gp-cap-brief b{display:block;margin-bottom:3px;color:#3b3035;font-size:11px;line-height:1.2}
.gp-cap-pick{height:56px;margin-top:12px;border-radius:17px;background:#eee7ea;color:var(--training-ink);font-size:16px;font-weight:700}
.gp-cap-fields{gap:18px;margin-top:20px}.gp-cap-fields label,.gp-cap-feel-field{color:#656065;font-size:14px}.gp-cap-fields label>span{color:var(--training-ink)}
.gp-cap-fields input[type=range]{height:35px;accent-color:var(--training-ink)}
.gp-cap-feelings{gap:8px}.gp-cap-feelings button{min-height:44px;padding:0 14px;border-color:var(--training-line);color:#625b60;font-size:14px}.gp-cap-feelings button.on{border-color:var(--training-ink);background:var(--training-ink);color:#fff}
.gp-cap-fields input:not([type=range]),.gp-cap-fields textarea{min-height:52px;padding:14px 15px!important;border-radius:16px!important;font-size:16px!important;line-height:1.4!important}
.gp-cap-fields textarea{min-height:92px}.gp-cap-send{height:58px;margin-top:20px;border-radius:18px;background:var(--training-ink);font-size:16px;box-shadow:none}

/* Workout report reuses workout-detail media, spacing and calm neutral cards. */
#v-summary-body{max-width:540px;padding:4px 0 42px}.training-summary{gap:14px;padding-top:0}
.training-summary-hero{overflow:hidden;padding:0;border-radius:28px;background:#fff;color:#171719;box-shadow:0 14px 36px rgba(27,23,25,.06),inset 0 0 0 .5px var(--training-line)}
.training-summary-hero__media{height:220px;display:grid;place-items:center;overflow:hidden;background:#fff;border-bottom:.5px solid var(--training-line)}
.training-summary-hero__media img,.training-summary-hero__media video{width:100%!important;height:100%!important;object-fit:contain!important;background:#fff}.training-summary-hero__media .gp-ph{width:100%;height:100%}
.training-summary-hero__body{padding:21px 20px 19px}.training-summary-hero__body>small{display:block;color:#785264;font-size:11px;font-weight:750;letter-spacing:.07em;text-transform:uppercase}
.training-summary-hero h1{margin:7px 0 8px;color:#171719;font-size:30px;line-height:1.08;letter-spacing:-.9px}.training-summary-hero__body>p{max-width:470px;margin:0;color:#747074;font-size:15px;line-height:1.48}
.training-summary-progress{height:6px;margin-top:20px;background:#e8e5e7}.training-summary-progress i{background:var(--training-ink)}
.training-summary-progress__meta{margin-top:8px;color:#817a7e;font-size:12px}
.training-summary-stats,.training-summary-load,.training-summary-section,.training-summary-coach{background:#fff;box-shadow:inset 0 0 0 .5px var(--training-line)}
.training-summary-load small,.training-summary-section__head small,.training-summary-coach__copy small{color:#795264}
.training-summary-section{padding:20px 18px 5px;border-radius:25px}.training-summary-section__head h2{font-size:23px}
.training-summary-exercise{display:grid;grid-template-columns:66px minmax(0,1fr);gap:13px;align-items:center;padding:15px 0}
.training-summary-exercise__media{width:66px;height:66px;display:grid;place-items:center;overflow:hidden;border-radius:17px;background:#fafafa;box-shadow:inset 0 0 0 .5px var(--training-line)}
.training-summary-exercise__media img,.training-summary-exercise__media video{width:100%!important;height:100%!important;object-fit:contain!important;background:#fff}.training-summary-exercise__media .gp-ph{width:100%;height:100%}
.training-summary-exercise__copy{min-width:0}.training-summary-exercise__top{gap:9px}.training-summary-exercise b{font-size:16px;line-height:1.25}.training-summary-exercise span{margin-top:5px;color:#595357;font-size:13px}.training-summary-exercise span strong{display:inline;color:#2d282a;font-size:inherit}.training-summary-exercise small{display:block;margin-top:3px;color:#969095;font-size:12px;line-height:1.3}.training-summary-exercise em{padding:6px 8px;font-size:10px}.training-summary-exercise__bar{height:4px;margin-top:10px}.training-summary-exercise__bar i{background:var(--training-ink)}
.training-summary-close{background:var(--training-ink)!important;color:#fff!important}

@media(max-width:480px){
  .gp-cap-preview{aspect-ratio:1.12/1}.gp-cap-scene{height:105px}.gp-cap-empty>strong{font-size:16px}.gp-cap-empty>p{font-size:12px}.gp-cap-brief{margin-top:11px;padding-top:10px}
  .training-summary-hero__media{height:202px}.training-summary-hero h1{font-size:28px}.training-summary-exercise{grid-template-columns:62px minmax(0,1fr)}.training-summary-exercise__media{width:62px;height:62px}
}
@media(max-height:740px){
  .gp-intro-review{padding-bottom:54px}.gp-intro-review__video{height:232px}.gp-intro-review__video--art img.gp-intro-art{top:8px}.gp-intro-review__note{margin:4px 16px 0}.gp-intro-review__decision{right:14px}
  .gp-cap-preview{aspect-ratio:16/9}.gp-cap-scene{height:86px;margin-bottom:7px;transform:scale(.86)}.gp-cap-empty>p{display:none}.gp-cap-brief{margin-top:7px;padding-top:7px}.gp-cap-pick{height:52px}.gp-cap-fields{gap:13px;margin-top:14px}
}

/* Training experience v4: human hierarchy, fewer dashboard cards. */
#v-trainhub-detail{padding-top:7px!important}




/* The capture brief is compact and practical; controls remain full iOS size. */
.gp-capture-card{max-width:540px;margin:0 auto;padding:calc(var(--safe-top) + 16px) 20px calc(28px + env(safe-area-inset-bottom));scroll-padding-bottom:24px}
.gp-cap-k{margin-top:8px;font-size:12px}.gp-capture-card h2{max-width:440px;margin:7px 52px 0 0;font-size:29px;line-height:1.09;letter-spacing:-.72px}.gp-capture-card>p{margin:8px 50px 15px 0;font-size:15px;line-height:1.42}
.gp-cap-preview{min-height:0;aspect-ratio:auto;border-radius:22px;background:#fff;box-shadow:inset 0 0 0 1px rgba(53,17,31,.075)}
.gp-cap-empty{height:auto;display:grid;grid-template-columns:132px minmax(0,1fr);gap:16px;align-items:center;padding:14px;text-align:left}
.gp-cap-shot{position:relative;width:132px;height:132px;overflow:hidden;border-radius:17px;background:#f5f2f3;box-shadow:inset 0 0 0 1px rgba(53,17,31,.08)}
.gp-cap-shot__media,.gp-cap-shot__media img,.gp-cap-shot__media video,.gp-cap-shot__media .gp-ph{width:100%;height:100%}.gp-cap-shot__media img,.gp-cap-shot__media video{object-fit:contain!important;background:#fff}.gp-cap-shot__media .gp-ph{display:grid;place-items:center;color:#8f8188}.gp-cap-shot__media .gp-ph svg{width:45px;height:45px}
.gp-cap-rec{position:absolute;top:9px;left:9px;display:flex;align-items:center;gap:5px;padding:6px 8px;border-radius:9px;background:rgba(53,17,31,.9);color:#fff;font-size:10px;font-weight:760;letter-spacing:.04em}.gp-cap-rec i{width:6px;height:6px;border-radius:50%;background:#ef7ca7;box-shadow:0 0 0 3px rgba(239,124,167,.18)}
.gp-cap-shot>b{position:absolute;right:9px;bottom:9px;max-width:calc(100% - 18px);overflow:hidden;padding:6px 7px;border-radius:9px;background:#fff;color:var(--training-ink);font-size:10px;text-overflow:ellipsis;white-space:nowrap;box-shadow:0 5px 16px rgba(40,23,31,.1)}
.gp-cap-frame{position:absolute;inset:36px 19px 18px;border:1px dashed rgba(53,17,31,.28);border-radius:34px 34px 18px 18px;pointer-events:none}
.gp-cap-instruction{min-width:0}.gp-cap-instruction>strong{display:block;color:#171719;font-size:18px;line-height:1.18}.gp-cap-instruction>p{margin:5px 0 0;color:#7d767a;font-size:13px;line-height:1.4}
.gp-cap-checks{display:grid;gap:8px;margin-top:12px}.gp-cap-checks span{display:flex;align-items:center;gap:8px;color:#40393d;font-size:13px;line-height:1.25}.gp-cap-checks i{width:22px;height:22px;display:grid;place-items:center;flex:none;border-radius:8px;background:#f0e7eb;color:var(--training-ink);font-size:11px;font-style:normal;font-weight:760}
.gp-cap-brief{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin:1px 0 0;padding:13px 0 0;border-top:1px solid rgba(53,17,31,.07)}.gp-cap-brief span{padding:0 10px;border-left:1px solid rgba(53,17,31,.06);font-size:inherit}.gp-cap-brief span:first-child{padding-left:0;border-left:0}.gp-cap-brief b{margin:0;color:#3b3337;font-size:13px;line-height:1.25}.gp-cap-brief em{display:block;margin-top:2px;color:#969095;font-size:12px;font-style:normal;line-height:1.25}
.gp-cap-preview.has-video{min-height:210px;aspect-ratio:16/10;background:#171315}.gp-cap-preview.has-video video{width:100%;height:100%;object-fit:contain}
.gp-cap-pick{height:54px;margin-top:11px;border-radius:16px;font-size:15px}.gp-cap-fields{gap:17px;margin-top:19px}.gp-cap-send{position:static;bottom:auto;height:56px;margin-top:19px;border-radius:17px;font-size:16px}

/* Post-workout coach handoff: one compact context, then one conversation task. */
.gp-coachq{background:#faf7f8}.gp-coachq .gp-survey-head{padding:calc(var(--safe-top) + 18px) 20px 0}.gp-coachq .gp-survey-k{color:#805468;font-size:12px;font-weight:760}
.gp-coachq .gp-survey-body{display:flex;flex-direction:column;padding:18px 20px 18px}
.gp-coachq-context{display:grid;grid-template-columns:minmax(0,1fr) minmax(132px,auto);overflow:hidden;border-radius:22px;background:#fff;box-shadow:inset 0 0 0 1px rgba(53,17,31,.065)}
.gp-coachq-report{margin:0;padding:15px 16px;border-radius:0;background:transparent;box-shadow:none}.gp-coachq-report small{font-size:11px}.gp-coachq-report b{margin-top:5px;font-size:16px;line-height:1.25}.gp-coachq-report span{margin-top:4px;font-size:12px;line-height:1.35}
.gp-coachq-person{min-width:0;margin:0;padding:13px 14px;border-left:1px solid rgba(53,17,31,.065);border-radius:0;background:transparent}.gp-coachq-person img{width:44px;height:44px;box-shadow:0 0 0 3px #f3e9ed}.gp-coachq-person small{font-size:10px}.gp-coachq-person strong{max-width:120px;margin-top:2px;overflow:hidden;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.gp-coachq-person span{font-size:11px}
.gp-coachq-bio:empty{display:none}.gp-coachq-bio{margin:8px 0 0;padding:0 3px;background:transparent;font-size:12px}
.gp-coachq-copy{margin-top:25px}.gp-coachq .gp-survey-q{margin:0;font-size:30px;line-height:1.12;letter-spacing:-.75px}.gp-coachq .gp-survey-sub{max-width:470px;margin:8px 0 0;font-size:15px;line-height:1.48}
.gp-coachq-topics{gap:8px;margin:17px 0 0}.gp-coachq-topics button{min-height:44px;padding:0 14px;border:1px solid rgba(53,17,31,.1);background:#fff;font-size:13px}.gp-coachq-topics button.on{border-color:var(--training-ink);background:var(--training-ink)}
.gp-coachq .gp-question-note{margin-top:10px;padding:10px 12px;border-radius:13px;background:#f2eaed;color:#75656d;font-size:12px;line-height:1.4}
.gp-coachq textarea{min-height:clamp(150px,21vh,210px);margin-top:13px;padding:15px 16px;border-radius:18px;font-size:16px;line-height:1.45}.gp-coachq-foot{grid-template-columns:minmax(112px,.72fr) minmax(160px,1.28fr)!important;gap:10px;padding:10px 20px calc(16px + env(safe-area-inset-bottom,0px));background:rgba(250,247,248,.94);backdrop-filter:blur(18px)}.gp-coachq-foot .gp-survey-go,.gp-coachq-skip{height:54px;border-radius:17px;font-size:15px}.gp-coachq-skip{background:#fff;color:#6d5661}

@media(max-width:390px){
  .gp-capture-card h2{font-size:27px}.gp-cap-empty{grid-template-columns:112px minmax(0,1fr);gap:13px;padding:12px}.gp-cap-shot{width:112px;height:124px}.gp-cap-instruction>strong{font-size:17px}.gp-cap-instruction>p{font-size:12px}.gp-cap-checks span{font-size:12px}.gp-cap-brief b{font-size:12px}.gp-cap-brief em{font-size:11px}
  .gp-coachq-context{grid-template-columns:1fr}.gp-coachq-person{border-top:1px solid rgba(53,17,31,.065);border-left:0}.gp-coachq .gp-survey-q{font-size:28px}.gp-coachq-foot{grid-template-columns:1fr 1.35fr!important}
}
@media(max-height:740px){
  .gp-cap-empty{grid-template-columns:106px minmax(0,1fr);padding:10px}.gp-cap-shot{width:106px;height:108px}.gp-cap-checks{gap:5px;margin-top:8px}.gp-cap-brief{padding-top:10px}.gp-cap-fields{gap:13px;margin-top:14px}
  .gp-coachq .gp-survey-body{padding-top:12px}.gp-coachq-copy{margin-top:17px}.gp-coachq textarea{min-height:118px}.gp-coachq-bio{display:none}
}

/* Training experience v5: editorial hierarchy, real media and a human coach. */
#detail-trainhub,#detail-summary{--training-ink:#35111f;--training-copy:#1b181a;--training-muted:#777176;--training-line:rgba(53,17,31,.085);background:#f7f5f6}
#detail-trainhub .dhead,#detail-summary .dhead{background:rgba(247,245,246,.9);border-bottom:1px solid rgba(53,17,31,.045);backdrop-filter:blur(20px)}
#v-trainhub-detail{max-width:540px;margin:0 auto;padding-top:0!important}

.training-art-fallback{position:relative;width:100%;height:100%;overflow:hidden;background:linear-gradient(160deg,#2b0d18,#4b1b2c);color:#fff}
.training-art-fallback span,.training-art-fallback i{position:absolute;border:1px solid rgba(255,255,255,.14);border-radius:50%}.training-art-fallback span{width:128px;height:128px;left:-54px;top:-34px}.training-art-fallback i{width:72px;height:72px;right:-25px;bottom:17px}.training-art-fallback b{position:absolute;left:15px;right:12px;bottom:17px;font-size:12px;line-height:1.3;letter-spacing:.01em}


.training-control-explainer{min-height:60px;margin-top:10px!important;padding:10px 3px!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}
.training-control-explainer>span{padding:7px 9px!important;background:#eee7ea!important;color:#684052!important;font-size:12px!important}.training-control-explainer b{font-size:14px}.training-control-explainer small{font-size:12px}.training-control-explainer>i{color:#a99fa4}

/* The video request is an action sheet, not a miniature instruction poster. */
.gp-control{margin:0 14px 13px;padding:18px 17px;border-radius:22px;background:var(--training-ink);box-shadow:0 16px 34px rgba(53,17,31,.16)}
.gp-control-k{align-items:flex-start;margin-bottom:11px}.gp-control-k span{color:#fff;font-size:12px;letter-spacing:.02em;text-transform:none}.gp-control-k em{padding:5px 8px;border-radius:8px;color:rgba(255,255,255,.7);font-size:11px}
.gp-control-guide{gap:5px}.gp-control-guide b{font-size:18px;line-height:1.2}.gp-control-guide span{color:rgba(255,255,255,.7);font-size:14px;line-height:1.45}.gp-control-rules{gap:7px;margin-top:13px}.gp-control-rules span{padding:7px 9px;border-radius:9px;color:rgba(255,255,255,.76);font-size:12px}.gp-control button#gpControlRecord{min-height:52px;margin-top:14px;border-radius:15px;font-size:15px}
.gp-capture{background:#f7f5f6}.gp-capture-card{max-width:540px;padding:calc(var(--safe-top) + 15px) 20px calc(28px + env(safe-area-inset-bottom));background:#f7f5f6}
.gp-cap-x{width:46px;height:46px;border-radius:16px;background:#fff;color:var(--training-ink);box-shadow:inset 0 0 0 1px var(--training-line)}
.gp-cap-k{margin-top:7px;color:#7c5b6a;font-size:13px;font-weight:700;letter-spacing:0;text-transform:none}.gp-capture-card h2{max-width:430px;margin:7px 52px 0 0;color:#171518;font-size:28px;line-height:1.1;letter-spacing:-.65px}.gp-capture-card>p{max-width:470px;margin:8px 52px 16px 0;color:#777176;font-size:15px;line-height:1.45}
.gp-cap-preview{overflow:hidden;border-radius:24px;background:#fff;box-shadow:0 14px 34px rgba(36,25,30,.055),inset 0 0 0 1px var(--training-line)}
.gp-cap-empty{height:auto;display:block;padding:0;text-align:left}.gp-cap-shot{position:relative;width:100%;height:190px;overflow:hidden;border-radius:24px 24px 0 0;background:linear-gradient(145deg,#eee7ea,#faf7f8);box-shadow:none}
.gp-cap-shot__media,.gp-cap-shot__media img,.gp-cap-shot__media video,.gp-cap-shot__media .gp-ph{width:100%;height:100%}.gp-cap-shot__media img,.gp-cap-shot__media video{object-fit:contain!important;background:transparent!important}.gp-cap-shot__media .gp-ph{display:grid;place-items:center;color:rgba(53,17,31,.28)}.gp-cap-shot__media .gp-ph svg{width:72px;height:72px}
.gp-cap-rec{top:12px;left:12px;gap:6px;padding:7px 10px;border-radius:10px;background:rgba(53,17,31,.92);font-size:11px;letter-spacing:0;text-transform:none}.gp-cap-shot>b{right:12px;bottom:12px;max-width:calc(100% - 24px);padding:7px 10px;border-radius:11px;font-size:12px}.gp-cap-frame{inset:42px 25% 18px;border-color:rgba(53,17,31,.24)}
.gp-cap-instruction{padding:16px 17px 4px}.gp-cap-instruction>strong{font-size:18px;line-height:1.25}.gp-cap-instruction>p{margin-top:5px;font-size:14px;line-height:1.45}.gp-cap-checks{display:none}
.gp-cap-brief{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin:10px 17px 0;padding:14px 0 16px;border-top:1px solid var(--training-line)}.gp-cap-brief span{display:flex;flex-direction:column;align-items:center;gap:4px;padding:0 7px;border-left:1px solid var(--training-line);text-align:center}.gp-cap-brief span:first-child{border-left:0}.gp-cap-brief i{color:#442232;font-size:16px;font-style:normal;font-weight:760}.gp-cap-brief b{margin:0;color:#766c71;font-size:11px;line-height:1.25}.gp-cap-brief em{display:none}
.gp-cap-pick{height:58px;margin-top:12px;border-radius:18px;background:var(--training-ink);color:#fff;font-size:15px;box-shadow:0 14px 28px rgba(53,17,31,.13)}
.gp-cap-fields{gap:19px;margin-top:22px}.gp-cap-fields label,.gp-cap-feel-field{color:#5f595d;font-size:15px}.gp-cap-feelings button{min-height:46px;font-size:14px}.gp-cap-send{height:58px;margin-top:20px;border-radius:18px;background:var(--training-ink);font-size:16px}.gp-cap-send:disabled{background:#b6a9af;color:#fff}

/* A post-workout question feels like a handoff to a person, not a survey. */
.gp-coachq{background:#f8f6f7}.gp-coachq .gp-survey-head{padding:calc(var(--safe-top) + 18px) 20px 0}.gp-coachq .gp-survey-k{color:#7a5d69;font-size:13px;font-weight:680;letter-spacing:0;text-transform:none}
.gp-coachq .gp-survey-body{display:flex;flex-direction:column;padding:18px 20px 20px}.gp-coachq-copy{order:1;margin:0}.gp-coachq .gp-survey-q{margin:0;color:#171518;font-size:30px;line-height:1.1;letter-spacing:-.75px}.gp-coachq .gp-survey-sub{max-width:480px;margin:9px 0 0;color:#777176;font-size:15px;line-height:1.48}
.gp-coachq-context{order:2;display:block;overflow:visible;margin-top:20px;border-radius:24px;background:#fff;box-shadow:0 14px 34px rgba(36,25,30,.05),inset 0 0 0 1px var(--training-line)}
.gp-coachq-person{display:flex;align-items:center;gap:14px;margin:0;padding:11px 14px 10px;border:0;border-radius:0;background:transparent}.gp-coachq-person img{width:66px;height:78px;border-radius:17px;object-fit:cover;object-position:center top;box-shadow:none}.gp-coachq-person div{min-width:0}.gp-coachq-person small{color:#7d5e6c;font-size:12px;font-weight:650;letter-spacing:0;text-transform:none}.gp-coachq-person strong{max-width:none;margin-top:4px;overflow:visible;color:#221d20;font-size:17px;line-height:1.2;white-space:normal}.gp-coachq-person span{margin-top:4px;color:#81777c;font-size:12px;line-height:1.35}
.gp-coachq-report{margin:0 14px;padding:13px 0 14px;border-top:1px solid var(--training-line);border-radius:0;background:transparent;box-shadow:none}.gp-coachq-report small{color:#8b8186;font-size:11px;font-weight:600;letter-spacing:0;text-transform:none}.gp-coachq-report b{margin-top:4px;color:#2b2528;font-size:14px}.gp-coachq-report span{margin-top:3px;color:#8d8589;font-size:12px;line-height:1.35}
.gp-coachq-bio{order:3;margin:8px 1px 0;padding:0;background:transparent;color:#867b81;font-size:12px;line-height:1.45}.gp-coachq-topics{order:4;gap:8px;margin:19px 0 0}.gp-coachq-topics button{min-height:46px;padding:0 14px;border:1px solid var(--training-line);border-radius:15px;background:#fff;color:#6d6067;font-size:14px}.gp-coachq-topics button.on{border-color:var(--training-ink);background:var(--training-ink);color:#fff}
.gp-coachq .gp-question-note{order:5;margin-top:10px;padding:0 2px;background:transparent;color:#8a7e84;font-size:12px;line-height:1.4}.gp-coachq textarea{order:6;min-height:150px;margin-top:14px;padding:16px;border:1px solid var(--training-line);border-radius:19px;background:#fff;font-size:16px;line-height:1.45;box-shadow:none}.gp-coachq-foot{grid-template-columns:minmax(120px,.8fr) minmax(170px,1.2fr)!important;gap:10px;padding:10px 20px calc(16px + env(safe-area-inset-bottom,0px));background:rgba(248,246,247,.94);backdrop-filter:blur(18px)}.gp-coachq-foot .gp-survey-go,.gp-coachq-skip{height:56px;border-radius:18px;font-size:15px}.gp-coachq-skip{background:#fff;color:#674f5b}

/* The report follows the same compact workout composition as the player. */
#v-summary-body{max-width:540px;padding:3px 0 42px}.training-summary{gap:13px}.training-summary-hero{display:grid;grid-template-columns:124px minmax(0,1fr);min-height:204px;overflow:hidden;border-radius:26px;background:#fff;color:var(--training-copy);box-shadow:0 18px 40px rgba(37,25,31,.065),inset 0 0 0 1px rgba(53,17,31,.05)}
.training-summary-hero__media{grid-column:1;grid-row:1;width:124px;height:100%;min-height:204px;overflow:hidden;border:0;background:linear-gradient(155deg,#eee7ea,#f8f4f6)}.training-summary-hero__media img,.training-summary-hero__media video{width:100%!important;height:100%!important;object-fit:contain!important;background:transparent!important}.training-summary-hero__media .gp-ph{width:100%;height:100%}
.training-summary-hero__body{grid-column:2;grid-row:1;display:flex;flex-direction:column;padding:18px 17px 16px}.training-summary-hero__body>small{color:#80566a;font-size:12px;font-weight:680;letter-spacing:0;text-transform:none}.training-summary-hero h1{margin:7px 0 7px;font-size:25px;line-height:1.08;letter-spacing:-.65px}.training-summary-hero__body>p{margin:0;color:#7b7478;font-size:13px;line-height:1.42}.training-summary-progress{height:5px;margin-top:auto;background:#e5e1e3}.training-summary-progress__meta{margin-top:7px;color:#81797d;font-size:11px}
.training-summary-stats{grid-template-columns:repeat(3,1fr)!important;border-radius:21px;background:#fff;box-shadow:inset 0 0 0 1px var(--training-line)}.training-summary-stats>div{min-height:78px;padding:14px 9px;border-top:0!important}.training-summary-stats b{font-size:18px}.training-summary-stats span{margin-top:4px;font-size:12px}
.training-summary-load{border-radius:21px;background:#eee8eb;box-shadow:none}.training-summary-load>div{min-height:86px;padding:15px 11px}.training-summary-load small{color:#755466;font-size:10px;line-height:1.25}.training-summary-load b{margin-top:6px;color:#2d2529;font-size:17px}.training-summary-load span{margin-top:4px;color:#83787e;font-size:11px}
.training-summary-section{padding:19px 17px 4px;border-radius:24px;background:#fff;box-shadow:inset 0 0 0 1px var(--training-line)}.training-summary-section__head h2{font-size:22px}.training-summary-section__head small{font-size:11px}.training-summary-exercise{grid-template-columns:72px minmax(0,1fr);gap:14px;padding:15px 0}.training-summary-exercise__media{width:72px;height:72px;border-radius:18px;background:#f1edef}.training-summary-exercise__media img,.training-summary-exercise__media video{background:transparent!important}.training-summary-exercise b{font-size:16px}.training-summary-exercise span{font-size:13px}.training-summary-exercise small{font-size:12px}.training-summary-exercise em{font-size:11px}
.training-summary-coach{grid-template-columns:64px 1fr;gap:14px;padding:13px 15px 13px 12px;border-radius:23px;background:#fff;box-shadow:inset 0 0 0 1px var(--training-line)}.training-summary-coach__avatar{width:64px;height:72px;border-radius:17px;object-fit:cover;object-position:center top;box-shadow:none}.training-summary-coach__copy small{color:#7b5c6a;font-size:11px;text-transform:none}.training-summary-coach__copy b{margin-top:4px;font-size:16px}.training-summary-coach__copy span{margin-top:4px;color:#81787d;font-size:12px;line-height:1.4}.training-summary-close{height:58px;border-radius:19px!important;background:var(--training-ink)!important;color:#fff!important;font-size:16px}

@media(max-width:390px){
  .gp-capture-card h2{font-size:27px}.gp-cap-shot{height:176px}.gp-cap-frame{inset:41px 23% 17px}.gp-coachq-context{grid-template-columns:1fr}.gp-coachq .gp-survey-q{font-size:29px}.gp-coachq-foot{grid-template-columns:1fr 1.3fr!important}
  .training-summary-hero{grid-template-columns:112px minmax(0,1fr)}.training-summary-hero__media{width:112px}.training-summary-hero__body{padding:17px 15px 15px}.training-summary-hero h1{font-size:23px}.training-summary-hero__body>p{font-size:12px}.training-summary-stats{grid-template-columns:repeat(3,1fr)!important}
}
@media(max-height:740px){
  .gp-cap-shot{height:150px}.gp-cap-instruction{padding-top:13px}.gp-cap-brief{padding:11px 0 13px}.gp-cap-fields{gap:14px;margin-top:16px}
  .gp-coachq .gp-survey-body{padding-top:12px}.gp-coachq-context{margin-top:14px}.gp-coachq-person img{width:58px;height:68px}.gp-coachq-bio{display:none}.gp-coachq-topics{margin-top:13px}.gp-coachq textarea{min-height:112px}
}

/* Training experience v6: one editorial system across every care surface. */
#detail-training-care,#detail-training-review,#detail-training-thread,#detail-training-compose,#detail-training-coach,#detail-summary{
  --tr6-ink:#35111f;--tr6-text:#181619;--tr6-muted:#797277;--tr6-line:rgba(53,17,31,.085);
  --tr6-soft:#f0ecee;--tr6-green:#327653;background:#f7f5f6;color:var(--tr6-text)
}
#detail-training-care .dhead,#detail-training-review .dhead,#detail-training-thread .dhead,#detail-training-compose .dhead,#detail-training-coach .dhead,#detail-summary .dhead{background:rgba(247,245,246,.92);border-bottom:1px solid rgba(53,17,31,.045);backdrop-filter:blur(20px)}
#detail-training-care .dhead__title,#detail-training-review .dhead__title,#detail-training-thread .dhead__title,#detail-training-compose .dhead__title,#detail-training-coach .dhead__title,#detail-summary .dhead__title{font-size:18px;letter-spacing:-.25px}
.training-care-wrap{width:100%;max-width:540px;margin:0 auto;padding:10px 20px 54px}
.training-care-stack{gap:18px}.training-care-section{padding:13px 2px 0;color:#575155;font-size:16px;font-weight:700;letter-spacing:-.2px}
.training-care-detail .card{border-radius:24px;box-shadow:inset 0 0 0 1px var(--tr6-line),0 14px 34px rgba(38,26,32,.045)}
.training-care-note{padding:2px 3px;color:#81797e;font-size:13px;line-height:1.5}
.training-care-primary{height:58px!important;border-radius:19px!important;background:var(--tr6-ink)!important;color:#fff!important;font-size:16px!important;box-shadow:0 14px 28px rgba(53,17,31,.13)!important}

/* Exercise media should merge into white artwork, not reveal tinted GIF edges. */
.training-summary-hero__media,.training-summary-exercise__media,.training-context__media,.gp-cap-shot{background:#fff!important}
.training-summary-hero__media img,.training-summary-hero__media video,.training-summary-exercise__media img,.training-summary-exercise__media video,.training-context__media img,.training-context__media video{object-fit:contain!important;background:#fff!important}

/* History: date-led feed with functional pagination. */
.training-history-page{gap:16px}.training-history-lead{padding:7px 2px 5px}.training-history-lead>small,.training-question-lead>small,.training-policy-intro>small,.training-coach-approach>small{display:block;color:#815667;font-size:13px;font-weight:700;letter-spacing:.01em}
.training-history-lead h1,.training-question-lead h1,.training-policy-intro h1{max-width:470px;margin:8px 0 9px;color:var(--tr6-text);font-size:31px;line-height:1.08;letter-spacing:-.85px;text-wrap:balance}
.training-history-lead>p,.training-question-lead>p,.training-policy-intro>p{max-width:490px;margin:0;color:var(--tr6-muted);font-size:15px;line-height:1.48}
.training-history-counters{display:flex;gap:20px;margin-top:19px;padding-top:15px;border-top:1px solid var(--tr6-line);color:#81797d;font-size:13px}.training-history-counters b{margin-right:4px;color:#2c272a;font-size:17px}
.training-history-filters{display:flex;gap:8px}.training-history-filters button{height:45px;padding:0 16px;border:1px solid var(--tr6-line);border-radius:15px;background:#fff;color:#746a70;font:650 14px var(--font)}.training-history-filters button.on{border-color:var(--tr6-ink);background:var(--tr6-ink);color:#fff}
.training-history-list{overflow:hidden;border-radius:25px;background:#fff;box-shadow:inset 0 0 0 1px var(--tr6-line),0 16px 36px rgba(38,26,32,.04)}
.training-history-day{padding:20px 18px 8px;color:#8a8085;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.training-history-row{width:100%;min-height:88px;display:grid;grid-template-columns:46px minmax(0,1fr) 18px;align-items:center;gap:13px;padding:14px 18px;border:0;border-top:1px solid rgba(53,17,31,.065);background:transparent;color:inherit;text-align:left;font:inherit}.training-history-day+.training-history-row{border-top:0}
/* Каждая строка ленты — кнопка (и контроль техники, и диалог): колонка шеврона
   есть всегда, отклик на нажатие обязателен, иначе строка читается как текст. */
.training-history-row{cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .14s ease}
.training-history-row:active{background:#faf5f8}
@media(hover:hover){.training-history-row:hover{background:#fcf9fb}}
.training-history-row>span.training-history-row__icon{width:46px;height:46px;display:grid;place-items:center;border-radius:15px;background:#eee9ec;color:#755262;font-size:16px;font-weight:760}.training-history-row>span.training-history-row__icon.ok{background:#e8f3eb;color:var(--tr6-green)}.training-history-row>span.training-history-row__icon.attention{background:#f7e9ed;color:#974761}.training-history-row__copy{min-width:0}.training-history-row__copy small{display:block;color:#8a6575;font-size:11px;font-weight:700}.training-history-row__copy b{display:block;margin-top:3px;overflow:hidden;color:#231f22;font-size:16px;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.training-history-row__copy span{display:block;margin-top:4px;color:#898186;font-size:13px;line-height:1.35}.training-history-row__copy p{margin:8px 0 0;color:#696267;font-size:13px;line-height:1.42}.training-history-row>i{color:#aaa1a6}.training-history-row>i svg{width:18px;height:18px}
.training-history-empty{padding:35px 22px;text-align:center}.training-history-empty b{font-size:18px}.training-history-empty p{margin:7px auto 0;max-width:330px;color:var(--tr6-muted);font-size:14px;line-height:1.45}.training-history-more{width:100%;height:58px;border:1px solid var(--tr6-line);border-radius:19px;background:#fff;color:var(--tr6-ink);font:700 15px var(--font);box-shadow:0 12px 26px rgba(38,26,32,.035)}.training-history-more:disabled{opacity:.58}

/* Разбор одного контрольного подхода: своё видео сверху, дальше факты подхода,
   слово тренера, что просили снять и таймлайн. */
.training-review-page{gap:16px}
.training-review-lead{padding:7px 2px 1px}.training-review-lead>small{display:block;color:#815667;font-size:13px;font-weight:700}
.training-review-lead h1{max-width:470px;margin:8px 0 12px;color:var(--tr6-text);font-size:29px;line-height:1.1;letter-spacing:-.8px;text-wrap:balance}
.training-review-status{display:inline-flex;align-items:center;gap:8px;padding:8px 13px;border-radius:999px;background:#f3eef1;color:#6d4d5c;font-size:13px;font-weight:650}
.training-review-status>i{width:8px;height:8px;flex:none;border-radius:50%;background:#c99a3d}
.training-review-status.ok{background:#e9f4ec;color:var(--tr6-green)}.training-review-status.ok>i{background:var(--tr6-green)}
.training-review-status.attention{background:#f8e9ee;color:#95455f}.training-review-status.attention>i{background:#b8556f}





.training-review-params__head{margin-bottom:12px;color:#8a6575;font-size:12px;font-weight:750;text-transform:uppercase;letter-spacing:.05em}
.training-review-params,.training-review-slot,.training-review-timeline,.training-review-questions,.training-review-coach,.training-review-mine,.training-review-pending,.training-review-released{padding:17px 17px 16px}
.training-review-params__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.training-review-params__grid>div{padding:11px 12px;border-radius:15px;background:#f7f3f5}
.training-review-params__grid span{display:block;color:var(--tr6-muted);font-size:11px}
.training-review-params__grid b{display:block;margin-top:3px;color:var(--tr6-text);font-size:16px;line-height:1.2}
.training-review-coach>p{margin:12px 0 0;color:#2f2a2d;font-size:15px;line-height:1.5}
.training-review-mine>small{display:block;color:var(--tr6-muted);font-size:11.5px;font-weight:650}
.training-review-mine>p{margin:6px 0 0;color:#3a3438;font-size:14px;line-height:1.46}
.training-review-pending b{font-size:16px}.training-review-pending p{margin:6px 0 0;color:var(--tr6-muted);font-size:13px;line-height:1.45}
/* Метки техники: единственное объяснение разбора, когда тренер вынесла решение
   маркерами без текста. Стоят под плеером — по таймкоду перематывают видео. */






.training-review-mark.is-repeat{background:#fbf1f5;border:1px solid #f0dbe4}







/* Обязательство снято тренером: карточка закрывает просьбу «переснимите» из
   комментария выше, поэтому она спокойно-зелёная, а не тревожная. */
.training-review-released{border:1px solid #cfe6d6;background:#f2f9f4}
.training-review-released b{display:block;color:var(--tr6-green);font-size:16px}
.training-review-released p{margin:6px 0 0;color:#3a3438;font-size:13.5px;line-height:1.45}
.training-review-released small{display:block;margin-top:9px;padding:9px 11px;border-radius:12px;background:#e6f2ea;color:#3f6b4d;font-size:12px;line-height:1.4}
.training-review-slot__row{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:11px 0;border-top:1px solid var(--tr6-line)}
.training-review-slot__row>span{flex:none;color:var(--tr6-muted);font-size:12.5px}
.training-review-slot__row>b{min-width:0;color:var(--tr6-text);font-size:13.5px;font-weight:620;line-height:1.35;text-align:right}
.training-review-reason{margin-top:11px;padding:10px 12px;border-radius:13px;background:#faf0f4;color:#7f3853;font-size:12px;line-height:1.4}
.training-review-step{display:grid;grid-template-columns:16px minmax(0,1fr);gap:11px;padding:9px 0}
.training-review-step>i{position:relative;width:9px;height:9px;margin-top:5px;border-radius:50%;background:#d8ccd2;box-shadow:0 0 0 3px #f6f1f4}
.training-review-params__head+.training-review-step>i{background:var(--tr6-ink)}
.training-review-step b{display:block;color:var(--tr6-text);font-size:13.5px;font-weight:620}
.training-review-step small{display:block;margin-top:2px;color:var(--tr6-muted);font-size:11.5px}
.training-review-question{display:flex;align-items:center;gap:12px;width:100%;padding:12px 0;border:0;border-top:1px solid var(--tr6-line);background:transparent;color:inherit;text-align:left;font:inherit;cursor:pointer}
.training-review-question>div{min-width:0;flex:1}
.training-review-question small{display:block;color:#8a6575;font-size:11.5px;font-weight:700}
.training-review-question b{display:block;margin-top:3px;overflow:hidden;color:var(--tr6-text);font-size:14.5px;line-height:1.28;text-overflow:ellipsis;white-space:nowrap}
.training-review-question>i{flex:none;color:#aaa1a6}.training-review-question>i svg{width:18px;height:18px}



@keyframes trReviewShimmer{0%{background-position:120% 0}100%{background-position:-120% 0}}

/* Control policy: editorial explanation, not a pile of dashboard cards. */







/* Trainer profile: an actual person, presented with uploaded data. */







/* Question composer and threads use the same scale and human presence. */


.training-topic-picker button.on{border-color:var(--tr6-ink);background:var(--tr6-ink)}
.training-care-quiet{height:50px;border-radius:17px;font-size:14px}

/* In-player question and missed-video reminder: compact, readable, never desktop-like. */
.gp-question,.gp-missed,.gp-capture{--tr6-ink:#35111f;--tr6-text:#181619;--tr6-muted:#797277;--tr6-line:rgba(53,17,31,.085);--tr6-green:#327653}.gp-question{background:#f7f5f6}.gp-question-top{min-height:82px;padding:calc(var(--safe-top) + 10px) 20px 10px;border-bottom:1px solid var(--tr6-line);background:rgba(247,245,246,.94);backdrop-filter:blur(18px)}.gp-question-top>div b{font-size:17px}.gp-question-top>div span{font-size:12px}.gp-question-scroll{width:100%;max-width:540px;margin:0 auto;padding:16px 20px 118px}.gp-question-coach{min-height:86px;padding:9px 12px 9px 9px;border-radius:22px;background:#fff;box-shadow:inset 0 0 0 1px var(--tr6-line)}.gp-question-coach img{width:62px;height:68px;border-radius:17px;object-fit:cover;object-position:center top}.gp-question-coach small{font-size:11px}.gp-question-coach b{font-size:17px}.gp-question-coach span{font-size:12px}.gp-question-context{min-height:92px;margin-top:12px;padding:10px;border-radius:22px;background:#fff;box-shadow:inset 0 0 0 1px var(--tr6-line)}.gp-question-context__media{width:72px;height:72px;border-radius:18px;background:#fff}.gp-question-context__media img,.gp-question-context__media video{object-fit:contain!important;background:#fff!important}.gp-question-context small{font-size:11px}.gp-question-context b{font-size:16px}.gp-question-context span{font-size:12px}.gp-question-label{margin-top:20px;font-size:14px}.gp-question-topics{gap:8px;margin-top:9px}.gp-question-topics button{min-height:45px;padding:0 15px;border-radius:15px;font-size:14px}.gp-question textarea{min-height:168px;margin-top:9px;padding:16px;border-radius:18px;background:#fff;font-size:16px}.gp-question-note{margin-top:11px;padding:0 2px;background:transparent;font-size:12px}.gp-question-foot{grid-template-columns:minmax(120px,.78fr) minmax(170px,1.22fr);gap:10px;padding:10px 20px calc(16px + env(safe-area-inset-bottom));background:rgba(247,245,246,.94);backdrop-filter:blur(18px)}.gp-question-foot button{height:56px;border-radius:18px;font-size:15px}.gp-question-foot button:last-child{background:var(--tr6-ink)}
.gp-missed{padding:18px;background:rgba(29,20,24,.52);backdrop-filter:blur(14px)}.gp-missed-card{width:100%;max-width:520px;margin:auto;padding:24px;border-radius:28px;background:#fff;box-shadow:0 24px 70px rgba(20,12,16,.24)}.gp-missed-icon{width:52px;height:52px;border-radius:17px}.gp-missed-card>small{margin-top:18px;font-size:12px}.gp-missed-card h2{max-width:430px;margin-top:7px;font-size:29px;line-height:1.08;letter-spacing:-.7px}.gp-missed-card>p{max-width:450px;margin-top:9px;font-size:15px;line-height:1.45}.gp-missed-guide{margin-top:17px;padding:14px 15px;border-radius:16px}.gp-missed-guide b{font-size:14px}.gp-missed-guide span{font-size:12px}.gp-missed-primary,.gp-missed-secondary{height:56px;border-radius:18px;font-size:15px}.gp-missed-primary{margin-top:17px;background:var(--tr6-ink)}.gp-missed-card>em{font-size:11px;line-height:1.4}

/* Video capture: reduce the poster, enlarge the decision and input controls. */
.gp-capture-card{width:100%;max-width:540px;margin:0 auto;padding-left:20px;padding-right:20px}.gp-cap-preview{border-radius:22px}.gp-cap-shot{height:168px}.gp-cap-instruction>strong{font-size:19px}.gp-cap-instruction>p{font-size:14px}.gp-cap-brief b{font-size:12px}.gp-cap-pick,.gp-cap-send{height:58px;font-size:16px}.gp-cap-fields label,.gp-cap-feel-field{font-size:15px}.gp-cap-feelings button{min-height:48px;font-size:14px}

/* Summary: white media and one neutral metric panel; no invented pink slab. */
#v-summary-body{width:100%;max-width:540px;margin:0 auto;padding:4px 20px 48px}.training-summary{gap:14px}.training-summary-hero{display:grid;grid-template-columns:1fr;min-height:0;overflow:hidden;border-radius:26px;background:#fff;box-shadow:inset 0 0 0 1px var(--tr6-line),0 18px 40px rgba(38,26,32,.05)}.training-summary-hero__media{grid-column:1;grid-row:1;width:100%;height:154px;min-height:154px;border-bottom:1px solid var(--tr6-line)}.training-summary-hero__body{grid-column:1;grid-row:2;padding:18px}.training-summary-hero__body>small{font-size:12px}.training-summary-hero h1{margin:7px 0;font-size:27px}.training-summary-hero__body>p{font-size:14px}.training-summary-workout-name{margin-top:14px;padding-top:13px;border-top:1px solid var(--tr6-line);color:#484145;font-size:13px;font-weight:700}.training-summary-progress{margin-top:14px}.training-summary-progress__meta{font-size:11px}
.training-summary-metrics{overflow:hidden;border-radius:24px;background:#fff;box-shadow:inset 0 0 0 1px var(--tr6-line)}.training-summary-stats{border-radius:0!important;background:transparent!important;box-shadow:none!important}.training-summary-stats>div{min-height:80px;padding:15px 8px}.training-summary-stats b{font-size:19px}.training-summary-stats span{font-size:12px}.training-summary-load{margin:0;border-top:1px solid var(--tr6-line);border-radius:0!important;background:transparent!important}.training-summary-load>div{min-height:83px;padding:15px 10px}.training-summary-load small{color:#7c7278;font-size:10px}.training-summary-load b{color:#2c272a;font-size:17px}.training-summary-load span{font-size:11px}
.training-summary-section{padding:19px 17px 4px;border-radius:24px}.training-summary-exercise{grid-template-columns:74px minmax(0,1fr);gap:14px}.training-summary-exercise__media{width:74px;height:74px;border:1px solid var(--tr6-line)}.training-summary-exercise b{font-size:16px}.training-summary-exercise span{font-size:13px}.training-summary-exercise small{font-size:12px}.training-summary-exercise em{font-size:11px}.training-summary-coach{grid-template-columns:64px 1fr}.training-summary-coach__avatar{width:64px;height:72px;border-radius:17px}.training-summary-close{height:58px}

@media(max-width:390px){
  .training-care-wrap{padding-left:17px;padding-right:17px}.training-history-lead h1,.training-question-lead h1,.training-policy-intro h1{font-size:29px}

  .gp-question-scroll{padding-left:17px;padding-right:17px}.gp-question-foot{padding-left:17px;padding-right:17px}.gp-missed-card{padding:21px}.gp-missed-card h2{font-size:27px}
  #v-summary-body{padding-left:17px;padding-right:17px}.training-summary-hero__media{height:142px;min-height:142px}.training-summary-hero h1{font-size:25px}
  .training-review-lead h1{font-size:26px}.training-review-params__grid{gap:7px}.training-review-params__grid b{font-size:15px}
  .training-attachment--image img,.training-attachment--video video{max-height:230px}
}

/* Training experience v7: deliberate density instead of one enlarged scale. */
#detail-training-care,
#detail-training-review,
#detail-training-thread,
#detail-training-compose,
#detail-training-coach,
#detail-summary {
  --tr6-ink: #35111f;
  --tr6-text: #191719;
  --tr6-muted: #7c7579;
  --tr6-line: rgba(53, 17, 31, .078);
  --tr6-soft: #f1edef;
  --tr6-green: #327653;
  background: #f8f6f7;
}

#detail-training-care .dhead,
#detail-training-review .dhead,
#detail-training-thread .dhead,
#detail-training-compose .dhead,
#detail-training-coach .dhead,
#detail-summary .dhead {
  padding: 8px 14px 10px;
}

#detail-training-care .dhead__title,
#detail-training-review .dhead__title,
#detail-training-thread .dhead__title,
#detail-training-compose .dhead__title,
#detail-training-coach .dhead__title,
#detail-summary .dhead__title {
  font-size: 17px;
  letter-spacing: -.2px;
}

.training-care-wrap {
  max-width: 500px;
  padding: 8px 16px 44px;
}

.training-care-stack { gap: 14px; }
.training-care-section {
  padding: 10px 2px 0;
  font-size: 14px;
  letter-spacing: -.08px;
}
.training-care-detail .card {
  font-size: 12px;
  line-height: 1.45;
}
.training-care-primary {
  height: 54px !important;
  border-radius: 17px !important;
  font-size: 15px !important;
  box-shadow: 0 10px 22px rgba(53, 17, 31, .11) !important;
}

/* Dense timeline: the header orients; the rows carry the product. */
.training-history-page { gap: 12px; }
.training-history-lead { padding: 3px 1px 1px; }
.training-history-counters {
  gap: 18px;
  margin-top: 13px;
  padding-top: 12px;
  font-size: 11.5px;
}
.training-history-counters b {
  margin-right: 3px;
  font-size: 15px;
}
.training-history-filters { gap: 7px; }
.training-history-filters button {
  height: 40px;
  padding: 0 14px;
  border-radius: 13px;
  font-size: 13px;
}
.training-history-list {
  border-radius: 21px;
  box-shadow: inset 0 0 0 1px var(--tr6-line), 0 10px 26px rgba(38, 26, 32, .032);
}
.training-history-day {
  padding: 14px 14px 5px;
  font-size: 10px;
  letter-spacing: .055em;
}
.training-history-row {
  min-height: 72px;
  grid-template-columns: 40px minmax(0, 1fr) 16px;
  gap: 11px;
  padding: 10px 14px;
}
.training-history-row > span.training-history-row__icon {
  width: 40px;
  height: 40px;
  border-radius: 13px;
  font-size: 14px;
}
.training-history-row__copy small { font-size: 9.5px; }
.training-history-row__copy b {
  margin-top: 2px;
  font-size: 15px;
  line-height: 1.22;
}
.training-history-row__copy span {
  margin-top: 3px;
  font-size: 11.5px;
  line-height: 1.3;
}
.training-history-row__copy p {
  margin-top: 6px;
  font-size: 11.5px;
}
.training-history-row > i svg {
  width: 16px;
  height: 16px;
}
.training-history-empty { padding: 28px 18px; }
.training-history-empty b { font-size: 16px; }
.training-history-empty p { font-size: 12.5px; }
.training-history-more {
  height: 50px;
  border-radius: 16px;
  font-size: 14px;
  box-shadow: none;
}

/* Разбор: та же плотность, что у Истории — видео крупное, факты компактные. */
.training-review-page { gap: 12px; }
.training-review-lead { padding: 3px 1px 1px; }
.training-review-lead h1 { margin: 6px 0 10px; font-size: 25px; }
.training-review-lead > small { font-size: 11.5px; }
.training-review-status { padding: 7px 12px; font-size: 12px; }.training-review-coach { margin-bottom: 10px; font-size: 10.5px; }
.training-review-params__grid b { font-size: 15px; }
.training-review-coach > p { font-size: 14px; }
.training-review-question b { font-size: 13.5px; }

/* Explanatory screens use a calm reading scale, not marketing typography. */






























/* Coach profile keeps the photo important without turning into a poster. */


































/* Question flows are form-first: context stays visible but compact. */


























.training-care-quiet {
  height: 46px;
  border-radius: 15px;
  font-size: 12.5px;
}

/* In-player surfaces retain 44px touch targets without oversized copy. */
.gp-question-top {
  min-height: 74px;
  padding: calc(var(--safe-top) + 8px) 16px 8px;
}
.gp-question-top > div b { font-size: 15px; }
.gp-question-top > div span { font-size: 10px; }
.gp-question-scroll {
  max-width: 500px;
  padding: 13px 16px 108px;
}
.gp-question-coach {
  min-height: 74px;
  padding: 8px 10px 8px 8px;
  border-radius: 19px;
}
.gp-question-coach img {
  width: 52px;
  height: 58px;
  border-radius: 14px;
}
.gp-question-coach small { font-size: 9.5px; }
.gp-question-coach b { font-size: 15px; }
.gp-question-coach span { font-size: 10.5px; }
.gp-question-context {
  min-height: 78px;
  margin-top: 10px;
  padding: 8px;
  border-radius: 19px;
}
.gp-question-context__media {
  width: 62px;
  height: 62px;
  border-radius: 15px;
}
.gp-question-context small { font-size: 9.5px; }
.gp-question-context b { font-size: 14px; }
.gp-question-context span { font-size: 10.5px; }
.gp-question-label {
  margin-top: 16px;
  font-size: 12.5px;
}
.gp-question-topics { gap: 7px; }
.gp-question-topics button {
  min-height: 40px;
  padding: 0 13px;
  border-radius: 13px;
  font-size: 12.5px;
}
.gp-question textarea {
  min-height: 138px;
  padding: 14px;
  border-radius: 16px;
  font-size: 15px;
}
.gp-question-note { font-size: 10.5px; }
.gp-question-foot {
  gap: 8px;
  padding: 9px 16px calc(13px + env(safe-area-inset-bottom));
}
.gp-question-foot button {
  height: 52px;
  border-radius: 16px;
  font-size: 14px;
}
.gp-missed { padding: 14px; }
.gp-missed-card {
  max-width: 460px;
  padding: 20px;
  border-radius: 24px;
}
.gp-missed-icon {
  width: 44px;
  height: 44px;
  border-radius: 14px;
}
.gp-missed-card > small {
  margin-top: 14px;
  font-size: 10px;
}
.gp-missed-card h2 {
  max-width: 390px;
  margin-top: 5px;
  font-size: 24px;
  line-height: 1.1;
  letter-spacing: -.48px;
}
.gp-missed-card > p {
  margin-top: 7px;
  font-size: 13.5px;
  line-height: 1.42;
}
.gp-missed-guide {
  margin-top: 14px;
  padding: 12px 13px;
  border-radius: 14px;
}
.gp-missed-guide b { font-size: 12.5px; }
.gp-missed-guide span { font-size: 10.5px; }
.gp-missed-primary,
.gp-missed-secondary {
  height: 52px;
  border-radius: 16px;
  font-size: 14px;
}
.gp-missed-primary { margin-top: 14px; }
.gp-missed-card > em { font-size: 9.5px; }

/* Capture screen: the media teaches; the form stays within one natural scroll. */
.gp-capture-card {
  max-width: 500px;
  padding-left: 16px;
  padding-right: 16px;
}
.gp-capture-card h2 {
  max-width: 390px;
  margin-top: 5px;
  font-size: 24px;
  letter-spacing: -.48px;
}
.gp-capture-card > p {
  margin-top: 6px;
  font-size: 13.5px;
  line-height: 1.42;
}
.gp-cap-preview { border-radius: 20px; }
.gp-cap-shot {
  height: 156px;
  border-radius: 20px 20px 0 0;
}
.gp-cap-instruction { padding: 13px 14px 3px; }
.gp-cap-instruction > strong { font-size: 16.5px; }
.gp-cap-instruction > p { font-size: 12px; }
.gp-cap-brief {
  margin: 8px 14px 0;
  padding: 11px 0 13px;
}
.gp-cap-brief b { font-size: 10.5px; }
.gp-cap-pick,
.gp-cap-send {
  height: 54px;
  border-radius: 17px;
  font-size: 15px;
}
.gp-cap-fields {
  gap: 16px;
  margin-top: 18px;
}
.gp-cap-fields label,
.gp-cap-feel-field { font-size: 13.5px; }
.gp-cap-feelings button {
  min-height: 44px;
  font-size: 12.5px;
}

/* Summary mirrors the workout player: compact artwork, clear plan/fact rows. */
#v-summary-body {
  max-width: 500px;
  padding: 3px 16px 42px;
}
.training-summary { gap: 12px; }
.training-summary-hero {
  grid-template-columns: 112px minmax(0, 1fr);
  min-height: 190px;
  border-radius: 22px;
  box-shadow: inset 0 0 0 1px var(--tr6-line), 0 11px 28px rgba(38, 26, 32, .04);
}
.training-summary-hero__media {
  grid-column: 1;
  grid-row: 1;
  width: 112px;
  height: 100%;
  min-height: 190px;
  border: 0;
  border-right: 1px solid var(--tr6-line);
  background: linear-gradient(155deg, #f0ecee, #faf8f9) !important;
}
.training-summary-hero__media img,
.training-summary-hero__media video {
  padding: 8px;
  background: transparent !important;
}
.training-summary-hero__body {
  grid-column: 2;
  grid-row: 1;
  display: flex;
  flex-direction: column;
  padding: 15px 14px 13px;
}
.training-summary-hero__body > small { font-size: 10.5px; }
.training-summary-hero h1 {
  margin: 5px 0 6px;
  font-size: 22px;
  line-height: 1.1;
  letter-spacing: -.45px;
}
.training-summary-hero__body > p {
  font-size: 11.5px;
  line-height: 1.38;
}
.training-summary-workout-name {
  margin-top: 10px;
  padding-top: 9px;
  font-size: 11px;
}
.training-summary-progress {
  margin-top: auto;
  height: 5px;
}
.training-summary-progress__meta {
  margin-top: 6px;
  font-size: 9.5px;
}
.training-summary-metrics { border-radius: 20px; }
.training-summary-stats > div {
  min-height: 68px;
  padding: 12px 6px;
}
.training-summary-stats b { font-size: 16.5px; }
.training-summary-stats span { font-size: 10.5px; }
.training-summary-load > div {
  min-height: 70px;
  padding: 12px 8px;
}
.training-summary-load small { font-size: 8.5px; }
.training-summary-load b { font-size: 15px; }
.training-summary-load span { font-size: 9.5px; }
.training-summary-section {
  padding: 16px 14px 3px;
  border-radius: 21px;
}
.training-summary-section__head { padding-bottom: 9px; }
.training-summary-section__head h2 { font-size: 19px; }
.training-summary-section__head small { font-size: 9.5px; }
.training-summary-exercise {
  grid-template-columns: 62px minmax(0, 1fr);
  gap: 11px;
  padding: 13px 0;
}
.training-summary-exercise__media {
  width: 62px;
  height: 62px;
  border-radius: 15px;
}
.training-summary-exercise__media img,
.training-summary-exercise__media video {
  padding: 4px;
  background: transparent !important;
}
.training-summary-exercise b { font-size: 14.5px; }
.training-summary-exercise span { font-size: 11.5px; }
.training-summary-exercise small { font-size: 10.5px; }
.training-summary-exercise em { font-size: 9px; }
.training-summary-coach {
  grid-template-columns: 54px 1fr;
  gap: 11px;
  padding: 11px 13px 11px 10px;
  border-radius: 20px;
}
.training-summary-coach__avatar {
  width: 54px;
  height: 62px;
  border-radius: 14px;
}
.training-summary-coach__copy small { font-size: 9.5px; }
.training-summary-coach__copy b {
  margin-top: 3px;
  font-size: 14.5px;
}
.training-summary-coach__copy span {
  margin-top: 3px;
  font-size: 10.5px;
}
.training-summary-close {
  height: 54px;
  border-radius: 17px !important;
  font-size: 15px;
}

@media (max-width: 390px) {
  .training-care-wrap,
  #v-summary-body {
    padding-left: 15px;
    padding-right: 15px;
  }.gp-question-scroll,
.gp-question-foot {
    padding-left: 15px;
    padding-right: 15px;
  }
  .gp-missed-card { padding: 18px; }
  .gp-missed-card h2 { font-size: 23px; }
  .training-summary-hero {
    grid-template-columns: 104px minmax(0, 1fr);
    min-height: 184px;
  }
  .training-summary-hero__media {
    width: 104px;
    min-height: 184px;
  }
  .training-summary-hero h1 { font-size: 21px; }
}

@media (max-height: 740px) {
  .gp-cap-shot { height: 140px; }
  .gp-cap-fields {
    gap: 13px;
    margin-top: 15px;
  }
  .gp-question-scroll { padding-top: 10px; }
  .gp-question textarea { min-height: 116px; }
}

/* Форма ОТВЕТА тренеру: вместо обязательного выбора темы — одна необязательная
   отметка «про боль», чтобы safety-маршрут остался доступен и в ответе. */




.training-safety-toggle.on { border-color: #b5493c; background: #fff7f5; }
.training-safety-toggle.on > span { border-color: #b5493c; background: #b5493c; color: #fff; }

/* Медиа не проигралось (например, ogg-голосовое из Chrome тренера на старом
   iPhone). Раньше на его месте молча появлялась иконка-человечек: ни текста,
   ни выхода. Теперь — что случилось, «Повторить» и «Скачать». */
.training-media-fallback {
  padding: 16px;
  border-radius: 16px;
  background: #f6f2f4;
  box-shadow: inset 0 0 0 1px var(--tr6-line, rgba(53, 17, 31, .085));
}
.training-media-fallback b { display: block; color: var(--tr6-text, #191719); font-size: 14px; }
.training-media-fallback p { margin: 5px 0 0; color: var(--tr6-muted, #7c7579); font-size: 12.5px; line-height: 1.45; }
.training-media-fallback__acts { display: flex; gap: 8px; margin-top: 12px; }
.training-media-fallback__acts button,
.training-media-fallback__acts a {
  min-height: 38px;
  display: inline-flex;
  align-items: center;
  padding: 0 15px;
  border: 1px solid var(--tr6-line, rgba(53, 17, 31, .085));
  border-radius: 12px;
  background: #fff;
  color: var(--tr6-ink, #35111f);
  font: 600 13px var(--font);
  text-decoration: none;
}
.training-media-fallback__acts button { border-color: var(--tr6-ink, #35111f); background: var(--tr6-ink, #35111f); color: #fff; }


/* Длительность вложения — как в CRM: клиент видит, сколько идёт голосовое/видео,
   ещё до нажатия play. */
.training-attachment__meta {
  display: flex;
  justify-content: flex-end;
  padding: 4px 8px 2px;
  color: var(--tr6-muted, #7c7579);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}


/* ── Оценка проведённой онлайн-тренировки ────────────────────────────────
   Карточка внутри экрана «Онлайн-тренировки»: появляется, только когда есть
   что оценить, и ничего не загораживает. Это не блокирующий экран — клиент
   может просто пролистать её мимо. */
.ot-rate-card { margin-top:14px;padding:16px;border-radius:20px;background:#fff;color:#171216;box-shadow:0 1px 0 rgba(29,2,12,.02),0 9px 26px rgba(29,2,12,.04),inset 0 0 0 .5px rgba(29,2,12,.06); }
.ot-rate-card small { color:var(--content-subtle);font-size:9.5px; }
.ot-rate-card h2 { margin-top:3px;font-size:16px;letter-spacing:-.3px; }
.ot-rate-card p { margin-top:6px;color:rgba(23,18,22,.62);font-size:11.5px;line-height:1.45; }
.ot-rate-row { width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;padding:11px 12px;border:0;border-radius:14px;background:#faf7f9;color:#171216;text-align:left;font-family:var(--font); }
.ot-rate-row b { display:block;font-size:13px; }
.ot-rate-row small { display:block;margin-top:2px;color:var(--content-subtle);font-size:10.5px; }
.ot-rate-row i { display:block;width:16px;height:16px;color:rgba(23,18,22,.28);flex-shrink:0; }
.ot-rate-row i svg { width:100%;height:100%; }
.ot-rate-note { margin-top:10px;color:var(--content-subtle);font-size:10px;line-height:1.45; }
.ot-rate-when { margin-top:2px;font-size:12.5px;color:rgba(23,18,22,.7); }
.ot-rate-scale { display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:12px; }
.ot-rate-scale button { height:48px;border:1.5px solid rgba(29,2,12,.12);border-radius:14px;background:#fff;color:#171216;font-family:var(--font);font-size:16px; }
.ot-rate-scale button.on { border-color:var(--brand-strong);background:rgba(255,248,251,.95);box-shadow:0 4px 14px rgba(29,2,12,.06); }
.ot-rate-comment { width:100%;min-height:78px;margin-top:12px;padding:11px 12px;border:1px solid rgba(29,2,12,.12);border-radius:14px;background:#fff;color:#171216;font-family:var(--font);font-size:13px;line-height:1.45;resize:vertical; }
.ot-rate-comment:focus { outline:none;border-color:var(--brand-strong); }

/* ============================================================================
   РАЗДЕЛ «ТРЕНИРОВКИ» — редизайн v4 (namespace .trh)
   Одежда — токены приложения: фон --neutral-bg, радиусы 20/16/100,
   бренд --brand-strong, лайм --positive. Композиция — из согласованного макета
   design-preview/training-hub-v2/v4.html.
   Ключевое отличие от прежнего хаба: ОДИН компонент тренировки (.trh-wo) в трёх
   размерах и шести состояниях вместо шести отдельных вёрсток одного объекта,
   и статусы на четырёх семантических значениях вместо цветов «на глаз».
   ============================================================================ */
#detail-trainhub { background: var(--neutral-bg); }
.trh {
  /* Семантика статусов — ровно четыре значения на весь раздел */
  --s-neutral-bg: rgba(12,14,18,.05); --s-neutral-fg: #594f54;            --s-neutral-dot: rgba(12,14,18,.26);
  --s-success-bg: #eaf4dd;            --s-success-fg: #3f6410;            --s-success-dot: #a3d546;
  --s-attn-bg: #fdf0d8;               --s-attn-fg: #78500b;               --s-attn-dot: #ff9f43;
  --s-danger-bg: #fdeceb;             --s-danger-fg: #b23a33;             --s-danger-dot: #c8362f;
  /* Отступы — шаг 4, шесть значений. Ничего вне набора в разделе нет. */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:20px; --s6:28px;
  --trh-line: rgba(12,14,18,.06);
  --trh-meta: #594f54;
  --trh-sh: 0 8px 24px rgba(20,4,12,.06), inset 0 0 0 1px rgba(12,14,18,.03);
  /* Контейнер детали держит padding 20px, макет считан от 16px */
  margin: 0 -4px; padding-bottom: var(--s6);
  display: flex; flex-direction: column; gap: var(--s3);
  color: var(--content-strong);
}
.trh * { box-sizing: border-box; }
.trh :where(button) { font: inherit; color: inherit; border: 0; background: transparent; padding: 0; cursor: pointer; text-align: left; }

/* Шкала кегля. Ступень t1 (герой) живёт в .trh-wo--hero, остальные — здесь. */
.trh-t2 { font-size:20px;font-weight:600;letter-spacing:-.5px;line-height:1.15; }
.trh-t3 { font-size:16px;font-weight:600;letter-spacing:-.2px;line-height:1.25; }
.trh h2.trh-t3 { margin:0; }
.trh-t4 { font-size:14.5px;font-weight:500;letter-spacing:-.1px;line-height:1.3; }
.trh-t5 { font-size:13px;font-weight:400;line-height:1.4;color:var(--trh-meta); }
.trh-t6 { font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;
  line-height:1.3;color:var(--trh-meta); }

.trh-card { background: var(--card); border-radius: var(--r-card); box-shadow: var(--trh-sh); }
.trh-card--p { padding: var(--s4); }
.trh-sect { display:flex;align-items:center;justify-content:space-between;gap:var(--s3);margin:var(--s2) var(--s1) calc(var(--s1) * -1); }
.trh-sect__lk { color: var(--trh-meta); font-size: 13px; font-weight: 500; min-height: 44px; }

/* ---------- статус-чип: один компонент, четыре значения ---------- */
.trh-chip { --bg:var(--s-neutral-bg); --fg:var(--s-neutral-fg); --dot:var(--s-neutral-dot);
  display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:var(--r-pill);
  background:var(--bg);color:var(--fg);font-size:11.5px;font-weight:500;white-space:nowrap;flex:none; }
.trh-chip i { width:6px;height:6px;border-radius:50%;background:var(--dot);flex:none; }
.trh-chip svg { width:13px;height:13px;flex:none; }
.trh-chip--success { --bg:var(--s-success-bg); --fg:var(--s-success-fg); --dot:var(--s-success-dot); }
.trh-chip--attn { --bg:var(--s-attn-bg); --fg:var(--s-attn-fg); --dot:var(--s-attn-dot); }
.trh-chip--danger { --bg:var(--s-danger-bg); --fg:var(--s-danger-fg); --dot:var(--s-danger-dot); }
.trh-chip--dark { --bg:rgba(255,255,255,.12); --fg:#fff; box-shadow: inset 0 0 0 .5px rgba(255,255,255,.24); }

/* flex:1 живёт на КНОПКЕ В РЯДУ, а не на самой кнопке: в вертикальном стеке
   (.trh-care-stack) flex:1 растягивал или сжимал кнопку во всю ширину —
   «Спросить про этот разбор» съезжала до 20px вместо 48. */
.trh-btn { flex:none;min-height:48px;padding:12px 16px;border-radius:var(--r-pill);display:flex;align-items:center;
  justify-content:center;gap:var(--s2);font-family:var(--font);font-size:15px;font-weight:600;letter-spacing:-.2px;line-height:1.2;text-align:center; }
.trh-cta > .trh-btn { flex:1; }
.trh-btn svg { width:16px;height:16px; }
.trh-btn--brand { background:var(--brand-strong);color:#fff;box-shadow:0 8px 20px rgba(20,4,12,.26); }
.trh-btn--white { background:#fff;color:var(--brand-strong);box-shadow:0 8px 20px rgba(0,0,0,.26); }
.trh-btn--ghost { background:transparent;color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.30); }
.trh-btn--soft  { background:rgba(12,14,18,.06);color:var(--content-strong); }
.trh-cta { display:flex;gap:var(--s2); }
.trh-hero__aux { display:flex;justify-content:center;margin-top:var(--s1); }
.trh-hero__aux button { min-height:44px;padding:8px 12px;color:rgba(255,255,255,.72);
  font-family:var(--font);font-size:12.5px;font-weight:500;text-decoration:underline;text-underline-offset:3px; }
.trh-hidden-restore { width:100%;min-height:44px;margin:var(--s1) 0;color:var(--trh-meta);
  font-family:var(--font);font-size:13px;font-weight:500;text-align:center; }
.trh :where(.trh-btn,.trh-tile,.trh-row,.trh-sect__lk,.trh-seg button,.trh-mark__ts,.trh-history-refresh,.trh-day,.trh-pw__ex,.trh-pw__bars button):focus-visible {
  outline:3px solid #c8397a;outline-offset:3px;
}
.trh :where(.trh-btn,.trh-tile,.trh-row,.trh-history-refresh):active { transform:scale(.985);filter:brightness(.96); }

/* ============================================================
   КОМПОНЕНТ ТРЕНИРОВКИ — три размера, одна анатомия
   медиа · заголовок со статусом · мета · действие
   ============================================================ */
.trh-wo { position:relative;display:flex;align-items:center;gap:var(--s3);width:100%; }
.trh-wo__media { flex:none;border-radius:var(--r-inset);overflow:hidden;background:var(--tile);
  display:grid;place-items:center;color:rgba(12,14,18,.55); }
.trh-wo__media img, .trh-wo__media video { width:100%;height:100%;object-fit:cover;display:block; }
.trh-wo__b { flex:1;min-width:0; }
.trh-wo__top { display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap; }
.trh-wo__title { font-size:14.5px;font-weight:500;letter-spacing:-.1px;line-height:1.3; }
.trh-wo__meta { display:flex;gap:var(--s3);margin-top:5px;color:var(--trh-meta);font-size:12px;flex-wrap:wrap; }
.trh-wo__meta span { display:flex;align-items:center;gap:5px;white-space:nowrap; }
.trh-wo__meta svg { width:13px;height:13px;opacity:.55;flex:none; }
.trh-wo__act { flex:none; }

/* размер S — строка */
.trh-wo--row { padding:var(--s1) var(--s2) var(--s1) var(--s1);border-radius:var(--r-inset);
  background:rgba(153,160,174,.09); }
.trh-wo--row .trh-wo__media { width:52px;height:52px; }
.trh-wo--row .trh-wo__media svg { width:23px;height:23px; }
.trh-wo--row .trh-wo__act { width:44px;height:44px;display:grid;place-items:center;border-radius:50%;
  background:var(--brand-strong);color:#fff;box-shadow:0 8px 18px rgba(20,4,12,.26); }
.trh-wo--row .trh-wo__act svg { width:17px;height:17px; }
.trh-wo--flat { background:transparent;padding:var(--s3) 0;border-top:1px solid var(--trh-line);border-radius:0; }
.trh-wo--flat:first-of-type { border-top:0; }
.trh-wo--flat .trh-wo__act { width:38px;height:38px;background:rgba(12,14,18,.06);color:var(--content-strong);box-shadow:none; }

/* размер M — карточка */
.trh-wo--card { flex-direction:column;align-items:stretch;gap:0;padding:var(--s4);
  background:var(--card);border-radius:var(--r-card);box-shadow:var(--trh-sh); }
.trh-wo--card .trh-wo__head { display:flex;align-items:center;justify-content:space-between;gap:var(--s3); }
.trh-wo--card .trh-wo__title { margin-top:var(--s3);font-size:20px;font-weight:600;letter-spacing:-.5px;line-height:1.15; }
.trh-wo--card .trh-wo__sub { margin-top:5px;font-size:13px;color:var(--trh-meta); }
.trh-wo--card .trh-wo__meta { margin-top:var(--s3); }
/* Схема мышц справа снизу — как в макете v4. Модификатор --fig ставится только
   когда картинка реально есть: без него текст не должен терять ширину. */
/* Внутри — настоящая анатомическая карта (mm-svg), а не картинка. */
.trh-wo--card .trh-wo__fig { position:absolute;right:6px;bottom:-6px;width:84px;height:104px;
  pointer-events:none;display:block;filter:drop-shadow(0 8px 16px rgba(90,30,60,.10));
  /* Верх приглушаем: фигура не должна спорить с чипом даты над ней. */
  -webkit-mask-image:linear-gradient(180deg,transparent 0,#000 26%,#000 100%);
          mask-image:linear-gradient(180deg,transparent 0,#000 26%,#000 100%); }
.trh-wo--card .trh-wo__fig .mm-svg { width:100%;height:100%;display:block;overflow:visible; }
.trh-wo--card.trh-wo--fig { overflow:hidden; }
.trh-wo--card.trh-wo--fig .trh-wo__title,
.trh-wo--card.trh-wo--fig .trh-wo__sub,
.trh-wo--card.trh-wo--fig .trh-wo__meta { padding-right:76px; }

/* размер L — герой. Тёмный материал тот же, что у карточки «Тренировка дня»
   на главной (.row--dark): переход из неё читается как разворачивание. */
.trh-wo--hero { flex-direction:column;align-items:stretch;gap:0;position:relative;overflow:hidden;
  border-radius:var(--r-card);padding:var(--s4) var(--s4) var(--s3);min-height:376px;color:#fff;
  background: radial-gradient(120% 80% at 88% 2%, #4a1329 0%, rgba(74,19,41,0) 58%),
    linear-gradient(152deg,#2b0815 0%,#1d020c 52%,#360f21 100%);
  box-shadow: 0 12px 26px rgba(20,4,12,.30); }
/* Фигура во всю высоту справа — та же композиция, что в согласованном макете.
   Уходит за правый край и за подвал: подвал темнее фона и перекрывает её сам,
   отдельного затемнения не нужно. Текст ограничен по ширине, чтобы длинное
   название не наезжало на фигуру. */
/* Фигура во ВСЮ высоту карточки: низ подрезает сама карточка (overflow:hidden),
   а не прямая линия в ассете. У прежней фигуры срез прятали чёрные легинсы —
   у светлой одежды он был бы виден. */
.trh-wo--hero .trh-wo__figure { position:absolute;right:-104px;top:2px;height:calc(100% - 2px);width:auto;
  pointer-events:none;user-select:none;filter:drop-shadow(0 20px 34px rgba(0,0,0,.42)); }
.trh-wo--hero .trh-wo__b { position:relative;z-index:1;flex:0 0 auto;max-width:196px; }
.trh-wo--hero .trh-wo__title { margin-top:var(--s3);font-size:24px;font-weight:600;letter-spacing:-.7px;line-height:1.1; }
.trh-wo--hero .trh-wo__sub { margin-top:5px;font-size:13px;color:rgba(255,255,255,.55); }
.trh-wo--hero .trh-wo__list { display:flex;flex-direction:column;gap:var(--s2);margin:var(--s3) 0 var(--s4);padding:0;list-style:none; }
.trh-wo--hero .trh-wo__list li { display:flex;align-items:center;gap:9px;font-size:13.5px;color:rgba(255,255,255,.78); }
.trh-wo--hero .trh-wo__list svg { width:16px;height:16px;flex:none;opacity:.6; }
/* Подвал — утопленная ниша: панель ТЕМНЕЕ фона со светлой кромкой сверху.
   Молочное стекло (белая заливка + screen) на бордовом давало мутный серый. */
.trh-wo__foot { position:relative;z-index:2;margin-top:auto;padding:var(--s3);border-radius:var(--r-inset);
  background:rgba(0,0,0,.26);box-shadow:inset 0 1px 0 rgba(255,255,255,.09),inset 0 -1px 0 rgba(0,0,0,.35); }
.trh-wo__prlab { display:flex;align-items:center;justify-content:space-between;font-size:12.5px;color:rgba(255,255,255,.62); }
.trh-wo__prlab b { font-size:12.5px;font-weight:600;color:#fff; }
.trh-wo__prbar { height:4px;margin:var(--s2) 0 var(--s3);border-radius:var(--r-pill);background:rgba(255,255,255,.16);overflow:hidden; }
.trh-wo__prbar i { display:block;height:100%;border-radius:var(--r-pill);background:#fff; }

/* состояния — работают во всех трёх размерах */
.trh-wo.is-done .trh-wo__media { background:var(--s-success-bg);color:var(--s-success-fg); }
.trh-wo.is-done .trh-wo__act { background:var(--s-success-bg);color:var(--s-success-fg);box-shadow:none; }
.trh-wo.is-missed .trh-wo__media { background:var(--s-attn-bg);color:var(--s-attn-fg); }
/* У пропущенной действие — «посмотреть», а не «играть»: брендовая круглая
   кнопка тянула бы на себя внимание сильнее, чем сегодняшняя тренировка. */
.trh-wo.is-missed .trh-wo__act { background:rgba(12,14,18,.06);color:var(--content-strong);box-shadow:none; }
.trh-wo.is-locked { opacity:.5; }
.trh-wo.is-locked .trh-wo__act { background:rgba(12,14,18,.08);color:rgba(12,14,18,.26);box-shadow:none; }

/* ---------- программа и прогресс ---------- */
.trh-pg { display:flex;align-items:baseline;justify-content:space-between;margin-top:var(--s4); }
.trh-bar { height:8px;margin-top:7px;border-radius:var(--r-pill);background:rgba(12,14,18,.08);overflow:hidden; }
.trh-bar i { display:block;height:100%;border-radius:var(--r-pill);background:var(--brand-strong); }
.trh-bar--seg { background:repeating-linear-gradient(90deg,rgba(12,14,18,.10) 0 3px,transparent 3px 5px);border-radius:2px; }
.trh-bar--seg i { border-radius:0;background:repeating-linear-gradient(90deg,var(--positive) 0 3px,transparent 3px 5px); }
.trh-note { display:flex;gap:10px;align-items:flex-start;margin-top:var(--s4);padding:var(--s3) 14px;border-radius:14px;
  background:#faf3f7;font-size:13px;line-height:1.4;color:rgba(12,14,18,.62); }
.trh-note > span { flex:1;min-width:0; }
.trh-note svg { width:17px;height:17px;flex:none;margin-top:1px;color:#e0658a; }
.trh-note b { color:var(--content-strong);font-weight:600; }

/* ---------- «Ваша сила» ---------- */
.trh-pw__ton { display:flex;align-items:flex-end;gap:var(--s3);margin-top:var(--s3); }
.trh-pw__tonv { flex:none; }
.trh-pw__tonv b { font-size:24px;font-weight:600;letter-spacing:-.7px;line-height:1; }
.trh-pw__tonv span { display:block;margin-top:3px;font-size:11.5px;color:var(--trh-meta); }
/* Подпись под крупным числом — читалка: тап по столбику подменяет её на
   значение недели. */
.trh-pw__tonv span.is-read { color:var(--content-strong);font-weight:500; }
.trh-pw__bars { flex:1;display:flex;align-items:flex-end;justify-content:flex-end;gap:7px;height:44px; }
/* Столбик — кнопка ради тач-цели: сама полоска 18px, остальное запас. */
.trh-pw__bars button { width:26px;flex:none;height:100%;display:flex;align-items:flex-end;padding:0;background:none;border:0; }
.trh-pw__bars i { display:block;width:18px;margin:0 auto;border-radius:5px 5px 3px 3px;
  background:rgba(12,14,18,.10);transition:background .18s ease; }
.trh-pw__bars button.on i { background:var(--brand-strong); }
.trh-pw__bars button.sel i { background:var(--positive); }
.trh-pw__ex { display:flex;align-items:center;gap:var(--s3);padding:var(--s3) 0;border-top:1px solid var(--trh-line); }
.trh-pw__exb { flex:1;min-width:0; }
.trh-pw__exb b { display:block;font-size:14px;font-weight:500;letter-spacing:-.1px; }
.trh-pw__exb span { display:block;margin-top:2px;font-size:11.5px;color:var(--trh-meta); }
/* pan-y, а не none: чтение значений — горизонтальная протяжка, и страница
   обязана продолжать скроллиться, если палец лёг на график. */
.trh-pw__spark { flex:none;width:92px;height:32px;touch-action:pan-y; }
/* Точка спарклайна ездит по графику под пальцем — без перехода она телепортируется. */
.trh-pw__dot { transition:cx .12s ease, cy .12s ease; }
/* Место спарклайна, когда неделя всего одна: график из одной точки врёт. */
.trh-pw__first { flex:none;width:92px;display:flex;justify-content:center; }
.trh-pw__note { margin-top:var(--s3);padding:10px var(--s3);border-radius:12px;
  background:rgba(12,14,18,.04);font-size:13px;line-height:1.45;color:var(--trh-meta); }
.trh-pw__pr { flex:none;text-align:right;min-width:66px; }
.trh-pw__pr.is-read b { color:var(--s-success-fg); }
.trh-pw__pr b { display:block;font-size:14px;font-weight:600;letter-spacing:-.2px; }
.trh-pw__pr span { display:block;margin-top:2px;font-size:11px;color:var(--trh-meta); }

/* ---------- неделя: капсулы дней (компонент из трекера) ---------- */
.trh-days { display:flex;gap:3px;justify-content:space-between;margin-top:var(--s3);overflow-x:auto;
  overscroll-behavior-inline:contain;scroll-snap-type:x proximity;scrollbar-width:none; }
.trh-days::-webkit-scrollbar { display:none; }
.trh-day { flex:1 0 44px;min-width:44px;min-height:56px;background:#f3f1f4;border-radius:var(--r-pill);padding:2px;text-align:center; }
.trh-day { scroll-snap-align:start; }
.trh-day .dow { font-size:10px;font-weight:500;letter-spacing:-.2px;line-height:1.6;height:20px;
  display:flex;align-items:flex-end;justify-content:center; }
/* Число центрируется в ячейке САМО, а точка висит абсолютом снизу. Раньше они
   центрировались парой, и число уезжало на 3.5px вверх — не совпадая по высоте
   с числом внутри кружка «сегодня». */
.trh-day .cell { position:relative;aspect-ratio:1;display:flex;align-items:center;justify-content:center; }
.trh-day .num { font-size:14px;line-height:1; }
.trh-day .dot { position:absolute;left:50%;bottom:3px;transform:translateX(-50%);
  width:5px;height:5px;border-radius:50%;background:transparent; }
.trh-day.is-muted .dow, .trh-day.is-muted .num { color:var(--trh-meta); }
.trh-day.is-done .dot { background:var(--s-success-dot); }
.trh-day.is-missed .dot { background:var(--s-attn-dot); }
.trh-day.is-rest .dot { background:rgba(12,14,18,.12); }
/* День из нескольких тренировок, где сделаны не все. Не «выполнен» (иначе
   клиент решит, что закрыл день) и не «пропущен» (часть работы уже сделана):
   половина точки закрашена успехом, половина — пустая. */
.trh-day.is-part .dot { background:linear-gradient(90deg,var(--s-success-dot) 0 50%,rgba(12,14,18,.16) 50% 100%); }
.trh-day.is-today { background:var(--brand-strong); }
.trh-day.is-today .dow { color:var(--content-inverse); }
/* Своё имя, а НЕ `.disc`: тем классом уже названа карточка дисциплины
   (`.disc { padding:15px 16px }`), и кружок дня молча наследовал её padding —
   число стояло на 5px ниже центра круга. Коллизия имён в общем неймспейсе. */
.trh-day.is-today .trh-day__disc { width:34px;height:34px;border-radius:50%;background:#fff;
  display:grid;place-items:center;padding:0;margin:0; }
.trh-day.is-today .num { font-weight:500; }
/* Выбранный день — тот, чья тренировка показана строкой ниже. Обводка, а не
   заливка: заливкой уже занят «сегодня», и два разных смысла одним приёмом
   читались бы как один. */
.trh-day.is-sel { box-shadow:inset 0 0 0 2px var(--brand-strong); }
.trh-day.is-today.is-sel { box-shadow:none; }
.trh-daylink { display:flex;align-items:center;justify-content:space-between;width:100%;margin-top:var(--s3);
  padding-top:var(--s3);border-top:1px solid var(--trh-line);font-size:13px;color:var(--trh-meta);min-height:44px; }
.trh-daylink b { color:var(--content-strong);font-weight:500;font-size:14.5px; }
.trh-daylink svg { width:16px;height:16px;opacity:.4; }
.trh-hint { margin-top:var(--s3);font-size:13px;line-height:1.4;color:var(--trh-meta); }
/* ---------- Удобные дни (макет design-preview/training-hub-v2/dayspref.html) ---------- */
.trh-dp__t { display:block;font-size:16px;font-weight:600;letter-spacing:-.25px;color:var(--content-strong); }
.trh-dp__sub { margin:5px 0 0;font-size:13.5px;line-height:1.45;color:var(--trh-meta); }
/* Неделя капсулами — тот же приём, что у полосы дней в трекере (.trh-day):
   клиент уже знает этот элемент, и новый экран не вводит своего словаря.
   Ячейки тянутся под ширину карточки: при фиксированной ширине семь дней не
   влезали в 375px и «Вс» уезжало на вторую строку одиноким огрызком. */
.trh-dweek { display:flex;gap:5px;justify-content:space-between;margin-top:var(--s4); }
.trh-dcell { flex:1 1 0;min-width:0;min-height:66px;padding:4px 0 6px;border:0;
  background:#f3f1f4;border-radius:var(--r-pill);font-family:inherit;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;
  transition:background .18s cubic-bezier(.2,.7,.3,1); }
.trh-dcell .dow { font-size:11px;font-weight:500;letter-spacing:-.2px;line-height:1.8;
  color:var(--trh-meta);transition:color .18s; }
.trh-dcell .cell { flex:1;display:grid;place-items:center;width:100%; }
/* Пустая ячейка — не «серый кружок», а место, куда встанет галочка: почти
   невидимое кольцо на той же сетке, чтобы строка не прыгала при выборе. */
.trh-dcell .mark { width:32px;height:32px;border-radius:50%;
  background:transparent;box-shadow:inset 0 0 0 1.5px rgba(12,14,18,.10);
  display:grid;place-items:center;color:var(--brand-strong);transform:scale(.82);
  transition:transform .2s cubic-bezier(.2,.9,.3,1.3),background .18s,box-shadow .18s; }
.trh-dcell .mark svg { width:16px;height:16px;opacity:0;transform:scale(.6);
  transition:opacity .16s .04s,transform .2s cubic-bezier(.2,.9,.3,1.4) .04s; }
.trh-dcell.is-on { background:var(--brand-strong); }
.trh-dcell.is-on .dow { color:var(--content-inverse); }
.trh-dcell.is-on .mark { transform:scale(1);background:#fff;box-shadow:none; }
.trh-dcell.is-on .mark svg { opacity:1;transform:scale(1); }
@media (prefers-reduced-motion: reduce) {
  .trh-dcell, .trh-dcell .mark, .trh-dcell .mark svg { transition:none; }
}
/* «Подходит любой день» — ОТДЕЛЬНЫЙ ответ, а не пустой список: иначе его не
   отличить от «случайно тапнул и отжал». */
.trh-dp__any { display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;
  margin-top:var(--s3);padding:13px 16px;border:0;border-radius:var(--r-inset);background:#f6f4f6;
  font-family:inherit;font-size:14px;font-weight:500;color:var(--content-strong);cursor:pointer;
  min-height:52px;text-align:left; }
.trh-dp__any .tick { width:22px;height:22px;border-radius:50%;box-shadow:inset 0 0 0 1.5px rgba(12,14,18,.14);
  display:grid;place-items:center;color:#fff;flex:none; }
.trh-dp__any .tick svg { width:13px;height:13px;opacity:0; }
.trh-dp__any.is-on { background:#f3ecef; }
.trh-dp__any.is-on .tick { background:var(--brand-strong);box-shadow:none; }
.trh-dp__any.is-on .tick svg { opacity:1; }
/* Заголовок шторки: те же размеры, что у .v-sheet-h в шаблоне мини-аппа. */
.trh-dp__sheet-t { font-size:19px;font-weight:600;letter-spacing:-.3px;margin:4px 0 4px; }
.trh-dp__sheet-s { font-size:13.5px;line-height:1.45;color:var(--trh-meta);margin-bottom:var(--s4); }
/* Свёрнутый итог в хабе: ответ читается неделей, а не строкой текста — тем же
   приёмом, каким его и давали. */
.trh-dp__done { display:block;width:100%;border:0;background:transparent;font-family:inherit;
  text-align:left;cursor:pointer;padding:0; }
.trh-dp__done-h { display:flex;align-items:center;justify-content:space-between;gap:12px; }
.trh-dp__done-h b { font-size:16px;font-weight:600;letter-spacing:-.25px;color:var(--content-strong); }
.trh-dp__edit { display:inline-flex;align-items:center;gap:4px;flex:none;
  font-size:13px;font-weight:500;color:var(--trh-meta); }
.trh-dp__edit svg { width:14px;height:14px;opacity:.45; }
.trh-dp__mini { display:flex;gap:5px;justify-content:space-between;margin-top:var(--s3); }
.trh-dp__mini i { flex:1 1 0;min-width:0;height:34px;border-radius:var(--r-pill);background:#f3f1f4;
  display:grid;place-items:center;font-style:normal;font-size:12px;font-weight:600;color:var(--trh-meta); }
.trh-dp__mini i.on { background:var(--brand-strong);color:var(--content-inverse); }
.trh-dp__foot { display:flex;align-items:center;gap:7px;margin-top:var(--s3);
  font-size:12.5px;color:var(--trh-meta); }
.trh-dp__foot svg { width:14px;height:14px;color:var(--s-success-fg);flex:none; }
/* Подсказка со значком: иконка не должна съезжать относительно первой
   строки, когда список дней переносится. */
.trh-hint--ic { display:flex;align-items:flex-start;gap:6px; }
.trh-hint--ic svg { width:14px;height:14px;opacity:.55;flex:none;margin-top:2px; }
/* Шапка выбранного дня, когда тренировок в нём больше одной: строк ниже
   несколько, и без неё непонятно, что все они — один день программы. */
.trh-daysum { display:flex;align-items:baseline;justify-content:space-between;gap:10px;
  margin-top:var(--s4);font-size:13px; }
.trh-daysum b { font-size:14.5px;font-weight:600;color:var(--content-strong); }
.trh-daysum span { color:var(--trh-meta);white-space:nowrap; }
.trh-missed-row + .trh-missed-row { border-top:1px solid var(--trh-line); }
.trh-missed-row .trh-row { border-top:0; }
.trh-missed-row > [data-trdismiss] { display:block;min-height:44px;margin:-8px 0 0 auto;padding:8px 0 8px 52px;
  color:var(--trh-meta);font-family:var(--font);font-size:12.5px;font-weight:500;text-align:right; }

/* ---------- плитки следующей недели ---------- */
.trh-tiles { display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:var(--s3); }
.trh-tile { position:relative;overflow:hidden;border-radius:var(--r-inset);min-height:148px;display:flex;
  flex-direction:column;justify-content:flex-end;padding:11px;text-align:left;
  background:linear-gradient(160deg,#4d2638,#1d020c); }
.trh-tile__media { position:absolute;inset:0;display:grid; }
.trh-tile__media img, .trh-tile__media video { width:100%;height:100%;object-fit:cover;display:block; }
/* Ленивая миниатюра (gcThumbHtml) — силуэт и <video> соседями: стопкой их
   собирает сетка, как у строк карточки (.gc-eth>*). Без этого силуэт
   сдвигал ролик вниз, и в плитке/итоге была видна только его часть. */
.trh-tile__media>*, .training-summary-exercise__media>*, .training-summary-hero__media>* { grid-area:1/1; }
/* Явные дорожки: без них высоту строки сетки задаёт пропорция медиа, и
   вертикальный ролик/картинка вылезали из плитки вниз (видна только часть). */
.trh-tile__media, .training-summary-exercise__media, .training-summary-hero__media, .gc-eth { grid-template:minmax(0,1fr)/minmax(0,1fr); }
.trh-tile::after { content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(12,4,10,.30) 0%,rgba(12,4,10,.10) 34%,rgba(12,4,10,.62) 64%,rgba(12,4,10,.94) 100%); }
.trh-tile__date { position:relative;z-index:2;align-self:flex-start;margin-bottom:auto;
  display:inline-flex;align-items:center;height:26px;padding:0 10px;border-radius:var(--r-pill);
  font-size:12px;font-weight:600;color:#fff;background:rgba(12,4,10,.76);
  -webkit-backdrop-filter:blur(14px) saturate(160%);backdrop-filter:blur(14px) saturate(160%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.24),inset 0 0 0 1px rgba(255,255,255,.28),0 1px 6px rgba(12,4,10,.34);
  text-shadow:0 1px 3px rgba(12,4,10,.72); }
.trh-tile__b { position:relative;z-index:2;padding-right:40px;color:#fff;text-shadow:0 1px 4px rgba(12,4,10,.92); }
.trh-tile__min { display:flex;align-items:center;gap:6px;font-size:11.5px;color:rgba(255,255,255,.85); }
.trh-tile__min svg { width:13px;height:13px;flex:none; }
.trh-tile__t { display:block;margin-top:6px;font-size:14.5px;font-weight:600;letter-spacing:-.3px;line-height:1.16; }
.trh-tile__go { position:absolute;right:11px;bottom:11px;z-index:3;width:32px;height:32px;display:grid;place-items:center;
  border-radius:50%;background:#fff;color:var(--brand-strong);box-shadow:0 4px 12px rgba(0,0,0,.22); }
.trh-tile__go svg { width:14px;height:14px; }

/* ---------- список строк (техника, поддержка) ---------- */
/* ---------- Ваш тренер: обложка + стеклянная панель ----------
   Кнопки play нет намеренно: видео тренера в данных не существует, а плей
   поверх фото обещал бы то, чего система не отдаёт. */
.trh-trainer { position:relative;margin-top:var(--s3);border-radius:var(--r-inset);overflow:hidden;aspect-ratio:16/11; }
.trh-trainer__cover { position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:58% 36%; }
.trh-trainer__glass { position:absolute;left:8px;right:8px;bottom:8px;padding:var(--s3);border-radius:var(--r-inset);
  background:linear-gradient(180deg,rgba(255,255,255,.62),rgba(255,255,255,.34));
  -webkit-backdrop-filter:blur(26px) saturate(200%);backdrop-filter:blur(26px) saturate(200%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.95),inset 0 0 0 1px rgba(255,255,255,.45),
    0 12px 30px rgba(40,20,45,.16); }
.trh-trainer__who { display:flex;align-items:center;gap:11px; }
.trh-trainer__av { width:44px;height:44px;flex:none;border-radius:50%;object-fit:cover;object-position:50% 12%;
  box-shadow:0 0 0 2px rgba(255,255,255,.9); }
.trh-trainer__av.training-care-avatar--empty { display:grid;place-items:center;background:#efe4e8;color:#7d3150;
  font-size:16px;font-weight:700; }
.trh-trainer__b { min-width:0;flex:1; }
.trh-trainer__b b { display:block;font-size:15.5px;font-weight:600;letter-spacing:-.3px;color:var(--content-strong); }
.trh-trainer__b span { display:block;margin-top:2px;font-size:12px;color:rgba(12,14,18,.55);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.trh-trainer__cta { display:flex;gap:var(--s2);margin-top:11px; }
.trh-trainer__cta .trh-btn { height:44px;min-height:44px;font-size:13.5px;flex:1; }
.trh-badge { min-width:19px;height:19px;padding:0 5px;display:grid;place-items:center;border-radius:999px;
  background:#c8397a;color:#fff;font-size:10.5px;font-weight:700;font-variant-numeric:tabular-nums; }

.trh-list { padding:var(--s1) 14px; }
.trh-row { display:flex;align-items:center;gap:var(--s3);width:100%;padding:var(--s3) 0;border-top:1px solid rgba(12,14,18,.05);min-height:56px; }
.trh-row:first-child { border-top:0; }
.trh-row__ic { width:40px;height:40px;flex:none;border-radius:12px;background:var(--tile);display:grid;place-items:center;
  color:rgba(12,14,18,.6);overflow:hidden;position:relative; }
.trh-row__ic svg { width:20px;height:20px; }
.trh-row__ic img, .trh-row__ic video { width:100%;height:100%;object-fit:cover;display:block; }
.trh-row__b { flex:1;min-width:0; }
.trh-row__b b { display:block;font-size:14.5px;font-weight:500;letter-spacing:-.1px;line-height:1.25; }
.trh-row__b span { display:block;margin-top:3px;font-size:13px;color:var(--trh-meta);line-height:1.4; }
.trh-row__b p { margin:6px 0 0;font-size:13px;line-height:1.4;color:var(--trh-meta); }
.trh-list .trh-row__b b { display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1; }
.trh-list .trh-row__b p { display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2; }
.trh-row__go { flex:none;color:rgba(12,14,18,.3);display:grid;place-items:center; }
.trh-row__go svg { width:20px;height:20px; }

/* ---------- пустые состояния и скелетоны ---------- */
.trh-empty { padding:var(--s5) var(--s4);text-align:center; }
.trh-empty__ic { width:52px;height:52px;margin:0 auto var(--s3);border-radius:var(--r-inset);display:grid;place-items:center;
  background:var(--tile);color:rgba(12,14,18,.45); }
.trh-empty__ic svg { width:24px;height:24px; }
.trh-empty b { display:block;font-size:16px;font-weight:600;letter-spacing:-.2px; }
.trh-empty p { margin:6px 0 0;font-size:13px;line-height:1.45;color:var(--trh-meta); }
.trh-empty .trh-btn { margin-top:var(--s4);flex:none;width:100%; }
.trh-feedback-loading { padding:var(--s4);display:grid;grid-template-columns:40px 1fr;gap:10px 12px;align-items:center; }
.trh-feedback-loading i { display:block;border-radius:10px;background:rgba(12,14,18,.07);animation:trhSk 1.4s ease-in-out infinite; }
.trh-feedback-loading i:nth-child(1) { width:40px;height:40px;grid-row:1/3; }
.trh-feedback-loading i:nth-child(2) { width:72%;height:13px; }
.trh-feedback-loading i:nth-child(3) { width:92%;height:11px; }
.trh-feedback-loading span { grid-column:1/-1;font-size:13px;color:rgba(12,14,18,.72); }
.trh-feedback-retry { min-height:44px;width:100%;display:grid;place-items:center;color:var(--s-danger-fg);font-size:13px;font-weight:500; }
.trh-feedback-status { min-height:32px;display:grid;place-items:center;color:rgba(12,14,18,.72);font-size:13px; }
.trh-history-refresh { width:100%;min-height:44px;border:0;border-radius:14px;padding:10px 14px;background:rgba(117,26,73,.09);color:var(--brand-strong);font-family:var(--font);font-size:13px;font-weight:700;line-height:1.3; }
@keyframes trhSk { 0%{opacity:.5} 50%{opacity:1} 100%{opacity:.5} }
.trh-sk { background:rgba(12,14,18,.06);border-radius:var(--r-card);animation:trhSk 1.4s ease-in-out infinite; }

@media (max-width: 380px) {
  .trh-wo--hero .trh-wo__title { font-size:22px; }
  .trh-cta { flex-direction:column; }
  .trh-btn { width:100%; }
  .trh-pw__ton { flex-direction:column;align-items:stretch; }
  .trh-pw__bars { width:100%;justify-content:space-between; }
}
@media (max-width: 430px) {
  .trh-cta { flex-direction:column; }
  .trh-pw__ton { gap:var(--s2); }
  .trh-pw__bars { gap:2px; }
  .trh-pw__bars button { width:44px;min-width:44px; }
  .trh-list .trh-row { display:grid;grid-template-columns:40px minmax(0,1fr) auto; }
  .trh-list .trh-row > .trh-chip { grid-column:2/4;grid-row:2;justify-self:start;height:auto;min-height:26px;
    padding-top:5px;padding-bottom:5px;white-space:normal;line-height:1.2; }
}
@media (prefers-reduced-motion: reduce) {
  .trh :where(.trh-btn,.trh-tile,.trh-row,.trh-history-refresh) { transition:none; }
  .trh :where(.trh-btn,.trh-tile,.trh-row,.trh-history-refresh):active { transform:none; }
  .trh-feedback-loading i { animation:none; }
}

/* ============================================================================
   ЭКРАНЫ ЗАБОТЫ: «О тренере», «Написать тренеру», «Как проверяется техника».
   Те же токены, что у раздела «Тренировки» (.trh). Разметка — из макета
   design-preview/training-hub-v2/screens.html.
   ============================================================================ */
.training-care-detail { background:var(--neutral-bg); }
.training-care-detail .dhead { background:rgba(255,247,253,.86); }

.trh-care-stack { display:flex;flex-direction:column;gap:var(--s3);
  animation:careIn .3s cubic-bezier(.32,.72,0,1) both; }

/* Строка, требующая действия, — единственная выделенная в секции разборов. */
.trh-row--todo { background:var(--s-danger-bg);border-radius:var(--r-inset);border-top:0;
  margin:var(--s2) -6px;padding:var(--s3) 10px; }
.trh-row--todo + .trh-row { border-top:0; }

/* ---------- Лента «Вся история» ---------- */
.trh-seg { display:flex;gap:4px;padding:4px;border-radius:var(--r-pill);background:rgba(12,14,18,.05); }
.trh-seg button { flex:1;height:44px;border-radius:var(--r-pill);display:grid;place-items:center;
  font-size:13px;font-weight:500;color:var(--content-subtle); }
.trh-seg button.on { background:#fff;color:var(--content-strong);box-shadow:0 2px 8px rgba(20,4,12,.08); }
.trh-daylbl { margin:var(--s4) var(--s1) calc(var(--s2) * -1);font-size:11.5px;font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;color:rgba(12,14,18,.26); }
.trh-counters { display:flex;gap:var(--s2);margin-top:var(--s3); }
.trh-counters > div { flex:1;background:rgba(153,160,174,.10);border-radius:14px;padding:11px 12px; }
.trh-counters b { display:block;font-size:19px;font-weight:600;letter-spacing:-.4px; }
.trh-counters span { display:block;margin-top:2px;font-size:11.5px;color:var(--content-subtle);line-height:1.25; }
.trh-more { width:100%;height:44px;border-radius:var(--r-pill);background:rgba(12,14,18,.05);
  display:grid;place-items:center;font-size:13.5px;font-weight:500;margin-top:var(--s3); }
.trh-more[disabled] { opacity:.55; }

/* ---------- Тред диалога с тренером ---------- */
.trh-thread { display:flex;flex-direction:column;gap:var(--s2); }
.trh-msg { display:flex;gap:10px;align-items:flex-end; }
.trh-msg__av { width:32px;height:32px;flex:none;border-radius:50%;object-fit:cover;object-position:50% 12%; }
.trh-msg__av.training-care-avatar--empty { display:grid;place-items:center;background:#efe4e8;color:#7d3150;
  font-size:12px;font-weight:700; }
.trh-msg__bub { max-width:266px;padding:11px 13px;border-radius:16px;font-size:14px;line-height:1.4;
  background:var(--card);box-shadow:var(--trh-sh); }
.trh-msg__t { margin-top:5px;font-size:11px;color:rgba(12,14,18,.26); }
.trh-msg--me { flex-direction:row-reverse; }
.trh-msg--me .trh-msg__bub { background:var(--brand-strong);color:#fff;box-shadow:none; }
/* Вложения внутри СВОЕГО пузыря: он залит брендовым, и без этих правил
   аудио/файл, медиа-фолбэк и подпись длительности рисуются светлой темой —
   серый текст по бордовому. Перенесено с прежнего .training-bubble.mine. */
.trh-msg--me .trh-msg__bub .training-attachment--audio,
.trh-msg--me .trh-msg__bub .training-attachment--file { background:rgba(255,255,255,.14);color:#fff; }
.trh-msg--me .trh-msg__bub .training-attachment--file > span { background:rgba(255,255,255,.2);color:#fff; }
.trh-msg--me .trh-msg__bub .training-media-fallback { background:rgba(255,255,255,.14);color:#fff;box-shadow:none; }
.trh-msg--me .trh-msg__bub .training-media-fallback b,
.trh-msg--me .trh-msg__bub .training-media-fallback p { color:#fff; }
.trh-msg--me .trh-msg__bub .training-attachment__meta { color:rgba(255,255,255,.78); }
.trh-msg--me .trh-msg__t { text-align:right; }
/* Скелетон загрузки разбора — в том же наборе, иначе на миг виден прежний экран. */
.trh-skeleton { display:flex;flex-direction:column;gap:var(--s3); }
.trh-skeleton i { display:block;border-radius:var(--r-card);background:rgba(12,14,18,.06);
  animation:trhSk 1.4s ease-in-out infinite; }
.trh-skeleton i:nth-child(1) { height:72px; }
.trh-skeleton i:nth-child(2) { height:220px; }
.trh-skeleton i:nth-child(3) { height:120px; }
@keyframes trhSk { 0%{opacity:.55}50%{opacity:1}100%{opacity:.55} }

/* ---------- Экран разбора подхода ---------- */
.trh-video { position:relative;border-radius:var(--r-inset);overflow:hidden;background:#1d020c; }
.trh-video video { width:100%;max-height:62vh;display:block;background:#1d020c; }
.trh-video--empty { padding:var(--s5) var(--s4);text-align:center;background:rgba(153,160,174,.12);color:var(--content-subtle); }
.trh-video--empty b { display:block;font-size:15px;font-weight:600;color:var(--content-strong); }
.trh-video--empty p { margin:6px 0 0;font-size:13px;line-height:1.45; }
/* Метки: таймкод-чип слева и он же кнопка перемотки. */
.trh-grp { margin:var(--s3) 0 calc(var(--s2) * -1);font-size:11.5px;font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;color:rgba(12,14,18,.26); }
.trh-mark { display:flex;gap:var(--s3);padding:var(--s3) 0;border-top:1px solid var(--trh-line); }
.trh-mark:first-of-type { border-top:0; }
.trh-mark__ts { flex:none;min-width:44px;height:44px;padding:0 9px;border-radius:10px;background:var(--brand-strong);color:#fff;
  font-family:var(--font);font-size:11.5px;font-weight:600;font-variant-numeric:tabular-nums;
  display:grid;place-items:center;cursor:pointer; }
.trh-mark__ts--flat { background:rgba(12,14,18,.08);color:var(--content-subtle);cursor:default; }
.trh-mark__b { flex:1;min-width:0; }
.trh-mark__b b { display:block;font-size:14px;font-weight:500;line-height:1.3; }
.trh-mark__b p { margin:4px 0 0;font-size:12.5px;line-height:1.4;color:var(--content-subtle); }
.trh-mark__rep em { font-style:normal; }
.trh-mark__rep { display:inline-flex;align-items:center;margin-top:6px;height:22px;padding:0 8px;
  border-radius:var(--r-pill);background:var(--s-attn-bg);color:var(--s-attn-fg);font-size:11px;font-weight:500; }

.trh-banner { padding:var(--s4);border-radius:var(--r-card); }
.trh-banner b { display:block;font-size:15px;font-weight:600;letter-spacing:-.2px; }
.trh-banner p { margin:5px 0 0;font-size:13px;line-height:1.45; }
.trh-banner--todo { background:var(--s-danger-bg);color:var(--s-danger-fg); }
.trh-banner--ok { background:var(--s-success-bg);color:var(--s-success-fg); }
.trh-banner--wait { background:rgba(153,160,174,.12);color:var(--content-subtle); }
.trh-banner--released { background:var(--s-success-bg);color:var(--s-success-fg); }
.trh-coach { display:flex;gap:var(--s3);align-items:flex-start; }
.trh-coach__av { width:40px;height:40px;flex:none;border-radius:50%;object-fit:cover;object-position:50% 12%; }
.trh-coach__av.training-care-avatar--empty { display:grid;place-items:center;background:#efe4e8;color:#7d3150;
  font-size:15px;font-weight:700; }
.trh-coach__b b { display:block;font-size:14px;font-weight:600; }
.trh-coach__b small { display:block;margin-top:1px;font-size:11.5px;color:var(--content-subtle); }
.trh-coach__msg { margin:var(--s3) 0 0;font-size:14px;line-height:1.45; }
/* Показ тренера в разборе — плиткой в ряд (один показ занимает всю ширину,
   два делят её пополам). Голосовое и файл остаются строкой: их не обрезать. */
.trh-att { display:flex;flex-wrap:wrap;gap:var(--s2);margin-top:var(--s3); }
.trh-att > .training-attachment { flex:1 1 40%;min-width:0;position:relative;border-radius:12px;background:var(--tile); }
.trh-att > .training-attachment--image,
.trh-att > .training-attachment--video { aspect-ratio:4/3; }
.trh-att .training-attachment--image img { width:100%;height:100%;max-height:none;object-fit:cover;border-radius:12px; }
.trh-att .training-attachment--video video { width:100%;height:100%;max-height:none;object-fit:contain;border-radius:12px; }
.trh-att > .training-attachment--audio,
.trh-att > .training-attachment--file { flex:1 1 100%; }
/* Плитка 4:3 нужна, когда показов несколько и они делят ряд. Единственный
   показ занимает всю ширину — резать его под чужую пропорцию незачем. */
.trh-att > .training-attachment:only-child { aspect-ratio:auto; }
.trh-att > .training-attachment--image:only-child img { height:auto;max-height:280px;object-fit:contain; }
.trh-att > .training-attachment--video:only-child video { height:auto;max-height:280px; }
.trh-att .training-attachment__meta { position:absolute;left:6px;bottom:6px;margin:0;height:22px;padding:0 8px;
  border-radius:var(--r-pill);background:rgba(9,4,7,.62);color:#fff;
  font-family:var(--font);font-size:11px;font-weight:600;line-height:22px; }
.trh-params { display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s2);margin-top:var(--s3); }
.trh-params > div { background:rgba(153,160,174,.10);border-radius:12px;padding:10px; }
.trh-params span { display:block;font-size:11px;color:var(--content-subtle); }
.trh-params b { display:block;margin-top:3px;font-size:14px;font-weight:600;letter-spacing:-.2px; }
.trh-slotrow { display:flex;justify-content:space-between;gap:var(--s3);padding:9px 0;border-top:1px solid var(--trh-line); }
.trh-slotrow:first-child { border-top:0; }
.trh-slotrow span { font-size:13px;color:var(--content-subtle); }
.trh-slotrow b { font-size:13px;font-weight:500; }
.trh-why { margin-top:var(--s3);padding:11px 12px;border-radius:12px;background:rgba(153,160,174,.10);
  font-size:12px;line-height:1.4;color:var(--content-subtle); }
.trh-step { display:flex;gap:var(--s3);padding:9px 0; }
.trh-step > i { width:8px;height:8px;flex:none;border-radius:50%;background:rgba(12,14,18,.26);margin-top:5px; }
.trh-step b { display:block;font-size:13.5px;font-weight:500; }
.trh-step small { display:block;margin-top:2px;font-size:11.5px;color:var(--content-subtle); }

/* ---------- О тренере ---------- */
.trh-chero { position:relative;overflow:hidden;border-radius:var(--r-card);padding:var(--s4);color:#fff;
  display:flex;gap:14px;align-items:center;
  background: radial-gradient(120% 90% at 88% -6%, #4a1329 0%, rgba(74,19,41,0) 60%),
    linear-gradient(152deg,#2b0815 0%,#1d020c 54%,#360f21 100%);
  box-shadow: 0 12px 26px rgba(20,4,12,.30); }
.trh-chero__av { width:76px;height:76px;flex:none;border-radius:50%;object-fit:cover;object-position:50% 12%;
  box-shadow:0 0 0 3px rgba(255,255,255,.16); }
.trh-chero__av.training-care-avatar--empty { display:grid;place-items:center;background:rgba(255,255,255,.12);
  color:#fff;font-size:28px;font-weight:600; }
.trh-chero__c { min-width:0; }
.trh-chero__c small { display:block;font-size:11.5px;color:rgba(255,255,255,.5); }
.trh-chero__c h1 { margin:5px 0 0;font-size:22px;font-weight:600;letter-spacing:-.6px;line-height:1.1; }
.trh-chero__c p { margin:5px 0 0;font-size:13px;color:rgba(255,255,255,.62);line-height:1.35; }
.trh-chero__cr { display:inline-flex;align-items:center;gap:6px;margin-top:9px;height:26px;padding:0 10px;
  border-radius:var(--r-pill);background:rgba(255,255,255,.10);
  box-shadow:inset 0 0 0 .5px rgba(255,255,255,.24);font-size:11.5px;font-weight:500; }
.trh-chero__cr i { width:14px;height:14px;border-radius:50%;background:var(--positive);color:#1d020c;
  display:grid;place-items:center;font-size:9px;font-weight:800;font-style:normal; }
.trh-facts { display:flex;gap:var(--s2);margin-top:var(--s4); }
.trh-facts > div { flex:1;min-width:0;background:rgba(153,160,174,.10);border-radius:14px;padding:11px 10px;text-align:center; }
.trh-facts b { display:block;font-size:17px;font-weight:600;letter-spacing:-.3px; }
.trh-facts span { display:block;margin-top:2px;font-size:11px;color:var(--content-subtle);line-height:1.2; }
.trh-specs { display:flex;flex-wrap:wrap;gap:6px;margin-top:var(--s3); }
.trh-specs span { height:28px;padding:0 11px;border-radius:var(--r-pill);background:rgba(12,14,18,.05);
  display:inline-flex;align-items:center;font-size:12px;font-weight:500; }
.trh-cred { display:flex;align-items:flex-start;gap:11px;padding:var(--s3) 0;border-top:1px solid var(--trh-line); }
.trh-cred:first-child { border-top:0; }
.trh-cred > i { width:22px;height:22px;flex:none;border-radius:50%;background:var(--s-success-bg);color:var(--s-success-fg);
  display:grid;place-items:center;font-size:11px;font-weight:800;font-style:normal;margin-top:1px; }
.trh-cred__b { flex:1;min-width:0; }
.trh-cred__b b { display:block;font-size:14px;font-weight:500;line-height:1.3; }
.trh-cred__b small { display:block;margin-top:3px;font-size:11.5px;color:var(--content-subtle); }
.trh-cred > em { flex:none;font-style:normal;font-size:11px;color:var(--s-success-fg);background:var(--s-success-bg);
  border-radius:var(--r-pill);padding:4px 9px;margin-top:1px; }
.trh-contract > div { display:flex;gap:var(--s3);padding:13px 0;border-top:1px solid var(--trh-line); }
.trh-contract > div:first-child { border-top:0; }
.trh-contract span.n { width:26px;height:26px;flex:none;border-radius:8px;background:var(--brand-strong);color:#fff;
  display:grid;place-items:center;font-size:11px;font-weight:600; }
.trh-contract b { display:block;font-size:14px;font-weight:500; }
.trh-contract small { display:block;margin-top:3px;font-size:12px;color:var(--content-subtle);line-height:1.35; }
.trh-window__st { display:flex;gap:11px;align-items:flex-start; }
.trh-window__st > i { width:9px;height:9px;flex:none;border-radius:50%;background:var(--positive);margin-top:5px;
  box-shadow:0 0 0 4px rgba(163,213,70,.20); }
.trh-window__st small { display:block;font-size:11.5px;color:var(--content-subtle); }
.trh-window__st b { display:block;margin-top:2px;font-size:14.5px;font-weight:600;letter-spacing:-.2px; }
.trh-window__st span { display:block;margin-top:3px;font-size:12.5px;color:var(--content-subtle);line-height:1.35; }
.trh-window__g { display:flex;gap:var(--s2);margin-top:13px; }
.trh-window__g > div { flex:1;background:rgba(153,160,174,.10);border-radius:12px;padding:9px 10px; }
.trh-window__g span { display:block;font-size:11px;color:var(--content-subtle); }
.trh-window__g b { display:block;margin-top:2px;font-size:13px;font-weight:500; }

/* ---------- Написать тренеру ---------- */
.trh-lead small { display:block;font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#9b5370; }
.trh-lead h1 { margin:7px 0 0;font-size:22px;font-weight:600;letter-spacing:-.6px;line-height:1.12; }
.trh-lead p { margin:7px 0 0;font-size:13.5px;line-height:1.45;color:var(--content-subtle); }
.trh-presence { display:flex;align-items:center;gap:var(--s3);width:100%;padding:var(--s3) 14px; }
.trh-presence__av { width:44px;height:44px;flex:none;border-radius:50%;object-fit:cover;object-position:50% 12%; }
.trh-presence__av.training-care-avatar--empty { display:grid;place-items:center;background:#efe4e8;color:#7d3150;
  font-size:16px;font-weight:700; }
.trh-presence__b { flex:1;min-width:0; }
.trh-presence__b small { display:block;font-size:11.5px;color:#9b5370;font-weight:500; }
.trh-presence__b b { display:block;margin-top:2px;font-size:14.5px;font-weight:600;letter-spacing:-.2px; }
.trh-presence__b span { display:block;margin-top:2px;font-size:12px;color:var(--content-subtle); }
.trh-ctx { display:flex;align-items:center;gap:var(--s3);padding:var(--s3) 14px; }
.trh-ctx__m { width:52px;height:52px;flex:none;border-radius:14px;overflow:hidden;background:var(--tile);
  display:grid;place-items:center;color:rgba(12,14,18,.5); }
.trh-ctx__m img, .trh-ctx__m video { width:100%;height:100%;object-fit:cover;display:block; }
.trh-ctx__m svg { width:22px;height:22px; }
.trh-ctx__b { flex:1;min-width:0; }
.trh-ctx__b small { display:block;font-size:11.5px;color:var(--content-subtle); }
.trh-ctx__b b { display:block;margin-top:2px;font-size:14px;font-weight:500;line-height:1.25; }
.trh-ctx__b span { display:block;margin-top:3px;font-size:12px;color:var(--content-subtle); }
.trh-ctx__ok { flex:none;display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 9px;
  border-radius:var(--r-pill);background:var(--s-success-bg);color:var(--s-success-fg);font-size:11px;font-weight:500; }
.trh-form label { display:block;font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;
  color:var(--content-subtle);margin-bottom:var(--s2); }
.trh-topics { display:flex;gap:6px;margin-bottom:var(--s4); }
.trh-topics button { flex:1;min-height:44px;padding:6px 8px;border-radius:var(--r-pill);background:rgba(12,14,18,.05);
  display:grid;place-items:center;font-size:12.5px;font-weight:500;text-align:center;line-height:1.18; }
.trh-topics button.on { background:var(--brand-strong);color:#fff; }
.trh-topics button.on.danger { background:var(--s-danger-dot); }
.trh-ta { width:100%;min-height:112px;border-radius:14px;background:rgba(153,160,174,.10);padding:13px 14px;
  font-family:var(--font);font-size:14.5px;line-height:1.4;color:var(--content-strong);resize:none;outline:none;
  box-shadow:inset 0 0 0 1px rgba(12,14,18,.05); }
.trh-ta::placeholder { color:rgba(12,14,18,.26); }
.trh-count { margin-top:var(--s2);text-align:right;font-size:11.5px;color:rgba(12,14,18,.26); }
.trh-safety { display:flex;gap:11px;padding:13px 15px;border-radius:14px;background:var(--s-danger-bg); }
.trh-safety > span { width:22px;height:22px;flex:none;border-radius:50%;background:var(--s-danger-dot);color:#fff;
  display:grid;place-items:center;font-size:12px;font-weight:800; }
.trh-safety b { display:block;font-size:13.5px;font-weight:600;color:#8f2721; }
.trh-safety p { margin:4px 0 0;font-size:12.5px;line-height:1.4;color:#8f2721; }
.trh-sftoggle { display:flex;align-items:center;gap:11px;width:100%;padding:var(--s3) 0;margin-bottom:14px; }
.trh-sftoggle > span { width:22px;height:22px;flex:none;border-radius:7px;box-shadow:inset 0 0 0 1.5px rgba(12,14,18,.14);
  display:grid;place-items:center;font-size:12px;font-weight:800;color:#fff; }
.trh-sftoggle.on > span { background:var(--s-danger-dot);box-shadow:none; }
.trh-sftoggle b { display:block;font-size:14px;font-weight:500; }
.trh-sftoggle small { display:block;margin-top:2px;font-size:12px;color:var(--content-subtle); }

/* ---------- Как проверяется техника ---------- */
.trh-pintro small { display:block;font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#9b5370; }
.trh-pintro h1 { margin:7px 0 0;font-size:22px;font-weight:600;letter-spacing:-.6px;line-height:1.14; }
.trh-pintro p { margin:var(--s2) 0 0;font-size:13.5px;line-height:1.45;color:var(--content-subtle); }
.trh-slots { display:flex;gap:var(--s2);margin-top:var(--s4); }
.trh-slots > div { flex:1;display:flex;align-items:center;gap:10px;background:rgba(153,160,174,.10);
  border-radius:14px;padding:11px; }
.trh-slots b { width:34px;height:34px;flex:none;border-radius:11px;background:var(--brand-strong);color:#fff;
  display:grid;place-items:center;font-size:14px;font-weight:600; }
.trh-slots strong { display:block;font-size:12.5px;font-weight:600;line-height:1.2; }
.trh-slots em { display:block;margin-top:2px;font-style:normal;font-size:11px;color:var(--content-subtle);line-height:1.2; }
.trh-replay { display:flex;align-items:center;gap:var(--s3);width:100%;padding:13px 14px; }
.trh-replay__ic { width:40px;height:40px;flex:none;border-radius:12px;background:#f6ecf2;color:#9b5370;
  display:grid;place-items:center;font-size:17px; }
.trh-replay__b { flex:1;min-width:0; }
.trh-replay__b b { display:block;font-size:14.5px;font-weight:500; }
.trh-replay__b small { display:block;margin-top:3px;font-size:12px;color:var(--content-subtle); }
.trh-rule > div { display:flex;gap:var(--s3);padding:13px 0;border-top:1px solid var(--trh-line); }
.trh-rule > div:first-child { border-top:0; }
.trh-rule span.n { width:26px;height:26px;flex:none;border-radius:8px;background:var(--brand-strong);color:#fff;
  display:grid;place-items:center;font-size:11px;font-weight:600; }
.trh-rule b { display:block;font-size:14px;font-weight:500; }
.trh-rule small { display:block;margin-top:3px;font-size:12px;color:var(--content-subtle);line-height:1.35; }
.trh-rule__note { display:block;padding:var(--s3) 0 13px;font-size:12px;color:var(--content-subtle);line-height:1.4;
  border-top:1px solid var(--trh-line); }
.trh-choice { display:flex;gap:var(--s3);padding:13px 0;border-top:1px solid var(--trh-line); }
.trh-choice:first-child { border-top:0; }
.trh-choice > span.n { width:26px;height:26px;flex:none;border-radius:50%;background:var(--brand-strong);color:#fff;
  display:grid;place-items:center;font-size:11.5px;font-weight:600; }
.trh-choice b { display:block;font-size:14px;font-weight:500; }
.trh-choice small { display:block;margin-top:3px;font-size:11.5px;color:var(--content-subtle); }
.trh-choice p { margin:6px 0 0;font-size:12px;line-height:1.35;color:rgba(12,14,18,.55);
  background:rgba(153,160,174,.10);border-radius:10px;padding:8px 10px; }
.trh-cov__t { display:flex;align-items:baseline;justify-content:space-between; }
.trh-cov__t span { font-size:13.5px;color:var(--content-subtle); }
.trh-cov__t strong { font-size:15px;font-weight:600;letter-spacing:-.2px; }
.trh-cov__bar { height:8px;margin:9px 0 10px;border-radius:var(--r-pill);background:rgba(12,14,18,.08);overflow:hidden; }
.trh-cov__bar i { display:block;height:100%;border-radius:var(--r-pill);background:var(--brand-strong); }
.trh-cov p { margin:0;font-size:12px;line-height:1.4;color:var(--content-subtle); }


/* ==========================================================================
   .asv-* — ОПРОС ПОСЛЕ ВСТРЕЧИ (закрыт от коуча).
   Значения скопированы с действующих компонентов приложения:
     • подложка/шапка/футер/кнопка — .gp-survey (опросы в плеере тренировки)
     • звёзды 1–5 — новая форма, цвет заливки взят у прогресса (#e0518f)
     • полоска прогресса — .obx .ob__prog (онбординг)
     • строки-варианты — .gp-opt (опросы в плеере)
     • круг «спасибо» — .fbk__burst (серия после первой записи)
   Крестика и «пропустить» здесь нет намеренно: окно закрывается только
   ответом (или тем, что клиент закроет само приложение — тогда оно вернётся).
   ========================================================================== */
.asv {
  position: absolute; inset: 0; z-index: 78; display: none; flex-direction: column;
  background: #fff;
  --ink: #0c0e12; --ink66: rgba(12,14,18,.62); --ink40: rgba(12,14,18,.4);
  --pinkd: #a3286a;
  font-family: var(--font); color: var(--ink);
}
.asv.on { display: flex; animation: asvup .34s cubic-bezier(.32,.72,0,1); }
@keyframes asvup { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }

.asv__head { flex: 0 0 auto; padding: calc(var(--safe-top) + 18px) 20px 0; }
.asv__bar { position: relative; display: flex; align-items: center; min-height: 38px; }
.asv__back { width: 34px; height: 34px; flex: 0 0 auto; border-radius: 50%; border: 0; cursor: pointer; background: rgba(12,14,18,.045); display: grid; place-items: center; color: var(--ink); transition: transform .12s ease; }
.asv__back:active { transform: scale(.92); }
.asv__back svg { width: 19px; height: 19px; }
.asv__back[hidden] { display: none; }
.asv__k { position: absolute; left: 50%; transform: translateX(-50%); font-size: 13px; font-weight: 500; letter-spacing: -.1px; color: rgba(12,14,18,.3); white-space: nowrap; }
.asv__prog { display: flex; gap: 5px; margin-top: 16px; }
.asv__prog i { flex: 1 1 0; height: 3px; border-radius: 9999px; background: rgba(12,14,18,.08); transition: background .35s ease; }
.asv__prog i.on { background: #e0518f; }
.asv__prog[hidden] { display: none; }

.asv__body { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 20px 22px 24px; scrollbar-width: none; display: flex; flex-direction: column; }
.asv-sp { flex: 1 1 auto; min-height: 16px; }
.asv__body::-webkit-scrollbar { display: none; }
.asv__q { font-size: 26px; font-weight: 600; letter-spacing: -.7px; line-height: 1.14; margin: 16px 0 0; }
.asv__sub { font-size: 15px; color: rgba(12,14,18,.42); line-height: 1.45; margin: 10px 0 0; }
.asv__foot { flex: 0 0 auto; padding: 10px 20px calc(16px + env(safe-area-inset-bottom, 0px)); }
.asv__go { width: 100%; height: 56px; border: 0; border-radius: 9999px; background: var(--brand-strong); color: #fff; font-family: var(--font); font-size: 16.5px; font-weight: 600; letter-spacing: -.3px; cursor: pointer; transition: opacity .18s, transform .12s; }
.asv__go:active { transform: scale(.99); }
.asv__go.off { opacity: .22; pointer-events: none; }
.asv__hint { display: flex; align-items: center; justify-content: center; gap: 5px; font-size: 12px; color: rgba(12,14,18,.38); margin-top: 12px; line-height: 1.4; }
.asv__hint svg { width: 12px; height: 12px; flex: 0 0 auto; }
.asv__skip { width: 100%; border: 0; background: transparent; cursor: pointer; font-family: var(--font); font-size: 15px; font-weight: 500; color: rgba(12,14,18,.45); padding: 13px; margin-top: 2px; transition: transform .12s ease; }
.asv__skip:active { transform: scale(.99); }

/* звёзды 1–5 — спокойные, «уберовские»: в покое тонкий контур, выбранные
   заливаются фирменным тёмным #1d020c (тем же, что выбранные варианты ответа
   и кнопки), без свечения и без пружины. Три правила, которые нельзя ломать:
     • в покое transform: none у всех — иначе выбранная съезжает с линии;
     • заливка приезжает переходом fill-opacity, а не сменой картинки;
     • блок вопроса фиксированной высоты (.asv-qhead) — ряд звёзд стоит на
       одной высоте на всех вопросах и не прыгает при переходе.
   Подпись под рядом обязательна: звёзды без слов не говорят, что такое «3». */
.asv-qhead { min-height: 86px; }
.asv-stars { display: flex; justify-content: center; gap: 8px; margin-top: 34px; }
.asv-stars button { width: 64px; height: 64px; border: 0; background: transparent; padding: 0; cursor: pointer; display: grid; place-items: center; }
.asv-stars svg {
  width: 54px; height: 54px; display: block; transform-origin: 50% 50%;
  fill: #e0518f; fill-opacity: 0; stroke: rgba(160,80,120,.30);
  stroke-width: 1.5; stroke-linejoin: round;
  transition: stroke .2s ease, fill-opacity .22s ease;
}
.asv-stars button.lit svg { fill: #e0518f; fill-opacity: 1; stroke: #e0518f; animation: asvstar .3s cubic-bezier(.2,.8,.2,1) both; }
@keyframes asvstar { from { transform: scale(.9); } to { transform: scale(1); } }
.asv-starlbl { min-height: 28px; margin-top: 22px; text-align: center; font-size: 13.5px; line-height: 1.4; color: rgba(12,14,18,.42); padding: 0 6px; }
.asv-starlbl b { font-size: 17px; font-weight: 500; letter-spacing: -.2px; color: var(--ink); animation: asvrise .26s ease both; }
@keyframes asvrise { from { opacity: 0; } to { opacity: 1; } }

/* строки-варианты — как в опросах плеера (.gp-opt) */
.asv-opts { display: flex; flex-direction: column; gap: 9px; margin-top: 20px; }
.asv-opt { display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%; text-align: left; border: 0; cursor: pointer; font-family: var(--font); background: #fbfbfc; border-radius: 16px; padding: 14px 16px; min-height: 60px; box-shadow: inset 0 0 0 1px rgba(12,14,18,.07); transition: background .15s, box-shadow .15s, transform .12s; }
.asv-opt:active { transform: scale(.99); }
.asv-opt.sel { background: #f6eef3; box-shadow: inset 0 0 0 1.5px rgba(160,80,120,.22); }
.asv-opt__b { min-width: 0; flex: 1 1 auto; }
.asv-opt__t { display: block; font-size: 15.5px; font-weight: 500; letter-spacing: -.2px; color: var(--ink); line-height: 1.2; }
.asv-opt__d { display: block; font-size: 12.5px; color: rgba(12,14,18,.5); line-height: 1.35; margin-top: 3px; }
.asv-opt__ck { width: 24px; height: 24px; flex: 0 0 auto; border-radius: 50%; box-shadow: inset 0 0 0 1.5px rgba(12,14,18,.14); display: grid; place-items: center; color: #fff; transition: background .15s, box-shadow .15s; }
.asv-opt__ck svg { width: 14px; height: 14px; opacity: 0; transition: opacity .15s; }
.asv-opt.sel .asv-opt__ck { background: #1d020c; box-shadow: none; }
.asv-opt.sel .asv-opt__ck svg { opacity: 1; }

/* текст */
.asv-ta { width: 100%; border: 0; background: #fbfbfc; border-radius: 18px; padding: 15px 16px; font-family: var(--font); font-size: 15px; color: var(--ink); outline: none; resize: none; line-height: 1.45; min-height: 138px; box-sizing: border-box; box-shadow: inset 0 0 0 1px rgba(12,14,18,.07); margin-top: 22px; }
.asv-ta::placeholder { color: rgba(12,14,18,.32); }
.asv-ta:focus { box-shadow: inset 0 0 0 1.5px rgba(160,80,120,.28); }
.asv-other { display: none; }
.asv-other.on { display: block; animation: asvfade .2s ease; }
.asv-other .asv-ta { min-height: 92px; margin-top: 10px; }
@keyframes asvfade { from { opacity: 0; } to { opacity: 1; } }

/* карточка контекста (о какой встрече речь) и плашка «коуч не увидит» */
.asv-ctx { display: flex; align-items: center; gap: 12px; background: #fff; border-radius: 18px; padding: 12px 14px; margin-top: 24px; box-shadow: 0 6px 18px rgba(20,4,12,.05), inset 0 0 0 1px rgba(12,14,18,.03); }
.asv-ctx img { width: 46px; height: 46px; border-radius: 14px; object-fit: cover; flex: 0 0 auto; }
.asv-ctx__k { font-size: 10.5px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--pinkd); }
.asv-ctx__t { font-size: 15px; font-weight: 600; letter-spacing: -.2px; margin-top: 3px; }
.asv-ctx__s { font-size: 12.5px; color: var(--ink40); margin-top: 2px; }
.asv-note { display: flex; gap: 10px; align-items: flex-start; font-size: 13px; color: var(--ink66); line-height: 1.45; margin-top: 12px; background: #fff; border-radius: 16px; padding: 13px 14px; box-shadow: inset 0 0 0 1px rgba(12,14,18,.05); }
.asv-note svg { width: 17px; height: 17px; flex: 0 0 auto; margin-top: 1px; color: #c8377f; }
.asv-note b { color: var(--ink); font-weight: 600; }

/* состояние отправки, ошибка, возврат к незаконченному опросу */
.asv-spin { width: 18px; height: 18px; border-radius: 50%; border: 2px solid rgba(255,255,255,.35); border-top-color: #fff; display: inline-block; vertical-align: -3px; margin-right: 9px; animation: asvspin .7s linear infinite; }
@keyframes asvspin { to { transform: rotate(360deg); } }
.asv-err { width: 76px; height: 76px; border-radius: 50%; background: #fdecec; display: grid; place-items: center; margin: 0 auto 20px; }
.asv-err svg { width: 34px; height: 34px; color: #d8422f; }
.asv-ta-count { text-align: right; font-size: 11.5px; color: rgba(12,14,18,.32); margin-top: 8px; font-variant-numeric: tabular-nums; }
.asv-ta-count.warn { color: #c4472c; }
/* «клавиатура открыта» — только для макета, показывает, что футер поднимается */

/* финал */
.asv-done { flex: 1 1 auto; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 0 6px; }
.asv-burst { width: 88px; height: 88px; border-radius: 50%; background: #e0518f; display: grid; place-items: center; margin: 0 auto 22px; position: relative; animation: asvpop .5s cubic-bezier(.2,.8,.2,1) both; }
.asv-burst svg { width: 42px; height: 42px; color: #fff; }
@keyframes asvpop { from { opacity: 0; transform: scale(.86); } to { opacity: 1; transform: none; } }
.asv-done .asv__q { font-size: 26px; }
.asv-done .asv__sub { max-width: 320px; }

/* Actual numeric entry in the guided player, including iOS decimal keyboard. */
.gp-rv input { width:76px;min-width:0;border:0;border-bottom:1px solid rgba(53,17,31,.18);border-radius:0;background:transparent;color:inherit;text-align:center;font:600 22px var(--font);font-variant-numeric:tabular-nums;padding:7px 0;outline-offset:3px; }
.gp-rv input[aria-invalid="true"] { border-color:#b42552; }
.gp-rv input:focus { outline:2px solid #e7b9cb;border-radius:5px; }
.gp-dots { flex-wrap:wrap; }
#gpCapFilm { background:#f0e4e9;color:var(--training-ink);box-shadow:none; }

/* Technique upload feedback stays inside the capture screen (above its overlay). */
.gp-cap-status { margin:10px 0 14px;font-size:12px;line-height:1.5;color:var(--content-subtle); }
.gp-cap-status.is-error { padding:10px 12px;border-radius:13px;background:#fff0ef;color:#9a4d48; }

/* ── Смена тренера: всплывающее окно ─────────────────────────────────────────
   Живёт внутри обычного bottom-sheet приложения (.v-modal), поэтому фон,
   скругления и кнопки берутся оттуда — здесь только начинка. Пара аватаров
   намеренно повторяет отметку передачи в переписке (.cch-handover в
   coach-chat.css): одно событие клиент встречает дважды, и выглядеть оно должно
   одинаково. Размеры тут крупнее — в окне это главный элемент, а в ленте
   разделитель. */
.ho-av { display: flex; align-items: center; justify-content: center; gap: 10px; margin: 4px 0 12px; }
.ho-av__i { border-radius: 50%; object-fit: cover; object-position: 50% 12%; display: block; flex: 0 0 auto; }
.ho-av__i--empty { display: grid; place-items: center; font-weight: 600; letter-spacing: -.3px;
  background: linear-gradient(160deg, #ffd9ea, #f7b7d3); color: #7d2b52; }
.ho-av__i--old { width: 42px; height: 42px; font-size: 15px; filter: grayscale(1); opacity: .5; }
.ho-av__i--new { width: 62px; height: 62px; font-size: 21px;
  box-shadow: 0 0 0 2px #fff, 0 4px 12px rgba(20,4,12,.16); }
/* Прежний тренер без фото не должен быть розовым пятном рядом с новым: он ушёл,
   его плашка нейтральная. */
.ho-av__i--old.ho-av__i--empty { background: #e6e2e4; color: rgba(12,14,18,.42); }
.ho-av__go { width: 17px; height: 17px; color: rgba(12,14,18,.28); flex: 0 0 auto; }

.ho-who { display: flex; gap: 12px; align-items: center; background: var(--tile);
  border-radius: 16px; padding: 12px 14px; margin: 2px 0 12px; }
.ho-who__av { width: 46px; height: 46px; font-size: 17px; box-shadow: none; }
.ho-who b { display: block; font-size: 14.5px; font-weight: 600; letter-spacing: -.2px; }
.ho-who span { display: block; margin-top: 2px; font-size: 12px; color: var(--content-subtle); line-height: 1.4; }

.ho-keeps { margin: 2px 0; padding: 0; list-style: none; }
.ho-keeps li { display: flex; gap: 10px; align-items: flex-start; padding: 9px 0;
  font-size: 13px; line-height: 1.45; border-top: .5px solid var(--border-base); }
.ho-keeps li:first-child { border-top: 0; }
.ho-keeps svg { width: 16px; height: 16px; flex: 0 0 auto; margin-top: 1px; color: #6faf2e; }
.ho-keeps b { font-weight: 600; }
.ho-keeps span { color: var(--content-subtle); }

/* Восстановление неуспешного автоплатежа. Карточка на главной ведёт в
   подробности; платёжная ссылка открывается только из экрана подписки. */
.payissue-home { width: 100%; border: 1px solid rgba(156,91,18,.16); border-radius: 20px;
  background: linear-gradient(145deg,#fffaf1 0%,#fff5e6 100%); padding: 15px 16px;
  display: flex; align-items: center; gap: 13px; color: var(--content-strong); text-align: left;
  font-family: var(--font); cursor: pointer; box-shadow: 0 10px 25px rgba(70,37,7,.06); }
.payissue-home__icon { width: 42px; height: 42px; flex: 0 0 auto; border-radius: 14px;
  display: grid; place-items: center; background: #ffe7bd; color: #8a5000; font-size: 20px; font-weight: 700; }
.payissue-home__body { min-width: 0; flex: 1 1 auto; }
/* span-ы: без display:block заголовок и текст склеивались в одну строку
   («Автоплатёж не прошёлОплатите…»), а margin-top у строчного не работает.
   В утверждённом макете payment-failure-recovery это block (25.09.2026). */
.payissue-home__title { display: block; font-size: 15px; line-height: 1.25; font-weight: 650; letter-spacing: -.2px; }
.payissue-home__text { display: block; margin-top: 3px; color: rgba(12,14,18,.66); font-size: 12.5px; line-height: 1.38; }
.payissue-home__chev { width: 18px; flex: 0 0 auto; opacity: .38; }

.payissue-card { border: 1px solid rgba(156,91,18,.16); border-radius: 22px; background: #fffaf1;
  padding: 17px 16px; box-shadow: 0 12px 28px rgba(70,37,7,.06); }
.payissue-card[data-state="processing"] { background: #f8f5f7; border-color: rgba(29,2,12,.1); }
.payissue-card[data-state="unavailable"] { background: #fff6f7; border-color: rgba(168,42,75,.16); }
.payissue-card__eyebrow { color: #84500a; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; }
.payissue-card__title { margin-top: 5px; font-size: 20px; line-height: 1.18; font-weight: 650; letter-spacing: -.4px; }
.payissue-card__text { margin-top: 7px; color: rgba(12,14,18,.66); font-size: 13px; line-height: 1.45; }
.payissue-card__facts { margin-top: 14px; padding: 11px 12px; border-radius: 14px; background: rgba(255,255,255,.72); }
.payissue-card__fact { display: flex; justify-content: space-between; gap: 12px; font-size: 12.5px; line-height: 1.4; }
.payissue-card__fact + .payissue-card__fact { margin-top: 7px; }
.payissue-card__fact span { color: rgba(12,14,18,.56); }
.payissue-card__fact b { text-align: right; font-weight: 600; }
.payissue-card__actions { display: grid; gap: 8px; margin-top: 14px; }
.payissue-card__actions button { min-height: 48px; border-radius: 15px; border: 0; padding: 0 15px;
  font-family: var(--font); font-size: 14px; font-weight: 650; cursor: pointer; }
.payissue-card__primary { color: #fff; background: var(--brand-strong); }
.payissue-card__secondary { color: var(--brand-strong); background: rgba(29,2,12,.07); }
.payissue-card__fine { margin-top: 10px; color: rgba(12,14,18,.58); font-size: 11.5px; line-height: 1.42; }
.payissue-card[aria-busy="true"] .payissue-card__primary { opacity: .55; pointer-events: none; }

/* Постоянное время держится не все недели (meetings.weekly_hold) — сводка на «Встречах»
   и в «Графике встреч», лист «Это время не получится закрепить». Макет:
   design-preview/weekly-slot-conflict/board.html (29.09.2026). */
.whold { padding: 16px; margin-top: 14px; }
.whold__k { display: flex; gap: 12px; align-items: flex-start; }
.whold__ic { width: 36px; height: 36px; flex: 0 0 36px; border-radius: 12px; background: #f2f2f4; color: var(--content-strong); display: grid; place-items: center; }
.whold__ic svg { width: 19px; height: 19px; }
.whold__k b { display: block; font-size: 16px; font-weight: 600; letter-spacing: -.3px; line-height: 1.25; color: var(--content-strong); }
.whold__k small { display: block; margin-top: 4px; font-size: 14px; line-height: 1.45; color: rgba(12, 14, 18, .6); }
.whold__bar { display: flex; gap: 3px; margin-top: 16px; }
.whold__bar i { flex: 1 1 0; height: 8px; border-radius: 3px; background: var(--brand-strong); }
.whold__bar i.m { background: repeating-linear-gradient(135deg, #e5e5ea 0 3px, #f2f2f4 3px 6px); }
.whold__cap { display: flex; justify-content: space-between; gap: 8px; margin-top: 7px; font-size: 12.5px; color: rgba(12, 14, 18, .45); font-variant-numeric: tabular-nums; }
.whold__cap b { color: var(--content-strong); font-weight: 600; }
.whold__none { margin-top: 12px; font-size: 14px; line-height: 1.45; color: rgba(12, 14, 18, .6); }
.btn-primary.whold__cta { margin-top: 14px; background: var(--brand-strong); color: #fff; box-shadow: 0 10px 22px rgba(29, 2, 12, .22); }
.whold__link { display: block; width: 100%; margin-top: 6px; height: 44px; border: 0; background: none; font-family: var(--font); font-size: 15px; font-weight: 600; color: var(--content-strong); cursor: pointer; }
.whr { padding: 2px 2px 0; }
.whr__t { font-size: 22px; font-weight: 600; letter-spacing: -.4px; line-height: 1.2; color: var(--content-strong); }
.whr__s { margin-top: 8px; font-size: 14.5px; line-height: 1.5; color: rgba(12, 14, 18, .6); }
.whr__n { margin-top: 14px; font-size: 14px; line-height: 1.45; color: rgba(12, 14, 18, .6); }
.whold-alt { margin-top: 16px; }
.whold-alt__h { font-size: 13px; font-weight: 600; color: rgba(12, 14, 18, .45); margin-bottom: 10px; }
.whold-alt .slot b { display: block; font-weight: 600; }
.whold-alt .slot small { display: block; margin-top: 2px; font-size: 12px; font-weight: 500; color: var(--content-subtle); }
