/* VVellness — правки интерфейса 06.10.2026 (пара к static/js/vv_ui_0610.js).
   Плавающая кнопка ИИ, чат листом снизу (невысокий → во весь рост), серия на «Сегодня», анкета корзины, список в туре «Ещё».
   Цвета — только токенами палитры: днём и ночью одни правила. Белый текст — только на --vv-green-fill (4,61:1). */

/* ═══ 1. Плавающая кнопка ИИ ═══
   Владелец: «на каждой странице, более прозрачная, выше, небольшая». Высоту над баром ставит скрипт
   (в корзине — над полосой «Оформить»); здесь — запасное значение. По горизонтали — внутри колонки 430 px. */
#vv-ai-fab {
  position: fixed; z-index: 60;
  right: max(14px, calc((100vw - 430px) / 2 + 14px));
  bottom: 96px;
  width: 44px; height: 44px; padding: 0; border: 0; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  color: #fff; cursor: pointer;
  background: var(--vv-ai-grad, linear-gradient(115deg, #2E9A70 0%, #4C8FEA 25%, #8A6BEA 50%, #D96FAA 75%, #2E9A70 100%));
  background-size: 200% 200%;
  opacity: .78;
  box-shadow: 0 6px 16px -5px rgba(80, 60, 200, .5), inset 0 1px 0 rgba(255, 255, 255, .25);
  -webkit-tap-highlight-color: transparent;
  transition: opacity .2s ease, transform .15s ease, bottom .2s ease;
  animation: vvAiFlow 4.5s ease-in-out infinite;
}
#vv-ai-fab svg { width: 21px; height: 21px; display: block; }
#vv-ai-fab:hover, #vv-ai-fab:focus-visible { opacity: 1; }
#vv-ai-fab:active { transform: scale(.93); }
#vv-ai-fab.is-hidden { display: none; }
#vv-ai-fab.is-thinking { opacity: 1; animation: vvAiGlowThink 1.3s ease-in-out infinite; }
@media (prefers-reduced-motion: reduce) { #vv-ai-fab, #vv-ai-fab.is-thinking { animation: none; } }

/* ═══ 2. Чат листом снизу ═══
   Лист — .vv-modal-bg (замок фона и «назад» на Android его знают), но со своей раскладкой: карточка прижата к низу.
   z-index чуть ниже прочих листов (9999): «Разговоры», карточка товара и подтверждения из чата открываются ПОВЕРХ. */
#vv-ai-sheet { display: none; }
#vv-ai-sheet.on {
  display: block; padding: 0; z-index: 9990;
  background: rgba(12, 16, 14, .26);
  transition: background .25s ease;
}
#vv-ai-sheet.on.is-full { background: rgba(12, 16, 14, .42); }
#vv-ai-sheet .vv-ai-card {
  position: absolute; left: 0; right: 0; bottom: 0; margin: 0 auto;
  width: 100%; max-width: 430px;
  height: min(54vh, 500px);   /* как у WHOOP (фото 6): невысокий лист; чуть выше 45 % — в нём сводка с мини-графиками */
  min-height: 300px;
  display: flex; flex-direction: column; overflow: hidden;
  /* --paper, а не --bg: в режиме «небо» --bg полупрозрачный, и текст листа ложился на текст страницы (снимок 06.10) */
  background: var(--paper, #FBF7EF);
  border-radius: 22px 22px 0 0;
  box-shadow: 0 -12px 32px rgba(0, 0, 0, .18);
  transition: height .28s cubic-bezier(.2, .8, .2, 1), transform .18s ease;
  animation: vvAiSheetIn .26s cubic-bezier(.2, .8, .2, 1);
}
#vv-ai-sheet.is-full .vv-ai-card {
  height: calc(100vh - 14px);
  height: calc(100dvh - max(env(safe-area-inset-top), 8px) - 6px);
  border-radius: 18px 18px 0 0;
}
@keyframes vvAiSheetIn { from { transform: translateY(35%); opacity: .5; } to { transform: none; opacity: 1; } }
@media (prefers-reduced-motion: reduce) { #vv-ai-sheet .vv-ai-card { animation: none; transition: none; } }

#vv-ai-sheet .vv-ai-grip {
  flex: none; display: flex; justify-content: center; padding: 8px 0 4px;
  touch-action: none; cursor: grab;
}
#vv-ai-sheet .vv-ai-grip i { width: 40px; height: 5px; border-radius: 3px; background: rgba(0, 0, 0, .2); }
#vv-ai-sheet .vv-ai-head {
  flex: none; display: flex; align-items: center; justify-content: space-between;
  padding: 0 12px 6px 16px; touch-action: none;
}
#vv-ai-sheet .vv-ai-badge, #vv-cart-intro .vv-ai-badge { display: inline-flex; align-items: center; gap: 7px; font-weight: 800; font-size: 15px; color: var(--ink); }
#vv-ai-sheet .vv-ai-badge svg, #vv-cart-intro .vv-ai-badge svg { width: 18px; height: 18px; color: #7B5BE0; }
#vv-ai-sheet .vv-ai-x {
  width: 36px; height: 36px; border: 0; border-radius: 50%; padding: 0; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  background: rgba(0, 0, 0, .06); color: var(--ink-2); font-size: 24px; line-height: 1;
}
#vv-ai-sheet .vv-ai-body { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }

