/* =====================================================================================================================
   RedSwitches v4 · V29 SHELL LAYER (v4-only file, see V4-OVERLAY.txt; wired in header.tpl for redswitches-v4 only)
   ---------------------------------------------------------------------------------------------------------------------
   The approved V29 prototype is the design guide for every v4 screen. custom.css and rx.css are shared with the live
   v2 theme and must stay byte-identical, so v4 brings them to V29 here, loaded after both and before rx-dark-*.css:
   - 1  tokens: custom.css :root re-pointed at the V29 palette and type scale (one font system: Inter for UI,
        IBM Plex Sans for copyable literals; no monospace, no DM Sans), plus link / focus tokens Dark re-points.
   - 2+ the shared components at V29 sizes: shell (rail, top bar, tab bar), headings, buttons, forms, tables, alerts,
        badges, cards, modals, drawers, palette, toast. Shapes and sizes only change here; rx-dark-shell.css changes colour.
   Values: reviews/v4-build/uiux/V29-DESIGN-SPEC.md. No uppercase, no positive tracking, sizes fixed at every width.
   ===================================================================================================================== */

/* ---------- 1 · tokens ---------- */
:root{
  --black:#111827;--white:#fff;
  --gray-950:#0e0d1a;--gray-900:#111827;--gray-850:#111827;--gray-800:#374151;--gray-700:#374151;--gray-600:#4b5563;
  --gray-500:#6b7280;--gray-400:#6b7280;--gray-300:#b8bec8;--gray-200:#d1d5db;--gray-150:#e5e7eb;--gray-100:#f3f4f6;
  --gray-75:#f3f4f6;--gray-50:#f7f8fa;--gray-25:#f9fafb;
  --bg-deep:#fff;--bg-primary:#f7f8fa;--bg-secondary:#f9fafb;--bg-card:#fff;--bg-card-hover:#f9fafb;--bg-surface:#f3f4f6;--bg-terminal:#0e0d1a;
  --text-primary:#111827;--text-secondary:#374151;--text-muted:#6b7280;--text-heading:#111827;
  --accent:#14123f;--accent-dim:#26236a;
  --border:#e5e7eb;--border-hover:#b8bec8;--border-active:#d1d5db;--border-strong:#b8bec8;
  --brand-red:#d23c4b;--brand-orange:#d97706;--brand-blue:#4f46e5;--brand-navy:#14123f;
  --hint-pink:#fdeef0;--hint-pink-text:#8a1c28;--hint-green:#e8f6f1;--hint-green-text:#05603f;--hint-amber:#fff7e8;--hint-amber-text:#7a3e05;
  --shadow-sm:0 1px 2px rgba(17,24,39,.06);--shadow-md:0 12px 30px rgba(17,24,39,.12);--shadow-lg:0 24px 60px rgba(17,24,39,.18);
  --font:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --mono:"IBM Plex Sans","Inter",system-ui,sans-serif;
  --t-section:28px;--t-card:17px;--t-micro:11px;--t-stat:28px;--t-nav:14px;--t-btn:14px;
  /* v4 additions (Dark re-points them in rx-dark-shell.css) */
  --rx-link:#4f46e5;--rx-link-hi:#3730a3;--rx-focus:#4f46e5;--rx-ring:0 0 0 3px rgba(79,70,229,.15);--rx-on-accent:#fff;
  --rx-sel-bg:#eef0ff;--rx-sel-ink:#3730a3;--rx-err:#d23c4b;
  --rx-scrim:rgba(10,10,20,.48);--rx-sheet-sh:0 30px 60px -20px rgba(0,0,0,.55);--rx-pop-sh:0 12px 30px rgba(17,24,39,.12)
}

