/* Operator acceptance 2026-10-06: PayPage owns palette, type and theme across surfaces.
   Compositions retain M1/M2 content; no independent color system is introduced. */
:root{--bg:var(--pay-bg);--bg2:var(--pay-bg-inset);--panel:var(--pay-surface);--panel2:var(--pay-surface-low);--card:var(--pay-surface);--line:var(--pay-line);--line2:var(--pay-line-strong);--tx:var(--pay-text);--fg:var(--pay-text);--mut:var(--pay-text-muted);--mute:var(--pay-text-muted);--faint:var(--pay-text-quiet);--teal:var(--pay-accent);--teal-dim:var(--pay-accent-fill);--green:var(--pay-mint);--ok:var(--pay-mint);--amber:var(--pay-amber-text);--red:var(--pay-red);--bad:var(--pay-red);--font:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:var(--pay-type-body);font-synthesis:none}
body{font-family:var(--font);font-size:var(--pay-type-body);color:var(--pay-text);background:var(--pay-bg);line-height:1.5}
.fr-surface{--fr-bg:var(--pay-surface);--fr-inset:var(--pay-bg-inset);--fr-line:var(--pay-line);--fr-text:var(--pay-text);--fr-muted:var(--pay-text-muted);--fr-accent:var(--pay-accent);--fr-good:var(--pay-mint);--fr-bad:var(--pay-red);--fr-warn:var(--pay-amber-text)}
.fr-heading h2,.partner-shell h1{font-size:var(--pay-type-title);font-weight:550;line-height:1.4}.fr-card h3{font-size:var(--pay-type-reading);font-weight:600}.fr-card{padding:24px}.fr-heading{margin-bottom:24px}.fr-grid{gap:16px}.fr-summary strong{font-size:var(--pay-type-title)}
.fr-button,.fr-tab{border-radius:8px;font-size:var(--pay-type-body);transition:background-color 150ms ease-out,transform 150ms ease-out}.fr-button{background:var(--pay-control)}.fr-button:not(:disabled):hover{background:var(--pay-hover)}.fr-dialog{border-radius:14px;padding:24px}.fr-faq summary{min-height:44px;align-content:center}
/* 21st.dev / Flexnative Tabs, line variant, adapted to native buttons and PayPage tokens. */
.fr-tabs,.ttabs{display:flex;flex-wrap:nowrap;gap:4px;overflow-x:auto;max-width:100%;padding:0 0 1px;margin:16px 0 24px;background:transparent;border:0;border-bottom:1px solid var(--pay-line);border-radius:0;scrollbar-width:thin;scrollbar-color:var(--pay-line-strong) transparent}
.fr-tab,.ttab{flex:0 0 auto;border:0;border-bottom:2px solid transparent;border-radius:0;white-space:nowrap;padding:10px 14px;min-height:44px;color:var(--pay-text-muted);font-weight:500}
.fr-tab[aria-current=page],.fr-tab[aria-pressed=true],.ttab.on{background:transparent;color:var(--pay-text);border-bottom-color:var(--pay-accent);box-shadow:none}
:is(button,a,input,select,textarea,summary):focus-visible{outline:2px solid var(--pay-focus);outline-offset:4px}
/* ⚠ ОДНО КОЛЬЦО ФОКУСА НА ПОЛЕ (оператор 07.10, снимок «кубы»): у ввода внутри скруглённой рамки `.inp` контур
   выше вставал вторым, квадратным, внутри поля. Ввод теперь без контура, кольцо — на рамке, как у PayPage. */
