/*! FocalShift Ai · Mission Control shell · MC-SHELL-DELIVERY (ruling 454, 11 Sep 2026).
    Generated by build/externalise.py from the shell's own inline block(s) — byte-for-byte the same
    rules/code, moved out of the document so the browser can cache them. The filename carries the
    content hash; a changed file is a new name, never an overwrite. */
/* ── from public_html/_mc_shellA.php: <style> ── */
/* ---- Hex gamification RING draw-in (Hans 6/29): the journey arc animates from empty to its
   real journeyPercent target on load, so progress is visibly drawn. Final state = var(--fsj)
   (the same offset rendered inline), held via forwards. Light/dark safe; honors reduced-motion. */
.fslh-hex svg .fslh-journey{animation:fslhJourneyDraw 1100ms cubic-bezier(.22,.61,.36,1) .15s both;}
@keyframes fslhJourneyDraw{from{stroke-dashoffset:100;}to{stroke-dashoffset:var(--fsj,100);}}
@media(prefers-reduced-motion:reduce){.fslh-hex svg .fslh-journey{animation:none;stroke-dashoffset:var(--fsj,100);}}
/* ---- Plan A layout: Hub header on top, Dreams AI sidebar pushed below it, Vikinger body ---- */
:root{--mctop:64px}
/* panel workspace header — restores the Dreams AI panel-top component + breathing room */
.two-col-sidebar .sidebar-right{padding-top:14px !important}
.mc-wshead{display:flex;align-items:center;gap:10px;padding:2px 4px 13px;margin:0 2px 10px;border-bottom:1px solid #eef0f6}
.mc-wshead-ic{width:33px;height:33px;border-radius:9px;background:none;color:var(--fsc-violet,#514dfa);display:flex;align-items:center;justify-content:center;font-size:18px;flex:0 0 auto}
.mc-wshead b{display:block;font-size:13px;font-weight:800;color:var(--fsc-ink,#2c2c44);letter-spacing:-.01em;line-height:1.15}
.mc-wshead small{font-size:10.5px;color:#6b6d85}
html.fs-dark .mc-wshead small{color:var(--fsc-muted,#6a6a8b)}
body{font-family:'Inter',system-ui,-apple-system,sans-serif !important;background:#f4f5fb !important;margin:0 !important}
/* stack-0729 (Hans): header owns a stacking context ABOVE every page-level sticky/
   positioned column, so EVERY header popover (avatar menu, messages, notifications,
   language, theme, search, progress) overlays page content. Still BELOW the modal/
   scrim layer (1200/1400) and the unified drawer (4999/5000), which must cover it. */
.fslh{z-index:1100 !important}
.two-col-sidebar,.two-col-sidebar .sidebar-twocol,.sidebar-twocol{position:fixed !important;left:0 !important;top:var(--mctop) !important;height:calc(100vh - var(--mctop)) !important;bottom:auto !important;z-index:50 !important}
.two-col-sidebar .sidebar-logo{display:none !important}      /* logo lives in the Hub header */
    /* === Rail fix (Hans 6/27): keep Quick Start/Security + help/sign-out PINNED & visible at the bottom; scroll the workspace tabs when the viewport is short (was: bottom icons pushed off-screen) === */
    .two-col-sidebar .sidebar-left{overflow:hidden !important}
    .two-col-sidebar .sidebar-left > .flex-1{min-height:0 !important}
    .two-col-sidebar .sidebar-left [data-simplebar]{flex:1 1 0% !important;min-height:0 !important;overflow-y:auto !important;overflow-x:hidden !important;width:100% !important}
    .two-col-sidebar #sidebar-tabs-foot,.two-col-sidebar .sidebar-profile{flex:0 0 auto !important}
    .two-col-sidebar .sidebar-left [data-simplebar]::-webkit-scrollbar{width:0;background:transparent}
    /* one-visible-scrollbar law (Hans 7/17): every simplebar panel scrolls with NO visible bar, all layouts, all browsers */
    [data-simplebar]{scrollbar-width:none;-ms-overflow-style:none}
    [data-simplebar]::-webkit-scrollbar{width:0;height:0;background:transparent}
.fslh-tools .fslh-link{text-transform:uppercase;letter-spacing:.04em;font-size:10.5px}   /* Network tools = uppercase + smaller (Hans) */
.fslh-xp.fslh-goalon .fslh-xplabel b{color:var(--fsc-ok,#0d8128)!important}   /* Hans 7/3: goal-mode readout (e.g. $5,000 MRR) = GREEN, matches the green goal bar */
.mc-wshead-ic i.fa-svg-dashboard{display:inline-block;width:16px;height:16px;background:currentColor;-webkit-mask:url(/assets/fs/icon-dashboard.svg) center/contain no-repeat;mask:url(/assets/fs/icon-dashboard.svg) center/contain no-repeat}.mc-wshead-ic i.fa-svg-dashboard:before{content:none}
i.fa-svg-hexcluster{display:inline-block;width:15px;height:15px;background:currentColor;-webkit-mask:url(/assets/fs/icon-hexcluster.svg) center/contain no-repeat;mask:url(/assets/fs/icon-hexcluster.svg) center/contain no-repeat;vertical-align:-2px}i.fa-svg-hexcluster:before{content:none}
i.fa-svg-teamwork{display:inline-block;width:15px;height:15px;background:currentColor;-webkit-mask:url(/assets/fs/icon-hearthandshake.svg) center/contain no-repeat;mask:url(/assets/fs/icon-hearthandshake.svg) center/contain no-repeat;vertical-align:-2px}i.fa-svg-teamwork:before{content:none}
i.fa-svg-hexpulse{display:inline-block;width:15px;height:15px;background:currentColor;-webkit-mask:url(/assets/fs/icon-hexpulse.svg) center/contain no-repeat;mask:url(/assets/fs/icon-hexpulse.svg) center/contain no-repeat;vertical-align:-2px}i.fa-svg-hexpulse:before{content:none}
/* r104: current page highlights INDIGO in the left menu (Hans 7/6; was green) */
.sidebar-right a.fs-cur{background:rgba(97,93,250,.13) !important;color:var(--fsc-violet,#514dfa) !important;border-radius:8px}
.sidebar-right a.fs-cur i{color:var(--fsc-violet,#514dfa) !important}
.sidebar-right a.fs-cur .fs-icm{background:var(--vv,#615dfa) !important}
.fs-icm{display:inline-block;vertical-align:-3px;background:currentColor;-webkit-mask:center/contain no-repeat;mask:center/contain no-repeat;flex:0 0 auto}
.fsnav{position:relative}
.fsnav.open .fsnav-menu{opacity:1 !important;visibility:visible !important;transform:none !important}
.fsnav-tx b{text-transform:uppercase;letter-spacing:.02em}
.fs-dark .fsnav-item:hover .fsnav-tx b,html.fs-dark .fsnav-item:hover .fsnav-tx b,.dark .fsnav-item:hover .fsnav-tx b{color:#1d1e2b !important}
.fs-dark .fsnav-item:hover .fsnav-tx small,html.fs-dark .fsnav-item:hover .fsnav-tx small,.dark .fsnav-item:hover .fsnav-tx small{color:#5b5b76 !important}  /* app-switcher labels uppercase (Hans) */   /* force the app-switcher open (Hub behavior) over the Tailwind cascade */
/* ---- custom sidebar collapse (Collaborate-style: condense + hover-peek) ---- */
.sidebar-right{transition:width .18s ease, opacity .14s ease, padding .18s ease}
.page-wrapper{transition:margin-left .18s ease}
.mc-collapse-btn{position:absolute;top:9px;right:6px;width:24px;height:24px;border:0;border-radius:6px;background:transparent;color:#c2c3d4;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:8;font-size:13px;transition:background .14s,color .14s}
.mc-collapse-btn:hover{background:#f1f1fa;color:var(--fsc-violet,#514dfa)}
.mc-collapse-btn i{transition:transform .2s ease}
body.mc-collapsed .page-wrapper{margin-left:65px !important}
body.mc-collapsed .sidebar-right{width:0 !important;min-width:0 !important;padding-left:0 !important;padding-right:0 !important;opacity:0 !important;overflow:hidden !important;pointer-events:none}
body.mc-collapsed .two-col-sidebar.peek .sidebar-right{position:absolute;left:65px;top:0;bottom:0;width:228px !important;padding:.75rem !important;opacity:1 !important;overflow:auto !important;pointer-events:auto;background:#fff;box-shadow:12px 0 30px -14px rgba(94,92,154,.45);z-index:60}
body.mc-collapsed .mc-collapse-btn i{transform:rotate(180deg)}
/* STANDARD (Hans 7/3): menu closed => every page goes FULL WIDTH; designed max-width applies only while the menu is open */
.page-wrapper>.vk{min-width:0;width:100%}
body.mc-collapsed .page-wrapper{max-width:none !important;width:auto !important}
body.mc-collapsed .vk{max-width:100% !important;min-width:0 !important}
/* ---- bottom language switcher (original FocalShift design: circular flags + native name, scrollable) ---- */
.fs-langbar{border-top:1px solid #ececf4;margin-top:14px;padding-top:12px}
.fs-langbar-h{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.09em;color:#b6b7c9;padding:0 4px 9px}
.fs-langbar-track{display:flex;gap:11px;overflow-x:auto;padding:2px 2px 6px;scrollbar-width:thin}
.fs-langbar-track::-webkit-scrollbar{height:5px}.fs-langbar-track::-webkit-scrollbar-thumb{background:#e0e0ee;border-radius:10px}
.fs-lang{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:5px;text-decoration:none;width:40px;cursor:pointer}
.fs-lang-flag{width:29px;height:29px;border-radius:50%;overflow:hidden;border:1.5px solid #fff;background:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(30,30,60,.20),0 0 0 1px rgba(20,20,50,.06);transition:transform .15s,box-shadow .15s}
.fs-lang-flag img{width:100%;height:100%;object-fit:cover;display:block}
.fs-lang:hover .fs-lang-flag{transform:translateY(-2px) scale(1.05);box-shadow:0 5px 14px rgba(30,30,60,.28)}
.fs-lang:hover .fs-lang-flag{transform:translateY(-2px) scale(1.05);box-shadow:0 5px 14px rgba(30,30,60,.28)}
.fs-lang-name{font-size:10px;font-weight:600;color:var(--fsc-muted,#6a6a8b);text-align:center;line-height:1.1;white-space:nowrap}
.fs-lang,.fs-lang.bg-primary-50,.fs-lang.text-primary{background:transparent !important;border-radius:8px}
.fs-lang[aria-current="true"] .fs-lang-flag{border-color:var(--vv,#615dfa);box-shadow:0 0 0 3px rgba(97,93,250,.18)}
.fs-lang[aria-current="true"] .fs-lang-name{color:var(--fsc-violet,#514dfa);font-weight:700}
.fslh-langsec{border-top:1px solid #f0f0f6;margin-top:6px;padding:11px 4px 2px}
.fs-dark .fslh-langsec,.fs-dark .fs-langbar{border-top-color:rgba(255,255,255,.05)}
.fs-lang{width:40px;gap:5px}
.fs-lang-name{font-size:9.5px}
.fs-langrow{display:flex;align-items:center;gap:3px}
.fs-langnav{flex:0 0 auto;width:24px;height:32px;border:0;background:transparent;color:var(--fsc-muted,#6a6a8b);cursor:pointer;font-size:13px;display:flex;align-items:center;justify-content:center;border-radius:7px;transition:background .14s,color .14s}
.fs-langnav:hover{background:#f1f1fa;color:var(--fsc-violet,#514dfa)}
.fslh-langsec .fs-langbar-track{flex:0 1 auto;width:355px;max-width:100%;justify-content:flex-start;gap:11px;padding:4px 2px;overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none}  /* exactly 6 flags (6*50 + 5*11) visible; rest scroll */
.fslh-langsec .fs-langbar-track::-webkit-scrollbar{display:none}
.page-wrapper{padding:calc(var(--mctop) + 20px) 24px 48px 24px !important;min-height:100vh;background:transparent !important}  /* uniform page bg (no secondary panel) + equal 24px left/right buffer gutter */
/* Vikinger body token system */
/* themeeng1-0808: the three neutral tokens now DERIVE from the governed design tokens
   (private_html/fsd_theme.php emits --fsp-ink/--fsp-sub/--fsp-line just below, at :root
   and .vk, with a dark twin under html.fs-dark). The literal after each comma is the
   fail-safe: the emitter writes nothing at all when the token store is missing or
   corrupt, and these values are byte-for-byte what the shell used before, so the page
   renders identically in that case. --vv/--vg/--va/--vr/--grad are NOT converted — the
   emitter overwrites those properties outright by source order, which it has done since
   Phase 1. */
.vk{--vv:#615dfa;--vc:#41efff;--vi:var(--fsp-ink,#2c2c44);--vm:var(--fsp-sub,#8a8aa6);--vl:var(--fsp-line,#ececf4);--vg:#16c43b;--va:#f5b400;--vr:#ff2e93;--grad:linear-gradient(125deg,#5b21d6 0%,#615dfa 100%);--sh:0 1px 2px rgba(94,92,154,.05),0 16px 34px -28px rgba(94,92,154,.5);color:var(--fsc-ink,#2c2c44);font-size:14px}
.vk .pagehead{margin-bottom:22px}
.vk .pagehead h1{margin:0 0 5px;font-size:24px;font-weight:800;letter-spacing:-.02em;color:var(--fsc-ink,#2c2c44)}
.vk .pagehead p{margin:0;font-size:13.5px;color:var(--fsc-muted,#6a6a8b);line-height:1.55;max-width:760px}
.vk code{background:#eef0fb;color:var(--fsc-violet-2,#5450ee);padding:1px 6px;border-radius:5px;font-size:12px}
.vk .v-card{border:1px solid var(--vl);border-radius:14px;padding:20px;background:var(--fsp-card,#fff);box-shadow:var(--sh)}  /* themeeng1-0808: card surface derives from the governed token */
/* pbp1 row 16 — Hans 7/2 (both videos): reduce border-radius on ALL body content modules platform-wide */
.vk .v-card,.vk .fp-card,.fp-card,.mc-rr-card,.vk .acx .card{border-radius:10px !important}
.vk .hx-hero,.acx .hero{border-radius:16px !important}
.vk .hx-stat,.vk .hx-opp,.vk .hx-tgrp{border-radius:10px !important}
.vk .v-stat .n{font-size:26px;font-weight:800}.vk .v-stat .l{font-size:11px;color:var(--fsc-muted,#6a6a8b);text-transform:uppercase;letter-spacing:.05em;font-weight:600}
.vk .v-btn{height:40px;padding:0 18px;border:0;border-radius:10px;background:var(--grad);color:#fff;font:700 13px inherit;cursor:pointer;display:inline-flex;align-items:center;gap:7px}
.vk .v-btn.sm{height:32px;padding:0 13px;font-size:12px;border-radius:8px}
.vk .v-badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;padding:4px 11px;border-radius:200px;background:#f4f4fb;color:var(--fsc-muted,#6a6a8b)}
.vk .v-badge.ok{background:rgba(22,196,59,.12);color:var(--fsc-ok,#0d8128)}.vk .v-badge.warn{background:rgba(245,180,0,.16);color:var(--fsc-warn,#956600)}.vk .v-badge.bad{background:rgba(255,46,147,.1);color:#c01f6d}
.vk .v-tier{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;padding:4px 11px;border-radius:200px;color:var(--tc);background:color-mix(in srgb,var(--tc) 13%,#fff);border:1px solid color-mix(in srgb,var(--tc) 28%,#fff)}
.vk table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}
.vk th{text-align:left;padding:10px 13px;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--fsc-muted,#6a6a8b);background:#f7f7fb}
.vk th:first-child{border-radius:10px 0 0 10px}.vk th:last-child{border-radius:0 10px 10px 0}
.vk td{padding:12px 13px;border-bottom:1px solid #f3f3fb;color:var(--fsc-ink,#2c2c44);vertical-align:middle}
.vk tr.rowlink{cursor:pointer}.vk tr.rowlink:hover td{background:#fafaff}
.vk .v-circle{width:40px;height:40px;border-radius:50%;flex:0 0 40px;aspect-ratio:1/1;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;overflow:hidden}
.vk .v-circle.lg{width:74px;height:74px;flex:0 0 74px;font-size:24px}
.vk .v-input{width:100%;height:42px;border:1px solid var(--vl);border-radius:11px;padding:0 14px;font:500 14px inherit;color:var(--fsc-ink,#2c2c44);outline:none;background:#fff}
.vk .v-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:#43435f;background:#f4f4fb;padding:7px 13px;border-radius:200px;cursor:pointer}
.vk .v-chip.on{background:var(--grad);color:#fff}
.vk .muted{color:var(--fsc-muted,#6a6a8b)}.vk .flex{display:flex;align-items:center;gap:10px}
/* Underlined top-tab bar — platform-wide (replaces the pill sub-nav). Sticky under the fixed header; active tab = kelly-green word + 2px kelly underline (#16c43b). */
.vk .fs-subnav{display:flex;flex-wrap:wrap;gap:26px;align-items:flex-end;background:#f4f5fb;border:0;border-bottom:1px solid #e7e7f1;border-radius:0;padding:12px 0 0;box-shadow:none;margin:0 0 22px;max-width:none;position:sticky;top:var(--mctop);z-index:45}
.vk .fs-subnav a{display:inline-flex;align-items:center;gap:7px;text-decoration:none;font:600 13.5px Inter,-apple-system,sans-serif;color:#6a6a86;padding:0 1px 11px;margin-bottom:-1px;border-radius:0;border-bottom:2px solid rgba(22,196,59,.16);transition:color .15s ease,border-color .15s ease;white-space:nowrap}
.vk .fs-subnav a i{font-size:13px;opacity:.85}
.vk .fs-subnav a:hover{color:#3a3a52;border-bottom-color:rgba(22,196,59,.5)}
.vk .fs-subnav a.on{color:var(--fsc-ok,#0d8128);font-weight:700;border-bottom-color:var(--vg,#16c43b)}
.vk .fs-subnav a.on i{opacity:1;color:var(--fsc-ok,#0d8128)}

/* ===== CONTRAST-ESTATE — THE CONTRAST TOKEN LINE (founder ruling 326, 2026-09-05) =====
   Mission Control had NO colour tokens. The palette was literal hex repeated per page —
   `#8a8aa6` alone in 257 served files, `#615dfa` in 211 — so there was no single place where a
   contrast decision could be made, and no way for one literal to mean two things in two themes.
   This block MINTS that place. Every value below was solved, not chosen: hue and saturation are
   held EXACTLY at the estate's own values and lightness moves the smallest step that clears
   4.6:1 against every ground the literal was MEASURED on by harness/contrast.mjs over 16 pages
   x 2 themes x 402/1280. The violet line is preserved end to end: light text takes #514dfa, one
   step down from the founder's #615dfa; dark text takes #8b87ff, which is the line's own light
   end. Nothing here paints a background except the four component pairs at the bottom, each of
   which is a white-on-fill pair no token move can reach. */
:root{
  --fsc-ink:#2c2c44;      /* the ink token (.vk --vi) — light stays exactly as it was */
  --fsc-muted:#6a6a8b;    /* the muted-grey family — #8a8aa6 2.98 -> 4.61 on its worst ground */
  --fsc-muted-2:#5f6079;  /* the darker "strong muted" tier, so the hierarchy survives */
  --fsc-violet:#514dfa;   /* brand violet AS TEXT — #615dfa 3.92 -> 4.61 (fills keep #615dfa) */
  --fsc-violet-2:#5450ee;
  --fsc-ok:#0d8128;       /* ok/kelly AS TEXT — the kelly pill's FILL is untouched */
  --fsc-ok-2:#0c7f3d;
  --fsc-danger:#d01e23;
  --fsc-warn:#956600;
  --fsc-pink:#d21772;
  --fsc-pink-2:#d62055;
}
html.fs-dark{
  --fsc-ink:#e9e9f3;
  --fsc-muted:#9a9bb4;
  --fsc-muted-2:#a8a9bd;
  --fsc-violet:#8b87ff;   /* the violet line's own light end — 5.51:1 on #1d1e2b */
  --fsc-violet-2:#8b88f4;
  --fsc-ok:#3ddc73;
  --fsc-ok-2:#2fc463;
  --fsc-danger:#e85d62;
  --fsc-warn:#f0b429;
  --fsc-pink:#ee65a7;
  --fsc-pink-2:#e5537e;
}
/* THE SHELL'S OWN TOKEN LINE, RE-POINTED. `.vk{--vm:…;--vi:…}` (public_html/_mc_shellA.php) is
   Mission Control's real muted/ink token pair — 149 `color:var(--fsc-muted,#6a6a8b)` and 98 `color:var(--fsc-ink,#2c2c44)`
   declarations inherit from it, and NEITHER is ever used as a background (measured: 0 and 1).
   Re-pointing them here fixes every one of those sites from the definition, per ruling 326.
   `--vv` takes only its LIGHT correction: it IS used as a fill 17 times, so its dark end must not
   move here — dark violet TEXT is corrected declaration-by-declaration in half B instead. */
html .vk{--vm:var(--fsc-muted,#6a6a8b);--vi:var(--fsc-ink,#2c2c44);--vv:#514dfa}
html.fs-dark .vk{--vv:#615dfa}

/* Component pairs a token move cannot reach, because the failing half is a FILL or a ground that
   stayed light in dark. Each carries the ratio it replaces, measured by harness/contrast.mjs.
   Every one is prefixed `html ` deliberately: this block is emitted EARLY in the shell, and an
   equal-specificity rule later in source order would win. `html` buys one element of specificity
   and nothing else. */
html.fs-dark .fslh-themeopt.on{background:#2b2d52;color:#e2e2ec}          /* #c9c9d6 on a LIGHT #eef0ff ground in dark — 1.45:1, all 16 pages */
/* NOT SHIPPED — measured and withdrawn: `html.fs-dark .tm-badge{background:#12301f}` fixes the
   mint badge (2.07:1) but hands `.tm-badge.chair`'s violet a green ground (2.14:1). A badge whose
   text colour varies by variant needs a per-variant dark ground, which is a component change, not
   a token. The mint pair stays open and is listed in RECEIPT.md. */
html.fs-dark .bl-test{background:#3a2c07 !important}                      /* light amber tint kept in dark — 1.70:1 */
html .fsnotif-badge{background:#d81b60 !important}                        /* white on #ff2e93 — 3.46 -> 4.95 */
html .cx-dw-x,html .fsdv-send{color:#ffffff !important}                   /* controls on the #615dfa fill — 1.08 / 2.14 -> 4.71 */
html svg circle[fill="#f5b400"]+text{fill:#241a00 !important}             /* division initial — 1.84 -> 8.7 */
html svg circle[fill="#39c8e8"]+text{fill:#062028 !important}             /* division initial — 1.98 -> 8.9 */
html .lg[style*="#f59e0b"],html .lg[style*="#f5b400"]{color:#3a2a00 !important}  /* calendar legend chip — 2.15 -> 6.5 */

/* ===== FocalShift GLOBAL DARK-MODE LAYER (Q11 S3) — scoped to html.fs-dark; light mode untouched ===== */
html.fs-dark body{background:#13131c !important}
/* themeeng1-0808: the dark twin of the .vk token line, same contract — derive from the
   emitted dark tokens, keep the previous literals as the fail-safe fallback. */
.fs-dark .vk{--vi:var(--fsp-ink,#e9e9f3);--vm:var(--fsp-sub,#b9bacb);--vl:var(--fsp-line,#2e2f44);--sh:0 1px 2px rgba(0,0,0,.45),0 16px 34px -26px rgba(0,0,0,.75);color:var(--fsp-ink,#e9e9f3)}
/* structural surfaces (class-based cards/panels) */
.fs-dark .vk .v-card,.fs-dark .vk .hx-quest,.fs-dark .vk .hx-tool,.fs-dark .vk .hx-credbottom,.fs-dark .mc-rr-card{background:var(--fsp-card,#1d1e2b) !important;border-color:var(--fsp-line,#2e2f44) !important}  /* themeeng1-0808 */
.fs-dark .vk .v-card:hover,.fs-dark .vk .hx-tool:hover,.fs-dark .mc-rr-card:hover{border-color:#3b3c5a !important}
.fs-dark .vk th{background:#191a26 !important;color:#b9bacb !important}
.fs-dark .vk tr.rowlink:hover td{background:#222336 !important}
.fs-dark .vk .v-input{background:#191a26 !important;border-color:#2e2f44 !important;color:#e9e9f3 !important}
.fs-dark .vk .v-chip{background:#23243a !important;color:#cfd0e4 !important}
/* T-VCHIP-DARK (MC-CORE-SHOULD-1, 7 Sep 2026) — A SELECTED FILTER MUST LOOK SELECTED.
   The rule directly above carries !important and does NOT exclude `.on`, and no
   `.fs-dark .vk .v-chip.on` rule existed anywhere in this file — so :567's
   `.vk .v-chip.on{background:var(--grad);color:#fff}` lost in dark, on all nine front-end
   pages that filter with .v-chip, on the estate's DEFAULT theme. MEASURED LIVE 7 Sep on
   /partner-commissions.php at 1440: selected and unselected were IDENTICAL in dark on all
   three properties (bg rgb(35,36,58) / image none / colour rgb(207,208,228)), while light
   showed the gradient. WO-MCCLUSTERS-0831 corrected this scoped to #fscd rather than
   rewriting a shared surface from a page; this is that one line, at the source. */
.fs-dark .vk .v-chip.on{background:var(--grad) !important;color:#fff !important}
.fs-dark .vk .v-badge{background:#23243a !important;color:#b9bacb !important}
/* MC-CORE-SHOULD-3 · T-DARK-IMPORTANT-OVERRIDES (front-shell half; the admin shell got its twin
   in DEPLOY-0907-MC-CORE-SHOULD-2). The rule above carries !important and no tone exception, so
   in dark EVERY status chip renders the same neutral grey: measured from the rendered colour,
   plain / ok / warn / bad were all #b9bacb on #23243a, 7.91:1 — passing AA and saying nothing.
   ESTATE-HOSTS-15's "Retired, still on" — the one row on that page that costs money — read as an
   ordinary neutral chip. These three are one rung more specific, so they win WITHOUT rewriting the
   flattening rule, and they take their colour from ruling 326's own dark tokens (:639) rather than
   a fourth literal. Light is untouched: every rule is .fs-dark-scoped (measured byte-identical).
   Rendered, dark: ok #3ddc73 on #1f3631 7.17 · warn #f0b429 on #3c3326 6.61 · bad #ee65a7 on
   #382538 4.73 — all above AA, all four tones now distinguishable. */
.fs-dark .vk .v-badge.ok  {background:rgba(61,220,115,.14) !important;color:var(--fsc-ok,#3ddc73) !important}
.fs-dark .vk .v-badge.warn{background:rgba(240,180,41,.16) !important;color:var(--fsc-warn,#f0b429) !important}
.fs-dark .vk .v-badge.bad {background:rgba(238,101,167,.14) !important;color:var(--fsc-pink,#ee65a7) !important}
.fs-dark .vk .fs-subnav{background:#13131c !important;border-bottom-color:#2a2b3f !important}
.fs-dark .vk .fs-subnav a{color:var(--fsc-muted,#6a6a8b) !important;border-bottom-color:rgba(22,196,59,.22) !important}
.fs-dark .vk .fs-subnav a:hover{color:#c9cadd !important;border-bottom-color:rgba(22,196,59,.5) !important}
.fs-dark .vk .fs-subnav a.on{color:var(--fsc-ok,#0d8128) !important;font-weight:700;border-bottom-color:var(--vg,#16c43b) !important}
.fs-dark .vk .fs-subnav a.on i{color:var(--fsc-ok,#0d8128) !important}
.fs-dark .vk .hx-sec h2,.fs-dark .vk .fp-ch h2{color:#e9e9f3 !important}
/* class-based dark titles/values -> light; thin separators -> dark */
.fs-dark .vk .hx-qh b,.fs-dark .vk .hx-th .tn b,.fs-dark .vk .hx-met b,.fs-dark .vk .hx-uo,.fs-dark .vk .hx-at,.fs-dark .vk .hx-ft,.fs-dark .vk .big,.fs-dark .vk .hx-wal .row b{color:#e9e9f3 !important}
.fs-dark .vk .hx-ft small,.fs-dark .vk .hx-fm,.fs-dark .vk .muted,.fs-dark .vk .hx-th .tn small{color:var(--fsc-muted,#6a6a8b) !important}
.fs-dark .vk .hx-act,.fs-dark .vk .hx-feed,.fs-dark .vk .hx-up,.fs-dark .vk .hx-wal .row{border-top-color:#2a2b40 !important}
.fs-dark .vk .hx-ai{background:#23243a !important;color:#aab0ff !important}
.fs-dark .vk .hx-qbar{background:#2a2b40 !important}
/* inline-hex catch-all (index.php & page styles are inline-heavy) — TEXT (uses 'color:' prefix so backgrounds/white text are not hit) */
.fs-dark .vk [style*="color:#2c2c44"],.fs-dark .vk [style*="color:#23233a"],.fs-dark .vk [style*="color:#23233f"]{color:#e9e9f3 !important}
.fs-dark .vk [style*="color:#3a3a52"],.fs-dark .vk [style*="color:#43435f"]{color:#d7d8e6 !important}
.fs-dark .vk [style*="color:#9a9aa6"],.fs-dark .vk [style*="color:#8a8aa6"],.fs-dark .vk [style*="color:#9b9cb4"],.fs-dark .vk [style*="color:#8a8aa5"],.fs-dark .vk [style*="color:#b6b7c9"]{color:#b4b5c8 !important}
/* inline-hex — BACKGROUNDS (white / very-light -> dark surface; 'background:' prefix avoids hitting 'color:#fff') */
.fs-dark .vk [style*="background:#fff"],.fs-dark .vk [style*="background:#fafaff"],.fs-dark .vk [style*="background:#f7f7fb"],.fs-dark .vk [style*="background:#f4f4fb"],.fs-dark .vk [style*="background:#f6f6fc"],.fs-dark .vk [style*="background:#f3f2ff"],.fs-dark .vk [style*="background:#f1f0ff"]{background:#1d1e2b !important}
/* inline-hex — light BORDERS -> dark border */
.fs-dark .vk [style*="#f0f0f7"],.fs-dark .vk [style*="#ececf4"],.fs-dark .vk [style*="#f3f3fb"],.fs-dark .vk [style*="#f6f6fc"]{border-color:#2e2f44 !important}
/* end dark layer */
/* .fs-subnav active = kelly-green underlined word (styled above); purple-pill gradient + email-rail var(--vv,#615dfa) override removed platform-wide — one tab language (tab redesign, Hans-approved) */
/* ===== i18nrtl-mc-0725 — Arabic (ar) RTL chrome mirroring. ADDITIVE: every rule scoped under
   html[dir="rtl"], so LTR is byte-for-byte unchanged. The dir="rtl" attribute already auto-reverses
   flex row order + default text-align; we only flip what dir alone cannot: physically-positioned
   fixed/absolute offsets, hardcoded text-align:left, and physical margins. Reuses existing theme vars. ===== */
/* left rail -> right edge; body gutter follows */
html[dir="rtl"] .two-col-sidebar,html[dir="rtl"] .two-col-sidebar .sidebar-twocol,html[dir="rtl"] .sidebar-twocol{left:auto !important;right:0 !important}
html[dir="rtl"] body.mc-collapsed .page-wrapper{margin-left:0 !important;margin-right:65px !important}
html[dir="rtl"] body.mc-collapsed .two-col-sidebar.peek .sidebar-right{left:auto;right:65px;box-shadow:-12px 0 30px -14px rgba(94,92,154,.45)}
/* rail collapse toggle: pinned-right -> pinned-left, chevron faces the other way */
html[dir="rtl"] .mc-collapse-btn{right:auto;left:6px}
html[dir="rtl"] .mc-collapse-btn i{transform:rotate(180deg)}
html[dir="rtl"] body.mc-collapsed .mc-collapse-btn i{transform:rotate(0deg)}
/* header spacer margins that use physical left/right */
html[dir="rtl"] .fslh-lpulse{margin-left:0;margin-right:-14px}
/* dropdown / popover menus: flip the pinned edge */
html[dir="rtl"] .fscn-menu{left:auto;right:0}
html[dir="rtl"] .fsst-menu,html[dir="rtl"] .fsmsg-pop,html[dir="rtl"] .fsnotif-pop,html[dir="rtl"] .fslh-langpop,html[dir="rtl"] .fslh-themepop{right:auto;left:0}
html[dir="rtl"] .fsmsg-pop,html[dir="rtl"] .fsnotif-pop,html[dir="rtl"] .fslh-themeopt{text-align:right}
html[dir="rtl"] .fsnotif-badge{right:auto;left:-4px}
html[dir="rtl"] .fscn-col2{border-left:0;border-right:1px solid #eef0f6;padding-left:0;padding-right:6px}
/* table headers: align to start + swap rounded corners */
html[dir="rtl"] .vk th{text-align:right}
html[dir="rtl"] .vk th:first-child{border-radius:0 10px 10px 0}
html[dir="rtl"] .vk th:last-child{border-radius:10px 0 0 10px}
/* language flag bar: scroll from the right; edge-fade overlay + nav flip */
html[dir="rtl"] .fs-langbar-track,html[dir="rtl"] .fslh-langsec .fs-langbar-track{direction:rtl}
html[dir="rtl"] .fslh-langnav-ovl{right:auto;left:-2px;background:linear-gradient(90deg,#fff 46%,rgba(255,255,255,0) 100%)}
/* fixed overlays: cookie reopen (left->right), Maven launcher+panel (right->left) */
html[dir="rtl"] .fscc-reopen{left:auto !important;right:55px}
html[dir="rtl"] .fscc-card{left:auto;right:20px}
html[dir="rtl"] .mvn-fab{right:auto;left:22px}
html[dir="rtl"] .mvn-panel{right:auto;left:24px}
@media(max-width:820px){
  /* mobile: hamburger left->right, off-canvas drawer slides in from the right, header gutter flips */
  html[dir="rtl"] .mc-mobham{left:auto;right:10px}
  html[dir="rtl"] .two-col-sidebar,html[dir="rtl"] .sidebar-twocol{transform:translateX(106%)}
  html[dir="rtl"] body.mc-mobnav .two-col-sidebar,html[dir="rtl"] body.mc-mobnav .sidebar-twocol{transform:translateX(0);box-shadow:-16px 0 44px -14px rgba(20,20,50,.55)}
  html[dir="rtl"] .fslh,html[dir="rtl"] .panel-header__contents,html[dir="rtl"] header .mc-wshead{padding-left:0;padding-right:52px}
  html[dir="rtl"] .fscc-reopen{left:auto !important;right:12px}
}
/* ===== end i18nrtl-mc-0725 ===== */
