/* ============================================================
   FFUNDED — RTL overrides (Arabic `ar`, Urdu `ur`)
   i18n.js sets <html dir="rtl" lang="ar"> for those two locales.
   EVERY rule here is scoped under html[dir="rtl"], so this file is
   completely inert for the other 17 (LTR) languages and can be
   reverted by deleting it + its <link> tags. site.css / app.css are
   never touched.

   Only HARDCODED PHYSICAL values are corrected. The browser already
   flips flex/grid row order, text-align:start/end and logical
   properties under dir="rtl" — those are deliberately left alone.

   Last section pins trading data to LTR: numbers, prices, %,
   tickers, codes, bars, charts and logos never mirror.
   ============================================================ */

/* ============================ NAV — marketing site ============================ */
html[dir="rtl"] .nav-menu{margin-left:0;margin-right:6px}
html[dir="rtl"] .nav-cta{margin-left:0;margin-right:auto}
html[dir="rtl"] .drop{left:auto;right:0}
html[dir="rtl"] .mega-side{border-left:0;border-right:1px solid var(--border);padding-left:0;padding-right:26px}
/* the mega-card "go" arrow points along the reading direction */
html[dir="rtl"] .mc-go svg{transform:scaleX(-1)}
html[dir="rtl"] .soon-tag{margin-left:0;margin-right:6px}
html[dir="rtl"] .cs-mtab .soon-tag{margin-left:0;margin-right:5px}
/* overlapping avatar rails stack from the other edge */
html[dir="rtl"] .avs i{margin-left:0;margin-right:-7px}
html[dir="rtl"] .avs.big i{margin-left:0;margin-right:-11px}
html[dir="rtl"] .pavs i{margin-left:0;margin-right:-10px}
html[dir="rtl"] .avs i:first-child,html[dir="rtl"] .pavs i:first-child{margin-right:0}

/* mobile drawer slides in from the left edge instead of the right */
@media (max-width:940px){
  html[dir="rtl"] .nav-menu{transform:translateX(-100%)}
  html[dir="rtl"] body.nav-open .nav-menu{transform:translateX(0)}
  html[dir="rtl"] .mega-side{border-right:0;padding-right:0}
}

/* ============================ SIDEBAR — dashboard ============================ */
/* NOTE: the dashboard sidebar is a flush rail with no side border, so there is
   nothing to mirror there. (app.css's .sidebar{border-right} belongs to
   admin.html, which does not load this file.) */
html[dir="rtl"] .nav-item,html[dir="rtl"] .uc-btn{text-align:right}
html[dir="rtl"] .brand-user{padding-left:0;padding-right:1px}
/* the locked-route padlock marker rides the row's end edge */
html[dir="rtl"] html.ff-review-locked .nav .nav-item:not([data-page="terminal"])::after,
html[dir="rtl"] html.ff-reset-locked .nav .nav-item:not([data-page="dashboard"])::after,
html[dir="rtl"] html.ff-kyc-locked .nav .nav-item:not([data-page="dashboard"])::after{right:auto;left:12px}
html[dir="rtl"].ff-review-locked .nav .nav-item:not([data-page="terminal"])::after,
html[dir="rtl"].ff-reset-locked .nav .nav-item:not([data-page="dashboard"])::after,
html[dir="rtl"].ff-kyc-locked .nav .nav-item:not([data-page="dashboard"])::after{right:auto;left:12px}

/* ============================ TOPBAR + MENUS ============================ */
html[dir="rtl"] .acct-switch-wrap{margin-right:0;margin-left:auto}
html[dir="rtl"] .avatar::after,html[dir="rtl"] .avatar.has-unread::after{right:auto;left:0}
html[dir="rtl"] .topuser-menu{right:auto;left:0;transform-origin:top left}
html[dir="rtl"] .tum-item,html[dir="rtl"] .menu-cred,html[dir="rtl"] .hmc-opt{text-align:right}
html[dir="rtl"] .rvc-pop{right:auto;left:0}
html[dir="rtl"] .ff-bell-badge{right:auto;left:-3px}
html[dir="rtl"] .tab-bell{right:auto;left:2px}
@media (max-width:980px){
  html[dir="rtl"] .acct-switch-wrap{margin:0 auto 0 0}
  html[dir="rtl"] .acct-menu{left:0;right:auto;margin-right:0;transform-origin:top left}
}

