
/* Day modal tabs + Trader Plan pane. Scoped to #dayModalBody so nothing
   else in the app can pick these up. */
#dayModalBody .dm-tabs{
  display:flex;gap:8px;position:sticky;top:0;z-index:4;
  margin:0 0 16px;padding:2px 0 10px;background:#0d0d18;
  border-bottom:1px solid #1c1c2b;
}
#dayModalBody .dm-tab{
  display:inline-flex;align-items:center;gap:8px;
  background:#0a0a12;border:1px solid #252539;color:#9090a8;
  padding:9px 15px;border-radius:10px;cursor:pointer;
  font-family:'Rubik',sans-serif;font-size:12.5px;font-weight:700;
  transition:border-color .18s,color .18s,background .18s;
}
#dayModalBody .dm-tab:hover{border-color:#7c7c94;color:#c0c0d0}
#dayModalBody .dm-tab.dm-tab-on{background:#1a1a2e;border-color:#7C5CFC;color:#C4B5FD}
#dayModalBody .dm-tab-n{
  font-family:'JetBrains Mono',monospace;font-size:10.5px;font-weight:800;
  background:#131322;border:1px solid #2a2540;color:#9090a8;
  padding:1px 7px;border-radius:20px;
}
#dayModalBody .dm-tab.dm-tab-on .dm-tab-n{background:#0d0d18;border-color:#5B21B6;color:#A78BFA}
#dayModalBody .dm-pane{display:none}
#dayModalBody .dm-pane.dm-pane-on{display:block}

#dayModalBody .dmp-card{
  background:#0a0a12;border:1px solid #252539;border-left:3px solid #7C5CFC;
  border-radius:0 14px 14px 0;padding:16px 18px;margin-bottom:14px;
}
#dayModalBody .dmp-card-empty{border-left-color:#2a2540;opacity:.75}
#dayModalBody .dmp-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:12px}
#dayModalBody .dmp-num{
  background:#1a1a2e;color:#7C5CFC;font-family:'JetBrains Mono',monospace;
  font-weight:700;padding:3px 9px;border-radius:7px;font-size:12px;
}
#dayModalBody .dmp-pair{font-size:14px;font-weight:700;color:#e2e8f0}
#dayModalBody .dmp-out{
  font-family:'JetBrains Mono',monospace;font-size:12px;font-weight:800;
  border:1px solid;border-radius:7px;padding:2px 9px;
}
#dayModalBody .dmp-ref{
  margin-left:auto;font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:700;
  letter-spacing:.07em;color:#C4B5FD;background:#252539;border:1px solid #4F37C2;
  padding:2px 8px;border-radius:6px;
}
#dayModalBody .dmp-row{margin-bottom:11px}
#dayModalBody .dmp-lbl{
  font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;margin-bottom:5px;
}
#dayModalBody .dmp-val{
  font-family:'Rubik',sans-serif;font-size:12.5px;line-height:1.55;color:#c0d0e0;
  background:#0d0d18;border:1px solid #1c1c2b;border-radius:9px;padding:9px 12px;
  word-break:break-word;
}
#dayModalBody .dmp-score{margin-top:12px;padding-top:11px;border-top:1px dashed #252539}
#dayModalBody .dmp-score-head{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap;margin-bottom:9px}
#dayModalBody .dmp-score-pct{font-family:'JetBrains Mono',monospace;font-size:19px;font-weight:800}
#dayModalBody .dmp-score-n{font-family:'JetBrains Mono',monospace;font-size:11px;color:#9090a8}
#dayModalBody .dmp-score-approx{
  font-family:'JetBrains Mono',monospace;font-size:9.5px;color:#7c7c94;
  border:1px solid #2a2540;border-radius:5px;padding:1px 6px;
}
#dayModalBody .dmp-items{display:flex;flex-direction:column;gap:5px}
#dayModalBody .dmp-items-on{margin-top:5px}
#dayModalBody .dmp-item{
  display:flex;gap:8px;align-items:flex-start;
  font-family:'Rubik',sans-serif;font-size:11.5px;line-height:1.4;
  padding:6px 10px;border-radius:8px;border:1px solid;
}
#dayModalBody .dmp-item span{flex-shrink:0;font-weight:900}
#dayModalBody .dmp-off{background:#160a0a;border-color:#3a1717;color:#c98d8d}
#dayModalBody .dmp-off span{color:#ef4444}
#dayModalBody .dmp-on{background:#0a1710;border-color:#17331f;color:#6f8f7c}
#dayModalBody .dmp-on span{color:#22c55e}
#dayModalBody .dmp-signed{margin-top:11px;font-family:'JetBrains Mono',monospace;font-size:10.5px;color:#7c7c94}
#dayModalBody .dmp-noplan{font-size:12px;color:#7c7c94;margin-top:7px;line-height:1.5}
#dayModalBody .dmp-none{
  background:#0a0a12;border:1px solid #252539;border-radius:12px;
  padding:18px 20px;margin-bottom:14px;font-size:13px;color:#c0c0d0;line-height:1.6;
}
#dayModalBody .dmp-none-sub{display:block;margin-top:7px;font-size:11.5px;color:#7c7c94}

