/* EGC - Mini App креатора. Оформление человек выбирает сам, двумя независимыми
   ручками: тема (светлая или тёмная) и цветовая схема акцента. Оба выбора живут
   в localStorage и приезжают на корень документа атрибутами data-theme и
   data-scheme - дальше всё делает каскад.

   🔴 Цвета Telegram (--tg-theme-*) сознательно НЕ используются. Пока выбора не было,
   поверхности брались у клиента. Теперь выбор есть, и он обязан что-то значить:
   светлая тема в тёмном Telegram должна быть светлой, синяя схема - синей.
   На Telegram смотрим ровно один раз, при первом запуске: applyTheme в app.js берёт
   у него светлую или тёмную и фиксирует. Дальше держится только выбор человека.

   Схема по умолчанию - «Графит», и она лежит прямо в :root, без атрибута: строгая
   нейтральная подача, в которой продукт показывают клиенту, работает даже до того,
   как отработал скрипт. Остальные семь - блоки [data-scheme] ниже.

   Мобильный контракт вёрстки (проверяется на каждом релизе):
   375x667 iPhone SE · 390x844 iPhone 14 · 430x932 iPhone 15 Pro Max
   360x800 Android средний · 412x915 Android крупный, плюс landscape.
   Правила: горизонтального скролла у страницы нет, тап-цель от 44 точек,
   поля ввода от 16px, safe-area со всех четырёх сторон. */
:root{
  /* «Графит» в тёмной теме светлый: #404040 с сайта клиента на почти чёрном фоне
     не виден ни текстом вкладки, ни обводкой карточки. Точный хекс живёт в светлой */
  --accent:#C6CAD1; --accent-d:#9AA0A8; --accent-l:rgba(198,202,209,.16);
  --on-accent:#14161A;          /* текст и иконки на плашке, залитой акцентом */
  --link:var(--accent);         /* схему меняем в одном месте - ссылки едут следом */
  --radius:14px; --radius-card:20px;

  /* безопасные зоны: чёлка, домашняя полоса, а в landscape ещё и бока */
  --safe-top:env(safe-area-inset-top,0px);
  --safe-bot:env(safe-area-inset-bottom,0px);
  --safe-l:env(safe-area-inset-left,0px);
  --safe-r:env(safe-area-inset-right,0px);

  /* нижняя панель считается один раз, дальше все отступы пляшут от неё.
     max() нужен Android: env() там часто 0, а системная полоса всё равно есть */
  --nav-h:60px;                                 /* 6 сверху + 54 кнопка */
  --nav-pad-b:max(var(--safe-bot),10px);
  --nav-off:calc(var(--nav-h) + var(--nav-pad-b));

  --pad-x:14px;      /* боковые поля страницы */
  --tap:44px;        /* минимальная тап-цель */

  /* поверхности. Нейтральные: подтон под схему даёт --page в её блоке */
  --page:#0F1012;
  --card:rgba(255,255,255,.06);
  --ink:#FFFFFF;
  --muted:#A7ADB6;
  --faint:rgba(233,237,243,.52);
  --line:rgba(255,255,255,.13);
  --fillq:rgba(255,255,255,.08);
  --fillq2:rgba(255,255,255,.15);
  --pill:rgba(255,255,255,.09);
  --pill-br:rgba(255,255,255,.18);
  --shadow:0 1px 1px rgba(0,0,0,.28), 0 10px 26px rgba(0,0,0,.42);
  --glow-1:rgba(198,202,209,.07); --glow-2:rgba(154,160,168,.05);

  --pos:#4FD08A; --neg:#FF7A63; --warn:#FFC24B; --info:#7FC8FF;
  --gold:#FFC65C; --silver:#CFD3DA; --bronze:#D89A6A;

  /* площадки: приглушённые фирменные тона, чтобы плитки читались, а не кричали */
  --c-ig:#F2569B; --c-tt:#3FE0D5; --c-yt:#FF6355; --c-tg:#5EC0F5;
}
:root[data-theme="light"]{
  --accent:#404040; --accent-d:#262626; --accent-l:rgba(64,64,64,.12);
  --on-accent:#FFFFFF;
  --page:#F2F2F4;
  --card:#FFFFFF;
  --ink:#16181C;
  --muted:#5F656E;
  --faint:rgba(22,24,28,.52);
  --line:rgba(16,18,22,.11);
  --fillq:rgba(16,18,22,.06);
  --fillq2:rgba(16,18,22,.12);
  --pill:rgba(16,18,22,.05);
  --pill-br:rgba(16,18,22,.10);
  --shadow:0 1px 2px rgba(20,24,30,.05), 0 8px 22px rgba(20,24,30,.09);
  --glow-1:rgba(64,64,64,.05); --glow-2:rgba(64,64,64,.03);
  --pos:#12A05E; --neg:#DC4432; --warn:#C97C0A; --info:#2C7FC4;
  --gold:#C99012; --silver:#8B929C; --bronze:#A8703F;
  --c-ig:#C32C74; --c-tt:#0E9C93; --c-yt:#D8342A; --c-tg:#1E88C7;
}

/* ---------- цветовые схемы ---------- */
/* Восемь акцентов: «Небо» - синий по умолчанию,
   строгий графит выше в :root и шесть цветных. Схема задаёт семь переменных и
   больше ничего: акцент, его тёмный край для градиентов, полупрозрачную подложку,
   цвет текста на залитой плашке, фон страницы с лёгким подтоном и два свечения
   под ним. Текст, карточки и разделители остаются нейтральными при любой схеме.

   🔴 Два блока на схему обязательны. У `:root[data-scheme=…]` и
   `:root[data-theme="light"]` одинаковый вес, а схемы стоят ниже по файлу - без
   парного светлого блока схема перебила бы светлую тему своими тёмными цветами.
   Поэтому оба блока задают ОДИН И ТОТ ЖЕ набор переменных, ничего не пропуская.

   Хексы клиента взяты как есть везде, где они читаются. Где нет - подвинуты по
   светлоте: #404040 на чёрном не видно, #2AABEE на белом не прочитать. */
