/* Прочие разделы кабинета и публичные «Документы» (новая витрина, часть 3, задача 7; постановка
   docs/superpowers/specs/2026-10-03-storefront-part3-account-and-login.md, раздел 5): история операций, уведомления,
   согласия, купоны, опросы, мои документы — в кадре кабинета (account.css); публичные «Документы» — колонкой для
   чтения. Детали — `.ops`, `.inbox`, `.switch`, `.empty` (components.css, памятка — наверху account.css). Размеры —
   только токены, цвета — только роли темы (сторожа те же). */

/* ── История операций: карточка заказа (`.ops__item` эталона) — что и сумма первой строкой, ниже место,
   скидка, слова сотрудника, время и движения по кошелькам; пустое и незнание — `.empty` ───────────────── */
.history-item { grid-template-columns: minmax(0, 1fr); }
.history-head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-3); min-width: 0; }
.history-title { font-weight: var(--weight-semibold); overflow-wrap: anywhere; }
/* Цвет — у одиночной операции по знаку; у покупки суммы цвета нет: цена заказа — не движение денег Гостя. */
.history-amount { flex: none; color: var(--ink); font-weight: var(--weight-bold); white-space: nowrap; }
.history-amount.plus { color: var(--ok); }
.history-amount.minus { color: var(--err); }
.history-venue, .history-when { color: var(--muted); font-size: var(--text-sm); }
/* Слова сотрудника — чужая речь внутри нашей строки: отбивкой, как цитата. */
.history-note { padding-left: var(--space-3); border-left: 2px solid var(--border); font-size: var(--text-sm); font-style: italic; }
/* Движения: кошелёк — одна цифра (владелец 16.08.2026), направление — цветом И стрелкой (и словом для читалки). */
.history-table {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-1) var(--space-4);
  margin-top: var(--space-2); padding-top: var(--space-2); border-top: 1px dashed var(--border2); font-size: var(--text-sm);
}
.history-moves { display: flex; justify-content: flex-end; gap: var(--space-3); }
.history-num { white-space: nowrap; text-align: right; }
.history-arrow { margin-right: var(--space-1); font-size: var(--text-xs); }
.history-spent { color: var(--err); font-weight: var(--weight-bold); }
.history-earned { color: var(--ok); font-weight: var(--weight-bold); }
.history-waiting { color: var(--muted); }

/* ── Уведомления: карточка `.inbox__item` эталона, внутри — блоки рассылки целиком ───────────────────── */
.inbox__item { gap: var(--space-2); }
.inbox__head { display: grid; gap: var(--space-1); }
.inbox__head h2 { margin: 0; font-family: var(--font-title); font-size: var(--title-sm); font-weight: var(--weight-medium); line-height: var(--leading-title); }
.inbox__head .muted { font-size: var(--text-sm); }
.inbox__item .pub-body > :first-child { margin-top: 0; }
.inbox__item .pub-body > :last-child { margin-bottom: 0; }
/* Пробная отправка из панели (этап 28): пунктиром и пометкой — получатель не примет пробу за настоящее. */
.inbox__item.inbox-trial { border-style: dashed; border-color: var(--gold); }

/* ── Купоны (этап 27): карточка — заголовок, текст, срок; страница — QR и номер крупно, чтобы показать или
   назвать на кассе. Купон — подарок: фисташковая кромка (брендбук, стр. 11); прошлые — пунктиром и своим
   видом (владелец 12.09.2026): использованный — с зелёной пометкой, просроченный и отменённый — серые ─────── */
.coupons-list { display: grid; gap: var(--space-3); }
.coupon-card {
  display: grid; gap: var(--space-1); padding: var(--space-4); border: 1px solid var(--border2);
  border-left: 3px solid var(--pistachio); border-radius: var(--radius-lg); background: var(--panel); cursor: pointer;
}
.coupon-card:hover { border-color: var(--gold2); border-left-color: var(--pistachio); }
.coupon-card:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.coupon-card h3 { margin: 0; font-family: var(--font-title); font-size: var(--title-sm); font-weight: var(--weight-medium); }
.coupon-text { margin: 0; font-size: var(--text-sm); }
.coupon-meta { margin: 0; color: var(--muted); font-size: var(--text-sm); }
.coupon-badge {
  display: inline-block; padding: 0 var(--space-2); border-radius: var(--radius-pill);
  background: color-mix(in srgb, var(--pistachio) 45%, var(--panel)); color: var(--ink); font-size: var(--text-xs);
}
.coupon-old { border-style: dashed; }
.coupon-used .coupon-badge { background: color-mix(in srgb, var(--ok) 18%, transparent); color: var(--ok); font-weight: var(--weight-semibold); }
.coupon-expired, .coupon-deleted { opacity: 0.55; filter: grayscale(1); }
.coupon-old-head { margin: var(--space-3) 0 0; color: var(--muted); font-size: var(--text-sm); font-weight: var(--weight-semibold); }
.coupon-page {
  display: grid; justify-items: center; gap: var(--space-3); padding: var(--space-5); text-align: center;
  border: 1px solid var(--border2); border-radius: var(--radius-lg); background: var(--panel);
}
.coupon-page h2 { margin: 0; font-family: var(--font-title); font-size: var(--title-md); font-weight: var(--weight-medium); }
.coupon-page p { margin: 0; }
.coupon-number { color: var(--ink); font-family: var(--font-title); font-size: var(--title-lg); letter-spacing: 0.08em; font-weight: var(--weight-semibold); }
.coupon-back { justify-self: start; }