@media(max-width:768px){
  #dayModalBody .dm-tab{flex:1;justify-content:center;padding:9px 8px;font-size:11.5px}
  #dayModalBody .dmp-card{padding:13px 14px}
  #dayModalBody .dmp-ref{margin-left:0}
}
<style nonce="kPmovXGkWTLUoADPvACT5w==" id="tc-ai-frame">
/* The embedded Chart Analysis page. Sized like #tcRoomFrame so it fills the
   content area exactly, with no page-in-a-page scrollbar. */
#aichartPage{padding:0;position:relative;}
#tcAiFrame{
  width:100%;
  height:calc(100vh - 56px);
  height:var(--tc-room-h, calc(100dvh - 56px));
  border:0;border-radius:12px;display:block;background:#07070d;
  /* A self-contained document: its layout/paint can't affect the host. */
  contain:layout paint;
  /* Revealed on the frame's load event — never a blank box that reads as a freeze. */
  opacity:0;transition:opacity .18s ease;
}
#tcAiFrame.tc-ai-ready{opacity:1;}
@media(max-width:768px){
  #tcAiFrame{
    height:calc(100vh - 124px);
    height:var(--tc-room-h, calc(100dvh - 124px));
    border-radius:0;
  }
}
#tcAiLoading{position:absolute;inset:0;display:none;flex-direction:column;align-items:center;justify-content:center;gap:14px;
  background:#07070d;border-radius:12px;z-index:2;pointer-events:none;}
