/* Cabinet glue on top of the design system (tokens.css / components.css / pinned.css are copies of design/).
   Only cab-* helpers live here; every visual token comes from tokens.css. Logical properties only (RTL = dir="rtl"). */
.cab-page { padding-block: var(--cs-sp-4, 16px) var(--cs-sp-10, 40px); }
.cab-narrow { max-inline-size: 720px; margin-inline: auto; }
.cab-head { display: grid; gap: 4px; }
.cab-loading { padding-block: 40px; text-align: center; }
.cab-row { display: flex; gap: 8px; align-items: flex-start; }
.cab-row .cs-spinner { color: var(--cs-link); margin-block-start: 3px; }
.cab-mt { margin-block-start: 10px; }
.cab-card-head { justify-content: space-between; margin-block-end: 12px; }
.cab-card-head .cs-card-title { margin: 0; }
.cab-select { min-height: var(--cs-touch, 44px); padding-inline: 12px; border-radius: var(--cs-r-md, 10px); border: 1px solid var(--cs-rule-strong, var(--cs-rule));
  background: var(--cs-surface); color: var(--cs-text); font: inherit; max-inline-size: 100%; min-inline-size: 0; text-overflow: ellipsis; }
.cab-search { inline-size: 100%; min-height: var(--cs-touch, 44px); padding-inline: 12px; margin-block: 4px 8px; border-radius: var(--cs-r-md, 10px);
  border: 1px solid var(--cs-rule-strong, var(--cs-rule)); background: var(--cs-surface); color: var(--cs-text); font: inherit; }
.cab-danger, .cab-danger-link { color: var(--cs-danger) !important; }
.cab-pre-cancel { text-align: center; }
.cab-billing summary { list-style: none; padding-inline: 0; cursor: pointer; }
.cab-billing summary::-webkit-details-marker { display: none; }
.cab-billing[open] summary { margin-block-end: 8px; }
.cab-parts { margin: 0; padding-inline-start: 1.2em; }
.cab-upload { display: grid; gap: 6px; }
.cs-error { color: var(--cs-danger); margin: 0; }
.cab-billing-row { gap: 10px 14px; }
.cab-billing-row .cs-seg { border-radius: 0; }   /* Design 8 Oct: radius 0, same as the landing toggle */
.cab-coins { margin-block-start: -4px; }
.cab-coins button { padding-inline: 14px; }
.cab-divider { display: flex; align-items: center; gap: 10px; color: var(--cs-hint); font-size: var(--cs-fs-sm, 14px); margin: 0; }
.cab-divider::before, .cab-divider::after { content: ""; flex: 1; border-block-start: 1px solid var(--cs-rule); }
.cab-widget { min-height: 48px; display: flex; justify-content: center; }
.cab-checks { margin: 0; padding-inline-start: 1.2em; display: grid; gap: 6px; color: var(--cs-text-2, var(--cs-text)); font-size: 15px; }
.cab-user { position: relative; margin-inline-start: auto; }
.cab-user > summary { list-style: none; cursor: pointer; }
.cab-user > summary::-webkit-details-marker { display: none; }
.cab-menu { position: absolute; inset-inline-end: 0; inset-block-start: calc(100% + 4px); z-index: 20; min-inline-size: 160px; padding: 6px;
  background: var(--cs-surface); border: 1px solid var(--cs-rule); border-radius: var(--cs-r-md, 10px); box-shadow: var(--cs-shadow-lg, 0 8px 24px rgba(0,0,0,.12)); }
.cab-menu .cs-btn { inline-size: 100%; justify-content: flex-start; }
.cab-topbar-end { margin-inline-start: auto; display: flex; align-items: center; gap: 4px; }
#who { display: flex; }

.cab-plans { border: 0; margin: 0; padding: 0; padding-block-start: 12px; min-inline-size: 0; }
/* footer (links + contacts, same as the landing; cs_platform/contact.py) */
.cab-footer { margin-block-start: 48px; padding-block: 28px 20px; border-block-start: 1px solid var(--cs-rule); color: var(--cs-text-2, var(--cs-text)); font-size: 15px; }
.cab-footer-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 20px 32px; }
.cab-footer-h { margin: 0 0 10px; font-size: 13px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--cs-hint); }
.cab-footer-links { margin: 0; padding: 0; list-style: none; display: grid; gap: 4px; }
.cab-footer a { color: var(--cs-link); display: inline-block; min-height: var(--cs-touch, 44px); line-height: var(--cs-touch, 44px); overflow-wrap: anywhere; }
.cab-footer p { margin: 0; }
.cab-footer-rights { margin-block: 16px 0; color: var(--cs-hint); font-size: 13.5px; }