/* ── Опросы (этап 24): карточки списка и страница опроса. Лиловый (брендбук, стр. 11) — опросам (владелец
   21.09.2026): опросы и купоны лежат рядом и одинаково светились золотом, Гость их путал. Кнопки вариантов и
   полосы итогов — те же, что у опроса в новости (`.pub-body`) ─────────────────────────────────────────── */
.poll-page { display: grid; gap: var(--space-3); }
.poll-card {
  display: grid; gap: var(--space-1); padding: var(--space-4); border: 1px solid var(--border2);
  border-left: 3px solid var(--lilac); border-radius: var(--radius-lg); background: var(--panel); cursor: pointer;
}
.poll-card:hover { border-color: var(--lilac); }
.poll-card:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.poll-card h2 { margin: 0; font-family: var(--font-title); font-size: var(--title-sm); font-weight: var(--weight-medium); }
.poll-card.done h2::after { content: ' ✓'; color: var(--lilac); }
.poll-intro, .poll-meta { margin: 0; }
.poll-meta { color: var(--muted); font-size: var(--text-sm); }
.poll-page h2 { margin: 0; }
.poll-text {
  display: block; width: 100%; min-height: calc(var(--space-8) + var(--space-4)); margin: var(--space-1) 0;
  padding: var(--space-2) var(--space-3); border: 1px solid var(--border); border-radius: var(--radius-md); font: inherit;
}
.poll-send { justify-self: start; }
.poll-mine { margin: var(--space-1) 0 0; font-size: var(--text-sm); }
.poll-thanks { margin: 0; color: var(--ink); font-weight: var(--weight-semibold); }
/* Баллы за прохождение — строкой под «спасибо»: начисляем → начислено с балансом, либо «начислим позже» с
   извинением (доработка 11.09.2026). */
.poll-points { margin: 0; padding: var(--space-3); border: 1px solid var(--border2); border-radius: var(--radius-md); background: var(--panel); }
.poll-points[data-state='granted'] { border-color: var(--gold2); }
.poll-points[data-state='delayed'], .poll-points[data-state='skipped'] { border-style: dashed; }
.poll-earn { margin: 0; font-weight: var(--weight-semibold); }
.poll-rest-head { margin: var(--space-3) 0 0; color: var(--muted); font-size: var(--text-sm); }
.poll-error { margin: 0; color: var(--err); font-size: var(--text-sm); }
.poll-error:empty { display: none; }

/* ── Согласия: блоки эталона, строка — переключатель, пояснение и «сохраняем / сохранено» ─────────────── */
.consents-block .switch-row { display: grid; gap: var(--space-1); justify-items: start; width: 100%; padding: var(--space-3) 0; border-top: 1px solid var(--border2); }
.consents-block .switch-row:first-of-type { border-top: 0; }
.consents-block .switch-row[hidden] { display: none; }
/* Блок без единой видимой строки (браузер не умеет уведомлений) — спрятан: вид блока перебил бы `[hidden]`. */
.consents-block[hidden] { display: none; }
.consents-block p { margin: 0; }
.consents-block .muted { font-size: var(--text-sm); }
.rowstatus:empty { display: none; }
.promo-needs-both[hidden] { display: none; }
/* «Вы согласились»: строка на согласие — имя, дата с редакцией, действия. */
.agreed { display: grid; gap: var(--space-1); width: 100%; padding: var(--space-3) 0; border-top: 1px solid var(--border2); }
.agreed:first-of-type { border-top: 0; }
.agreedactions { display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-4); }
.agreedactions .danger { color: var(--err); }
.consents-docs { margin-top: var(--space-2); }

/* ── Строка документа (общие «Документы» и «Мои документы»): имя жирным, редакция или пояснение мельче,
   стрелка — открыть ────────────────────────────────────────────────────────────────────────────────── */
.doc-rows { display: grid; gap: var(--space-2); }
.opt {
  display: flex; align-items: center; gap: var(--space-3); width: 100%; margin: 0; padding: var(--space-3) var(--space-4);
  border: 1px solid var(--border2); border-radius: var(--radius-lg); background: var(--panel); color: var(--ink);
  font: inherit; text-align: left; cursor: pointer;
}
.opt:hover { border-color: var(--gold2); }
.opt:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.opt .oi { display: grid; flex: 1; gap: var(--space-1); min-width: 0; }
.opt .oi b { font-weight: var(--weight-semibold); }
.opt .oi span { color: var(--muted); font-size: var(--text-sm); }
.opt .oarr { flex: none; color: var(--accent); }

/* ── Общие «Документы» — колонка для чтения по центру (И13): заголовок с края колонки, как у ленты и корзины ── */
.screen[data-screen='legal']:not([data-zone]) {
  width: 100%; max-width: calc(var(--column-max) + var(--gutter) * 2); margin: 0 auto;
  padding: var(--space-5) var(--gutter) var(--space-7);
  font-family: var(--font-text); font-size: var(--text-md); line-height: var(--leading-text); color: var(--ink);
}
.screen[data-screen='legal'] > div { display: grid; gap: var(--space-2); }
.screen[data-screen='legal'] h1 {
  margin: 0 0 var(--space-4); text-align: left; font-family: var(--font-title); font-size: var(--title-xl);
  font-weight: var(--weight-medium); line-height: var(--leading-title);
}
.legal-out { justify-self: start; margin-top: var(--space-3); }

/* Новости — колонка для чтения по центру (Р39, часть 5а): записи одна под другой во всю колонку; прежнее «во всё
   окно» (10.09.2026) Р39 заменило. */
.screen[data-screen='news'] {
  max-width: calc(var(--column-max) + var(--gutter) * 2); margin: 0 auto;
  padding-left: var(--gutter); padding-right: var(--gutter);
}
.screen[data-screen='news'] .pub-feed { max-width: none; }