.inp{transition:border-color .15s ease-out,box-shadow .15s ease-out}
.inp:focus-within{border-color:var(--pay-accent);box-shadow:0 0 0 1px var(--pay-accent),0 0 0 5px color-mix(in srgb,var(--pay-accent) 16%,transparent)}
.inp :is(input,select,textarea):focus-visible{outline:none}
.inp:has([aria-invalid=true]){border-color:var(--pay-red)}
@media(prefers-reduced-motion:reduce){.inp{transition:none}}
.amb{background:none}.content>header,.top,.tabbar{background:color-mix(in srgb,var(--pay-bg) 94%,transparent)}.content>header nav,.navright{flex-wrap:wrap}.logo{background:var(--pay-text);box-shadow:none}.logo::after{background:var(--pay-bg);box-shadow:0 8px 0 var(--pay-bg)}
.hero h1,.page h1{font-size:var(--pay-type-display);font-weight:600;line-height:1.2;letter-spacing:-.025em}.hero h1 b{font-weight:600;color:var(--pay-text)}.hero p,.lead{font-size:var(--pay-type-reading)}.eyebrow{font-size:var(--pay-type-small);letter-spacing:0;text-transform:none;color:var(--pay-text-muted)}
.btn-fill,.cta,.cta2,.btn.primary{background:var(--pay-accent-fill);color:var(--pay-accent-ink);box-shadow:none;border-color:var(--pay-accent-fill);border-radius:8px;font-weight:600}.btn-fill:hover,.cta:hover,.cta2:hover,.btn.primary:hover{background:var(--pay-accent-fill-hover)}
.btn-ghost,.btn,.tab,.curbtn{border-radius:8px;min-height:44px}.calc,.calc-inner,.authwrap,.mcard,.picker,.card,.cardbox,.ocard{box-shadow:none}.calc,.calc-inner,.authwrap,.mcard{background:var(--pay-surface);border-radius:16px}.tab.on{background:var(--pay-accent-soft);color:var(--pay-accent);box-shadow:none}.addr,.col,.form input[type=text],.form select,.col select{background:var(--pay-bg-inset)}
.badge.merchant{background:var(--pay-amber-soft);color:var(--pay-amber-text)}.badge.basic{background:var(--pay-blue-soft);color:var(--pay-blue)}.dot{box-shadow:none}.brand{font-weight:650}.site-header{flex-wrap:wrap}.partner-shell,main.partner-shell{max-width:1048px}
@media(max-width:650px){.fr-card,.fr-dialog{padding:16px}.fr-heading h2,.hero h1,.page h1,.partner-shell h1{font-size:var(--pay-type-title)}.fr-tab,.ttab{flex:0 0 auto}.hero{gap:24px;padding-top:24px}.top{position:static}}
@media(prefers-reduced-motion:reduce){.fr-button,.fr-tab{transition:none}}

#v-wallet .ocard + .ocard,#v-business .ocard + .ocard{margin-top:24px}

.fr-button.fr-primary{background:var(--pay-accent-fill);color:var(--pay-accent-ink);border-color:var(--pay-accent-fill)}
.fr-button.fr-primary:not(:disabled):hover{background:var(--pay-accent-fill-hover)}
.fr-deals{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr));gap:16px;max-width:1120px}
.fr-deals .fr-facts>div{display:grid;grid-template-columns:minmax(110px,1fr) minmax(0,1.6fr);gap:16px}
.fr-deals .fr-facts dd{text-align:left}
.avatarbtn{width:auto;min-width:44px;min-height:44px;padding:8px 12px;background:var(--pay-control);color:var(--pay-text);font:inherit}

/* Acceptance audit: readable metadata and existing controls at both theme settings. */
.live-refresh{color:var(--pay-text-muted);border-color:var(--pay-line)}
.live-refresh[data-phase=error]{color:var(--pay-amber-text);border-color:var(--pay-amber-text)}
.live-refresh button{border-color:var(--pay-line-strong);min-height:44px}
.live-refresh button:focus-visible{outline-color:var(--pay-focus)}
.partner-shell input::placeholder{color:var(--pay-text-muted);opacity:1}
.partner-shell input,.partner-shell select{min-height:44px;min-width:44px}
.cabinet-page .cab-req.is-off{opacity:1}
.badge,.accgrid .b .kk,.curbtn .nm small,.tabbar button,.il .tag,.ttable th{font-size:var(--pay-type-small)}
.accgrid .b .kk{text-transform:none;letter-spacing:0}
.btn-fill,.navlinks button,.tabbar button,.swap button,.toc button,.cab-filters button,.cab-add,.cab-req-actions .secondary,.cab-balance button{min-height:44px}
.swap button{min-width:44px}
.foot a{min-height:44px;display:flex;align-items:center}
.site-header a.brand{min-height:44px;display:flex;align-items:center}
.cab-balance summary{min-height:44px;align-content:center}
.fx input{min-height:44px}
.u-mk-on{background:var(--pay-accent-fill);color:var(--pay-accent-ink)}
.kpi .k{overflow-wrap:anywhere}
.fr-stack>.fr-heading{margin-top:16px;margin-bottom:0}
.il{background:var(--pay-surface-low)}

.docblock h2,.sgrid h2{font-size:var(--pay-type-heading-small);margin:0 0 12px}