/* ---- pay-first (Design P1/P2, 1 Oct 2026) — only on pay-first screens (PF() adds the classes) ---- */
/* pricing: feature lists as plain text rows between thin rules, no check icons */
.pf-pricing .cs-plan-feats { gap: 0; padding-block-start: 0; }
.pf-pricing .cs-plan-feats li { padding: 8px 0; padding-inline-start: 0; border-block-end: 1px solid var(--cs-rule); }
.pf-pricing .cs-plan-feats li:last-child { border-block-end: 0; }
.pf-pricing .cs-plan-feats li::before { content: none; display: none; }
/* payment method: one text radio row per rail; a rail without credentials is greyed "soon" and disabled */
.pf-methods { border: 0; margin: 0; padding: 0; display: grid; border-block: 1px solid var(--cs-rule); }
.pf-methods legend { float: inline-start; width: 100%; padding: 10px 0 2px; margin: 0; font: 400 var(--cs-fs-sm)/1.3 var(--cs-font-sans); color: var(--cs-hint); }
.pf-method { display: flex; align-items: center; gap: 10px; min-height: 44px; padding-block: 4px; cursor: pointer;
  font: 500 16px/1.3 var(--cs-font-sans); color: var(--cs-text); border-block-start: 1px solid var(--cs-rule); }
.pf-methods legend + .pf-method { border-block-start: 0; }
.pf-method input { width: 18px; height: 18px; margin: 0; accent-color: var(--cs-primary); flex: none; }
.pf-method:has(input:checked) .pf-method-name { font-weight: 700; text-decoration: underline; text-decoration-thickness: 2px;
  text-underline-offset: 6px; text-decoration-color: var(--cs-accent); }
.pf-method:has(input:focus-visible) { outline: 2px solid var(--cs-focus); outline-offset: 2px; }
.pf-method.is-soon { color: var(--cs-hint); cursor: not-allowed; }
.pf-method.is-soon input { opacity: .45; }
.pf-method-soon { font: 600 12.5px/1 var(--cs-font-sans); color: var(--cs-hint); text-transform: lowercase; margin-inline-start: auto; }
/* live: the "add the bot" link on its own line, start-aligned, under the side list */
.cab-kv-note { margin: 6px 0 0; text-align: start; font: 500 14px/1.4 var(--cs-font-sans); }
/* failed / expired payment: a plain message, one primary */
.pf-failed .cs-status { border-block-start: 3px solid var(--cs-danger, var(--cs-accent)); }
.pf-await .cs-kv dd { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 6px 10px; }

/* Design final recheck P1-F6 (NAKA nd, 1 Oct): the 4-step pay-first bar never breaks a label inside a word
   ("Провер|ка" at 360 / 390). Auto-width columns and smaller gaps / type at <= 420px. Labels may still wrap between
   words ("Сайт / работает"). Kept here, not in Design's verbatim components.css (pinned by test_cabinet_theme). */
.cs-stepper.cs-stepper-4 { grid-template-columns: repeat(4, auto); justify-content: space-between; column-gap: 12px; }
.cs-stepper-4 .cs-step { padding-inline-end: 0; }
.cs-stepper-4 .cs-step-label { overflow-wrap: normal; word-break: keep-all; hyphens: manual; }
@media (max-width: 420px) { .cs-stepper.cs-stepper-4 { column-gap: 6px; } .cs-stepper-4 .cs-step { font-size: 12px; } }
/* P1-F5: "Library: monthly only" note under the disabled Yearly toggle */
.cab-mo-only { margin-block-start: 8px; }

/* nd2 (QA cryptochain-230837): long payment values (34-char TRC-20 / 42-char EVM / 48-char TON addresses, memos,
   refund addresses) wrap inside their box instead of widening the page (377px at 360). */