/* ---------- 2 · base: Inter 14/1.5, ink #111827 on #f7f8fa; figures Inter 600 tabular, literals Plex Sans ---------- */
body.rs-body{font-family:var(--font);font-size:14px;line-height:1.5;color:var(--text-primary);background:var(--bg-primary);font-feature-settings:"calt" 0}
.rs-body a:where(:not(.rxd4 *,#rx-track *)){color:var(--text-primary)}
.rs-body a:hover:where(:not(.rxd4 *,#rx-track *)){color:var(--text-secondary)}
/* inline links in running text read as V29 links; classed anchors (nav, menus, cards, buttons) keep their own colour */
.rs-body :is(p,li,td,dd,small,label,.form-text,.help-block,.text-muted)>a:not([class]):where(:not(.rxd4 *,#rx-track *)){color:var(--rx-link)}
.rs-body :is(p,li,td,dd,small,label,.form-text,.help-block,.text-muted)>a:not([class]):hover:where(:not(.rxd4 *,#rx-track *)){color:var(--rx-link-hi);text-decoration:underline}
.rs-body .dropdown-item:where(:not(.rxd4 *,#rx-track *)){color:var(--text-primary)}
.rs-body .stat:where(:not(.rxd4 *,#rx-track *)),.rs-body .amount:where(:not(.rxd4 *,#rx-track *)),td .price,.rs-num,.rs-wallet-amt,.rs-rail-wallet-amt,.rs-stat-value,.rs-body .tile .stat:where(:not(.rxd4 *,#rx-track *)){font-family:var(--font);font-variant-numeric:tabular-nums}
.rs-body code:where(:not(.rxd4 *,#rx-track *)),.rs-body kbd:where(:not(.rxd4 *,#rx-track *)),.rs-mono{font-family:var(--mono);letter-spacing:-.01em}
.rs-body :focus-visible:where(:not(.rxd4 *,#rx-track *)){outline:2px solid var(--rx-focus);outline-offset:2px;border-radius:6px}
.rx-btn:focus-visible,.rx-cp:focus-visible,.rx-seg button:focus-visible,.rx-host:focus-visible,.rx-go a:focus-visible,.rx-rail a:focus-visible,.rx-rail button:focus-visible,.rx-rail summary:focus-visible,.rx-top button:focus-visible,.rx-top a:focus-visible,.rx-tabbar a:focus-visible{outline:2px solid var(--rx-focus);outline-offset:2px}

/* ---------- 3 · app shell: rail, top bar, user block, phone tab bar (all Inter; sizes fixed at every width) ---------- */
.rx-rail,.rx-top,.rx-tabbar,.rx-shell{font-family:var(--font)}
.rx-shell{--rail-w:232px}
.rx,.rx-shell{font-size:14px}
.rx-deploy{font:600 14px/1.35 var(--font);height:36px;border-radius:9px}   /* owner 2026-11-01: bell-height, not a banner */
.rx-nav a,.rx-nav-btn{font:500 14px var(--font)}
.rx-av{font:500 12px var(--font)}
.rx-me-n{font:500 13.5px/1.45 var(--font)}
.rx-me-c{font-size:12px;line-height:1.25}
.rx-top{height:56px}
.rx-top-search{font:400 14px var(--font);max-width:480px;height:36px}
.rx-tabbar a{font:500 11px var(--font);letter-spacing:normal}
.rx-tab-deploy span{background:var(--brand,#14123f)}
body.rs-v2 .rx-shell #main-body{padding:24px 32px 40px}
.rx-dc-flags img{box-shadow:0 0 0 1px rgba(17,24,39,.08)}
/* old shell (guests, website cart): labels sentence case, current item = V29 selection */
.rs-rail-nav li.active>a{background:var(--rx-sel-bg);color:var(--rx-sel-ink)}
.rs-rail-nav li.active>a i,.rs-rail-nav>.navbar-nav>li.active>a::before{color:var(--rx-sel-ink)}
.rs-rail-wallet-label{font-size:12px;text-transform:none;letter-spacing:normal}
.rs-rail-wallet-amt{font-size:14px;font-weight:600}
.rs-wallet-amt{font-weight:600}
.rs-avatar{text-transform:none;font-size:12px}
.rs-icon-btn .badge{font-family:var(--font);font-weight:600}
.rs-rail-scrim{background:var(--rx-scrim);backdrop-filter:blur(3px)}
.rs-footer-head{font-size:12px;font-weight:500;letter-spacing:normal;text-transform:none;color:var(--text-muted)}
.rs-body #footer.rs-footer .copyright:where(:not(.rxd4 *,#rx-track *)),.rs-body #footer.rs-footer .nav-link:where(:not(.rxd4 *,#rx-track *)),.rs-body #footer.rs-footer a:where(:not(.rxd4 *,#rx-track *)),.rs-footer-focus-links a{font-size:12.5px}
.rs-footer-focus .copyright{font-size:12px}
@media (max-width:860px){
  body.rs-v2 .rx-shell #main-body{padding:16px 14px calc(84px + env(safe-area-inset-bottom,0px))}
  .rx-icon-btn{width:44px;height:44px}
  .rx-top-search{flex:0 0 44px;width:44px;height:44px}
  .rx-btn,.rx-btn.sm{min-height:44px}
}

/* ---------- 4 · headings: page 28/700/1.15/-.015em · section 22/600 · card 17/600 · item 16/600 ---------- */
.rx-h1,.rs-body .rx-h1:where(:not(.rxd4 *,#rx-track *)){font:700 28px/1.15 var(--font);letter-spacing:-.015em}
.rx-sub{font-size:14px;line-height:1.5}
.rs-body h1:where(:not(.rxd4 *,#rx-track *)),.rs-body .h1:where(:not(.rxd4 *,#rx-track *)),.rs-body h2:where(:not(.rxd4 *,#rx-track *)),.rs-body .h2:where(:not(.rxd4 *,#rx-track *)),.rs-body h3:where(:not(.rxd4 *,#rx-track *)),.rs-body .h3:where(:not(.rxd4 *,#rx-track *)),.rs-body h4:where(:not(.rxd4 *,#rx-track *)),.rs-body .h4:where(:not(.rxd4 *,#rx-track *)),.rs-body h5:where(:not(.rxd4 *,#rx-track *)),.rs-body .h5:where(:not(.rxd4 *,#rx-track *)),.rs-body h6:where(:not(.rxd4 *,#rx-track *)),.rs-body .h6:where(:not(.rxd4 *,#rx-track *)){font-family:var(--font);color:var(--text-heading);text-transform:none}
.rs-body h1:where(:not(.rxd4 *,#rx-track *)),.rs-body .h1:where(:not(.rxd4 *,#rx-track *)){font-size:28px;font-weight:700;line-height:1.15;letter-spacing:-.015em}
.rs-body h2:where(:not(.rxd4 *,#rx-track *)),.rs-body .h2:where(:not(.rxd4 *,#rx-track *)){font-size:22px;font-weight:600;line-height:1.25;letter-spacing:-.01em}
.rs-body h3:where(:not(.rxd4 *,#rx-track *)),.rs-body .h3:where(:not(.rxd4 *,#rx-track *)),.rs-body h4:where(:not(.rxd4 *,#rx-track *)),.rs-body .h4:where(:not(.rxd4 *,#rx-track *)),.rs-body h2.h4:where(:not(.rxd4 *,#rx-track *)),.rs-body .card-title:where(:not(.rxd4 *,#rx-track *)),.rs-body .modal-title:where(:not(.rxd4 *,#rx-track *)),.rs-body .panel-title:where(:not(.rxd4 *,#rx-track *)){font-size:17px;font-weight:600;line-height:1.3;letter-spacing:-.005em}
.rs-body h5:where(:not(.rxd4 *,#rx-track *)),.rs-body .h5:where(:not(.rxd4 *,#rx-track *)){font-size:16px;font-weight:600;line-height:1.35;letter-spacing:normal}
.rs-body h6:where(:not(.rxd4 *,#rx-track *)),.rs-body .h6:where(:not(.rxd4 *,#rx-track *)){font-size:14px;font-weight:600;line-height:1.45;letter-spacing:normal}
.rs-body .card-header:where(:not(.rxd4 *,#rx-track *)),.rs-body .panel-heading:where(:not(.rxd4 *,#rx-track *)){letter-spacing:normal}
.rx-card-t,.rx-h2,.rx-drawer-h h2,.rx-keys-h,.rs-body .rx-card-t:where(:not(.rxd4 *,#rx-track *)),.rs-body .rx-h2:where(:not(.rxd4 *,#rx-track *)),.rs-body .rx-drawer-h h2:where(:not(.rxd4 *,#rx-track *)),.rs-body .rx-keys-h:where(:not(.rxd4 *,#rx-track *)){font:600 17px/1.3 var(--font);letter-spacing:-.005em}
.rx-blank h2,.rx-deploy-cta h2,.rs-body .rx-blank h2:where(:not(.rxd4 *,#rx-track *)),.rs-body .rx-deploy-cta h2:where(:not(.rxd4 *,#rx-track *)){font:600 22px/1.25 var(--font);letter-spacing:-.01em}
.rx-who b{font:600 16px/1.35 var(--font)}

/* ---------- 5 · buttons: 14/600/1.35 · 40px (sm 34px, lg 48px) · radius 8 · navy primary ---------- */
.rx-btn{font:600 14px/1.35 var(--font)}
.rx-btn.sm{font-size:14px}
.rx-btn:hover{border-color:#b8bec8}
.rx-btn.danger:hover{background:#b42318;border-color:#b42318}
.rs-body .btn:where(:not(.rxd4 *,#rx-track *)){font-family:var(--font);font-size:14px;font-weight:600;line-height:1.35;padding:9.5px 14px;letter-spacing:normal;text-transform:none}
.rs-body .btn-sm:where(:not(.rxd4 *,#rx-track *)),.rs-body .btn-group-sm>.btn:where(:not(.rxd4 *,#rx-track *)){font-size:14px;padding:6.5px 12px}
.rs-body .btn-lg:where(:not(.rxd4 *,#rx-track *)),.rs-body .btn-group-lg>.btn:where(:not(.rxd4 *,#rx-track *)){font-size:14px;padding:13.5px 18px}
.rs-body .btn-primary:where(:not(.rxd4 *,#rx-track *)),.rs-body .btn-success:where(:not(.rxd4 *,#rx-track *)),.rs-body .btn-checkout:where(:not(.rxd4 *,#rx-track *)),.rs-body .modal-submit:where(:not(.rxd4 *,#rx-track *)){background:var(--accent);border-color:var(--accent);color:var(--rx-on-accent)}
.rs-body .btn-primary:hover:where(:not(.rxd4 *,#rx-track *)),.rs-body .btn-success:hover:where(:not(.rxd4 *,#rx-track *)),.rs-body .btn-checkout:hover:where(:not(.rxd4 *,#rx-track *)),.rs-body .modal-submit:hover:where(:not(.rxd4 *,#rx-track *)),.rs-body .btn-primary:not(:disabled):active:where(:not(.rxd4 *,#rx-track *)),.rs-body .btn-success:not(:disabled):active:where(:not(.rxd4 *,#rx-track *)){background:var(--accent-dim);border-color:var(--accent-dim);color:var(--rx-on-accent)}
.rs-body .btn-default:hover:where(:not(.rxd4 *,#rx-track *)),.rs-body .btn-secondary:hover:where(:not(.rxd4 *,#rx-track *)),.rs-body .btn-light:hover:where(:not(.rxd4 *,#rx-track *)){background:var(--gray-50)}
.rs-body .btn-danger:hover:where(:not(.rxd4 *,#rx-track *)){background:#b42318;border-color:#b42318}
.rs-body .btn-link:where(:not(.rxd4 *,#rx-track *)){color:var(--rx-link)}
.rs-body .btn-link:hover:where(:not(.rxd4 *,#rx-track *)){color:var(--rx-link-hi)}
.rs-panel .card-header .btn{font-size:14px;padding:6.5px 12px}
.rs-topbar .rs-btn--primary:hover,.rs-auth .rs-btn--primary:hover{background:var(--accent-dim)}
.rs-auth .rs-btn,.rs-btn-sm{font-size:14px!important;font-weight:600}
.rs-auth .rs-btn{height:40px}
body.rs-v2 table.table-list .btn{font:600 14px/1.35 var(--font)!important;padding:6.5px 12px!important}
body.rs-v2 .rx-shell #alertUnpaidInvoice .btn,body.rs-v2 .rx-shell #alertOverdueInvoice .btn{font:600 14px var(--font)}
.rs-body .verification-banner .btn-resend-verify-email:where(:not(.rxd4 *,#rx-track *)),.rs-body .verification-banner .btn-action:where(:not(.rxd4 *,#rx-track *)){background:var(--accent)!important;border-color:var(--accent)!important;color:var(--rx-on-accent)!important;font-size:14px;line-height:1.35;padding:6.5px 12px}
.rs-body .verification-banner .btn-resend-verify-email:hover:where(:not(.rxd4 *,#rx-track *)),.rs-body .verification-banner .btn-action:hover:where(:not(.rxd4 *,#rx-track *)){background:var(--accent-dim)!important}
.rs-body .verification-banner .text:where(:not(.rxd4 *,#rx-track *)){font-size:14px}
.rs-invtab.is-active{background:var(--rx-sel-bg);border-color:var(--rx-focus);color:var(--rx-sel-ink)}

/* ---------- 6 · forms: 44px · padding 0 12px · 1px #d1d5db · radius 8 · focus #4f46e5 + 3px ring ---------- */
.rs-body .form-control:where(:not(.rxd4 *,#rx-track *)),.rs-body .custom-select:where(:not(.rxd4 *,#rx-track *)){font-family:var(--font);font-size:14px;line-height:1.3;color:var(--text-primary);border-color:var(--border-active)}
.rs-body .form-control:not(textarea):not([multiple]):not([size]):not(.form-control-sm):not(.form-control-lg):not([type=file]):where(:not(.rxd4 *,#rx-track *)),.rs-body .custom-select:not([multiple]):not([size]):where(:not(.rxd4 *,#rx-track *)){height:44px;padding-top:0;padding-bottom:0}
.rs-body textarea.form-control:where(:not(.rxd4 *,#rx-track *)){padding:10px 12px}
.rs-body .form-control:where(:not(.rxd4 *,#rx-track *)),.rs-body .custom-select:where(:not(.rxd4 *,#rx-track *)){padding-left:12px;padding-right:12px}
.rs-body .form-control:focus:where(:not(.rxd4 *,#rx-track *)),.rs-body .custom-select:focus:where(:not(.rxd4 *,#rx-track *)),.rs-body .dataTables_filter input:focus:where(:not(.rxd4 *,#rx-track *)){border-color:var(--rx-focus);box-shadow:var(--rx-ring);outline:0}
.rs-body .form-control:where(:not(.rxd4 *,#rx-track *))::placeholder{color:var(--text-muted)}
.rs-body label:where(:not(.rxd4 *,#rx-track *)),.rs-body .control-label:where(:not(.rxd4 *,#rx-track *)){font-size:12px;font-weight:400;line-height:1.45;color:var(--text-secondary);margin-bottom:4px}
.rs-body .form-check-label:where(:not(.rxd4 *,#rx-track *)),.rs-body .custom-control-label:where(:not(.rxd4 *,#rx-track *)),.rs-body label.checkbox:where(:not(.rxd4 *,#rx-track *)),.rs-body label.radio:where(:not(.rxd4 *,#rx-track *)),.rs-body label:has(>input[type=checkbox]):where(:not(.rxd4 *,#rx-track *)),.rs-body label:has(>input[type=radio]):where(:not(.rxd4 *,#rx-track *)){font-size:13.5px;font-weight:400;color:var(--text-primary)}
.rs-body input[type=checkbox]:where(:not(.rxd4 *,#rx-track *)),.rs-body input[type=radio]:where(:not(.rxd4 *,#rx-track *)){accent-color:var(--rx-focus)}
.rs-body .custom-control-input:checked~.custom-control-label:where(:not(.rxd4 *,#rx-track *))::before{background-color:var(--rx-focus);border-color:var(--rx-focus)}
.rs-body .custom-control-input:focus~.custom-control-label:where(:not(.rxd4 *,#rx-track *))::before{box-shadow:var(--rx-ring)}
.rs-body .input-group-text:where(:not(.rxd4 *,#rx-track *)){font-size:14px;color:var(--text-muted);background:var(--gray-50);border-color:var(--border-active)}
.rs-body .invalid-feedback:where(:not(.rxd4 *,#rx-track *)),.rs-body .field-error-msg:where(:not(.rxd4 *,#rx-track *)){font-size:11.5px;line-height:1.3;color:var(--rx-err)}
.rx-input,.rx-lang,.rx-grid2 .rx-input,.rx-country select,.rx-grid2 select,.rx-grid2 input.form-control{font:400 14px/1.3 var(--font)}
input.rx-input,select.rx-input,.rx-lang,.rx-grid2 .rx-input:not(textarea),.rx-country select,.rx-grid2 select,.rx-grid2 input.form-control{height:44px;padding-top:0;padding-bottom:0}
textarea.rx-input{padding:10px 12px}
.rx-input:focus,.rx-lang:focus,.rx-country select:focus,.rx-grid2 select:focus,.rx-grid2 input.form-control:focus{outline:0;border-color:var(--rx-focus);box-shadow:var(--rx-ring)}
.rx-lab{font:400 12px/1.45 var(--font);color:var(--ink2,#374151);margin:14px 0 4px}
.rx-check{font-size:13.5px;line-height:1.45;color:var(--ink,#111827)}
.rx-check input{accent-color:var(--rx-focus);width:18px;height:18px;margin-top:1px}
.rx-err{font-size:11.5px;line-height:1.3;color:var(--rx-err)}
.rx-filter input{font:400 14px var(--font)}
/* selection tiles: rest #fff / 1px #e5e7eb / radius 10; selected #eef0ff + #4f46e5 border and inset */
.rx-opt{border-color:var(--line,#e5e7eb);border-radius:10px;padding:10px 12px}
.rx-opt:hover{border-color:#b8bec8}
.rx-opt:has(input:checked){border-color:var(--rx-focus);background:var(--rx-sel-bg);box-shadow:inset 0 0 0 1px var(--rx-focus)}
.rx-opt input{accent-color:var(--rx-focus);width:18px;height:18px;margin-top:1px}
.rx-opt b{font-weight:600;font-size:14px;line-height:1.35}
.rx-opt .rx-mut{font-size:12.5px;line-height:1.45}
.rx-note{border-radius:10px;color:var(--ink,#111827)}
/* segmented control (rx-seg, Servers status tabs, theme switch): 38px box, 30px buttons 13/500, on = #3730a3 on #eef0ff */
.rx-seg{background:var(--bg,#fff);border-color:var(--line2,#d1d5db);padding:3px;gap:2px;min-height:38px}
.rx-seg button{height:30px;padding:0 12px;font:500 13px/1.2 var(--font);color:var(--ink2,#374151)}
.rx-seg button.on,#rx-fun.rx-stabs-home button.on{background:var(--rx-sel-bg);color:var(--rx-sel-ink);box-shadow:none}
.rx-seg button span{color:var(--mut,#6b7280)}
.rx-seg button.on span{color:var(--rx-sel-ink)}
#rx-fun.rx-stabs-home button.attn::before{background:#d97706}
.rx-fun-b{font:500 13px var(--font)}

/* ---------- 7 · tables: header 12/500 #6b7280 on #f7f8fa, 10px 20px · rows 14/400, 14px 20px · hover #f9fafb ---------- */
.rx-table th{font:500 12px var(--font);padding:10px 20px}
.rx-table td{padding:14px 20px}
.rx-host,.rx-nav a,.rx-nav-btn{font-size:14px}
.rx-mono{font-size:13px}
.rs-body .table:where(:not(.rxd4 *,#rx-track *)){font-size:14px}
.rs-body .table thead th:where(:not(.rxd4 *,#rx-track *)){font-size:12px;font-weight:500;letter-spacing:normal;text-transform:none;color:var(--text-muted)}
html body.rs-v2 table.table-list thead th:where(:not(.rxd4 *,#rx-track *)){padding:10px 20px!important}
html body.rs-v2 table.table-list tbody td:where(:not(.rxd4 *,#rx-track *)){padding:14px 20px!important}
html body.rs-v2 table.table-list .label:where(:not(.rxd4 *,#rx-track *)),html body.rs-v2 table.table-list .status:where(:not(.rxd4 *,#rx-track *)){font:600 12px/1 var(--font)!important;padding:5px 8px!important}
html body.rs-v2 .dataTables_paginate .page-link:where(:not(.rxd4 *,#rx-track *)){font:500 13px var(--font)}
html body.rs-v2 .dataTables_paginate .page-item.active .page-link:where(:not(.rxd4 *,#rx-track *)),.rs-body .page-item.active .page-link:where(:not(.rxd4 *,#rx-track *)){background:var(--rx-sel-bg)!important;border-color:var(--rx-focus)!important;color:var(--rx-sel-ink)!important}
html body.rs-v2 .dataTables_paginate .page-item.disabled .page-link:where(:not(.rxd4 *,#rx-track *)),.rs-body .page-item.disabled .page-link:where(:not(.rxd4 *,#rx-track *)){color:var(--text-muted)!important;background:var(--gray-50)}
html body.rs-v2 .dataTables_filter input:where(:not(.rxd4 *,#rx-track *)){height:36px;font:400 14px var(--font)!important}

/* ---------- 8 · alerts: radius 10 · 10px 12px · success / warning / error / info / neutral per V29 ---------- */
html body.rs-v2 .alert:where(:not(.rxd4 *,#rx-track *)){border-radius:10px!important}
.rs-body .alert:where(:not(.rxd4 *,#rx-track *)){font-size:14px;line-height:1.45;padding:10px 12px}
.rs-body .alert-success:where(:not(.rxd4 *,#rx-track *)){background:#e8f6f1;color:#05603f;border-color:#e8f6f1}
.rs-body .alert-danger:where(:not(.rxd4 *,#rx-track *)){background:#fdeef0;color:#8a1c28;border-color:#f5c2c8}
.rs-body .alert-warning:where(:not(.rxd4 *,#rx-track *)){background:#fff7e8;color:#7a3e05;border-color:#f3d39b}
.rs-body .alert-info:where(:not(.rxd4 *,#rx-track *)),.rs-body .alert-primary:where(:not(.rxd4 *,#rx-track *)){background:#eef0ff;color:#111827;border-color:#eef0ff}
.rs-body :is(.alert-secondary,.alert-light,.alert-dark):where(:not(.rxd4 *,#rx-track *)){background:#f7f8fa;color:#374151;border-color:#f7f8fa}
.rs-body .alert :is(.alert-link,a:not(.btn)):where(:not(.rxd4 *,#rx-track *)){color:inherit;text-decoration:underline;font-weight:500}
.rx-alert.ok{border-color:#e8f6f1;background:#e8f6f1;color:#05603f}
.rx-verify.ok{background:#e8f6f1!important;border-color:#e8f6f1!important}
.rx-bell-it.new{border-color:#0e9f6e}
.rx-bell-x{background:#f3f4f6;color:#4b5563}
.rx-bell-x:hover{background:#e5e7eb;color:#111827}
.rx-bell-clear{font:500 12.5px var(--font)}
.rx-help-ref b{font-family:var(--mono);letter-spacing:normal}
.rxp-steps li.now .rxp-dot{background:#eef0ff}
.rs-body .verification-banner:where(:not(.rxd4 *,#rx-track *)){font-family:var(--font)}

/* ---------- 9 · badges + tags: badge 22px 12/600 radius 6 · tag 11/600 1px 7px ---------- */
.rs-body .badge:where(:not(.rxd4 *,#rx-track *)),.rs-body .label:where(:not(.rxd4 *,#rx-track *)){font-family:var(--font);font-size:12px;font-weight:600;line-height:1;padding:5px 8px;letter-spacing:normal;text-transform:none}
.rs-body .badge-success:where(:not(.rxd4 *,#rx-track *)),.rs-body .label-success:where(:not(.rxd4 *,#rx-track *)){background:#e8f6f1;color:#05603f}
.rs-body .badge-danger:where(:not(.rxd4 *,#rx-track *)),.rs-body .label-danger:where(:not(.rxd4 *,#rx-track *)){background:#fdeef0;color:#8a1c28}
.rs-body .badge-warning:where(:not(.rxd4 *,#rx-track *)),.rs-body .label-warning:where(:not(.rxd4 *,#rx-track *)){background:#fef3c7;color:#92400e}
.rs-body .badge-info:where(:not(.rxd4 *,#rx-track *)),.rs-body .label-info:where(:not(.rxd4 *,#rx-track *)),.rs-body .badge-primary:where(:not(.rxd4 *,#rx-track *)),.rs-body .label-primary:where(:not(.rxd4 *,#rx-track *)){background:#eef0ff;color:#3730a3}
.rs-body :is(.badge-secondary,.badge-light,.badge-default,.label-default):where(:not(.rxd4 *,#rx-track *)){background:#f7f8fa;color:#374151}
.rx-tag{font:600 11px/1.2 var(--font);padding:2px 7px}
.rx-dc-badge{height:22px;padding:0 8px 0 7px;gap:5px;background:#fef3c7;color:#92400e;font:600 12px/1 var(--font);letter-spacing:normal}
.rx-dc-badge .rx-i{width:12px;height:12px;fill:#d97706;stroke:#d97706}

/* ---------- 10 · cards, modals, drawers, palette, toast ---------- */
html body.rs-v2 .modal-content:where(:not(.rxd4 *,#rx-track *)){border-radius:16px!important}
.rs-body .modal-content:where(:not(.rxd4 *,#rx-track *)){box-shadow:var(--rx-sheet-sh)}
.modal-backdrop{background-color:rgb(10,10,20)}
.modal-backdrop.show{opacity:.48}
.rx-modal,.rx-drawer,.rx-pal{background:var(--rx-scrim);backdrop-filter:blur(3px)}
.rx-modal-box{border-radius:16px;box-shadow:var(--rx-sheet-sh)}
.rx-pal-box{box-shadow:var(--rx-sheet-sh)}
.rx-toast{font:400 14px var(--font)}
.rs-body .dropdown-menu:where(:not(.rxd4 *,#rx-track *)),.rx-menu-l,.rx-me-menu{box-shadow:var(--rx-pop-sh)}
@media (max-width:640px){.rx-modal{place-items:end center;padding:0}.rx-modal-box{border-radius:18px 18px 0 0;max-width:none}}

/* WHMCS status labels (invoices, tickets, services): V29 tag tones instead of the parent's white-on-colour fills */
.rs-body :is(.label,.status,.badge).status-paid:where(:not(.rxd4 *,#rx-track *)),.rs-body :is(.label,.status,.badge).status-open:where(:not(.rxd4 *,#rx-track *)),.rs-body :is(.label,.status,.badge).status-accepted:where(:not(.rxd4 *,#rx-track *)),.rs-body :is(.label,.status,.badge).status-active:where(:not(.rxd4 *,#rx-track *)),.rs-body :is(.label,.status,.badge).status-completed:where(:not(.rxd4 *,#rx-track *)){background:#e8f6f1;color:#05603f}
.rs-body :is(.label,.status,.badge).status-unpaid:where(:not(.rxd4 *,#rx-track *)),.rs-body :is(.label,.status,.badge).status-overdue:where(:not(.rxd4 *,#rx-track *)),.rs-body :is(.label,.status,.badge).status-fraud:where(:not(.rxd4 *,#rx-track *)),.rs-body :is(.label,.status,.badge).status-lost:where(:not(.rxd4 *,#rx-track *)),.rs-body :is(.label,.status,.badge).status-collections:where(:not(.rxd4 *,#rx-track *)){background:#fdeef0;color:#8a1c28}
.rs-body :is(.label,.status,.badge).status-pending:where(:not(.rxd4 *,#rx-track *)),.rs-body :is(.label,.status,.badge).status-pending-transfer:where(:not(.rxd4 *,#rx-track *)),.rs-body :is(.label,.status,.badge).status-suspended:where(:not(.rxd4 *,#rx-track *)),.rs-body :is(.label,.status,.badge).status-refunded:where(:not(.rxd4 *,#rx-track *)),.rs-body :is(.label,.status,.badge).status-customer-reply:where(:not(.rxd4 *,#rx-track *)),.rs-body :is(.label,.status,.badge).status-redemption:where(:not(.rxd4 *,#rx-track *)){background:#fef3c7;color:#92400e}
.rs-body :is(.label,.status,.badge).status-answered:where(:not(.rxd4 *,#rx-track *)),.rs-body :is(.label,.status,.badge).status-onhold:where(:not(.rxd4 *,#rx-track *)),.rs-body :is(.label,.status,.badge).status-delivered:where(:not(.rxd4 *,#rx-track *)),.rs-body :is(.label,.status,.badge).status-inprogress:where(:not(.rxd4 *,#rx-track *)),.rs-body :is(.label,.status,.badge).status-payment-pending:where(:not(.rxd4 *,#rx-track *)){background:#eef0ff;color:#3730a3}
.rs-body :is(.label,.status,.badge).status-cancelled:where(:not(.rxd4 *,#rx-track *)),.rs-body :is(.label,.status,.badge).status-closed:where(:not(.rxd4 *,#rx-track *)),.rs-body :is(.label,.status,.badge).status-terminated:where(:not(.rxd4 *,#rx-track *)),.rs-body :is(.label,.status,.badge).status-transferred-away:where(:not(.rxd4 *,#rx-track *)),.rs-body :is(.label,.status,.badge).status-expired:where(:not(.rxd4 *,#rx-track *)){background:#f7f8fa;color:#374151}
/* lists, menus, progress, code, tooltip */
.rs-body .list-group-item.active:where(:not(.rxd4 *,#rx-track *)){background:var(--rx-sel-bg);border-color:var(--border);color:var(--rx-sel-ink)}
.rs-body .dropdown-item.active:where(:not(.rxd4 *,#rx-track *)),.rs-body .dropdown-item:active:where(:not(.rxd4 *,#rx-track *)){background:var(--rx-sel-bg);color:var(--rx-sel-ink)}
.rs-body .dropdown-item:where(:not(.rxd4 *,#rx-track *)){font-size:14px}
.rs-body .progress-bar:where(:not(.rxd4 *,#rx-track *)){background-color:var(--rx-focus)}
.rs-body code:where(:not(.rxd4 *,#rx-track *)){color:var(--text-secondary);font-size:12.5px}
.tooltip{font-family:var(--font);font-size:12.5px}
.tooltip-inner{background:#111827;color:#fff;border-radius:8px;padding:6px 10px}
.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^=top] .arrow::before{border-top-color:#111827}
.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^=bottom] .arrow::before{border-bottom-color:#111827}
.rs-body .nav-tabs .nav-link:where(:not(.rxd4 *,#rx-track *)){font-size:14px;font-weight:500;color:var(--text-muted)}
.rs-body .nav-tabs .nav-link.active:where(:not(.rxd4 *,#rx-track *)){color:var(--text-primary)}
@media (max-width:760px){html body.rs-v2 table.table-list thead th:where(:not(.rxd4 *,#rx-track *)){padding:10px 14px!important}html body.rs-v2 table.table-list tbody td:where(:not(.rxd4 *,#rx-track *)){padding:12px 14px!important}}
/* outline buttons = V29 secondary; danger keeps white text inside tables; popover / file input on the V29 palette */
.rs-body :is(.btn-outline-primary,.btn-outline-secondary,.btn-outline-dark,.btn-outline-light,.btn-outline-info,.btn-outline-default):where(:not(.rxd4 *,#rx-track *)){background:#fff;border-color:var(--border-active);color:var(--text-primary)}
.rs-body :is(.btn-outline-primary,.btn-outline-secondary,.btn-outline-dark,.btn-outline-light,.btn-outline-info,.btn-outline-default):hover:where(:not(.rxd4 *,#rx-track *)){background:var(--gray-50);border-color:var(--border-strong);color:var(--text-primary)}
.rs-body .btn-outline-danger:where(:not(.rxd4 *,#rx-track *)){background:#fff;border-color:#f5c2c8;color:#b42318}
.rs-body .btn-outline-danger:hover:where(:not(.rxd4 *,#rx-track *)){background:#fdeef0;border-color:#d23c4b;color:#8a1c28}
.rx-table .rx-btn.danger,.rx-table .rx-btn.danger:hover{color:#fff!important}
.popover{font-family:var(--font);border-color:var(--border);box-shadow:var(--rx-pop-sh);border-radius:10px}
.popover-header{background:var(--gray-50);border-bottom-color:var(--border);font-size:14px;font-weight:600;color:var(--text-primary)}
.rs-body .custom-file-label:where(:not(.rxd4 *,#rx-track *)){border-color:var(--border-active);height:44px;line-height:1.3;padding:12px}
.rs-body .custom-file-label:where(:not(.rxd4 *,#rx-track *))::after{height:42px;line-height:1.3;padding:12px}
.rx-opt:has(input:checked) .rx-mut{color:var(--ink2,#374151)}
.rs-body .badge:where(:not(.rxd4 *,#rx-track *)),.rs-body .label:where(:not(.rxd4 *,#rx-track *)),html body.rs-v2 table.table-list .label:where(:not(.rxd4 *,#rx-track *)),html body.rs-v2 table.table-list .status:where(:not(.rxd4 *,#rx-track *)){display:inline-flex;align-items:center;height:22px;padding-top:0!important;padding-bottom:0!important;border:0}
@media (max-width:360px){.rx-top{gap:4px;padding:0 10px}.rx-top-a{gap:4px}}
@media (max-width:480px){.rx-btn:not(.rx-head-a .rx-btn){max-width:100%;white-space:normal;text-align:center}.rx-head-a .rx-btn{padding:0 10px}}
/* FA-19: the rail's credit line ("Credit $9,196.69") is never cut off: it wraps between label and amount instead of an ellipsis */
.rx-me-c.rx-me-cr{white-space:normal;overflow:visible;text-overflow:clip}
.rx-me-cr .rx-me-amt{white-space:nowrap}
/* FA-23: Billing's three summary cards share one hairline edge; the Due now card's warn/bad state no longer swaps it for
   the fainter rx.css billing edge (the pill carries the state). Light and Dark both read --line. */
#rx-billing .rx-stat.is-warn,#rx-billing .rx-stat.is-bad{border-color:var(--line,#e5e7eb)}
/* Deploy bolt = the golden emoji (owner 2026-11-01): same box as the stroked icons it replaced */
.rx-bolt{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;font-size:15px;line-height:1;font-style:normal}
.rx-tabbar .rx-bolt{width:20px;height:20px;font-size:16px}
.rx-me-menu button{appearance:none;border:0;background:none;text-align:left;cursor:pointer;padding:8px 10px;border-radius:8px;color:var(--rx-ink,#111827);font:inherit;font-size:14px}
.rx-me-menu button:hover{background:var(--rx-hover,#f3f4f6)}
/* UX-5 (2026-11-01): phone account menu. The rail (and its account card) is hidden at <=860px, so [data-rx-me] in the top bar
   opens rx.js's copy of the rail menu (Request a feature, Help, Switch account, Log out) under the bar. Desktop: button hidden. */
.rx-top-me{display:none;padding:0}
.rx-top-me .rx-av{width:28px;height:28px;font-size:11px}
.rx-me-pop{position:fixed;top:calc(56px + 6px);right:12px;z-index:45;min-width:220px;max-width:calc(100vw - 24px);background:var(--bg,#fff);border:1px solid var(--line,#e5e7eb);border-radius:12px;box-shadow:var(--rx-pop-sh,0 12px 30px rgba(17,24,39,.12));padding:6px}
.rx-me-pop[hidden]{display:none}
.rx-me-pop-n{padding:8px 10px 6px;font:500 13.5px var(--font);color:var(--mut,#6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-bottom:1px solid var(--line,#e5e7eb);margin-bottom:4px}
.rx-me-pop .rx-me-menu{position:static;border:0;box-shadow:none;padding:0;background:transparent}
.rx-me-pop .rx-me-menu a,.rx-me-pop .rx-me-menu button{min-height:44px;display:flex;align-items:center}
@media (max-width:860px){.rx-top-me{display:grid}}