:root[data-scheme="sky"]{
  --accent:#4E93F0; --accent-d:#257AE8; --accent-l:rgba(78,147,240,.18); --on-accent:#FFFFFF;
  --page:#0B0F17; --glow-1:rgba(37,122,232,.22); --glow-2:rgba(24,94,186,.15)}
:root[data-scheme="sky"][data-theme="light"]{
  --accent:#257AE8; --accent-d:#185EBA; --accent-l:rgba(37,122,232,.13); --on-accent:#FFFFFF;
  --page:#EFF3FA; --glow-1:rgba(37,122,232,.11); --glow-2:rgba(24,94,186,.06)}

:root[data-scheme="gold"]{
  --accent:#DFAF23; --accent-d:#B88D00; --accent-l:rgba(223,175,35,.18); --on-accent:#17120A;
  --page:#14110A; --glow-1:rgba(223,175,35,.16); --glow-2:rgba(184,141,0,.12)}
:root[data-scheme="gold"][data-theme="light"]{
  /* на белом #b88d00 даёт 2.7:1 - подписи и ссылки этим цветом не прочитать,
     поэтому в светлой теме золото приглушено до 4.6:1. Кружок в настройках
     остаётся фирменным #b88d00 */
  --accent:#8F6D00; --accent-d:#745800; --accent-l:rgba(143,109,0,.13); --on-accent:#FFFFFF;
  --page:#F7F2E4; --glow-1:rgba(184,141,0,.11); --glow-2:rgba(143,109,0,.06)}

:root[data-scheme="emerald"]{
  --accent:#48BF43; --accent-d:#308F2C; --accent-l:rgba(72,191,67,.18); --on-accent:#06140A;
  --page:#0B120C; --glow-1:rgba(48,143,44,.20); --glow-2:rgba(36,110,33,.14)}
:root[data-scheme="emerald"][data-theme="light"]{
  --accent:#308F2C; --accent-d:#226B1F; --accent-l:rgba(48,143,44,.14); --on-accent:#FFFFFF;
  --page:#EEF5EE; --glow-1:rgba(48,143,44,.10); --glow-2:rgba(34,107,31,.06)}

:root[data-scheme="ruby"]{
  --accent:#E4575C; --accent-d:#CC373C; --accent-l:rgba(228,87,92,.18); --on-accent:#FFFFFF;
  --page:#150C0D; --glow-1:rgba(204,55,60,.20); --glow-2:rgba(163,42,46,.14)}
:root[data-scheme="ruby"][data-theme="light"]{
  --accent:#CC373C; --accent-d:#A32A2E; --accent-l:rgba(204,55,60,.13); --on-accent:#FFFFFF;
  --page:#FAF0F0; --glow-1:rgba(204,55,60,.10); --glow-2:rgba(163,42,46,.06)}

:root[data-scheme="ocean"]{
  --accent:#35B6F5; --accent-d:#1E8FCC; --accent-l:rgba(53,182,245,.18); --on-accent:#04131C;
  --page:#0A1017; --glow-1:rgba(42,171,238,.20); --glow-2:rgba(30,143,204,.14)}
:root[data-scheme="ocean"][data-theme="light"]{
  --accent:#16769F; --accent-d:#105B7C; --accent-l:rgba(29,143,201,.13); --on-accent:#FFFFFF;
  --page:#EDF4FA; --glow-1:rgba(42,171,238,.11); --glow-2:rgba(30,143,204,.06)}

:root[data-scheme="fuchsia"]{
  --accent:#E45C9C; --accent-d:#CC3B81; --accent-l:rgba(228,92,156,.18); --on-accent:#FFFFFF;
  --page:#140C11; --glow-1:rgba(204,59,129,.20); --glow-2:rgba(163,44,103,.14)}
:root[data-scheme="fuchsia"][data-theme="light"]{
  --accent:#CC3B81; --accent-d:#A32C67; --accent-l:rgba(204,59,129,.13); --on-accent:#FFFFFF;
  --page:#FAEFF5; --glow-1:rgba(204,59,129,.10); --glow-2:rgba(163,44,103,.06)}

:root[data-scheme="amethyst"]{
  --accent:#C266E0; --accent-d:#AD40CF; --accent-l:rgba(194,102,224,.18); --on-accent:#FFFFFF;
  --page:#110C16; --glow-1:rgba(173,64,207,.20); --glow-2:rgba(138,50,166,.14)}
:root[data-scheme="amethyst"][data-theme="light"]{
  --accent:#AD40CF; --accent-d:#8A32A6; --accent-l:rgba(173,64,207,.13); --on-accent:#FFFFFF;
  --page:#F6EFFA; --glow-1:rgba(173,64,207,.10); --glow-2:rgba(138,50,166,.06)}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;width:100%;max-width:100%;overflow-x:hidden}
html{background:var(--page);-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{
  font-family:var(--font-brand);
  color:var(--ink);font-size:15px;line-height:1.35;
  overflow-wrap:break-word;
  background:
    radial-gradient(120% 55% at 50% -12%, var(--glow-1) 0%, transparent 62%),
    radial-gradient(95% 45% at 50% 110%, var(--glow-2) 0%, transparent 70%),
    var(--page);
  background-attachment:fixed;
}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;
  touch-action:manipulation;
  transition:background .15s,color .15s,border-color .15s,transform .1s,opacity .15s}
button:active{transform:scale(.98)}
button:focus-visible,input:focus-visible,a:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--accent);outline-offset:2px;border-radius:10px}
/* 16px - жёсткое требование iOS: с меньшим шрифтом Safari зумит страницу при фокусе
   и обратно её уже не отдаёт, после этого весь кабинет едет вбок */
input,textarea,select{font-family:inherit;font-size:16px;max-width:100%}
a{color:var(--link);touch-action:manipulation}
img,video,canvas{max-width:100%;height:auto}
.hidden{display:none!important}
.sprite{position:absolute;width:0;height:0;overflow:hidden}
.ic{width:22px;height:22px;flex:none;display:block}

/* невидимая добивка тап-цели до 44 точек: кнопка остаётся компактной,
   а палец попадает. Только по вертикали/горизонтали недостающее */
.chip,.fld-paste,.go,.shot-p,.chip-f,.tp-ref{position:relative}
.chip::after,.fld-paste::after,.go::after,.shot-p::after,.chip-f::after,.tp-ref::after{
  content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:100%;height:100%;min-width:var(--tap);min-height:var(--tap)}

/* широкие блоки скроллятся внутри себя, а не растягивают страницу */
.scrollx,table{display:block;max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;
  -webkit-overflow-scrolling:touch}
pre{overflow-x:auto;max-width:100%}

/* каркас: на телефоне во всю ширину, в десктопном Telegram колонкой по центру */
.app{display:flex;flex-direction:column;height:100%;width:100%;max-width:560px;margin:0 auto}
.scroll{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;
  overscroll-behavior-y:contain;
  padding:0 calc(var(--pad-x) + var(--safe-r)) calc(var(--nav-off) + 34px)
            calc(var(--pad-x) + var(--safe-l));
  scroll-padding-bottom:calc(var(--nav-off) + 16px)}
.view{display:none;animation:in .18s ease}
.view.active{display:block}
@keyframes in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ---------- шапка ---------- */
.topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;flex:none;
  padding:calc(var(--safe-top) + 12px) calc(16px + var(--safe-r)) 10px calc(16px + var(--safe-l))}
.tb-l{min-width:0;flex:1}
/* ФИО бывает длинным - режем многоточием, иначе кнопка обновления уезжает за экран */
.hello{font-size:21px;font-weight:700;letter-spacing:-.4px;line-height:1.15;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sub{font-size:12px;color:var(--muted);margin-top:3px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chip{width:38px;height:38px;border-radius:19px;flex:none;display:flex;align-items:center;
  justify-content:center;background:var(--pill);border:1px solid var(--pill-br);color:var(--ink)}
.chip:hover{background:var(--accent-l);color:var(--accent);border-color:transparent}
.chip.busy .ic{animation:sp .8s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}

/* ---------- общие блоки ---------- */
.h1{font-size:24px;font-weight:700;letter-spacing:-.5px;margin:6px 2px 6px}
.lead{font-size:13px;color:var(--muted);margin:0 2px 14px;line-height:1.4}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-card);
  padding:16px;margin-bottom:12px;box-shadow:var(--shadow);min-width:0}
.card.mini{padding:13px;margin-bottom:0}
.card-h{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:12px}
/* заголовок строкой: слева ярлык, справа значение. Длинное название темы или
   магазина обрезаем, чтобы шапка блока не разъезжала на две строки */
.card-h>:first-child,.block-h>:first-child{flex:none;max-width:62%;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card-h>:last-child,.block-h>:last-child{flex:1;min-width:0;text-align:right;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lbl{font-size:13px;font-weight:600;color:var(--muted)}
.k{font-size:12px;color:var(--faint)}
.k2{font-size:11px;color:var(--faint);margin-top:4px;line-height:1.35;overflow-wrap:anywhere}
.big{font-size:clamp(24px,8vw,34px);font-weight:700;letter-spacing:-1.4px;line-height:1;
  white-space:nowrap;font-variant-numeric:tabular-nums}
.mid{font-size:clamp(18px,5.6vw,22px);font-weight:700;letter-spacing:-.6px;
  font-variant-numeric:tabular-nums}
.pos{color:var(--pos)} .neg{color:var(--neg)} .warn{color:var(--warn)}
.block{margin:0 0 18px}
.block-h{display:flex;align-items:baseline;justify-content:space-between;gap:8px;
  font-size:13px;font-weight:600;color:var(--muted);margin:0 2px 9px}
.prog{height:6px;border-radius:4px;background:var(--fillq);overflow:hidden;margin:0 2px 12px}
.prog i{display:block;height:100%;border-radius:4px;transition:width .45s ease;
  background:linear-gradient(90deg,var(--accent) 0%,var(--accent-d) 100%)}
.foot{text-align:center;font-size:11px;color:var(--faint);padding:12px 8px 4px;line-height:1.4}
.empty{text-align:center;color:var(--faint);font-size:13px;padding:34px 18px;line-height:1.5;
  overflow-wrap:anywhere}
.empty b{display:block;color:var(--muted);font-size:14px;margin-bottom:6px}
.note{font-size:12px;line-height:1.45;color:var(--muted);background:var(--fillq);
  border-radius:13px;padding:11px 13px;margin-bottom:12px;overflow-wrap:anywhere}
.note.warn{color:var(--warn);background:rgba(255,194,75,.12)}
.note.bad{color:var(--neg);background:rgba(255,122,99,.12)}

.skel{border-radius:12px;background:linear-gradient(90deg,var(--fillq) 25%,var(--fillq2) 37%,var(--fillq) 63%);
  background-size:400% 100%;animation:sk 1.4s ease infinite}
@keyframes sk{0%{background-position:100% 0}100%{background-position:0 0}}

.btn-primary{width:100%;min-height:52px;padding:15px;border-radius:15px;color:var(--on-accent);
  font-size:15px;font-weight:700;
  background:linear-gradient(180deg,var(--accent) 0%,var(--accent-d) 100%);
  box-shadow:0 8px 22px var(--accent-l)}
.btn-primary:hover{filter:brightness(1.07)}
.btn-primary:disabled{opacity:.45;cursor:default;box-shadow:none;filter:none}
.btn-ghost{width:100%;min-height:var(--tap);padding:12px;border-radius:14px;font-size:13px;
  font-weight:600;background:var(--pill);border:1px solid var(--pill-br);color:var(--muted);
  display:flex;align-items:center;justify-content:center;gap:8px}
.btn-ghost:hover{color:var(--accent);border-color:var(--accent-l)}
.btn-ghost .ic{width:18px;height:18px}

/* ---------- главный экран ---------- */
.hero{display:flex;align-items:center;gap:16px}
.ring-wrap{position:relative;width:108px;height:108px;flex:none}
.ring{width:108px;height:108px;transform:rotate(-90deg)}
.ring-bg{fill:none;stroke:var(--fillq);stroke-width:11}
.ring-fg{fill:none;stroke:var(--accent);stroke-width:11;stroke-linecap:round;
  transition:stroke-dashoffset .6s ease}
.ring-fg.done{stroke:var(--pos)}
.ring-in{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.ring-in b{font-size:28px;font-weight:700;letter-spacing:-1px;line-height:1;font-variant-numeric:tabular-nums}
.ring-in i{font-size:11px;font-style:normal;color:var(--faint);margin-top:3px}
.hero-txt{min-width:0;flex:1}
.hero-ttl{font-size:17px;font-weight:700;letter-spacing:-.3px}
.hero-sub{font-size:12.5px;color:var(--muted);margin-top:5px;line-height:1.42;overflow-wrap:anywhere}
.pill{display:inline-block;font-size:11px;font-weight:600;padding:5px 10px;border-radius:10px;
  background:var(--fillq);color:var(--muted);margin-top:9px}
.pill.ok{background:rgba(79,208,138,.14);color:var(--pos)}
.pill.warn{background:rgba(255,194,75,.14);color:var(--warn)}

.tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.tile-h{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--muted);min-width:0}
.tile-h span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tile-h .ic{width:17px;height:17px}
.tile-v{display:flex;align-items:baseline;gap:5px;margin:9px 0 8px;min-width:0}
.tile-v b{font-size:23px;font-weight:700;letter-spacing:-.6px;font-variant-numeric:tabular-nums}
.tile-v i{font-size:11px;font-style:normal;color:var(--faint);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tile .prog{margin:0;height:5px}
.tile.full .tile-v b{color:var(--pos)}
/* просмотры по площадке под шкалой плана. Подпись идёт перед числом: так не нужно
   согласовывать окончание с «1,3 млн», а цифра остаётся короткой - полные значения
   человек смотрит в карточке сюжета */
.tile-k{font-size:10.5px;color:var(--faint);margin-top:7px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tile-k b{font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}
.tile-k.z{opacity:.55}
.p-instagram{color:var(--c-ig)} .p-tiktok{color:var(--c-tt)}
.p-youtube{color:var(--c-yt)} .p-telegram{color:var(--c-tg)}

/* разделитель ставим между строками, а не под каждой: иначе перед итогом
   получались две линии подряд с пустой полосой между ними */
.mrow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0}
.mrow + .mrow{border-top:1px solid var(--line)}
.mrow:first-child{padding-top:0}
.mrow:last-child{padding-bottom:0}
.mrow-l{min-width:0}
.mrow-l b{font-size:14px;font-weight:600;display:block;overflow-wrap:anywhere}
.mrow-l i{font-size:11px;font-style:normal;color:var(--faint);display:block;margin-top:3px;
  line-height:1.35;overflow-wrap:anywhere}
.mrow-r{font-size:15px;font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums;
  color:var(--faint);flex:none}
.mrow-r.on{color:var(--pos)}
.total{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;
  margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.total span{font-size:13px;font-weight:600;color:var(--muted);min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.total b{flex:none}
.duo{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.duo .mid i{font-size:12px;font-style:normal;color:var(--faint);font-weight:600}

/* ---------- сдать ролик ---------- */
.topics{display:flex;flex-direction:column;gap:9px}
.topic{text-align:left;width:100%;padding:13px 14px;border-radius:16px;cursor:pointer;
  background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);
  touch-action:manipulation;min-width:0;
  transition:border-color .15s,background .15s}
.topic:hover{border-color:var(--accent-l)}
.topic.on{border-color:var(--accent);background:var(--accent-l)}
.tp-h{display:flex;align-items:center;gap:8px;margin-bottom:7px;min-width:0}
.tp-type{font-size:10px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;flex:none;
  padding:4px 8px;border-radius:8px;background:var(--fillq);color:var(--muted)}
.topic.on .tp-type{background:rgba(255,106,43,.22);color:var(--accent)}
.tp-until{font-size:11px;color:var(--faint);margin-left:auto;white-space:nowrap;flex:none}
.tp-t{font-size:14.5px;font-weight:600;line-height:1.32;overflow-wrap:anywhere}
.tp-m{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:11px;color:var(--faint);margin-top:7px}
.tp-ref{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;
  color:var(--link);margin-top:8px;cursor:pointer;padding:4px 0}
.tp-ref:hover{text-decoration:underline}
.tp-ref .ic{width:13px;height:13px}

.flds{display:flex;flex-direction:column;gap:9px}
.fld{border-radius:16px;padding:11px 12px;background:var(--card);min-width:0;
  border:1px solid var(--line);box-shadow:var(--shadow);transition:border-color .15s}
.fld:focus-within{border-color:var(--accent)}
.fld.ok{border-color:rgba(79,208,138,.55)}
.fld.err{border-color:rgba(255,122,99,.6)}
.fld-top{display:flex;align-items:center;gap:10px;min-width:0}
.fld-ico{width:34px;height:34px;border-radius:11px;flex:none;display:flex;align-items:center;
  justify-content:center;background:var(--fillq)}
/* шрифт ровно 16px и высота строки под палец: поле само по себе тап-цель */
.fld input{flex:1;min-width:0;width:100%;border:none;background:none;color:var(--ink);
  font-size:16px;line-height:1.3;padding:12px 0;outline:none;border-radius:0;
  -webkit-appearance:none;appearance:none}
.fld input::placeholder{color:var(--faint)}
.fld-paste{width:34px;height:34px;border-radius:11px;flex:none;display:flex;align-items:center;
  justify-content:center;background:var(--pill);border:1px solid var(--pill-br);color:var(--muted)}
.fld-paste:hover{background:var(--accent-l);color:var(--accent);border-color:transparent}
.fld-paste .ic{width:17px;height:17px}
.fld-ok{width:34px;height:34px;border-radius:11px;flex:none;display:none;align-items:center;
  justify-content:center;color:var(--pos);background:rgba(79,208,138,.14)}
.fld.ok .fld-ok{display:flex}
.fld.ok .fld-paste{display:none}
.fld-msg{font-size:11px;color:var(--neg);margin:5px 0 0 44px;line-height:1.35;overflow-wrap:anywhere}
.fld-msg:empty{display:none}
.fld-nm{font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;
  color:var(--faint);margin:0 0 3px 44px}

/* ---------- мои ролики ---------- */
.chips{display:flex;gap:7px;overflow-x:auto;padding:2px 2px 12px;scrollbar-width:none;
  overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.chips::-webkit-scrollbar{display:none}
.chip-f{flex:none;min-height:40px;padding:8px 14px;border-radius:12px;font-size:12.5px;
  font-weight:600;background:var(--pill);border:1px solid var(--pill-br);color:var(--muted);
  white-space:nowrap}
.chip-f:hover{color:var(--accent);border-color:var(--accent-l)}
.chip-f.active{background:var(--accent);border-color:transparent;color:var(--on-accent)}

.story{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-card);
  margin-bottom:10px;box-shadow:var(--shadow);overflow:hidden;min-width:0}
.story-h{width:100%;display:flex;align-items:center;gap:11px;padding:14px;text-align:left;min-width:0}
.story-h:hover{background:var(--fillq)}
.story-main{flex:1;min-width:0}
.story-t{font-size:14px;font-weight:600;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.story-s{font-size:11px;color:var(--faint);margin-top:4px;font-variant-numeric:tabular-nums;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dots{display:flex;gap:4px;flex:none}
.dot{width:9px;height:9px;border-radius:5px;background:var(--fillq2)}
.dot.ok{background:var(--pos)} .dot.wait{background:var(--warn)}
.dot.bad{background:var(--neg)} .dot.fix{background:var(--info)}
.dot.off{background:transparent;border:1.5px solid var(--fillq2)}
/* в свёрнутой шапке - просмотры сюжета и ER под ними. Ширину держим фиксированной,
   иначе название темы прыгает от карточки к карточке */
.story-v{min-width:56px;text-align:right;flex:none}
.story-v b{display:block;font-size:14px;font-weight:700;white-space:nowrap;
  font-variant-numeric:tabular-nums}
.story-v i{display:block;font-size:10.5px;font-style:normal;color:var(--faint);margin-top:2px;
  white-space:nowrap;font-variant-numeric:tabular-nums}
.story-h .chev{width:18px;height:18px;color:var(--faint);transition:transform .22s ease;flex:none}
.story.open .chev{transform:rotate(180deg)}
.story-b{display:none;padding:0 14px 14px;border-top:1px solid var(--line);margin-top:0}
.story.open .story-b{display:block}
/* строка площадки: ссылка со статусом сверху, шесть метрик под ней */
.prow{padding:11px 0;border-bottom:1px solid var(--line);min-width:0}
.plink{display:flex;align-items:center;gap:10px;min-width:0}
.plink-m{flex:1;min-width:0}
.plink-n{font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.plink-u{font-size:11px;color:var(--faint);margin-top:3px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.badge{font-size:10.5px;font-weight:700;padding:4px 9px;border-radius:9px;white-space:nowrap;
  background:var(--fillq);color:var(--muted);flex:none}
.badge.ok{background:rgba(79,208,138,.14);color:var(--pos)}
.badge.wait{background:rgba(255,194,75,.14);color:var(--warn)}
.badge.bad{background:rgba(255,122,99,.14);color:var(--neg)}
.badge.fix{background:rgba(127,200,255,.14);color:var(--info)}
.go{width:32px;height:32px;border-radius:11px;flex:none;display:flex;align-items:center;
  justify-content:center;background:var(--pill);border:1px solid var(--pill-br);color:var(--muted)}
.go:hover{background:var(--accent-l);color:var(--accent);border-color:transparent}
.go .ic{width:16px;height:16px}

/* ---------- шесть метрик публикации ---------- */
/* Просмотры, лайки, комментарии, репосты, пересылки, ER - по каждой площадке.
   Репост и пересылка названы порознь: «поделился публично» и «отправил в личку» -
   разные вещи, и у Telegram весь охват растёт именно с пересылок.
   Строка переносится сама: на 375 точках выходит две, на самых узких - три.
   Вбок не поедет никогда - самый длинный элемент заведомо уже колонки. */
.pmet{display:flex;flex-wrap:wrap;gap:4px 11px;margin:8px 0 0 32px;min-width:0}
.met{display:inline-flex;align-items:baseline;gap:4px;min-width:0;white-space:nowrap}
.met i{font-size:10.5px;font-style:normal;color:var(--faint)}
.met b{font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}
.met.er b{color:var(--accent)}
/* нулевая метрика не спрятана, а приглушена: данные собраны и равны нулю.
   Это же приглушение носит прочерк ER - его нет, пока нет просмотров */
.met.z{opacity:.45}
.met.er.z b{color:var(--muted)}

/* шесть плиток итога в три колонки - ровно две строки, и колонка достаточно широкая,
   чтобы «1 615 039» поместился целиком, а не оборвался многоточием */
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:13px 0}
.stat{background:var(--fillq);border-radius:12px;padding:9px 6px;text-align:center;min-width:0}
/* цифру даём полностью, с пробелами по разрядам, поэтому кегль плывёт по ширине экрана:
   «1 234 567» должен помещаться в колонку, а не обрезаться многоточием */
.stat b{display:block;font-size:clamp(11.5px,3.3vw,14px);font-weight:700;
  font-variant-numeric:tabular-nums;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stat i{display:block;font-size:10px;font-style:normal;color:var(--faint);margin-top:3px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stat.z{opacity:.5}
.mnote{font-size:10.5px;color:var(--faint);line-height:1.4;margin:-3px 0 11px;
  overflow-wrap:anywhere}
.shot{display:flex;align-items:center;gap:8px;margin-bottom:9px;flex-wrap:wrap}
.shot span{font-size:11px;color:var(--faint)}
.shot-p{min-height:34px;padding:6px 10px;border-radius:10px;font-size:11px;font-weight:700;
  background:var(--pill);border:1px solid var(--pill-br);color:var(--muted);white-space:nowrap}
.shot-p:hover{color:var(--accent);border-color:var(--accent-l)}
.shot-p.on{background:var(--accent);border-color:transparent;color:var(--on-accent)}
/* площадка, на которой сюжет не сдан: скриншот привязывать не к чему */
.shot-p.off{opacity:.4;pointer-events:none}

/* ---------- рейтинг ---------- */
.lbrow{display:flex;align-items:center;gap:11px;padding:12px 14px;background:var(--card);
  border:1px solid var(--line);border-radius:16px;margin-bottom:8px;box-shadow:var(--shadow);
  min-width:0}
.lbrow.me{border-color:var(--accent);background:var(--accent-l)}
.place{width:30px;height:30px;border-radius:10px;flex:none;display:flex;align-items:center;
  justify-content:center;font-size:13px;font-weight:700;background:var(--fillq);
  color:var(--muted);font-variant-numeric:tabular-nums}
.lbrow.p1 .place{background:rgba(255,198,92,.18);color:var(--gold)}
.lbrow.p2 .place{background:rgba(207,211,218,.16);color:var(--silver)}
.lbrow.p3 .place{background:rgba(216,154,106,.18);color:var(--bronze)}
.lb-main{flex:1;min-width:0}
.lb-n{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb-u{font-size:11px;color:var(--faint);margin-top:3px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.lb-r{text-align:right;flex:none;max-width:48%}
.lb-r b{display:block;font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb-r i{display:block;font-size:11px;font-style:normal;color:var(--faint);margin-top:3px;
  font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.myrow{position:fixed;left:50%;transform:translateX(-50%);width:100%;max-width:560px;
  bottom:calc(var(--nav-off) + 8px);z-index:25;pointer-events:none;
  padding:8px calc(var(--pad-x) + var(--safe-r)) 0 calc(var(--pad-x) + var(--safe-l));
  background:linear-gradient(180deg,transparent 0%,var(--page) 70%)}
/* строка прилипшая, значит непрозрачная: сквозь --accent-l просвечивал список под ней.
   Цвет собираем слоями - плотная подложка страницы плюс оранжевый оттенок сверху */
.myrow .lbrow{margin:0;pointer-events:auto;background-color:var(--page);
  background-image:linear-gradient(0deg,var(--accent-l),var(--accent-l));
  box-shadow:0 -2px 10px rgba(0,0,0,.18),0 10px 26px rgba(40,10,2,.35)}
/* когда строка прилипла, последним местам в списке нужен запас снизу */
.scroll[data-my="1"]{padding-bottom:calc(var(--nav-off) + 106px)}

.best{display:flex;gap:10px;overflow-x:auto;padding:2px 2px 8px;margin:0 -2px;
  scroll-snap-type:x proximity;scrollbar-width:none;
  overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.best::-webkit-scrollbar{display:none}
.best-c{flex:none;width:176px;max-width:78vw;scroll-snap-align:start;text-align:left;padding:13px;
  border-radius:16px;background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow)}
.best-c:hover{border-color:var(--accent-l)}
.bc-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:9px}
.bc-top .ic{width:18px;height:18px}
.bc-v{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}
.bc-t{font-size:13px;font-weight:600;line-height:1.32;display:-webkit-box;-webkit-line-clamp:2;
  line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.bc-a{font-size:11px;color:var(--faint);margin-top:7px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}

/* ---------- нижняя панель ---------- */
.tabbar{position:fixed;left:50%;transform:translateX(-50%);bottom:0;width:100%;max-width:560px;
  display:flex;align-items:stretch;gap:4px;z-index:30;
  padding:6px calc(10px + var(--safe-r)) var(--nav-pad-b) calc(10px + var(--safe-l));
  background:linear-gradient(180deg,transparent 0%,var(--page) 34%,var(--page) 100%);
  transition:transform .18s ease}
.tab{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:4px;padding:9px 4px;border-radius:14px;color:var(--faint);font-size:10.5px;font-weight:600;
  min-height:54px}
.tab span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tab:hover{color:var(--accent)}
.tab.active{color:var(--accent);background:var(--accent-l)}
/* пока человек печатает, панель уводим вниз: на iOS фиксированный низ всплывает
   поверх клавиатуры, на Android дёргается вместе с ресайзом окна.
   :has не поддержан - правило просто не применится, вёрстка не пострадает */
.app:has(input:focus) .tabbar,
.app:has(input:focus-within) .tabbar{transform:translateX(-50%) translateY(130%);pointer-events:none}
.app:has(input:focus) .myrow,
.app:has(input:focus-within) .myrow{opacity:0;pointer-events:none}

/* ---------- причина отказа и спор по решению ---------- */
/* Решение Владимира Сабреева 18.08.2026: причину человек читает СРАЗУ, в той же карточке,
   а не идёт за ней в бот. Поэтому блок раскрыт по умолчанию, текст не режется многоточием
   и переносится целиком - объяснение, из-за которого не заплатили, прятать нельзя. */
.pwhy{margin-top:9px}
.why{font-size:12px;line-height:1.45;color:var(--ink);background:rgba(255,122,99,.10);
  border:1px solid rgba(255,122,99,.28);border-left-width:3px;
  border-radius:10px;padding:9px 11px;overflow-wrap:anywhere}
.why b{color:var(--neg);font-weight:700}
.why.in-sheet{margin-bottom:12px}

/* переписка по спору: что написал человек и что ответил модератор */
.ap{margin-top:8px;border:1px solid var(--line);border-radius:12px;padding:9px 11px;
  background:var(--fillq)}
.ap-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ap-h i{font-size:10.5px;font-style:normal;color:var(--faint);
  font-variant-numeric:tabular-nums}
.ap-q{font-size:11.5px;line-height:1.45;color:var(--muted);margin-top:7px;
  overflow-wrap:anywhere}
.ap-a{font-size:12px;line-height:1.45;margin-top:7px;overflow-wrap:anywhere}
.ap-a b{font-weight:700}
.ap-a.wait{font-size:11.5px;color:var(--faint)}

/* кнопка спора: заметная, но не спорит за внимание с «Загрузить скриншот» */
.btn-why{width:100%;min-height:var(--tap);margin-top:9px;padding:11px;border-radius:12px;
  font-size:12.5px;font-weight:700;color:var(--neg);background:rgba(255,122,99,.10);
  border:1px solid rgba(255,122,99,.30)}
.btn-why:hover{background:rgba(255,122,99,.18)}

/* ---------- нижняя шторка ---------- */
/* Спор по ролику. Модалка по центру в Telegram дерётся с жестом закрытия приложения,
   шторка снизу ведёт себя как родная. Оформление уехало на свой экран настроек. */
.sheet{position:fixed;inset:0;z-index:80;display:flex;align-items:flex-end}
.sheet-bg{position:absolute;inset:0;background:rgba(0,0,0,.5);opacity:0;transition:opacity .2s}
.sheet.on .sheet-bg{opacity:1}
.sheet-b{position:relative;width:100%;max-height:88vh;overflow-y:auto;-webkit-overflow-scrolling:touch;
  background:var(--page);border-radius:22px 22px 0 0;box-shadow:var(--shadow);
  transform:translateY(100%);transition:transform .22s ease;
  padding:8px calc(var(--pad-x) + var(--safe-r)) calc(16px + var(--safe-bot))
          calc(var(--pad-x) + var(--safe-l))}
.sheet.on .sheet-b{transform:none}
.sheet-grip{width:38px;height:4px;border-radius:2px;background:var(--fillq2);margin:0 auto 12px}
.sheet-t{font-size:18px;font-weight:700;letter-spacing:-.3px}
.sheet-s{font-size:12px;color:var(--muted);margin-top:4px;overflow-wrap:anywhere}
.sheet-c{margin-top:13px}
.sheet-lead{font-size:12.5px;color:var(--muted);line-height:1.45;margin-bottom:10px}
.sheet-c .btn-primary{margin-top:12px}
.sheet-c .btn-ghost{margin-top:8px}
.sheet-c .foot{margin-top:10px}

/* поле ввода спора. 16px обязательны: меньше - и iOS зумит страницу при фокусе */
.ta{width:100%;min-height:118px;padding:12px;border-radius:12px;font-size:16px;line-height:1.4;
  font-family:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);
  resize:vertical}
.ta:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-l)}
.ta-c{font-size:10.5px;color:var(--faint);text-align:right;margin-top:5px;
  font-variant-numeric:tabular-nums}

/* ---------- экран настроек: оформление ---------- */
/* Кнопка «назад» стоит внутри экрана, а не в общей шапке: шапка одна на пять
   экранов, и лишний элемент в ней ужимал бы имя креатора уже на 360 точках. */
.back{display:inline-flex;align-items:center;gap:4px;min-height:var(--tap);
  padding:8px 12px 8px 4px;margin:0 0 2px -4px;font-size:14px;font-weight:600;color:var(--muted)}
.back:hover{color:var(--accent)}

/* тема: две крупные плитки, выбор один и он фиксируется */
.theme-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 0 16px}
.theme-opt{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;
  min-height:78px;padding:13px 8px;border-radius:15px;font-size:13px;font-weight:600;
  background:var(--card);border:1px solid var(--line);color:var(--ink)}
.theme-opt .ic{width:22px;height:22px;color:var(--muted)}
.theme-opt:hover{border-color:var(--accent-l)}
.theme-opt.on{border-color:var(--accent);background:var(--accent-l);color:var(--accent)}
.theme-opt.on .ic{color:var(--accent)}

.scheme-label{font-size:13px;font-weight:600;color:var(--muted);margin:0 2px 9px}
/* auto-fit: на 375 точках встают две колонки, в десктопном телеграме - три.
   Название режем многоточием - иначе «Соколов синий» распирал бы колонку */
.scheme-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(146px,1fr));gap:8px}
.scheme-opt{display:flex;align-items:center;gap:9px;min-width:0;min-height:var(--tap);
  padding:9px 11px;border-radius:13px;text-align:left;
  background:var(--card);border:1px solid var(--line);color:var(--ink)}
.scheme-opt:hover{border-color:var(--accent-l)}
.scheme-opt.on{border-color:var(--accent);background:var(--accent-l)}
/* кружок цвета: обводка внутрь и хайлайт наружу - иначе тёмный графит на тёмной
   карточке и белёсое золото на светлой сливаются с ней и читаются как пустое место */
.scheme-dot{width:20px;height:20px;border-radius:50%;flex:none;
  box-shadow:0 0 0 1px rgba(150,150,150,.45) inset, 0 0 0 1px var(--line), 0 1px 3px rgba(0,0,0,.22)}
.scheme-nm{font-size:13px;font-weight:600;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------- служебное ---------- */
.toast{position:fixed;left:50%;bottom:calc(var(--nav-off) + 26px);transform:translateX(-50%);
  background:rgba(0,0,0,.86);color:#fff;padding:11px 18px;border-radius:13px;font-size:13px;
  z-index:90;opacity:0;transition:opacity .2s;pointer-events:none;text-align:center;
  max-width:min(86%,420px);line-height:1.35;overflow-wrap:anywhere}
.toast.show{opacity:1}
.gate{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;
  background:var(--page);
  padding:calc(24px + var(--safe-top)) calc(24px + var(--safe-r))
          calc(24px + var(--safe-bot)) calc(24px + var(--safe-l))}
.gate-b{max-width:340px;width:100%;text-align:center}
.gate-t{font-size:19px;font-weight:700;margin-bottom:8px}
.gate-s{font-size:13px;color:var(--muted);line-height:1.45;margin-bottom:18px;overflow-wrap:anywhere}

/* ---------- узкие экраны ---------- */
/* Android 360 и iPhone SE 375: кольцо ужимаем, иначе текст рядом сплющивается в столбик */
@media (max-width:389px){
  .ring-wrap,.ring{width:94px;height:94px}
  .ring-in b{font-size:25px}
  .hero{gap:13px}
  .hero-ttl{font-size:16px}
  /* Отступ под иконку площадки - роскошь, которую строка метрик тут уже не тянет:
     на 360-375 точках из-за него «просм. 1 284 730» уезжал на третью строку.
     Убираем его и режем зазор до 8 - шесть метрик снова ложатся в две строки. */
  .pmet{margin-left:0;gap:4px 8px}
}
/* 320-359: самые узкие живые экраны - режем боковые поля и статистику в две колонки */
@media (max-width:359px){
  :root{--pad-x:11px}
  .ring-wrap,.ring{width:88px;height:88px}
  .ring-in b{font-size:23px}
  .stats{gap:6px}
  .best-c{width:158px}
  .tab{font-size:10px;padding:9px 2px}
  .tabbar{gap:2px;padding-left:calc(6px + var(--safe-l));padding-right:calc(6px + var(--safe-r))}
  .card{padding:14px}
  .fld-nm,.fld-msg{margin-left:0}
}

/* ---------- landscape ---------- */
/* По высоте остаётся мало: панель делаем в одну строку, крупные блоки поджимаем.
   Тап-цель на кнопках всё равно держим 44 */
@media (orientation:landscape) and (max-height:520px){
  :root{--nav-h:48px}
  .topbar{padding-top:calc(var(--safe-top) + 6px);padding-bottom:6px}
  .hello{font-size:18px}
  .h1{font-size:20px;margin-top:2px}
  .lead{margin-bottom:10px}
  .card{padding:14px}
  .ring-wrap,.ring{width:86px;height:86px}
  .ring-in b{font-size:22px}
  .tiles{grid-template-columns:repeat(4,1fr)}
  .tabbar{padding-top:4px}
  .tab{flex-direction:row;gap:7px;min-height:var(--tap);padding:6px;font-size:12px}
  .tab .ic{width:20px;height:20px}
}

/* уважаем системную настройку «меньше движения» */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important}
}

/* Режим контента на экране сдачи. Две крупные кнопки: продавец выбирает
   одну до того, как выложит ролик, и сразу видит, что можно, а что нельзя */
.ctype{display:grid;gap:8px;margin-top:8px}
.ct{display:block;width:100%;text-align:left;padding:12px 14px;border-radius:14px;
  border:1px solid var(--line);background:var(--card);color:var(--fg)}
.ct b{display:block;font-size:14px;font-weight:600}
.ct i{display:block;font-style:normal;font-size:12px;color:var(--faint);margin-top:3px;
  line-height:1.4}
.ct.on{border-color:var(--accent);background:var(--accent-l)}
.ct-warn{margin-top:8px}
.fld.fld-off{opacity:.45}
.fld.fld-off input{text-decoration:none}

/* Памятка правил: свёрнута по умолчанию - человек пришёл сдать ссылки,
   а не читать инструкцию. Разворачивает перед первой съёмкой и после отказа */
.memo{margin-top:14px;border:1px solid var(--line);border-radius:14px;background:var(--card)}
.memo summary{padding:12px 14px;font-size:13px;font-weight:600;cursor:pointer;
  list-style:none}
.memo summary::-webkit-details-marker{display:none}
.memo summary::after{content:"▾";float:right;color:var(--faint)}
.memo[open] summary::after{content:"▴"}
.memo-b{padding:0 14px 14px;font-size:12px;line-height:1.5}
.memo-s{margin:12px 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.05em;
  color:var(--faint);font-weight:700}
.memo-ol{margin:0;padding-left:18px}
.memo-ol li{margin-bottom:3px}
.memo-ul{list-style:none;margin:0;padding:0}
.memo-ul li{margin-bottom:7px}
.memo-ul b{display:block;font-weight:600}
.memo-ul i{display:block;font-style:normal;color:var(--faint);margin-top:1px}
.memo-stop b{color:var(--neg)}
.memo-note{margin-top:10px;padding:9px 11px;border-radius:10px;background:var(--fillq);
  color:var(--muted)}