/* Decorative pixels may never dominate the cabinet reading surface, including a failed canvas frame. */
.cabinet-page>.stardust{opacity:.12}
.kpi{grid-template-columns:repeat(auto-fit,minmax(135px,1fr))}
.kpi .k{font-size:var(--pay-type-title);font-family:var(--font)}
#root input,#root select{min-height:44px;min-width:44px;box-sizing:border-box}
#root input::placeholder{color:var(--pay-text-muted);opacity:1}
.docblock{scroll-margin-top:96px}
.cardbox>h2{font-size:var(--pay-type-heading-small);margin:0 0 12px}

/* ── Impeccable 07.10 (docs/impeccable-audit-2026-10-07.md) ─────────────────────────────────────────
   Сайт и вход клиента: одна шкала заголовков, одна карточка вместо матрёшки, подписи полей без
   капслока, без цветной полосы слева. Только токены PayPage; тексты — прежние, дословно. */

/* Шкала: заголовок героя — самый крупный на странице, разделы ниже него (было 32 у героя и 32–34 у разделов). */
#v-home .sec-h h2,#v-home .u-display-num{font-size:var(--pay-type-title);font-weight:600;letter-spacing:-.015em;line-height:1.3}
#v-home .sec-h{margin-bottom:24px}
#v-home .sec{padding:56px 0}

/* Калькулятор: одна поверхность. Внешняя рамка с отступом 8 px и тенью 90 px давала карточку в карточке. */
.calc{background:transparent;border:0;padding:0;box-shadow:none;border-radius:0}
.calc-inner{background:var(--pay-surface);border:1px solid var(--pay-line);border-radius:16px;padding:24px}
.fx{background:var(--pay-bg-inset);border-color:var(--pay-line-subtle)}

/* Подписи полей — обычным регистром, как на PayPage (было 11 px, капслок, разрядка .12–.14em). */
.fx .lab,.lab2{font-size:var(--pay-type-small);letter-spacing:0;text-transform:none;color:var(--pay-text-muted);font-weight:500}

/* Пояснение — тихая плашка без цветной полосы слева (запрет side-tab). */
.kycnote{border:1px solid var(--pay-line-subtle);border-radius:12px;background:var(--pay-surface-low);color:var(--pay-text-muted);font-size:var(--pay-type-small);line-height:1.55}

/* Пустая строка результата не рисует красную черту: текст появится — появится и строка. */
.line:empty{display:none}

/* «Обмен в три шага»: последовательность, а не три одинаковые карточки. Номер несёт смысл — порядок. */
#v-home .cols3{gap:32px}
#v-home .cols3>.cardbox{background:none;border:0;border-top:1px solid var(--pay-line);border-radius:0;padding:20px 0 0;gap:10px}
#v-home .cols3 .cardbox h3{font-size:var(--pay-type-reading);font-weight:600}
#v-home .cols3 .cardbox p{font-size:var(--pay-type-body);line-height:1.55}

/* Условия заработка: три плитки помещаются в строку и на 390 (было 2 + 1 сиротой). */
.kpi{grid-template-columns:repeat(auto-fit,minmax(96px,1fr))}

/* Подвал: ссылки без подчёркивания в покое, заголовки колонок без капслока; плотнее там, где есть мышь. */
.foot a{text-decoration:none}.foot a:hover{text-decoration:underline;text-underline-offset:3px}
.foot h2{font-size:var(--pay-type-small);letter-spacing:0;text-transform:none;color:var(--pay-text-muted);font-weight:600}
@media (hover:hover) and (pointer:fine){.foot a{min-height:32px}}

/* Деловой раздел: у кнопок карточки — своя ширина, не на всю строку; вторичная — без подчёркивания. */
#v-business .ocard>.btn-fill,#v-business .ocard>.btn-ghost{align-self:flex-start;width:auto;display:inline-flex;align-items:center;justify-content:center}
#v-business .ocard a.btn-ghost{text-decoration:none;display:inline-flex;align-items:center}

@media (max-width:520px){
 /* Выбор валюты больше не вылезает за калькулятор: название банка переносится, а не режется. */
 .fx>.u-grow{min-width:0}
 .curbtn{min-width:0;max-width:62%;white-space:normal}
 .curbtn .nm{min-width:0;overflow-wrap:anywhere}
 .calc-inner{padding:16px}
 #v-home .cols3{gap:20px}
}

/* ── Повторный проход Impeccable 07.10 (docs/impeccable-audit-2026-10-07.md) ─────────────────────────── */
/* Недоступные способы входа — тихой строкой под формой, без отключённых кнопок. */
.auth-later{margin:16px 0 0;font-size:var(--pay-type-small);color:var(--pay-text-muted);line-height:1.5}