#aichartPage.tc-ai-loading #tcAiLoading{display:flex;}
#tcAiLoading .tc-ai-spin{width:34px;height:34px;border-radius:50%;border:3px solid #252539;border-top-color:#7C5CFC;animation:tcAiSpin .7s linear infinite;}
#tcAiLoading .tc-ai-msg{font-family:'JetBrains Mono',monospace;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:#7c7c94;}
@keyframes tcAiSpin{to{transform:rotate(360deg);}}
/* reduce-motion clamps animations to ~0ms: a frozen ring reads as a hang — drop it. */
html.reduce-motion #tcAiLoading .tc-ai-spin{display:none;}
@media(prefers-reduced-motion:reduce){
  #tcAiLoading .tc-ai-spin{display:none;}
  #tcAiFrame{transition:none;}
}
@media(max-width:768px){ #tcAiLoading{border-radius:0;} }


/* =====================================================================
   SIDEBAR ENTRY - TraderCab AI Analysis                        (v144)
   ---------------------------------------------------------------------
   An <a>, not a <button>, because this navigates to a separate document
   rather than switching a page inside the app. .nav-btn is written for
   buttons, so the few properties a link does not inherit are set here.

   The name animates: a gradient sweeps across the text and the icon
   breathes. Both stop under prefers-reduced-motion, and if a browser
   cannot clip a background to text the name falls back to a solid
   colour instead of turning invisible.
   ===================================================================== */
.nav-btn.tcai-nav{
  text-decoration:none;
  align-items:center;
  box-sizing:border-box;
}
.nav-btn.tcai-nav .nav-ic{ --c:#A78BFA; animation:tcai-breathe 2.8s ease-in-out infinite; }
@keyframes tcai-breathe{
  0%,100%{ opacity:.7;  transform:scale(1);    filter:none; }
  50%    { opacity:1;   transform:scale(1.12); filter:drop-shadow(0 0 7px #7C5CFC); }
}
.tcai-name{
  font-weight:700;
  font-size:13.5px;
  letter-spacing:.01em;
  white-space:nowrap;
  background:linear-gradient(100deg,#7C5CFC 0%,#C4B5FD 22%,#22c55e 46%,#C4B5FD 70%,#7C5CFC 100%);
  background-size:220% 100%;
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;
  animation:tcai-sweep 5.5s linear infinite;
}
@keyframes tcai-sweep{ from{ background-position:0% 0; } to{ background-position:-220% 0; } }

/* The gradient text trick fails closed on old engines - make sure that
   failure is "plain purple text", never "no text at all". */
@supports not ((-webkit-background-clip:text) or (background-clip:text)){
  .tcai-name{ -webkit-text-fill-color:currentColor; color:#C4B5FD; background:none; animation:none; }
}
@media(prefers-reduced-motion:reduce){
  .nav-btn.tcai-nav .nav-ic{ animation:none; opacity:1; }
  .tcai-name{ animation:none; background-position:0 0; }
}
/* The sidebar is 260px wide and this is the longest label in it. */
@media(max-width:1100px){ .tcai-name{ font-size:12.5px; } }


/* =====================================================================
   CRISP TEXT — v149 (30 Sep 2026). Deliberately the LAST stylesheet in the
   document so it wins every earlier rule. Why text looked soft:
     1. <main> ran through a colour filter (removed at its source).
     2. Stat / brokerage / hero text was pushed along Z inside 3-D tilted
        cards → rendered at a fractional scale. Cards now lie flat at rest
        (the tilt still plays on hover) and text never leaves the plane.
     3. 12–24 px glows under every number, P&L cell, grade and badge.
     4. Content cards blurred their backdrop → composited layers lose
        sub-pixel anti-aliasing. Glass stays only on overlays (sidebar,
        modals, nav) where it is visible.
     5. Muted greys at 2.2–3.0 : 1 contrast (raised by a global recolour).
     6. Labels at 8–9 px with .2–.32 em tracking.
     7. Six tool pages fell back to the OS font; Space Grotesk 800/900 was
        requested but only 700 is loaded (synthesised, smeared bold).
   ===================================================================== */
html *{ text-rendering:optimizeLegibility !important; }
html, body{ font-synthesis:none !important; }
html, body{ font-feature-settings:"cv02","cv03","cv04","cv11","tnum" 1; }

/* 2. Text stays on the card plane; cards flat at rest, tilt only on hover */
.dash-stats > .stat-card > .label, .dash-stats > .stat-card > .stat-label,
.dash-stats > .stat-card > .stat-val, .dash-stats > .stat-card > .stat-trend, .dash-stats > .stat-card > .stat-sub,
.dash-stats > .stat-card .wr-ring-wrap, .dash-stats > .stat-card .wr-details,
.day-modal-summary > .day-summary-box > .lbl, .day-modal-summary > .day-summary-box > .val,
.hero-preview-stats > .hp-stat > .lbl, .hero-preview-stats > .hp-stat > .val,
.brokerage-strip .brk-val, .brokerage-strip .brk-lbl, .brokerage-strip .brk-sub,
.hero-banner .hero-stat .lbl, .hero-banner .hero-stat .val, .hero-banner .hero-stat .sub,
.hero-banner .hero-stat .eq-content{ transform:none !important; }
.dash-stats > .stat-card:not(:hover):not(.tilting),
.brokerage-strip > .brk-item:not(:hover):not(.tilting),
.day-modal-summary > .day-summary-box:not(:hover),
.hero-preview-stats > .hp-stat:not(:hover),
.hero-banner .hero-stat:not(:hover){ transform:none !important; will-change:auto !important; animation:none !important; }
.ecal-mini, .tc-plan-tag{ animation:none !important; will-change:auto !important; transform:none !important; }
.dash-session-strip *{ backface-visibility:visible !important; }

/* 3. No glow under numbers, P&L cells, grades, badges, clocks */
/* (selectors carry the same or higher specificity as the glow rules they beat:
   several of those are id-scoped or doubled-class + !important) */
.stat-val, .brk-val, .brokerage-strip .brk-val, .brokerage-strip > .brk-item:hover .brk-val, .hero-stat .val,
.hero-banner .hero-stat .val, #heroRiskAmt, .hero-banner .hero-stat #heroRiskAmt,
html[data-theme] body .pnl-pos.pnl-pos.pnl-pos, html[data-theme] body .pnl-neg.pnl-neg.pnl-neg,
html[data-theme] body .grade-A.grade-A.grade-A, html[data-theme] body .grade-D.grade-D.grade-D,
html[data-theme] body .badge-green.badge-green.badge-green, html[data-theme] body .badge-red.badge-red.badge-red,
.pnl-pos, .pnl-neg, .grade-A, .grade-D, .badge-green, .badge-red,
.cal-week-pnl, .cal-week-pnl.pos, .cal-week-pnl.neg, .cal-po-totval-big, .cal-po-totval-big.po-pos, .cal-po-totval-big.po-neg, .cal-po-val,
.qv-wd-item-amt, .sc-wb-cd-val, .dt-count, .daily-trades-hero .dt-count, .strk-mode-btn, .strk-mode-btn.active,
.hclk-face, .hclk-ampm, .eq-corner-accent .txt, .hero-stat .lbl, .hero-banner .hero-stat .lbl, .ann-item b,
#tcsmClock, .strk-th-title, .sc-ring-time, .sc-card-active .sc-ring-time, .po-status-progress, .po-status-hot,
.mc-stat-val, #montecarloPage .mc-stat-val, .rc-headline-val, #recoverycalcPage .rc-headline-val,
.rc-plan-val, #recoverycalcPage .rc-plan-val, #recoverycalcPage .rc-plan-val.rc-plan-unreachable, .rc-val,
.qv-pnl-hero .val, .qv-pnl-hero .val.pos, .qv-pnl-hero .val.neg, .sle-val, .settings-live-equity .sle-val, .tc-plan-tag,
.dash-stats > .stat-card:hover > .stat-val, .dash-stats > .stat-card.tilting > .stat-val{ text-shadow:none !important; }
.eq-widget-wrap .eq-val, .hero-headline .accent{ filter:none !important; }

/* 4. Opaque-rendered content cards: no backdrop blur (invisible behind a 96 % fill anyway) */
.stat-card, .section-card, .hero-banner, .plan-card, .daily-todo-card, .feature-card, .checklist-item,
.cal-day, .brokerage-strip, .brokerage-strip > .brk-item, .trade-detail-card, .checklist-card{
  backdrop-filter:none !important; -webkit-backdrop-filter:none !important;
}

/* 5. Contrast floor for the few muted colours the global recolour cannot reach */
.mmh-stat-sub{ color:#8a8aa0 !important; }
.ecal-colh, .ecal-seclbl, .bt-replay-hud-lbl{ color:#8093b3 !important; }
.eq-widget-title, .eq-risk-label-text{ color:rgba(172,212,188,.92) !important; }
.brokerage-strip .brk-sub{ opacity:1 !important; }
.plan-card.locked{ opacity:.7 !important; filter:none !important; }

/* 6. Minimum 10 px for information labels; calmer tracking; no shouting sentences */
.eq-live-label, .eq-widget-title, .eq-risk-label-text, .eq-risk-pct, .ecal-colh, .ecal-seclbl, .ecal-live,
.mc-stat-label, .pf-bar-tag, .pj-kl, .pj-wsl, .pj-sd, .pj-mc, .pj-tlab, .pj-mdow, .dsshov-sess,
.plan-day-cell .d-date, .plans-ladder-step .lbl, .bt-replay-hud-lbl, .sym-tag, .sc-wb-cd-lbl, .ptp-risk-stat-lbl,
.eq-corner-accent .txt, .mmh-x-title, .mmh-y-title, .hero-stat .lbl, .mt5-info-cell .lbl, .hero-banner .hero-stat .lbl{ font-size:10px !important; }
.user-email{ font-size:11px !important; }
.hero-banner .hero-stat .lbl{ letter-spacing:.14em !important; }
.sc-wb-cd-lbl, .mmh-y-title, .mmh-x-title, .eq-corner-accent .txt, .auth-brand .tagline, .landing-logo .logo-tag,
.eq-live-label, .rc-badge, .mc-badge, .hero-stat .lbl, .mt5-info-cell .lbl, .sym-tag, .bt-replay-hud-lbl,
.eq-widget-title, .mc-stat-label, .plan-section-label, .pf-bn-lbl, .rc-plan-lbl, .hp-stat .lbl,
.sb-tag, .nav-section, .cal-header{ letter-spacing:.12em !important; }
#tcRoomLoading .tc-room-msg, #tcAiLoading .tc-ai-msg{ text-transform:none !important; letter-spacing:.02em !important; font-size:13px !important; }
@media(max-width:768px){
  table th{ font-size:10px !important; }
  .brokerage-strip .brk-lbl, .brokerage-strip .brk-sub{ font-size:10px !important; }
}

/* 7. One sans face everywhere; only loaded weights */
.pbk-root, .nbk-root, .dna-root, .rep-root, .imp-root, .ai-root, #fxReplay{
  font-family:'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif !important;
}
.hero-headline, .auth-brand .logo, .landing-logo .logo-text, .pf-status-title, .rc-hero-title, .mc-hero-title,
.mc-run-btn, .tcp-title, .co-total, .ecal-ttl, .sym-name, .plan-num-badge, .mob-logo{ font-weight:700 !important; }
.tc-plan-tag, .plans-nav-badge{ font-weight:800 !important; }

/* Day theme: dark class-styled surfaces the force-dark text engine left unreadable */
html[data-theme="daylight"] body :is(.alert-modal-rule, .clr-modal-rule, .otp-email-display, .otp-demo-banner, .otp-demo-banner code,
  .hero-badge, .strat-ok, .checklist-edit-row .num-badge, .btn-clr-back, .screenshot-link, .screenshot-link.empty,
  .pj-trade, .pj-otp-digit, .pj-otp-demo, .psych-tabs, .psych-phase-notes, .psych-log-notes, .psych-past-session, .phase-locked-pill,
  .cal-week-row, .cal-po-item, .cal-weekly-empty, .cal-payout-empty, .cal-jump-btn, .cjp-year-row button, .cjp-month-grid button,
  .plan-day-cell, .plan-day-cell.future, .plan-modal-goal-item, .plans-day-state, .plan-goal-slot, .plan-status-pill.locked, .plan-status-pill.not-started,
  .pf-today-row, .pf-today-count, .pf-bar-pill, .rc-fill-btn, .rc-edge-readout, .rc-sev-low, .rc-sev-mid, .rc-sev-high,
  .dt-tier, .tcd-item, .tcd-pill.off, .ptf-step-num, .tajweed-chip, .bt-chart-loading, .ptp-risk-stat){
  background:#f4f6fb !important; background-image:none !important; border-color:#e3e6ee !important; color:#1b212c !important;
}
html[data-theme="daylight"] body :is(.auth-error, .pf-bar-pill.pf-pill-crit, .pf-bar-pill.pf-pill-breach, .plans-day-state[data-state="missed"]){ background:#fdeaea !important; border-color:#f3c6c6 !important; }
html[data-theme="daylight"] body :is(.auth-success, .pr-countdown, .sr-eta-pill, .pf-bar-pill.pf-pill-passed){ background:#e7f7ee !important; border-color:#bbe9cc !important; }
html[data-theme="daylight"] body .pf-bar-pill.pf-pill-warn{ background:#fff4dc !important; border-color:#f5d48a !important; }
html[data-theme="daylight"] body .pf-bar-pill.pf-pill-progress{ background:#ede9fe !important; border-color:#c4b5fd !important; }
html[data-theme="daylight"] :is([style*="background:#11131b" i], [style*="background:#12131f" i], [style*="background:#1a0e3a" i],
  [style*="background:#0f0f13" i], [style*="background:#0c0e15" i], [style*="background:#0c0e17" i]){ background:#ffffff !important; border-color:#e3e6ee !important; }
html[data-theme="daylight"] body input::placeholder, html[data-theme="daylight"] body textarea::placeholder{ color:#6b7280 !important; }