/* Экран чата внутри листа: лента прокручивается сама, поле ввода — в потоке, а не fixed над баром. */
#vv-ai-sheet #screen-chat.vv-in-sheet {
  display: flex !important; flex-direction: column; flex: 1 1 auto;
  min-height: 0 !important; padding: 0 !important; margin: 0 !important;
  animation: none !important; background: transparent !important;
}
#vv-ai-sheet #screen-chat .vv-chat-top { flex: none; padding: 0 14px 6px; margin: 0; }
#vv-ai-sheet #screen-chat .chat-list {
  flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch;
  padding: 6px 14px 12px !important;
}
#vv-ai-sheet #screen-chat .spacer-lg { display: none !important; }
#vv-ai-sheet #screen-chat .chat-input-wrap {
  position: static !important; transform: none !important; left: auto !important; bottom: auto !important;
  width: auto !important; max-width: none !important; flex: none; z-index: auto;
  padding: 8px 14px calc(10px + env(safe-area-inset-bottom)) !important;
  background: transparent !important; border-top: 1px solid var(--line-soft, rgba(0, 0, 0, .06));
}
/* Невысокий лист: только комментарий к разделу и поле ввода. Переписка, правила и «Разговоры» — во весь рост. */
#vv-ai-sheet.is-peek #screen-chat .vv-chat-top,
#vv-ai-sheet.is-peek #screen-chat #vv-wish-rules,
#vv-ai-sheet.is-peek #screen-chat #vv-chat-context { display: none !important; }
#vv-ai-sheet.is-peek #chat-list > :not(.vv-ai-note) { display: none !important; }

/* Комментарий ИИ к разделу */
#vv-ai-sheet .vv-ai-note-t, #vv-cart-intro .vv-ai-note-t { font-size: 15px; line-height: 1.55; color: var(--ink); }
#vv-ai-sheet .vv-ai-chips, #vv-cart-intro .vv-ai-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
#vv-ai-sheet .vv-ai-chips .qr-chip, #vv-cart-intro .vv-ai-chips .qr-chip { min-height: 36px; font-size: 13px; }

.vv-theme-night #vv-ai-sheet .vv-ai-card { box-shadow: 0 -12px 32px rgba(0, 0, 0, .5); }
/* Режим «небо со стеклом»: поверхности там полупрозрачные — лист плотный, как все листы приложения (premium.css, .vv-sheet-card) */
html.vv-sky-live.vv-sky-glass #vv-ai-sheet .vv-ai-card,
html.vv-sky-live.vv-sky-glass #vv-cart-intro .vv-ci-card,
html.vv-sky-live.vv-sky-glass .wh-tour-tip {
  background: rgb(12, 18, 28) !important;   /* полностью плотный: при .96 светлый текст корзины просвечивал (снимок 06.10) */
  border: 1px solid rgba(255, 255, 255, .14);
}
html.vv-sky-live.vv-sky-glass #vv-ai-sheet.on { background: rgba(4, 8, 14, .5) !important; }
html.vv-sky-live.vv-sky-glass #vv-ai-sheet.on.is-full { background: rgba(4, 8, 14, .72) !important; }
html.vv-sky-live.vv-sky-glass #vv-cart-intro .vv-ci-chat { border-color: rgba(255, 255, 255, .14); }
html.vv-sky-live.vv-sky-glass #vv-ai-sheet .vv-ai-grip i { background: rgba(255, 255, 255, .28); }
html.vv-sky-live.vv-sky-glass #vv-ai-sheet .vv-ai-x { background: rgba(255, 255, 255, .1); }
html.vv-sky-live.vv-sky-glass #vv-ai-sheet .vv-ai-badge svg, html.vv-sky-live.vv-sky-glass #vv-cart-intro .vv-ai-badge svg { color: #B79CFF; }
.vv-theme-night #vv-ai-sheet .vv-ai-grip i { background: rgba(255, 255, 255, .24); }
.vv-theme-night #vv-ai-sheet .vv-ai-x { background: rgba(255, 255, 255, .09); }
.vv-theme-night #vv-ai-sheet .vv-ai-badge svg, .vv-theme-night #vv-cart-intro .vv-ai-badge svg { color: #B79CFF; }

/* ═══ 3. Серия на «Сегодня» — МИНИ-карточка под «Качеством питания» (владелец 06.10); тап ведёт в «Серию» ═══
   Фон — тёмный оранжевый: белый текст на нём 4,7:1 и выше (на ярком оранжевом большой карточки было ~2:1).
   Свой фон, не стекло: в любом режиме неба и темы карточка выглядит одинаково. */