/* ============================ CARDS & TILES ============================ */
/* absolutely-positioned status chips / check marks / badges */
html[dir="rtl"] .plan-card .pc-check{right:auto;left:16px}
html[dir="rtl"] .oc-row .oc-status{right:auto;left:10px}
html[dir="rtl"] .oc-row.done .oc-status{right:auto;left:4px}
html[dir="rtl"] .oc-row.exp-oc .oc-status{right:auto;left:15px}
html[dir="rtl"] .oc-rowhead .oc-status,
html[dir="rtl"] .oc-row.exp-oc .exp-hd-actions .oc-status{left:auto;right:auto}
html[dir="rtl"] .exp-hd-actions{right:auto;left:15px}
/* the chip is absolute, so the title's clearance has to move with it */
html[dir="rtl"] .oc-row .oc-title{padding-right:0;padding-left:82px}
html[dir="rtl"] .oc-row .oc-rowhead .oc-title{padding-left:0}
html[dir="rtl"] .oc-row.exp-oc .oc-title{padding-right:0;padding-left:158px}
html[dir="rtl"] .rm-panel[data-rmtab="account"].graphoff .kpis .oc-row .oc-title{padding-right:0;padding-left:70px}
html[dir="rtl"] .fr-col-head .tag{right:auto;left:2px}
html[dir="rtl"] .ffp-badge{left:auto;right:11px}
html[dir="rtl"] .ffp-exp{right:auto;left:11px}
html[dir="rtl"] .cert-pv-top{right:auto;left:14px}
html[dir="rtl"] .stk-nodes{right:auto;left:18px}
@media (max-width:560px){ html[dir="rtl"] .stk-nodes{right:auto;left:12px} }
/* gold accent rail on the drawdown KPI moves to the reading edge */
html[dir="rtl"] .dd-kpi{padding:15px 19px 15px 16px}
html[dir="rtl"] .dd-kpi::after{left:auto;right:0}
/* start-aligned selection cards / rows */
html[dir="rtl"] :is(.plan-card,.cs-type,.cs-fam,.cs-tier,.cs-size,.cs-ptab,.cs-tip-pop,.cert-unlock,
  .cert-row,.cert-rail-item,.wl-dest-opt,.pmm-opt,.ca-pm,.ca-addon,.sheet-act,.sheet-profile,
  .cp-prof-toggle,.stg-stat,.stg-next,.wlc-rows,.rs-facts,.rs-ack,.rs-cmp,.reveal,.bz,
  .section-head,.nw-ev-head,.pa-extra,.ff-np-item,.faq-q,.au-err,.au-reqs,.au-field){text-align:right}