[data-pay-panel] .cs-kv > div { min-width: 0; }
[data-pay-panel] .cs-kv dt { flex: none; }
[data-pay-panel] .cs-kv dd { min-width: 0; }
[data-pay-field="address"], [data-pay-field="memo"],
[data-pay-field="address"] .cs-num, [data-pay-field="memo"] .cs-num, .cab-break { overflow-wrap: anywhere; word-break: break-all; }
[data-pay-field="address"], [data-pay-field="memo"] { display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: baseline; column-gap: var(--cs-sp-2, 8px); }

/* 1 Oct late (pay-first recheck). P1: every value in the pay panel may wrap (Design's rule, verbatim). */
[data-pay-panel] dd .cs-num { overflow-wrap: anywhere; word-break: break-all; min-width: 0; }
/* P2-3: a plan without a yearly price (Library): the disabled "yearly" segment is ink at 40%, no red saving badge;
   the "monthly only" note (.cab-mo-only) stays. */
.cs-seg button:disabled, .cs-seg button[aria-disabled="true"] { color: var(--cs-text); opacity: .4; cursor: not-allowed; }
.cs-seg button:disabled .cs-save, .cs-seg button[aria-disabled="true"] .cs-save { display: none; }
/* P2-2: hosting per plan in the verified-unpaid summary (one line each) */
.cab-host-lines { display: grid; gap: 2px; justify-items: end; }

/* nd3 (pay-first re-shot). P1-b: copy buttons in the pay panel never break inside a word
   (RU "Копировать" broke as "Копироват|ь" at 390 / "Копиров|ать" at 360: the button inherited break-all from the
   address / memo row above). Design's rule, verbatim. */
[data-pay-field] button, .cs-copy-label { word-break: normal; overflow-wrap: normal; white-space: nowrap; }
[data-pay-panel] dd > .cs-btn { word-break: normal; overflow-wrap: normal; white-space: nowrap; }   /* the amount row's Copy too */
/* P2-1: in Arabic, numbers / addresses / amounts / handles (.cs-num, .cs-ltr: Latin runs) use the UI face
   (--cs-font-sans before the RTL override in tokens.css §6), not the Naskh face; the big price keeps its display face
   (components.css [dir="rtl"] .cs-price-big). */
:root:lang(ar) .cs-num:not(.cs-price-big), :root:lang(ar) .cs-ltr:not(.cs-price-big),
[dir="rtl"] .cs-num:not(.cs-price-big), [dir="rtl"] .cs-ltr:not(.cs-price-big) {
  font-family: 'yt-ui', 'Inter Tight', 'Helvetica Neue', Arial, 'yt-naskh', 'Noto Naskh Arabic', sans-serif;
}

/* 8 Oct 2026 pricing (Design pricing-toggle + copy/pricing-2026-10-08.md): the plan card = the landing card.
   Both billings share one grid cell; the unselected one is invisible (aria-hidden), so the toggle never moves the layout. */