#vv-today-streak { display: block; margin: 12px 0 0; cursor: pointer; -webkit-tap-highlight-color: transparent; }
#vv-today-streak .vv-sm {
  display: flex; align-items: center; gap: 12px; min-height: 64px; padding: 10px 12px 10px 14px;
  border-radius: var(--r-lg, 18px); color: #fff;
  background: linear-gradient(135deg, #BD521A 0%, #A3421A 100%);
  box-shadow: 0 10px 22px -12px rgba(189, 82, 26, .75), inset 0 1px 0 rgba(255, 255, 255, .16);
  transition: transform .15s ease;
}
#vv-today-streak:active .vv-sm { transform: scale(.985); }
#vv-today-streak .vv-sm.is-zero { background: linear-gradient(135deg, #5F6B78 0%, #4A5563 100%); box-shadow: none; }
#vv-today-streak .vv-sm-fl { flex: none; width: 30px; height: 40px; filter: drop-shadow(0 3px 6px rgba(0, 0, 0, .25)); }
#vv-today-streak .vv-sm-fl svg { display: block; width: 100%; height: 100%; }
#vv-today-streak .vv-sm-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
#vv-today-streak .vv-sm-top { font-size: 15px; font-weight: 700; line-height: 1.2; white-space: nowrap; }
#vv-today-streak .vv-sm-top b { font-size: 22px; font-weight: 800; letter-spacing: -.01em; }
#vv-today-streak .vv-sm-sub { font-size: 12.5px; font-weight: 600; line-height: 1.3; color: #fff; opacity: .95;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
#vv-today-streak .vv-sm-week { flex: none; display: flex; gap: 4px; }
#vv-today-streak .vv-sm-week i { width: 9px; height: 9px; border-radius: 50%; background: rgba(255, 255, 255, .3); }
#vv-today-streak .vv-sm-week i.on { background: #fff; }
#vv-today-streak .vv-sm-week i.sh { background: #BFD7FF; }
#vv-today-streak .vv-sm-week i.today { box-shadow: 0 0 0 2px rgba(255, 255, 255, .55); }
#vv-today-streak .vv-sm-chev { flex: none; font-size: 22px; line-height: 1; color: #fff; opacity: .85; }
@media (max-width: 350px) { #vv-today-streak .vv-sm-week { display: none; } }   /* узкий экран: неделя уходит, текст остаётся */

/* ═══ 4. Анкета корзины ═══ */
#vv-cart-intro.vv-ci-bg { align-items: flex-end; padding: 0; z-index: 9995; }
#vv-cart-intro .vv-ci-card {
  /* до кнопок «Список / Готовим» (фото 1 владельца): лист не поднимается выше сегментов под шапкой */
  width: 100%; max-width: 430px; max-height: 88vh;
  max-height: calc(100dvh - var(--vv-hdr-h, 67px) - var(--vv-seg-h, 61px) - 6px); overflow-y: auto; overscroll-behavior: contain;
  background: var(--paper, #FBF7EF); color: var(--ink);
  border-radius: 22px 22px 0 0;
  padding: 18px 16px calc(16px + env(safe-area-inset-bottom));
  box-shadow: 0 -12px 32px rgba(0, 0, 0, .18);
  animation: vvAiSheetIn .26s cubic-bezier(.2, .8, .2, 1);
}
#vv-cart-intro .vv-ci-top { display: flex; gap: 12px; align-items: flex-start; justify-content: space-between; margin-bottom: 12px; }
#vv-cart-intro .vv-ci-title { font-family: var(--dv2-font-heading, inherit); font-size: 20px; font-weight: 700; line-height: 1.25; color: var(--ink); }
#vv-cart-intro .vv-ci-sub { font-size: 13.5px; line-height: 1.45; color: var(--ink-2); margin-top: 6px; }
#vv-cart-intro .vv-ci-x { flex: none; }
/* в анкете блок настроек всегда раскрыт: строка-сводка (она же сворачивает) и подсказка «В чат» не нужны — чат ниже */
#vv-cart-intro .cfgv2-summary,
#vv-cart-intro .vv-cart-chat-hint { display: none !important; }
#vv-cart-intro .vv-ci-cfg .cfgv2 { margin: 0; }
/* Чат анкеты — ТОТ ЖЕ #screen-chat, что в листе ИИ (переезжает сюда на время анкеты), поэтому вид у сообщений, подсказок
   и поля ввода — общий; здесь только раскладка внутри анкеты (владелец: «так же красиво, как лист ИИ»). */
#vv-cart-intro .vv-ci-chat {
  margin-top: 14px; padding: 12px 12px 12px; border-radius: 18px;
  background: transparent; border: 1px solid var(--line-soft, rgba(0, 0, 0, .08));
}
#vv-cart-intro .vv-ci-head { display: flex; align-items: center; padding: 0 2px 8px; }
#vv-cart-intro #screen-chat.vv-in-intro {
  display: block !important; padding: 0 !important; margin: 0 !important; min-height: 0 !important;
  animation: none !important; background: transparent !important;
}
#vv-cart-intro #screen-chat .vv-chat-top,
#vv-cart-intro #screen-chat #vv-wish-rules,
#vv-cart-intro #screen-chat #vv-chat-context,
#vv-cart-intro #screen-chat .spacer-lg,
#vv-cart-intro #chat-list > .vv-ci-old,
#vv-cart-intro #screen-chat .vv-ai-cart,
#vv-cart-intro #screen-chat .vv-ai-pick,
#vv-cart-intro #screen-chat .vv-ai-btn { display: none !important; }
#vv-cart-intro #screen-chat .chat-list { padding: 0 !important; overflow: visible !important; min-height: 0 !important; }
#vv-cart-intro #screen-chat .chat-input-wrap {
  position: static !important; transform: none !important; left: auto !important; bottom: auto !important;
  width: auto !important; max-width: none !important; z-index: auto;
  padding: 10px 0 0 !important; background: transparent !important; border: 0 !important;
}