html[dir="rtl"] .au-box .field,html[dir="rtl"] #ctwScrim .ctw-pick,
html[dir="rtl"] .route[data-route="refer"] .rf-kit-row{text-align:right}
html[dir="rtl"] #ffReviewPop :is(.rp-note,.rp-why,.rp-close-h),
html[dir="rtl"] #ffResetGate .rg-facts,html[dir="rtl"] #ffResetGate .rg-ack,
html[dir="rtl"] #ffKycGate :is(.kg-steps,.kg-sdk){text-align:right}
html[dir="rtl"] #ffResetGate .rg-tag,html[dir="rtl"] #ffKycGate .kg-tag{right:auto;left:16px}
html[dir="rtl"] .cs-tip-pop{left:auto;right:0}
html[dir="rtl"] .cs-tip{margin-left:0;margin-right:5px}
/* vertical hairline splits: the divider belongs on the other side of the panel */
html[dir="rtl"] .cs-buy{border-left:0;border-right:1px solid rgba(255,255,255,.07)}
html[dir="rtl"][data-theme="dark"] .cs-buy{border-left:0;border-right:1px solid #010101}
html[dir="rtl"] .cs-col{border-right:0;border-left:1px solid var(--border)}
html[dir="rtl"] .ts-side{border-left:0;border-right:1px solid var(--border);padding-left:0;padding-right:15px}
html[dir="rtl"] .pf-one-right{border-left:0;border-right:1px solid var(--border);padding-left:0;padding-right:26px}
html[dir="rtl"] .route[data-route="refer"] .rf-hero-side{text-align:left;border-left:0;
  border-right:1px solid var(--border);padding-left:0;padding-right:24px}
@media (max-width:980px){
  html[dir="rtl"] .cs-buy{border-right:0}
  html[dir="rtl"] .ts-side{border-right:0;padding-right:0}
  html[dir="rtl"] .pf-one-right{border-right:0;padding-right:0}
  html[dir="rtl"] .route[data-route="refer"] .rf-hero-side{text-align:right;border-right:0;padding-right:0}
}
/* decorative art bleeds off the opposite edge */
html[dir="rtl"] :is(.comm-card,.cb-art,.bento-card.accent,.bento-card:not(.accent))::after{right:auto}
html[dir="rtl"] .comm-card::after{left:-60px}
html[dir="rtl"] .cb-art{right:auto;left:-10px}
html[dir="rtl"] .bento-card.accent::after{left:-50px}
html[dir="rtl"] .bento-card:not(.accent)::after{left:-40px}
html[dir="rtl"] .hiw .c .art{right:auto;left:-4px}

/* "push to the far end" — margin-*:auto is physical and does NOT flip on its own */
html[dir="rtl"] :is(.amt,.soon-chip,.nav-bell,.cmp-sizesel,.tx-view,.legend-row .lv,.rm-chip b,
  .mxlval,.mr3-val-tag,.mr3-ver-meta,.pp3-chip,.tstat,.exc-opt-open,.ca-pm-r,.ca-addon-fee,
  .ca-promo-x,.ff-np-clear,.rg-x,.rf-tier-state,.nyc-now,.n){margin-left:0;margin-right:auto}
html[dir="rtl"] .hg-row .switch,html[dir="rtl"] .rm-bar .rvc,html[dir="rtl"] .pp3-note .pp3-gate,
html[dir="rtl"] .wl-help-bar .btn,html[dir="rtl"] .perf-tabhead #perfRange,
html[dir="rtl"] .route[data-route="refer"] .rf-tier-state{margin-left:0;margin-right:auto}
html[dir="rtl"] .rm-bar .tstat{margin-right:0}
html[dir="rtl"] .tl-status{margin-right:0;margin-left:auto}
/* small inline nudges that sit beside a label */
html[dir="rtl"] :is(.wchip,.faq-cat .c,.ff-np-chip,.rr-badge,.cal-today,.pcmp-price s,.chk){margin-left:0}
html[dir="rtl"] .wchip{margin-right:9px}
html[dir="rtl"] .faq-cat .c,html[dir="rtl"] .ff-np-chip,html[dir="rtl"] .pcmp-price s{margin-right:7px}
html[dir="rtl"] .rr-badge{margin-right:9px}
html[dir="rtl"] .cal-today{margin-right:6px}
html[dir="rtl"] .sheet-acct .chk{margin-right:8px}
html[dir="rtl"] .rc2-headr .wchip{margin-right:0}
html[dir="rtl"] :is(.cal-leg i,.osd-dot,.rr-dots-leg i,.epl-qlab,.rr-detected){margin-right:0}
html[dir="rtl"] .cal-leg i{margin-left:3px}
html[dir="rtl"] .osd-dot{margin-left:5px}
html[dir="rtl"] .rr-dots-leg i{margin-left:6px}
html[dir="rtl"] .epl-qlab{margin-left:2px}
html[dir="rtl"] .rr-detected{margin-left:34px}

/* ============================ FORMS & INPUTS ============================ */
/* native select caret is a background image pinned to a physical edge */
html[dir="rtl"] .field select,html[dir="rtl"] select.input,html[dir="rtl"] select.au-country,
html[dir="rtl"] .lq-tz{background-position:left 13px center;padding-right:14px;padding-left:38px}
html[dir="rtl"] .field select{background-position:left 12px center}
html[dir="rtl"] select.au-country{background-position:left 14px center}
html[dir="rtl"] .lq-tz{background-position:left 6px center}
html[dir="rtl"][data-theme="dark"] select.input{background-position:left 13px center,0 0}
/* leading search icons + the padding that clears them */
html[dir="rtl"] .faq-search svg,html[dir="rtl"] .faq-search > svg{left:auto;right:15px}
html[dir="rtl"] .faq-search .input{padding-left:12px;padding-right:43px}
html[dir="rtl"] .faq-clear{right:auto;left:10px}
html[dir="rtl"] .exc-search{left:auto;right:13px}
html[dir="rtl"] .exc-caret{right:auto;left:11px}
html[dir="rtl"] .epl-inputs .exc-combo input{padding-left:32px;padding-right:36px}
html[dir="rtl"] .tcalc-caret{right:auto;left:9px}
html[dir="rtl"] .tcalc-f-sym input{padding-right:12px;padding-left:30px}
/* trailing affordances inside a field (max / eye / clear) */
html[dir="rtl"] .au-eye{right:auto;left:11px}
html[dir="rtl"] .au-inwrap .input{padding-right:12px;padding-left:40px}
html[dir="rtl"] .wl-amt-max{right:auto;left:7px}
html[dir="rtl"] .wl-amt .input{padding-right:12px;padding-left:58px}
html[dir="rtl"] .pmf-max{right:auto;left:8px}
html[dir="rtl"] .exc-dd,html[dir="rtl"] .tcalc-dd,html[dir="rtl"] .uc-menu,html[dir="rtl"] .sp-menu{left:0;right:0}
html[dir="rtl"] .au-home{left:auto;right:26px}

/* ============================ SWITCHES ============================ */
/* knob parks on the start edge and travels toward the end edge */
html[dir="rtl"] .switch:before{left:auto;right:2px}
html[dir="rtl"] .switch.on:before{transform:translateX(-16px)}
html[dir="rtl"] .cs-switch .dot{left:auto;right:2px}
html[dir="rtl"] .cs-switch.on .dot{transform:translateX(-15px)}
html[dir="rtl"] .tum-sw::after{left:auto;right:3px}
html[dir="rtl"] .tum-sw.on::after{transform:translateX(-14px)}
html[dir="rtl"] .rvc-sw:before{left:auto;right:2px}
html[dir="rtl"] .rvc-sw[aria-checked="true"]:before{transform:translateX(-16px)}
html[dir="rtl"] .ca-addon-sw:after{left:auto;right:2px}
html[dir="rtl"] .ca-addon.on .ca-addon-sw:after{transform:translateX(-14px)}

/* ============================ LISTS ============================ */
/* custom bullets are absolutely positioned, so the indent has to swap sides */
html[dir="rtl"] .article-body li,html[dir="rtl"] .legal-body li{padding:6px 24px 6px 0}
html[dir="rtl"] .article-body li::before,html[dir="rtl"] .legal-body li::before{left:auto;right:3px}
html[dir="rtl"] .pf-steps li{padding-left:0;padding-right:38px}
html[dir="rtl"] .pf-steps li::before{left:auto;right:0}
html[dir="rtl"] .rr-meas li{padding-left:0;padding-right:16px}
html[dir="rtl"] .rr-meas li::before{left:auto;right:2px}
html[dir="rtl"] .cm-d-sec ul{padding-left:0;padding-right:15px}
html[dir="rtl"] .faq-group-head{padding-left:0;padding-right:2px}
html[dir="rtl"] .faq-nav button{text-align:right}
html[dir="rtl"] .faq-more:hover svg{transform:translateX(-3px)}

/* ============================ TABLES ============================ */
html[dir="rtl"] thead th,html[dir="rtl"] table.cmp th,html[dir="rtl"] table.cmp td,
html[dir="rtl"] .cmp-tbl th,html[dir="rtl"] .cmp-tbl td,html[dir="rtl"] .hft-tbl th,
html[dir="rtl"] .cp-tbl th,html[dir="rtl"] .pcmp tbody th{text-align:right}
/* numeric columns stay end-aligned, which is the left edge under RTL */
html[dir="rtl"] thead th.r,html[dir="rtl"] tbody td.r{text-align:left}
html[dir="rtl"] .th-table thead th,html[dir="rtl"] .th-table tbody td{padding-left:0;padding-right:14px}
html[dir="rtl"] .th-table thead th:first-child,html[dir="rtl"] .th-table tbody td:first-child{padding-right:0}
html[dir="rtl"] .tstat-cell:first-child{padding-left:0;padding-right:6px}
html[dir="rtl"] .tstat-cell:last-child{padding-right:0;padding-left:6px}
html[dir="rtl"] .tstat-cell+.tstat-cell:before{left:auto;right:0}
/* sticky first column pins to the other edge, and its divider follows */
html[dir="rtl"] .cmp-tbl th.lbl,html[dir="rtl"] .cmp-tbl td.lbl{left:auto;right:0}
html[dir="rtl"][data-theme="dark"] .cmp-tbl th.lbl,
html[dir="rtl"][data-theme="dark"] .cmp-tbl td.lbl{border-right:0;border-left:1px solid rgba(255,255,255,.08)}
html[dir="rtl"] .pcmp th:first-child,html[dir="rtl"] .pcmp td:first-child{left:auto;right:0;
  text-align:right;border-right:0;border-left:1px solid var(--border)}
html[dir="rtl"] .pcmp tbody tr.pcmp-group td{left:auto;right:0;text-align:right;border-left:0}
html[dir="rtl"] .pcmp .fam,html[dir="rtl"] .pcmp-head th{border-left:0;border-right:1px solid var(--border)}
html[dir="rtl"] .pcmp .fdiv{border-left:0;border-right:2px solid var(--border-strong)}
html[dir="rtl"] .pcmp-head .pcmp-corner{border-right:0}

/* ============================ MODALS & POPOVERS ============================ */
/* close buttons live in the corner opposite the reading start */
html[dir="rtl"] :is(.txm-x,.ffm-x,.pf-x,.dz-close,.ca-close,.rr-close,.cm-modal-x,.hft-x,
  .epl-x,.rp-x,.ctw-x){right:auto}
html[dir="rtl"] :is(.txm-x,.ffm-x,.pf-x,.dz-close,.ca-close,.rr-close,.cm-modal-x,.hft-x){left:14px}
html[dir="rtl"] .epl-x,html[dir="rtl"] #ffReviewPop .rp-x{left:16px}
html[dir="rtl"] #ctwScrim .ctw-x{left:14px}
/* …and the title's clearance swaps with them */
html[dir="rtl"] :is(.txm-top,.ffm-title,.pf-m-head,.dz-mtitle,.ca-title,.cm-modal-head,
  .hft-m-sub,.epl-hd,.ctw-title){padding-right:0}
html[dir="rtl"] .txm-top,html[dir="rtl"] .epl-hd{padding-left:34px}
html[dir="rtl"] :is(.ffm-title,.pf-m-head,.dz-mtitle,.ca-title){padding-left:30px}
html[dir="rtl"] #ctwScrim .ctw-title{padding-left:30px}
html[dir="rtl"] .cm-modal-head{padding-left:38px}
html[dir="rtl"] .hft-m-sub{padding-left:24px}
html[dir="rtl"] .sheet-profile{padding-right:8px;padding-left:46px}
html[dir="rtl"] .sp-kebab{right:auto;left:6px}
html[dir="rtl"] .term-max-btn{right:auto;left:12px}
/* centred modals/toasts are symmetric — translateX(-50%) is already correct */

/* ============================ TOASTS & NOTIFICATIONS ============================ */
html[dir="rtl"] .ff-toast-stack{right:auto;left:18px}
html[dir="rtl"] .ff-toast{border-left:0;border-right:3px solid var(--tone,var(--blue,#0781fe))}
html[dir="rtl"] .ff-toast-main{padding-right:0;padding-left:8px}
html[dir="rtl"] .ff-toast-bar{left:auto;right:0}
html[dir="rtl"] .ff-notif-panel{right:auto;left:0;transform-origin:top left}
html[dir="rtl"] .ff-np-udot{left:auto;right:12px}
html[dir="rtl"] .toast{left:18px;right:auto}
@media (max-width:520px){
  html[dir="rtl"] .ff-toast-stack{left:10px;right:10px}
  html[dir="rtl"] .ff-notif-panel{left:10px;right:10px;transform-origin:bottom center}
  html[dir="rtl"] .toast{left:12px;right:12px}
}
@media (min-width:521px) and (max-width:980px){
  html[dir="rtl"] .ff-notif-panel{right:auto;left:12px}
}

/* ============================ DRAWERS & SHEETS (mobile) ============================ */
/* .sheet / .tabbar span left:0;right:0 — symmetric, nothing to flip */
html[dir="rtl"] .sheet-tile .st-bell{right:auto;left:-4px}
html[dir="rtl"] .sheet-tile .st-soon{right:auto;left:7px}
@media (max-width:720px){
  html[dir="rtl"] .tx-amt{margin-left:0;margin-right:46px;text-align:right}
}

/* ============================ MISC CHROME ============================ */
html[dir="rtl"] .rg-lock{left:auto;right:10px}
html[dir="rtl"] html[data-ruleguide="on"] .rg-host > .rg-fab,
html[dir="rtl"][data-ruleguide="on"] .rg-host > .rg-fab{right:auto;left:8px}
html[dir="rtl"] #tcalcHost{right:auto;left:16px}
html[dir="rtl"] #tcalcHost.tcalc-centered{left:50% !important;right:auto !important}
html[dir="rtl"] html[data-page="settings"] .set-panel,
html[dir="rtl"][data-page="settings"] .set-panel{padding-right:0;padding-left:10px}
html[dir="rtl"] html[data-page="roadmap"] .fr-col-body,
html[dir="rtl"][data-page="roadmap"] .fr-col-body{margin-right:0;margin-left:-7px;padding-right:0;padding-left:7px}
html[dir="rtl"] .fdlist.fd-scroll{padding-right:0;padding-left:4px}
html[dir="rtl"] .nw-list{padding-right:0;padding-left:2px}

/* Language switcher: already handled inside i18n.js (it injects its own
   html[dir="rtl"] .i18n-menu / .i18n-switch.floating rules). Not duplicated here. */

/* ==================================================================
   MUST NOT MIRROR — trading data reads LTR in every locale.
   Numbers, prices, percentages, currency, tickers, credentials and
   codes are pinned to direction:ltr so bidi never reorders a run
   like "0.0% / 8.0%", "-1,250.00" or "EUR/USD". text-align:right
   keeps them at the RTL reading start, since direction:ltr would
   otherwise re-resolve their `start` edge to the left.
   ================================================================== */
html[dir="rtl"] :is(
  /* account + nav amounts, clocks */
  .amt,.ac-chip,.ny-clock,.nyc-now,.nyc-t,.cal-time,.cal-mv,.cal-n,
  /* KPI numerals */
  .k-val,.k-delta,.rk-pct,.rk-val,.lk-val,.bs-pct,.oc-big,.oc-pct,.dd-sub,.big-num,
  .obj-val,.obj-ring-mid,.perf-hero-big,.chart-meta .big,.stat-row .v,.mini .mv,.histo .hv,
  .heat-cell,.legend-row .lv,.gauge .lbl b,.odial-hub-num,.odial-hub-sub,.odial-right .val,
  .odial-right .pct,.pchip .pc-v,.sym-rank-net,.sym-rank-sub,
  /* rule monitor + strike ladder */
  .rm-r-val,.rm-r-pct,.rm-ring-mid,.rm-ring-val,.rm-col-pct,.rvc-r-pct,.tstat-v,.wchip,.rc2-pay,
  /* drawdown + margin */
  .dd-kpi .v,.dd-stat .r .v,.dd-bar .bv,.dd-bar .bl,.mg-val,.mxbk-val,.mxbig,.mxsub b,
  .mxhrval,.mxlval,.mxfoot .mxfk b,.lr-eq,.lr-now,
  /* wallet, payout, scaling */
  .wl-ring-n,.wl-fact .v,.wl-bal-v,.wl-sum-val,.wl-sum-chip,.wl-sum-stat-v,.wl-credit-amt,
  .wl-check-v,.wl-hero-v,.wl-req-d,.ws-v,.wl-next2-fact .v,.wl-next2-days .n,
  .pmf-amt input,.pmf-code,.pmf-recap-row .v,.rcm-val,.sc2-big .n,.sc2-scale b,.sc2-pct,
  .sc2-msize,.sc2-reqbig .n,.sc2-reqbig .t,.sc-seg-big,.sc-seg-pct,
  .rc2-payout-pct,.rc2-dial-val,.rc2-dial-lim,.rc2-stat-v,.rc2-big,.rc2-lim,.rc2-rval,.rc2-gst,
  .rc2-rd-val,.rc2-scpct,.rc2-sclim,.rc2-sub2 b,.bq-fl,
  /* pricing + plan selectors */
  .pc-price,.size-pill,.cs-size-amt,.cs-size-price,.cs-avg b,.cs-rule .v,.cs-buy-price .amt,
  .cs-buy-price s,.cs-alloc-cap,.cmp-tbl td.v,.cmp-price,.pcmp-price,.out-row .v,.rs-price .rs-pv,
  .ca-addon-fee,.ca-promo-chip,.ca-qty-i,.ca-qty-alloc b,
  /* transactions */
  .tx-stat-v,.tx-amt,.txm-amt,.txm-v,
  /* credentials, codes, IDs — never reorder a credential string */
  .cred-v,.mc-v,.copybox,.mono,.cert-data-v,.tl-cred .v,.tl-chip,
  /* tickers + instrument symbols */
  .tc-pair,.sym-pair,.std-pair,.osc-pair,.osc-run-pair,.fdc-sym,.exp-sym,.exp-share,
  /* exposure, news, liquidity, consistency panels */
  .exc-v,.exc-field input,.epl-meter-val,.epl-scale,.epl-v,.nw-ev-m,.nw-ev-p,.nw-tr,.nw-next-s,
  .pa-fs-v,.pa-formula,.pa-band-s,.pa-band-cap-v,.pa-do-num,.osd-cnum,.osd-bval,
  .lq-axis,.lq-tr-t,.lq-tr-p,.lqw-times,.lqw-flag,.lim-cap,.npc-ev-s,.npc-ev-p,.wtime-txt,
  .tcm-v,.tcm-delta,.pcw-val,.pcw-best-v,.osc-lead-num,.osc-sub,.osc-run-num,
  .wtc-range-val,.wtc-col-val,.wtc-col-date,.mr3-num,.mr3-ring-num,.mr3-stat-num,.mr3-val-big,
  .mr3-val-of,.mr3-card-meta,.mr3-ver-meta,.pp3-ctip-row b,
  /* referral + rewards */
  .rf-earn,.rf-wallet-val,.rf-wallet-tile-v,.rc-amt,.rc-ctrl-val,.rc-bar-val,.rc-bar-cap,
  .rf-fn-v,.rf-fn-out-v,.rf-tier-count,.rw-bal-num,.rw-lifetime,.rw-next-v,.rw-stat-v,
  .rw-tierbar-meta,.rw-tc-at,.rw-tc-pct,.rw-earnrate b,.rw-pts-badge,.rw-conv-rate,.rw-cost,
  .rw-locktag,.rw-act-pts,.rw-shead-meta,
  /* misc counters */
  .faq-cat .c,.fr-like-n,.ff-bell-badge,.ff-np-count,.tcalc-meter-val,.tcalc-v,.rr-metric-val,
  .stg-v,.fdc-pie-val,.fdc-big,.fdc-pct,.cs-alloc-cap
){direction:ltr;unicode-bidi:isolate;text-align:right}

/* values the LTR design already end-aligned keep that alignment: under RTL the
   flex row has flipped, so "right" still means "hugging its bar/label". */
html[dir="rtl"] :is(.rm-r-pct,.rvc-r-pct,.odial-right .pct,.mxbk-val,.mxhr,.exc-v,.pcw-val,
  .dd-bar .bl,.txm-v,.rcm-val,.cb-pf,.osd-bval,.rw-locktag,.pa-band-cap,.pcw-note,
  .ca-srow b,.exc-v,.tx-amt){text-align:right}

/* Progress bars, meters and their tracks: fill direction is data, not text.
   Locking the track to LTR keeps every physical rule inside it (left:0 fills,
   asymmetric radii, limit markers, hatch gradients) correct with no mirroring. */
html[dir="rtl"] :is(.k-bar,.track,.pbar,.obj-bar,.obj-pips,.rm-r-bar,.rm-col-bar,.lk-track,
  .bs-bar,.sentbar,.split,.dd-track,.ll-field,.ll-bartrack,.ll-compare,.mls-track,.mxtrack,
  .mxbk-bar,.dd-bar .bt-wrap,.epl-meter,.epl-track,.pcw-row,.wtc-col,.wtc-track,.mg-track,
  .sc2-track,.rc2-track,.rc2-dtrack,.rc2-sctrack,.rcm-track,.lq-track,.lqw-track,.npc-wtrack,
  .exp-bar,.wk-track,.tcalc-meter,.rr-bar,.rw-meter,.rc-bar,.stk-track,.pcmp-bar,.ot,.oc-foot,
  .cs-alloc-bar,.heat,.bars,.histo){direction:ltr}

/* Charts, axes and SVG dials: the x-axis always runs left → right. */
html[dir="rtl"] :is(svg.chart,.chart-wrap,.dd-svg,.dd-axis,.x-axis,.odial,.odial-svg,.odial-stage,
  .obj-graph,.gauge,.ring,.rk-ring,.obj-ring,.rm-ring-dial,.dd-dial-wrap,.mxscale,.epl-scale,
  .sc2-scale,.rc2-scale,.lq-axis,.cm-line,.cm-base){direction:ltr}

/* Platform logos and wordmarks are artwork — never mirrored or re-flowed. */
html[dir="rtl"] :is(.brand img,.brand-wordmark,.foot-brand img,.au-logo,.pf-hero-logo,
  .platform-logo) ,
html[dir="rtl"] img[src*="platform-logos"]{transform:none;direction:ltr}