.cab-price { display: grid; }
.cab-pv { grid-area: 1 / 1; display: grid; gap: 6px; align-content: start; }
.cab-pv[aria-hidden="true"] { visibility: hidden; }
.cab-big { margin: 0; display: flex; align-items: baseline; flex-wrap: wrap; gap: 2px 6px; }
.cab-per { font: 400 var(--cs-fs-md, 17px)/1.2 var(--cs-font-text); color: var(--cs-text); }
.cab-setup { margin: 0; font: 400 15px/1.35 var(--cs-font-text); color: var(--cs-text); font-variant-numeric: tabular-nums lining-nums; }
.cab-pv .cab-note { margin: 0; font: 400 13px/1.4 var(--cs-font-sans); color: var(--cs-hint); }   /* same as .pc-note */
.cab-fine { margin: 0; font: 400 13px/1.4 var(--cs-font-sans); color: var(--cs-hint); font-variant-numeric: tabular-nums; }
.cab-price .cs-num, .cs-seg .cs-save { font-variant-numeric: tabular-nums lining-nums; }
.cs-seg .cs-save { padding: 0; border: 0; border-radius: 0; background: none; }   /* plain text inside the Yearly button, no pill */
/* the "−21%" part of the Yearly label, per state (Design AA 8 Oct 2026, same values as static/css/pricing.css) */
.cs-seg .cs-save { color: #D6391F; }
.cs-seg button[aria-checked="true"] .cs-save { color: #E2573D; }
:root[data-theme="dark"] .cs-seg .cs-save { color: #E2573D; }
:root[data-theme="dark"] .cs-seg button[aria-checked="true"] .cs-save { color: #A52A15; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .cs-seg .cs-save { color: #E2573D; }
  :root:not([data-theme="light"]) .cs-seg button[aria-checked="true"] .cs-save { color: #A52A15; }
}
.cs-in-telegram .cs-seg button[aria-checked="true"] .cs-save { color: inherit; }   /* Telegram theme colours: keep as before */

/* pay-exact (8 Oct 2026): the exact crypto amount comes first and large. It identifies the order (unique per open
   attempt). Ink text, accent rule (cs-alert-warn), radius 0, no icon. Kept here, not in Design's pinned components.css. */
.cs-pay-exact { font: 700 22px/1.25 var(--cs-font-sans); color: var(--cs-text); font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere; margin: 0; border-radius: 0; }

/* payreview (8 Oct 2026; QA E2E-02/03/06): the pay box's review / expired states replace the amount, address and Copy
   buttons. Ink text on the accent rule (cs-alert-warn), radius 0, no icon, no pill; hello@ is an underlined ink link. */
.cs-pay-review, .cs-pay-expired { border-radius: 0; }
.cs-pay-review .cs-h3, .cs-pay-expired .cs-h3, .cs-pay-review p, .cs-pay-expired p { margin: 0; color: var(--cs-text); }
[data-pay-state="review"] a[data-pay-mail] { color: inherit; text-decoration: underline; text-underline-offset: 2px; overflow-wrap: anywhere; }
.cs-pay-left { font-variant-numeric: tabular-nums; color: var(--cs-text); }

/* Codex F-004 (9 Oct): the signed-out demo summary above the sign-in card (Design may restyle) */
.cab-demo-ctx { gap: 6px; }
.cab-demo-ctx p { margin: 0; }
.cab-demo-ch { display: flex; align-items: center; gap: 12px; }
.cab-demo-ch-txt { display: flex; flex-direction: column; min-inline-size: 0; }
.cab-demo-ch-txt strong { overflow-wrap: anywhere; }
.cab-demo-av { inline-size: 44px; block-size: 44px; border-radius: 50%; flex: none; object-fit: cover; }
.cab-demo-av-letter { display: inline-flex; align-items: center; justify-content: center; background: var(--cs-surface-2, rgba(127,127,127,.15)); font-weight: 600; }
.cab-demo-due { font-weight: 600; }
.cab-demo-back { display: inline-block; padding-block: 10px; }

/* Codex 9 Oct (copy X1 §4 #16): plan picker = who it is for + Library rows; «In both plans» line under the cards */
.cs-plan-for { color: var(--cs-ink-2, inherit); }
.cab-shared { margin-block-start: 4px; }

/* P3 W3: the bad-archive error links the export how-to; 44px tap target */
.cab-how-link { display: inline-block; min-height: var(--cs-touch, 44px); line-height: var(--cs-touch, 44px); color: var(--cs-link); text-decoration: underline; }

/* r1.8 (QA r1.7): the channel status chip never shrinks (RU «Подтверждён» clipped at 390); a too-narrow row wraps it below.
   Here, not in components.css (Design's hash-pinned file). */
.cs-channel { flex-wrap: wrap; }
.cs-channel > .cs-badge { flex: 0 0 auto; max-width: 100%; }
/* cabinet-r1 (design/simplify/cabinet-r1/site/k/cabinet-r1.css, Design 22 Oct): states A and C. 1px rules, radius 0, no shadows. */
.cab-langsel select{font:inherit;font-size:15px;min-height:44px;background:transparent;color:inherit;border:1px solid currentColor;border-radius:0;padding:0 8px;margin-inline-end:8px}
.k-main{min-height:calc(100vh - 90px);padding:40px 20px 64px}
.k-col{max-width:520px;margin:0 auto}
.k-h{font-family:var(--cs-font-serif);font-weight:600;font-size:34px;line-height:1.15;margin:0 0 12px;color:var(--cs-ink,#111)}
.k-why,.k-meta,.k-addr,.k-name,.k-link,.k-help{font-family:var(--cs-font-text);font-size:18px;line-height:1.5;margin:0}
.k-why{margin-bottom:28px}
.k-addr{font-family:var(--cs-font-sans);font-size:17px;margin-bottom:24px;border-top:1px solid currentColor;border-bottom:1px solid currentColor;padding:12px 0}
.k-act{margin:0 0 32px}
.k-main .k-btn{display:flex;width:100%;align-items:center;justify-content:center;min-height:52px;padding:0 24px;background:#D6391F;color:#FBFAF7!important;border:1px solid #D6391F;border-radius:0;box-shadow:none;font:600 17px/1.2 var(--cs-font-sans);text-decoration:none}
.k-main .k-btn:hover{background:#B82E17;border-color:#B82E17}
.k-main .k-btn:focus-visible,.k-main a:focus-visible{outline:2px solid currentColor;outline-offset:3px}
.k-frame{border:1px solid var(--cs-ink,#111);border-radius:0;box-shadow:none;padding:16px 20px;margin-bottom:28px;background:transparent}
.k-name{font-family:var(--cs-font-serif);font-size:22px;font-weight:600}
.k-meta{color:var(--cs-ink-2,#444)}
.k-rule{border-top:1px solid rgba(17,17,17,.25);padding-top:14px;margin-bottom:28px}
.k-link a,.k-help a{display:inline-flex;align-items:center;min-height:44px;color:inherit;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.k-link a:hover,.k-help a:hover{color:#D6391F}
/* rev 4 (Page Architect 22 Oct rev3 FAIL): the picker sized itself to its longest option (520px) and pushed the page sideways at 360/390.
   Fill the column, never wider than it; long names get an ellipsis when closed and show in full in the open list. */
.k-main{min-width:0;max-width:100%;box-sizing:border-box}
.k-col{min-width:0;max-width:100%}
.k-col .k-h,.k-col .k-name,.k-col .k-addr,.k-col .k-meta,.k-col .k-why{overflow-wrap:anywhere}  /* long unbroken channel titles/handles (rev 4 fixture) also pushed the page */
.k-main .cab-select{display:block;box-sizing:border-box;width:100%;max-width:min(520px,100%);min-width:0;margin:0 auto 24px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
html[dir=rtl] .k-h,html[dir=rtl] .k-why,html[dir=rtl] .k-meta,html[dir=rtl] .k-name,html[dir=rtl] .k-link,html[dir=rtl] .k-help,html[dir=rtl] .k-btn{font-family:var(--cs-font-text);line-height:1.75}
html[data-theme=dark] .k-h,html[data-theme=dark] .k-name{color:#F2EFE8}
html[data-theme=dark] .k-frame{border-color:#F2EFE8}
html[data-theme=dark] .k-meta{color:#C9C5BC}
html[data-theme=dark] .k-rule{border-top-color:rgba(242,239,232,.3)}
@media (min-width:900px){.k-main{padding-top:72px}.k-h{font-size:44px}}
.cab-menu-links{list-style:none;margin:0 0 8px;padding:0}
.cab-menu-links a{display:flex;align-items:center;min-height:44px;padding:0 12px;color:inherit;text-decoration:none}
.cab-menu-links a:hover,.cab-menu-links a:focus-visible{text-decoration:underline}
/* cabinet-r1 rev 3: account menu under 600px (Design spec): full width under the top bar, overlays (no push), solid, Night-aware */
@media (max-width: 599.98px) {
  .cab-menu { position: fixed; inset-inline: 0; inset-block-start: var(--cab-topbar-h, calc(66px + var(--cs-safe-top, 0px))); z-index: 29;
    inline-size: 100%; min-inline-size: 0; margin: 0; padding: 0; background: var(--paper, var(--cs-bg)); border: 0;
    border-block-end: 1px solid var(--cs-rule-strong); border-radius: 0; box-shadow: none;
    max-block-size: calc(100dvh - var(--cab-topbar-h, calc(66px + var(--cs-safe-top, 0px)))); overflow: auto; }
  body .cab-menu { border-color: var(--cs-rule-strong); border-width: 0 0 1px; }
  .cab-menu-links { margin: 0; }
  .cab-menu-links li, .cab-menu > .cs-btn { border-block-end: 1px solid var(--cs-rule-strong); }
  .cab-menu > .cs-btn:last-child { border-block-end: 0; }
  .cab-menu-links a, .cab-menu > .cs-btn { min-block-size: 44px; block-size: 44px; padding: 0 20px; border-radius: 0; box-shadow: none; outline: none; }
  .cab-menu-links a:focus-visible, .cab-menu > .cs-btn:focus-visible { outline: 1px solid var(--cs-rule-strong); outline-offset: -1px; text-decoration: none; }
  .cab-menu-links a:focus:not(:focus-visible), .cab-menu > .cs-btn:focus:not(:focus-visible) { outline: none; }
}

/* css-1022b (Design r6 PLATFORM-NOTES "QA 1022 r18" #1): no mid-word breaks in the 5-step stepper.
   Design specified this for components.css; placed here (loaded after it, same selectors) because components.css is hash-pinned (test_cabinet_theme). */
@media (max-width:599.98px){
  .cs-stepper:not(.cs-stepper-4){display:flex;flex-wrap:wrap;column-gap:12px;row-gap:4px}
  .cs-stepper:not(.cs-stepper-4)>.cs-step{flex:1 0 auto;min-width:0}
}
.cs-step-label,.cs-step-opt{overflow-wrap:normal;word-break:normal;hyphens:none}

/* --- r67 phase-a (22 Oct 2026) --- r6.1-r6.7 cabinet home + home consent gate, ported from the mock overlays
   design/simplify/r6/site-r67/css/simplify-r1-cab.css, simplify-r2-cab.css, simplify-r63.css, simplify-r64.css.
   Only the home / consent rules, every selector scoped to .s-cab (rendered only with config consentGate.enabled),
   so with the flag off nothing here matches. components.css untouched (hash-pinned). Not ported: sign-in, verify,
   pay, landing, demo and top-bar rules (later phases); the r6.4/r6.5c ES 530px side push (removed in r6.7). */
/* simplify-r1-cab.css */
.s-cab-task h2{margin-top:0}
.s-cab-facts dl{margin:0}
.s-cab-textbtn{background:none;border:0;padding:0 0;min-height:44px;font:600 14px var(--f-ui,'Inter Tight',sans-serif);color:inherit;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.s-cab .cs-badge{border-radius:0}
.s-cab .cs-h1{font-size:32px;line-height:1.1}
.s-cab .cs-h2,.s-cab .cs-status h2,.s-cab .cs-card-title{font-size:22px;line-height:1.2}
@media (min-width:900px){.s-cab .cs-h1{font-size:40px}.s-cab .cs-h2,.s-cab .cs-status h2,.s-cab .cs-card-title{font-size:26px}}
.s-cab .cs-lead,.s-cab .cs-status-text,.s-cab dd,.s-cab dt,.s-cab li,.s-cab .cs-btn,.s-cab .cs-channel-title,.s-cab strong{font-size:16px}
.s-cab .cs-fine,.s-cab .cs-hint,.s-cab .cs-step-label,.s-cab .cs-help,.s-cab .cs-help a,.s-cab .s-cab-textbtn,.s-cab .cs-badge{font-size:13px}
.s-cab .cs-btn{border-radius:0}
.s-cab-facts dt a{display:inline-flex;align-items:center;min-height:44px}
/* simplify-r2-cab.css: consent box (r3/r5), disabled gate button (r5.1), home consent spacing (r6), fold fixes (r6.1 H1) */
.s-cab .s-consent{display:flex;gap:8px;align-items:flex-start;min-height:44px;cursor:pointer}
.s-cab .s-consent44{display:flex;gap:4px;align-items:flex-start;min-height:44px;cursor:pointer}
.s-cab .s-cbx{position:relative;flex:none;width:44px;height:44px;margin:-12px 0 0 -13px;display:inline-flex;align-items:center;justify-content:center}
[dir=rtl] .s-cab .s-cbx{margin:-12px -13px 0 0}
.s-cab .s-cbx input{position:absolute;inset:0;width:44px;height:44px;margin:0;opacity:0;cursor:pointer}
.s-cab .s-cbx-box{width:18px;height:18px;box-sizing:border-box;border:1px solid currentColor;border-radius:0;background:transparent}
.s-cab .s-cbx input:checked+.s-cbx-box{background:currentColor url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath d='M4 9.5l3 3 7-7' fill='none' stroke='%23FBFAF7' stroke-width='2'/%3E%3C/svg%3E") center/18px 18px no-repeat}
html[data-theme="dark"] .s-cab .s-cbx input:checked+.s-cbx-box{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath d='M4 9.5l3 3 7-7' fill='none' stroke='%2317140F' stroke-width='2'/%3E%3C/svg%3E")}
.s-cab .s-cbx input:focus-visible+.s-cbx-box{outline:2px solid currentColor;outline-offset:3px}
.s-cab .cs-btn.cs-btn-primary.s-gate-go[aria-disabled="true"]{opacity:1;background:#FBFAF7;border:1px solid #111;color:#6B6B6B;cursor:not-allowed;box-shadow:none}
html[data-theme="dark"] .s-cab .cs-btn.cs-btn-primary.s-gate-go[aria-disabled="true"]{background:#17140F;border-color:#EAE4D8;color:#8A8A8A}
.s-cab .s-gate-hint{margin:0}
.s-home-consent .cs-status-actions{margin-top:8px}
@media (min-width:900px){
 body:has(.s-cab-facts) main{min-height:calc(100vh - 65px);min-height:calc(100svh - 65px);box-sizing:border-box}
 /* rev2.2 (NAKA via Page Architect): r67 homes (flag on; gated + ticked): no fold push, no empty band above the footer; other homes keep simplify-r2-cab l.145 */
 body:has(.s-home67) main{min-height:0}
 .s-home-consent .cs-cabinet-side .s-cab-cancel{margin-top:16px}
}
/* simplify-r63.css item 2: Arabic line boxes (scoped to the home) */
:lang(ar) .s-cab :is(h1,h2,h3,.cs-h1,.cs-h2),[dir=rtl] .s-cab :is(h1,h2,h3,.cs-h1,.cs-h2){line-height:1.75}
/* simplify-r64.css r6.4 (B): Arabic line-height 1.75 for body text (scoped to the home) */
html:lang(ar) .s-cab,html:lang(ar) .s-cab *:not(svg):not(svg *){line-height:1.75!important}
/* simplify-r64.css r6.5b: ES home 390, token spacing only */
@media (max-width:599.98px){
 html[lang=es] .s-cab .cs-card{padding-block:var(--cs-sp-8)!important}
 html[lang=es] .s-cab .cs-kv>div{padding-block:var(--cs-sp-6)!important}
 html[lang=es] .s-cab .cs-card .cs-fine,html[lang=es] .s-cab .cs-hint{font-size:var(--cs-fs-md)!important;line-height:1.6!important;margin-top:var(--cs-sp-4)!important}
 html[lang=es] .s-cab .cs-status-text{font-size:var(--cs-fs-lg)!important;margin-block:var(--cs-sp-4)!important}
 html[lang=es] .s-cab .cs-status-actions{margin-block:var(--cs-sp-6)!important}
 html[lang=es] .s-cab .s-cab-cancel,html[lang=es] .s-cab .cs-help{margin-top:var(--cs-sp-6)!important}
 html[lang=es] .s-cab .cs-card .cs-fine{margin-top:var(--cs-sp-6)!important}
}
/* simplify-r64.css r6.5c minus the 530px push (r6.7): ES 1280 token spacing */
@media (min-width:900px){
 html[lang=es] .s-cab .cs-cabinet-side .cs-card{padding-block:var(--cs-sp-8)!important}
 html[lang=es] .s-cab .cs-cabinet-side .cs-kv>div{padding-block:var(--cs-sp-6)!important}
 html[lang=es] .s-cab .cs-status-actions{margin-block:var(--cs-sp-6)!important}
}
/* r6.7 ES: no pushes; fine print after the facts card, token gap */
html[lang=es] .s-cab .cs-cabinet-side>.s-cab-fine{margin:var(--cs-sp-4) 0 0}