/* ═══ 5. Тур: что лежит в «Ещё» — списком с иконками ═══ */
.wh-tour-list { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 12px; margin-top: 8px; }
.wh-tour-li { display: inline-flex; align-items: center; gap: 7px; min-width: 0; color: var(--ink, #23302A); }
.wh-tour-li svg { width: 17px; height: 17px; flex: none; color: var(--sand-green, #177652); }
.wh-tour-li b { font-size: 13.5px; font-weight: 700; }

/* ═══ 6. Сводка по странице в листе ИИ: мини-графики (06.10.2026, владелец: «не скучно — % нутриентов мини-графиками,
   качество состава; в серии — похвалить или поддержать»). Цвет текста — токены (контраст как у чата); полоски — не текст. ═══ */
.vv-ai-note .vv-sum { margin-top: 12px; display: flex; flex-direction: column; gap: 14px; }
.vv-ai-note .vv-sum-cap { font-size: 11px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-3); margin-bottom: 7px; }
.vv-ai-note .vv-sum-sub { display: block; margin-top: 4px; font-size: 13px; font-weight: 600; color: var(--ink-3); }
.vv-ai-note .vv-sum-tip { font-size: 13.5px !important; line-height: 1.5 !important; color: var(--ink-2) !important; margin-top: 12px; }
.vv-ai-note .vv-sum-row { display: grid; grid-template-columns: 74px minmax(40px, 1fr) 116px; align-items: center; gap: 9px; min-height: 24px; }
.vv-ai-note .vv-sum-row .vv-sum-v { text-align: right; }   /* ширина числа не двигает полоски: все в одну линию */
.vv-ai-note .vv-sum-l { font-size: 13px; color: var(--ink-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vv-ai-note .vv-sum-v { font-size: 12.5px; font-weight: 700; color: var(--ink); white-space: nowrap; font-variant-numeric: tabular-nums; }
.vv-ai-note .vv-sum-bar { position: relative; display: block; height: 8px; border-radius: 99px; background: rgba(127, 127, 127, .2); overflow: visible; }
.vv-ai-note .vv-sum-bar i { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 99px; background: #3FC08B; transition: width .5s ease; }
.vv-ai-note .vv-sum-bar i.is-low  { background: #F2B544; }
.vv-ai-note .vv-sum-bar i.is-high { background: #F0844B; }
.vv-ai-note .vv-sum-bar i.is-mid  { background: #A6D86B; }
.vv-ai-note .vv-sum-bar i.is-prog { background: linear-gradient(90deg, #4C8FEA, #8A6BEA); }
.vv-ai-note .vv-sum-bar b { position: absolute; left: 66.67%; top: -3px; bottom: -3px; width: 2px; border-radius: 1px; background: rgba(0, 0, 0, .35); }   /* метка 100 % нормы */
.vv-theme-night .vv-ai-note .vv-sum-bar b, html.vv-sky-live.vv-sky-glass .vv-ai-note .vv-sum-bar b { background: rgba(255, 255, 255, .6); }
.vv-ai-note .vv-sum-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 9px 16px; }
.vv-ai-note .vv-sum-cell { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: baseline; gap: 4px 6px; }
.vv-ai-note .vv-sum-cell .vv-sum-bar { grid-column: 1 / -1; height: 6px; }
.vv-ai-note .vv-sum-stack { display: flex; gap: 2px; height: 12px; border-radius: 99px; overflow: hidden; }
.vv-ai-note .vv-sum-stack i { display: block; min-width: 8px; }
.vv-ai-note .vv-sum-legend { display: flex; flex-wrap: wrap; gap: 5px 14px; margin-top: 8px; font-size: 12.5px; color: var(--ink-2); }
.vv-ai-note .vv-sum-lg i { display: inline-block; width: 9px; height: 9px; border-radius: 50%; margin-right: 6px; }
.vv-ai-note .vv-sum-week { display: flex; justify-content: space-between; gap: 4px; }
.vv-ai-note .vv-sum-day { display: flex; flex-direction: column; align-items: center; gap: 5px; font-size: 11px; color: var(--ink-3); }
.vv-ai-note .vv-sum-day i { width: 24px; height: 24px; border-radius: 50%; background: rgba(127, 127, 127, .22); }
.vv-ai-note .vv-sum-day.is-on i { background: radial-gradient(circle at 50% 70%, #FFD166, #FF7A3D 70%); box-shadow: 0 0 10px rgba(255, 138, 61, .45); }
.vv-ai-note .vv-sum-day.is-shield i { background: radial-gradient(circle at 50% 70%, #A9C8FF, #5A7BF0 70%); box-shadow: none; }
.vv-ai-note .vv-sum-day em { font-style: normal; }
.vv-ai-note .vv-sum-stats { display: flex; flex-wrap: wrap; gap: 6px; }
.vv-ai-note .vv-sum-stats span { padding: 6px 11px; border-radius: 99px; background: rgba(127, 127, 127, .16); font-size: 12.5px; color: var(--ink-2); }
.vv-ai-note .vv-sum-stats b { color: var(--ink); font-weight: 800; }
.vv-ai-note .vv-sum-fac { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; padding: 3px 0; font-size: 13px; color: var(--ink-2); }
.vv-ai-note .vv-sum-fac b { flex: none; font-weight: 800; color: #2FB574; }
.vv-ai-note .vv-sum-fac.is-minus b { color: #E07A3F; }
.vv-theme-night .vv-ai-note .vv-sum-fac b, html.vv-sky-live.vv-sky-glass .vv-ai-note .vv-sum-fac b { color: #5FE0A6; }
.vv-theme-night .vv-ai-note .vv-sum-fac.is-minus b, html.vv-sky-live.vv-sky-glass .vv-ai-note .vv-sum-fac.is-minus b { color: #FFA36B; }
/* «Завершить» анкеты (вернул после чистки стилей старого поля 06.10): белый текст на --vv-green-fill — 4,61:1 */
#vv-cart-intro .vv-ci-done {
  display: block; width: 100%; min-height: 52px; margin-top: 16px; border: 0; border-radius: 999px; cursor: pointer;
  background: var(--vv-green-fill, #1A855C); color: #fff; font: inherit; font-size: 16px; font-weight: 800;
}

/* ═══ 7. Сводка «Сегодня» блоками (06.10, владелец: «разделять текст, жирнее на абзацах; под текстом — графики») ═══ */
.vv-ai-note .vv-sum-sec { display: flex; flex-direction: column; gap: 8px; }
.vv-ai-note .vv-sum-sec + .vv-sum-sec { padding-top: 14px; border-top: 1px solid rgba(127, 127, 127, .18); }
.vv-ai-note .vv-sum-h { font-size: 15.5px; font-weight: 800; color: var(--ink); letter-spacing: -.005em; }
.vv-ai-note .vv-sum-p { font-size: 14.5px; line-height: 1.5; font-weight: 500; color: var(--ink); }
.vv-ai-note .vv-sum-p b { font-weight: 800; }
.vv-ai-note .vv-sum-rows { display: flex; flex-direction: column; gap: 4px; margin-top: 2px; }
.vv-ai-note .vv-sum-row .vv-sum-l { white-space: nowrap; }
/* в блоках сводки строка в два этажа: подпись и число сверху, полоска во всю ширину снизу — длинные подписи
   («Восстановление») не обрезаются, и полоски одной длины */
.vv-ai-note .vv-sum-sec .vv-sum-row { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "l v" "b b"; row-gap: 6px; column-gap: 10px; min-height: 0; margin-bottom: 6px; }
.vv-ai-note .vv-sum-sec .vv-sum-row .vv-sum-l { grid-area: l; font-size: 13.5px; }
.vv-ai-note .vv-sum-sec .vv-sum-row .vv-sum-v { grid-area: v; }
.vv-ai-note .vv-sum-sec .vv-sum-row .vv-sum-bar { grid-area: b; }
.vv-ai-note .vv-sum-bar i.is-warn { background: #F2C94C; }
.vv-ai-note .vv-sum-bar i.is-bad  { background: #EB6B5B; }
.vv-ai-note .vv-sum-week-sm .vv-sum-day i { width: 20px; height: 20px; }

/* ═══ 8. Сводка «Здоровья»: все показатели возраста — вклад в годах полоской и что сделать (06.10, владелец) ═══ */
.vv-ai-note .vv-sum-fx { display: flex; flex-direction: column; gap: 5px; padding: 8px 0; }
.vv-ai-note .vv-sum-fx + .vv-sum-fx { border-top: 1px solid rgba(127, 127, 127, .14); }
.vv-ai-note .vv-sum-fx-top { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.vv-ai-note .vv-sum-fx-n { font-size: 14px; font-weight: 700; color: var(--ink); min-width: 0; }
.vv-ai-note .vv-sum-fx-top b { flex: none; font-size: 13.5px; font-weight: 800; white-space: nowrap; color: var(--ink-2); }
.vv-ai-note .vv-sum-fx.is-plus .vv-sum-fx-top b { color: #2FB574; }
.vv-ai-note .vv-sum-fx.is-minus .vv-sum-fx-top b { color: #E07A3F; }
.vv-ai-note .vv-sum-fx-bar { display: block; height: 6px; border-radius: 99px; background: rgba(127, 127, 127, .2); overflow: hidden; }
.vv-ai-note .vv-sum-fx-bar i { display: block; height: 100%; border-radius: 99px; background: rgba(127, 127, 127, .55); }
.vv-ai-note .vv-sum-fx.is-plus .vv-sum-fx-bar i { background: #3FC08B; }
.vv-ai-note .vv-sum-fx.is-minus .vv-sum-fx-bar i { background: #F0844B; }
.vv-ai-note .vv-sum-fx-tip { font-size: 13px; line-height: 1.45; color: var(--ink-2); }
.vv-theme-night .vv-ai-note .vv-sum-fx.is-plus .vv-sum-fx-top b, html.vv-sky-live.vv-sky-glass .vv-ai-note .vv-sum-fx.is-plus .vv-sum-fx-top b { color: #5FE0A6; }
.vv-theme-night .vv-ai-note .vv-sum-fx.is-minus .vv-sum-fx-top b, html.vv-sky-live.vv-sky-glass .vv-ai-note .vv-sum-fx.is-minus .vv-sum-fx-top b { color: #FFA36B; }

/* ═══ 9. Сводка «Знаний»: советы под цели карточками и темы мини-графиком (06.10, владелец: «тускло, раскрыть тематику») ═══ */
.vv-ai-note .vv-lh-card { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; width: 100%; text-align: left;
  padding: 10px 12px; margin: 0 0 6px; border-radius: 14px; cursor: pointer; font: inherit;
  background: rgba(127, 127, 127, .1); border: 1px solid rgba(127, 127, 127, .18); color: var(--ink); }
.vv-ai-note .vv-lh-t { font-size: 14px; font-weight: 700; line-height: 1.35; color: var(--ink); }
.vv-ai-note .vv-lh-e { font-size: 13px; line-height: 1.45; color: var(--ink-2); }
.vv-ai-note .vv-lh-ev { margin-top: 2px; padding: 2px 8px; border-radius: 99px; font-size: 11.5px; font-weight: 700; }
.vv-ai-note .vv-lh-ev.is-strong { background: rgba(47, 181, 116, .16); color: #1E7A4E; }
.vv-ai-note .vv-lh-ev.is-some { background: rgba(76, 143, 234, .16); color: #2A5FAE; }
.vv-ai-note .vv-lh-ev.is-weak { background: rgba(127, 127, 127, .16); color: var(--ink-2); }
.vv-theme-night .vv-ai-note .vv-lh-ev.is-strong, html.vv-sky-live.vv-sky-glass .vv-ai-note .vv-lh-ev.is-strong { color: #7FE8B6; }
.vv-theme-night .vv-ai-note .vv-lh-ev.is-some, html.vv-sky-live.vv-sky-glass .vv-ai-note .vv-lh-ev.is-some { color: #A9C8FF; }
.vv-ai-note .vv-lh-more { align-self: flex-start; padding: 2px 0 4px; border: 0; background: none; cursor: pointer; font: inherit;
  font-size: 13px; font-weight: 700; color: var(--vv-green-dark, #177652); }
.vv-theme-night .vv-ai-note .vv-lh-more, html.vv-sky-live.vv-sky-glass .vv-ai-note .vv-lh-more { color: #5FE0A6; }
.vv-ai-note .vv-lh-area { display: grid; grid-template-columns: minmax(0, 150px) minmax(40px, 1fr) 28px; align-items: center; gap: 10px;
  width: 100%; padding: 4px 0; border: 0; background: none; cursor: pointer; font: inherit; text-align: left; color: var(--ink); }
.vv-ai-note .vv-lh-an { font-size: 13px; color: var(--ink-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vv-ai-note .vv-lh-ab { display: block; height: 8px; border-radius: 99px; background: rgba(127, 127, 127, .2); overflow: hidden; }
.vv-ai-note .vv-lh-ab i { display: block; height: 100%; border-radius: 99px; background: linear-gradient(90deg, #4C8FEA, #8A6BEA); }
.vv-ai-note .vv-lh-area b { font-size: 12.5px; font-weight: 800; text-align: right; color: var(--ink); }

/* ═══ 10. Сводка «Дневник → Образ жизни»: мини-график сил за день и пояснения (06.10) ═══ */
.vv-ai-note .vv-sum-spark { display: block; width: 100%; height: 64px; margin-top: 4px; overflow: visible; }
.vv-ai-note .vv-sum-spark .vv-sp-dip { fill: rgba(200, 160, 90, .22); }
.vv-ai-note .vv-sum-spark .vv-sp-usual { fill: none; stroke: rgba(127, 127, 127, .7); stroke-width: 1.6; stroke-dasharray: 4 4; vector-effect: non-scaling-stroke; }
.vv-ai-note .vv-sum-spark .vv-sp-today { fill: none; stroke: #3FC08B; stroke-width: 2.6; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.vv-ai-note .vv-sum-spark .vv-sp-now { fill: #3FC08B; stroke: #fff; stroke-width: 2; vector-effect: non-scaling-stroke; }
.vv-ai-note .vv-sum-spark-x { display: flex; justify-content: space-between; font-size: 11px; color: var(--ink-3); margin-top: 2px; }
.vv-ai-note .vv-sum-ul { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 5px; }
.vv-ai-note .vv-sum-ul li { font-size: 13.5px; line-height: 1.45; color: var(--ink-2); }

/* ═══ 7. Корзина: сначала разговор, анализ — кнопкой (06.10.2026, владелец: «изначально подсказать, что чат умеет, а не бить
   в лоб аналитикой; анализ — кнопкой снизу»). Цвета — токены темы: тот же вид днём и ночью. ═══ */
#vv-ai-sheet .vv-cc-rows { display: flex; flex-direction: column; gap: 10px; margin-top: 12px; }
#vv-ai-sheet .vv-cc-cap { font-size: 12px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; color: var(--ink-3); }
#vv-ai-sheet .vv-cc-row .vv-ai-chips { margin-top: 6px; }
#vv-ai-sheet .vv-cc-an {
  display: flex; align-items: center; gap: 12px; width: 100%; margin-top: 16px; padding: 12px 14px;
  border-radius: 16px; border: 1px solid var(--line, rgba(127, 127, 127, .3)); background: transparent;
  color: var(--ink); font: inherit; text-align: left; cursor: pointer;
}
#vv-ai-sheet .vv-cc-an > svg { width: 22px; height: 22px; flex: none; color: var(--sand-green, #2FB574); }
#vv-ai-sheet .vv-cc-an-t { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
#vv-ai-sheet .vv-cc-an-t b { font-size: 15px; font-weight: 800; color: var(--ink); }
#vv-ai-sheet .vv-cc-an-t span { font-size: 12.5px; color: var(--ink-3); }
#vv-ai-sheet .vv-cc-an > i { font-style: normal; font-size: 22px; line-height: 1; color: var(--ink-3); }
/* строка «Анализ корзины» / «Что умеет чат» — внизу листа, над полем ввода; во весь рост (идёт разговор) не нужна */
#vv-ai-sheet #vv-cc-bar { padding: 0 0 8px; }
#vv-ai-sheet #vv-cc-bar .vv-cc-an { margin-top: 0; padding: 10px 14px; }
#vv-ai-sheet.is-full #vv-cc-bar, #vv-cart-intro #vv-cc-bar { display: none !important; }
/* на корзине невысокий лист выше: видны примеры просьб, а не одна строка */
#vv-ai-sheet.is-peek.vv-on-cart .vv-ai-card { height: min(74vh, 640px); }
/* ═══ 11. Дневник 07.10.2026: приём и время в листе «Добавить в дневник», несколько позиций из «Покупок» разом ═══
   Игорь: «не очень понимаю, зачем мне точно указывать время приёма», «из покупок выбирать сразу несколько»; Никита: то же.
   Пара к блокам «ПРИЁМ И ВРЕМЯ В ФОРМАХ ЗАПИСИ» и «НЕСКОЛЬКО ПОЗИЦИЙ ИЗ «ПОКУПОК» РАЗОМ» в bindings.js.
   Цвета — токены темы (день, ночь и «небо» берут свои значения сами). Исключение — полоса внизу листа: ей нужна ГЛУХАЯ
   подложка, а под тёмным стеклом токен --paper полупрозрачный, поэтому там цвет карточки листа (#17324A) задан прямо. */

/* Приём чипами: пять в ряд, на узком экране 3 + 2. Значение лежит в скрытом <select> (его читают обработчики записи). */
.vv-mw { margin: 2px 0 14px; }
.vv-mw > .vv-scan-lbl { margin-bottom: 6px; }
.vv-mchips { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; }
.vv-mchip {
  min-width: 0; min-height: 42px; padding: 0 2px; box-sizing: border-box;
  border: 1px solid var(--line, rgba(35, 48, 42, .14)); border-radius: var(--r-xs, 8px);
  background: transparent; color: var(--ink-2, #3F4B44);
  font: inherit; font-size: 12.5px; font-weight: 600; line-height: 1.1; white-space: nowrap;
  cursor: pointer; -webkit-tap-highlight-color: transparent;
}
.vv-mchip.is-on { border-color: var(--vv-green, #177652); background: var(--vv-green-tint, #E4EFE5); color: var(--vv-green-dark, #12694A); font-weight: 700; }
/* Замер по ширинам: «Завтрак» не помещается при пяти колонках на 360–375 px — там тоньше шрифт и зазор; до 359 px — три колонки.
   ⚠ Эти правила стоят ПОСЛЕ базового .vv-mchip: при равной специфичности решает порядок. */
@media (max-width: 389px) { .vv-mchips { gap: 4px; } .vv-mchip { padding: 0; font-size: 11.5px; letter-spacing: -.1px; } }
@media (max-width: 359px) { .vv-mchips { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; } .vv-mchip { font-size: 12.5px; letter-spacing: 0; } }
.vv-mchip:focus-visible, .vv-mw-more:focus-visible, .vv-buys-check:focus-visible { outline: 2px solid var(--vv-green, #177652); outline-offset: 2px; }
/* Прошлый день, а приём не выбран — рамка вокруг чипов и подсказка. */
.vv-mw-need { display: none; margin-top: 8px; font-size: 12.5px; font-weight: 600; line-height: 1.35; color: #B0301F; }
.vv-mw.is-need .vv-mw-need { display: block; }
.vv-mw.is-need .vv-mw-when { display: none; }
.vv-mw.is-need .vv-mchips { outline: 2px solid #D9534A; outline-offset: 3px; border-radius: 10px; }
/* Время: одна мелкая строка («Время поставим сами — около 13:30 · указать точнее»); поле открывается по ссылке.
   У ужина и вечернего перекуса подпись другая («Время ужина — по желанию…»): типичное время там не ставится. */
.vv-mw-when { margin-top: 8px; }
.vv-mw-line { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 10px; font-size: 12.5px; line-height: 1.4; color: var(--ink-3, #4F5B54); }
.vv-mw-more { padding: 0; min-height: 24px; border: 0; background: none; font: inherit; font-size: 12.5px; font-weight: 700;
  color: var(--vv-green-dark, #12694A); text-decoration: underline; cursor: pointer; }
.vv-mw .vv-when { margin: 8px 0 0; }
.vv-mw [hidden], .vv-bm-bar [hidden], .vv-bm-bar[hidden] { display: none !important; }   /* время-поле в листе имеет display: block (premium.css), атрибут hidden его не гасил бы */
.vv-ph-mw { margin-top: 12px; }

/* «Покупки»: кружок справа от строки. Тап по строке — один товар; по кружку — отметить несколько. */
.vv-buys-item { position: relative; margin-bottom: 6px; }
.vv-buys-item > .vv-find-row { margin-bottom: 0; padding-right: 58px; }
.vv-buys-check {
  position: absolute; top: 0; right: 0; bottom: 0; width: 54px; padding: 0; border: 0; background: transparent;
  display: flex; align-items: center; justify-content: center; cursor: pointer;
  border-radius: 0 var(--r-sm, 12px) var(--r-sm, 12px) 0; -webkit-tap-highlight-color: transparent;
}
.vv-buys-check::before {
  content: ''; box-sizing: border-box; width: 26px; height: 26px; border-radius: 50%;
  border: 2px solid var(--ink-3, #4F5B54); background: transparent; transition: background-color .12s, border-color .12s;
}
.vv-buys-item.is-sel .vv-buys-check::before {
  border-color: var(--vv-green-fill, #1A855C); background-color: var(--vv-green-fill, #1A855C);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.6 4.6L19 7.5'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: center; background-size: 15px 15px;
}
.vv-buys-item.is-sel > .vv-find-row { border-color: var(--vv-green, #177652); background: var(--vv-green-tint, #E4EFE5); box-shadow: inset 0 0 0 1px var(--vv-green, #177652); }
html.vv-sky-live.vv-sky-glass .vv-buys-item.is-sel > .vv-find-row { background: rgba(95, 224, 166, .16) !important; border-color: rgba(95, 224, 166, .65) !important; box-shadow: none !important; }
html.vv-sky-live.vv-sky-glass.vv-sky-light .vv-buys-item.is-sel > .vv-find-row { background: #E4EFE5 !important; border-color: #177652 !important; box-shadow: inset 0 0 0 1px #177652 !important; }

/* Панель «приём · Снять · Записать в дневник · N» липнет к низу листа, пока отмечена хоть одна позиция. */
.vv-bm-bar {
  /* bottom: -18px — карточка листа имеет нижнее поле 18 px (app.css), и при 0 полоса прилипала на 18 px выше края, а в щель
     под ней просвечивал прокручиваемый список (снимок 07.10) */
  position: sticky; bottom: -18px; z-index: 3; margin: 12px -18px 0; padding: 12px 18px 10px;
  background: var(--paper, #FFFFFF); border-top: 1px solid var(--line, rgba(35, 48, 42, .14));
  box-shadow: 0 -12px 16px -14px rgba(0, 0, 0, .28);
}
html.vv-sky-live.vv-sky-glass:not(.vv-sky-light) .vv-bm-bar { background: #17324A; }
.vv-bm-bar .vv-mw { margin: 0; }
.vv-bm-err { margin-top: 8px; font-size: 12.5px; font-weight: 600; line-height: 1.35; color: #B0301F; }
.vv-bm-act { display: flex; gap: 10px; margin-top: 10px; }
.vv-bm-act .vv-bm-clear { flex: 0 0 auto; min-width: 84px; padding-left: 14px; padding-right: 14px; }
.vv-bm-act .vv-bm-go { flex: 1 1 auto; min-width: 0; width: auto; }
html.vv-sky-live.vv-sky-glass:not(.vv-sky-light) .vv-mw-need,
html.vv-sky-live.vv-sky-glass:not(.vv-sky-light) .vv-bm-err,
html.vv-theme-night:not(.vv-sky-light) .vv-mw-need,
html.vv-theme-night:not(.vv-sky-light) .vv-bm-err { color: #FFB3A6; }
html.vv-sky-live.vv-sky-glass .vv-mw-more { color: #8DF3C4; }
html.vv-sky-live.vv-sky-glass.vv-sky-light .vv-mw-more { color: #0A6139; }
/* ═══ конец блока 11 ═══ */
