/* QuantLabAI experience foundations. Page adapters retain all domain state colors. */
:root {
  --q-font: Inter, "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", system-ui, sans-serif;
  --q-canvas: #f3f6f8;
  --q-paper: #fff;
  --q-raised: #eaf0f3;
  --q-ink: #152e40;
  --q-muted: #566c7b;
  --q-line: #d3dfe5;
  --q-accent: #096b64;
  --q-accent-soft: #e0f1ed;
  --q-focus: #007f86;
  --q-radius: 16px;
  --q-shadow: 0 2px 3px rgb(14 38 53 / 3%), 0 12px 32px -16px rgb(14 38 53 / 23%);
  --q-shadow-raised: 0 1px 1px rgb(14 38 53 / 4%), 0 24px 64px -24px rgb(14 38 53 / 30%);
  --q-ease: cubic-bezier(.2,.7,.2,1);
}
body[data-finmind-trade-theme="dark"], body.dark, body.dark-mode, body.homepage-theme-dark {
  --q-canvas: #0b1621;
  --q-paper: #122331;
  --q-raised: #1a3040;
  --q-ink: #eaf2f6;
  --q-muted: #a1b7c5;
  --q-line: #304956;
  --q-accent: #79d9c5;
  --q-accent-soft: #173b3c;
  --q-focus: #87e8de;
  --q-shadow: 0 2px 3px rgb(0 0 0 / 12%), 0 16px 40px -20px rgb(0 0 0 / 60%);
  --q-shadow-raised: 0 1px 0 rgb(255 255 255 / 6%) inset, 0 24px 64px -20px rgb(0 0 0 / 55%);
}
body[data-route-name] {
  font-family: var(--q-font);
  color: var(--q-ink);
  background: var(--q-canvas);
  --color-primary: var(--q-accent);
  --bg-color-body: var(--q-canvas);
  --bg-color-card: var(--q-paper);
  --border-color-base: var(--q-line);
  --text-color-dark: var(--q-ink);
  --text-color-base: var(--q-muted);
}
body[data-route-name] :is(h1,h2,h3) { letter-spacing: -.025em; text-wrap: balance; }
body[data-route-name] :is(button,input,textarea,select) { font-family: inherit; }
body[data-route-name] :is(a,button,input,select,textarea,summary):focus-visible {
  outline: 3px solid var(--q-focus);
  outline-offset: 3px;
}
body[data-route-name] :is(input,textarea,select) { accent-color: var(--q-accent); }
body[data-route-name] :is(button,a,summary) { touch-action: manipulation; }
body[data-route-name] :is(button:disabled,[aria-disabled="true"]) { cursor: not-allowed; }
body[data-route-name] :is(th,td,time,.metric-value,.kpi-value) { font-variant-numeric: tabular-nums; }
body[data-route-name] :is(section,article,[id]) { scroll-margin-top: calc(var(--navbar-height,64px) + 24px); }

/* Persistent chrome: compact product identity, clear destinations, tangible popovers. */
body[data-route-name] #global-navbar {
  background: #102735;
  border-bottom: 1px solid #314651;
  box-shadow: 0 4px 24px rgb(9 27 38 / 14%);
  backdrop-filter: none;
}
body[data-route-name] #global-navbar > .container { max-width: 1440px; padding-inline: 28px; gap: 16px; }
body[data-route-name] #global-navbar .navbar-brand { gap: 10px; }
body[data-route-name] #global-navbar .navbar-brand-label { color: #eef7f6; font-size: 13px; letter-spacing: .02em; }
body[data-route-name] #global-navbar .nav-link { color: #d5e2e8; font-size: 13px; font-weight: 600; border-radius: 8px; }
body[data-route-name] #global-navbar :is(.nav-link:hover,.nav-link:focus-visible,.nav-link[aria-expanded="true"]) { color: #fff; background: #254553; }
body[data-route-name] #global-navbar .dropdown-menu {
  padding: 10px;
  border: 1px solid var(--q-line);
  border-radius: 14px;
  color: var(--q-ink);
  background: var(--q-paper);
  box-shadow: var(--q-shadow-raised);
  backdrop-filter: none;
}
body[data-route-name] #global-navbar .dropdown-item { min-height: 46px; border-radius: 8px; color: var(--q-ink); font-size: 14px; }
body[data-route-name] #global-navbar .dropdown-item:hover,
body[data-route-name] #global-navbar .dropdown-item:focus-visible { background: var(--q-accent-soft); color: var(--q-accent); transform: none; }
body[data-route-name] #global-navbar .dropdown-item i { color: var(--q-accent); }
body[data-route-name] #global-navbar .daily-radar-new-badge { background: var(--q-accent-soft); color: var(--q-accent); border: 0; font-size: 9px; }
body[data-route-name] #global-navbar .navbar-toggler { min-height: 44px; min-width: 44px; border-color: #59717e; border-radius: 10px; }
body[data-route-name] #global-footer { padding-block: 32px !important; background: var(--q-paper) !important; border-top: 1px solid var(--q-line); }
body[data-route-name] .global-footer__content { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 20px; text-align: left; }
body[data-route-name] .global-footer__nav { gap: 6px 20px; }
body[data-route-name] .global-footer__nav a { min-width: 44px; display: inline-flex; align-items: center; min-height: 44px; color: var(--q-muted); font-size: 13px; }
body[data-route-name] #global-footer .text-muted { color: var(--q-muted) !important; font-size: 12px; }
.q-footer-brand { display: grid; gap: 5px; }
.q-footer-brand strong { font-size: 18px; letter-spacing: -.03em; }
.q-footer-brand span { color: var(--q-muted); font-size: 12px; }

/* Shared Bootstrap controls for public, member and operational pages. */
body[data-route-name] .btn { min-height: 44px; border-radius: 9px; padding: 10px 18px; font-weight: 600; box-shadow: none; transition: background-color .18s, border-color .18s, box-shadow .18s; }
body[data-route-name] .btn-primary { --bs-btn-bg: #096b64; --bs-btn-border-color: #096b64; --bs-btn-hover-bg: #07534e; --bs-btn-hover-border-color: #07534e; --bs-btn-active-bg: #07534e; color: #fff; background: #096b64; border-color: #096b64; box-shadow: 0 3px 8px rgb(9 107 100 / 15%); }
body[data-route-name] .btn-primary:hover { background: #07534e; border-color: #07534e; }
body[data-route-name] .btn-outline-primary { color: var(--q-accent); border-color: var(--q-accent); }
body[data-route-name] .btn-outline-primary:hover { color: var(--q-paper); background: var(--q-accent); }
body[data-route-name] :is(.form-control,.form-select) { min-height: 46px; border-radius: 9px; border-color: var(--q-line); background-color: var(--q-paper); color: var(--q-ink); }
body[data-route-name] :is(.form-control,.form-select):focus { border-color: var(--q-accent); box-shadow: 0 0 0 3px color-mix(in srgb,var(--q-accent) 14%,transparent); }
body[data-route-name] .form-label { color: var(--q-ink); font-size: 13px; font-weight: 650; }
body[data-route-name] .card { border-radius: var(--q-radius); border-color: var(--q-line); box-shadow: var(--q-shadow); }
body[data-route-name] .table { --bs-table-color: var(--q-ink); --bs-table-bg: var(--q-paper); --bs-table-border-color: var(--q-line); --bs-table-striped-bg: var(--q-canvas); --bs-table-hover-bg: var(--q-accent-soft); }
body[data-route-name] .table > thead { font-size: 12px; letter-spacing: .02em; background: var(--q-raised); }
body[data-route-name] .table > :not(caption) > * > * { padding: 14px 16px; }

/* Public documents, account and community: shared typography and elevation. */
body[data-route-name] :is(.login-shell,.register-shell,.profile-main-container,.board-shell,.download-shell) { width: min(1320px,calc(100% - 48px)); margin-inline: auto; }
body[data-route-name] :is(.login-showcase,.register-showcase,.profile-hero,.board-hero,.download-hero,.gateway-panel-brand) { background: var(--q-paper); border: 1px solid var(--q-line); border-radius: 20px; box-shadow: var(--q-shadow); }
body[data-route-name] :is(.login-card,.register-card,.auth-card,.auth-container,.board-form-card,.board-thread-main,.board-side-card,.profile-section-card,.profile-identity-card,.download-resource-card,.action-card,.info-card,.info-panel) { border-radius: var(--q-radius); border-color: var(--q-line); background: var(--q-paper); box-shadow: var(--q-shadow); backdrop-filter: none; }
body[data-route-name] :is(.login-showcase,.register-showcase) { padding: clamp(24px,4vw,56px); color: var(--q-ink); }
body[data-route-name] :is(.login-showcase h1,.register-showcase h1,.profile-hero-title,.board-hero h1,.download-hero h1,.info-title) { color: var(--q-ink); font-size: clamp(28px,3vw,44px); line-height: 1.3; background: none; -webkit-text-fill-color: currentColor; }
body[data-route-name] :is(.login-eyebrow,.register-eyebrow,.profile-eyebrow,.info-kicker,.download-eyebrow) { color: var(--q-accent); background: none; font-size: 11px; font-weight: 700; letter-spacing: .14em; }
body[data-route-name] :is(.login-lead,.register-lead,.profile-hero-subtitle,.board-hero p,.download-hero p) { color: var(--q-muted); font-size: 15px; line-height: 1.85; }
body[data-route-name] :is(.login-showcase-points,.register-showcase-points) { display: grid; gap: 0; margin-top: 30px; }
body[data-route-name] :is(.login-showcase-points,.register-showcase-points) article { background: transparent; border: 0; border-top: 1px solid var(--q-line); border-radius: 0; box-shadow: none; padding: 18px 0; }
body[data-route-name] :is(.login-showcase-points,.register-showcase-points) strong { color: var(--q-ink); }
body[data-route-name] :is(.login-showcase-points,.register-showcase-points) span { color: var(--q-muted); }
body[data-route-name] :is(.login-card-header h2,.register-card-header h2) { font-size: 24px; color: var(--q-ink); }
body[data-route-name] :is(.login-preview-card,.login-preview-chip,.register-preview-card) { border-radius: 10px; box-shadow: none; border-color: var(--q-line); }
body[data-route-name] .profile-title-accent, body[data-route-name] .profile-title-accent::before, body[data-route-name] .profile-title-accent::after { color: var(--q-accent); background: none; -webkit-text-fill-color: currentColor; text-shadow: none; animation: none; }
body[data-route-name] .info-page { color: var(--q-ink); }
body[data-route-name] .info-page::before, body[data-route-name] .info-page::after { display: none; }
body[data-route-name] .info-document-section { padding: clamp(22px,3vw,36px); border-bottom: 1px solid var(--q-line); }
body[data-route-name] .info-document-section p { line-height: 1.9; max-width: 78ch; }
body[data-route-name] .info-hero-main { border-top: 3px solid var(--q-accent); }
body[data-route-name] :is(.board-hero,.profile-hero,.download-hero) { padding: clamp(24px,3vw,40px); border-top: 3px solid var(--q-accent); }
body[data-route-name] :is(.board-toolbar,.board-filters) { gap: 12px; }

/* Investment workspaces: bridge existing component variables to one palette. */
body[data-route-name] :is(.custom-dashboard-page,.ih-page,.cb-dashboard-page,.derivatives-dashboard-page,.active-etf-radar-page,.daily-radar-page,.finmind-overview-page,.strategy-index-page,.stock-news-dashboard-page,.broker-radar-page,.broker-radar-ai-page,.finmind-backtest-page,.finmind-diagnostics-page,.strategy-locked-page,.finmind-locked-page,.trader-page,.pyodide-poc-page) {
  background: var(--q-canvas);
  color: var(--q-ink);
  font-family: var(--q-font);
}
body[data-route-name] :is(.shell,.radar-shell,.active-etf-shell,.ih-shell,.dd-console,.finmind-overview-shell,.strategy-index-shell,.broker-radar-wrap,.broker-radar-ai-wrap) { max-width: 1480px; }
body[data-route-name][data-finmind-trade-theme] :is(.ql-decision-surface,.custom-dashboard-page,.ih-page,.cb-dashboard-page,.derivatives-dashboard-page,.active-etf-radar-page,.daily-radar-page) {
  --ql-canvas: var(--q-canvas); --ql-surface: var(--q-paper); --ql-surface-raised: var(--q-raised); --ql-border: var(--q-line); --ql-text: var(--q-ink); --ql-muted: var(--q-muted);
  --cd-bg: var(--q-canvas); --cd-panel: var(--q-paper); --cd-panel-strong: var(--q-raised); --cd-border: var(--q-line); --cd-text: var(--q-ink); --cd-muted: var(--q-muted); --cd-accent: var(--q-accent);
  --ih-bg: var(--q-canvas); --ih-panel: var(--q-paper); --ih-panel-strong: var(--q-raised); --ih-border: var(--q-line); --ih-text: var(--q-ink); --ih-muted: var(--q-muted); --ih-accent: var(--q-accent);
  --cb-background: var(--q-canvas); --cb-surface-1: var(--q-paper); --cb-surface-2: var(--q-raised); --cb-surface-hover: var(--q-accent-soft); --cb-text-primary: var(--q-ink); --cb-text-secondary: var(--q-muted); --cb-border: var(--q-line); --cb-brand: var(--q-accent);
  --dd-bg: var(--q-canvas); --dd-surface-1: var(--q-paper); --dd-surface-2: var(--q-raised); --dd-text: var(--q-ink); --dd-text-muted: var(--q-muted); --dd-border: var(--q-line);
  --active-etf-bg: var(--q-canvas); --active-etf-bg-elevated: var(--q-paper); --active-etf-border: var(--q-line); --active-etf-text: var(--q-ink); --active-etf-muted: var(--q-muted);
  --radar-bg: var(--q-canvas); --radar-surface: var(--q-paper); --radar-surface-2: var(--q-raised); --radar-line: var(--q-line); --radar-text: var(--q-ink); --radar-muted: var(--q-muted); --radar-blue: var(--q-accent); --radar-shadow: var(--q-shadow);
}
body[data-route-name] {
  --finmind-overview-bg: var(--q-canvas); --finmind-overview-panel: var(--q-paper); --finmind-overview-panel-strong: var(--q-raised); --finmind-overview-border: var(--q-line); --finmind-overview-text: var(--q-ink); --finmind-overview-muted: var(--q-muted);
  --strategy-bg: var(--q-canvas); --strategy-panel: var(--q-paper); --strategy-panel-strong: var(--q-raised); --strategy-border: var(--q-line); --strategy-text: var(--q-ink); --strategy-muted: var(--q-muted);
}
body[data-route-name] .ql-decision-contract { border-radius: 12px; background: var(--q-paper); box-shadow: var(--q-shadow); border-color: var(--q-line); }
body[data-route-name] .ql-decision-contract__label { font-family: var(--q-font); font-size: 11px; letter-spacing: .06em; }
body[data-route-name] .ql-decision-contract__value { font-size: 17px; }
body[data-route-name] .ql-decision-contract__note { font-family: var(--q-font); font-size: 12px; }
body[data-route-name] :is(.radar-hero,.active-etf-hero,.ih-header,.custom-dashboard-page .hero,.broker-radar-hero,.broker-radar-ai-hero,.finmind-overview-hero,.strategy-index-hero) { border-radius: 16px; border: 1px solid var(--q-line); background: var(--q-paper); box-shadow: var(--q-shadow); }
body[data-route-name] :is(.custom-dashboard-page,.ih-page) h1 { color: var(--q-ink); background: none; -webkit-text-fill-color: currentColor; text-shadow: none; }
body[data-route-name] :is(.custom-dashboard-page .panel,.ih-panel,.radar-card,.active-etf-panel,.finmind-overview-card,.strategy-card,.broker-radar-panel,.broker-radar-ai-panel) { border-radius: 12px; border-color: var(--q-line); box-shadow: var(--q-shadow); }
body[data-route-name] .research-chapter { margin-block: 28px; }
body[data-route-name] .research-chapter-head { border-left: 3px solid var(--q-accent); padding-left: 16px; }
body[data-route-name] .derivatives-dashboard-page::before { opacity: .035; }
body[data-route-name] .trade-zone-switcher-anchor { --trade-shell-border: var(--q-line); --trade-shell-surface: var(--q-paper); --trade-shell-menu: var(--q-paper); --trade-shell-text: var(--q-ink); --trade-shell-muted: var(--q-muted); --trade-shell-shadow: var(--q-shadow-raised); }
body[data-route-name] .trade-zone-switcher summary { border-radius: 10px; box-shadow: var(--q-shadow); }
body[data-route-name="main.finmind_stock_news_dashboard"][data-finmind-trade-theme] { --bg: var(--q-canvas); --panel: var(--q-paper); --panel-strong: var(--q-raised); --border: var(--q-line); --text: var(--q-ink); --muted: var(--q-muted); --accent: var(--q-accent); }
body[data-route-name="main.finmind_stock_news_dashboard"] .stock-news-dashboard-page :is(.panel,.hero,.sidebar-panel) { background: var(--q-paper); border-color: var(--q-line); border-radius: 14px; box-shadow: var(--q-shadow); }
body[data-finmind-trade-theme="light"] .ql-decision-surface { --ql-positive: #126345; --ql-caution: #825709; --ql-risk: #aa3346; }

/* Operational pages use the same surfaces while preserving semantic KPI colors. */
body[data-is-admin="true"][data-route-name^="admin."] { --color-admin: #096b64; --color-admin-hover: #07534e; }
body[data-route-name^="admin."] :is(.admin-shell,.policy-shell,.preview-shell) { color: var(--q-ink); background: var(--q-canvas); }
body[data-route-name^="admin."] :is(.admin-hero,.policy-hero,.preview-hero) { background: var(--q-paper); border: 1px solid var(--q-line); border-top: 3px solid var(--q-accent); border-radius: 16px; box-shadow: var(--q-shadow); color: var(--q-ink); }
body[data-route-name^="admin."] :is(.admin-hero h1,.policy-hero h1,.preview-hero h1) { color: var(--q-ink); font-size: clamp(26px,3vw,38px); }
body[data-route-name^="admin."] :is(.admin-hero p,.admin-hero-eyebrow) { color: var(--q-muted); }
body[data-route-name^="admin."] .sidebar { background: var(--q-paper); border: 1px solid var(--q-line); border-radius: 14px; }
body[data-route-name^="admin."] .sidebar .nav-link { color: var(--q-muted); min-height: 44px; border-radius: 8px; }
body[data-route-name^="admin."] .sidebar .nav-link.active { color: var(--q-accent); background: var(--q-accent-soft); }

@media (max-width: 991px) {
  body[data-route-name] #global-navbar > .container { padding-inline: 16px; gap: 8px; }
  body[data-route-name] #global-navbar .navbar-collapse { padding: 12px 0; }
  body[data-route-name] #global-navbar .dropdown-menu { box-shadow: none; margin-block: 6px 12px; }
  body[data-route-name] #global-navbar .nav-link { min-height: 46px; }
  body[data-route-name] :is(.login-shell,.register-shell,.profile-main-container,.board-shell,.download-shell) { width: calc(100% - 32px); }
}
@media (max-width: 600px) {
  body[data-route-name] #global-navbar .navbar-brand-label { display: none; }
  body[data-route-name] :is(.login-shell,.register-shell) { gap: 20px; }
  body[data-route-name] :is(.login-showcase,.register-showcase) { padding: 24px; }
  body[data-route-name] .login-preview-grid { grid-template-columns: 1fr; }
  body[data-route-name] .global-footer__content { display: grid; }
  body[data-route-name] .ql-decision-contract { grid-template-columns: repeat(2,minmax(0,1fr)); }
  body[data-route-name] .ql-decision-contract__item { padding: 14px 12px; border-bottom: 1px solid var(--q-line); min-width: 0; }
  body[data-route-name] .ql-decision-contract__item:nth-child(odd) { border-right: 1px solid var(--q-line); }
  body[data-route-name] .ql-decision-contract__value { font-size: 14px; overflow-wrap: anywhere; }
  body[data-route-name] .ql-decision-contract__note { font-size: 11px; }
  body[data-route-name] .table-responsive { overscroll-behavior-inline: contain; }
}
@media (prefers-reduced-motion: reduce) {
  body[data-route-name] *, body[data-route-name] *::before, body[data-route-name] *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}
@media print {
  body[data-route-name] { background: #fff; color: #111; }
  body[data-route-name] :is(.card,.panel,.info-card) { box-shadow: none; }
}
/* Account entry is deliberately compact; the form stays beside the value proposition. */
body[data-route-name] :is(.login-shell,.register-shell) { grid-template-columns: minmax(0,1fr) minmax(360px,.82fr); gap: 32px; align-items: start; padding-block: 48px; max-width: 1120px; }
body[data-route-name] :is(.login-showcase,.register-showcase) { background: #102735; border-color: #304956; color: #eaf2f6; box-shadow: var(--q-shadow-raised); }
body[data-route-name] :is(.login-showcase h1,.register-showcase h1) { color: #eaf2f6; font-size: clamp(30px,3.2vw,44px); }
body[data-route-name] :is(.login-eyebrow,.register-eyebrow) { color: #94dbc9; border: 0; box-shadow: none; padding: 0; }
body[data-route-name] :is(.login-lead,.register-lead) { color: #b6cbd5; }
body[data-route-name] :is(.login-showcase-points,.register-benefit-grid) { display: grid; grid-template-columns: 1fr; gap: 0; }
body[data-route-name] :is(.login-showcase-points,.register-benefit-grid) article { padding: 20px 0; background: transparent; border: 0; border-top: 1px solid #36515e; border-radius: 0; box-shadow: none; }
body[data-route-name] :is(.login-showcase-points,.register-benefit-grid) strong { color: #eef6f8; font-size: 15px; }
body[data-route-name] :is(.login-showcase-points,.register-benefit-grid) span { color: #b6cbd5; font-size: 13px; }
body[data-route-name] :is(.login-card,.register-card) { padding: 32px; border-radius: 16px; }
body[data-route-name] :is(.login-submit-btn,.register-submit-btn,.auth-submit-btn) { min-height: 48px; border: 1px solid #096b64; border-radius: 9px; background: #096b64; color: #fff; box-shadow: 0 4px 12px rgb(9 107 100 / 15%); }
body[data-route-name] :is(.login-submit-btn,.register-submit-btn,.auth-submit-btn):hover:not(:disabled) { background: #07534e; transform: none; }
body[data-route-name] :is(.login-submit-btn,.register-submit-btn):disabled { background: #6f8b88; border-color: #6f8b88; box-shadow: none; }
body[data-route-name] :is(.login-inline-link,.login-footer a,.login-secondary-link,.register-footer a) { color: #096b64; }
body[data-route-name] :is(.login-shell,.register-shell) .input-shell { border-color: #d3dfe5; border-radius: 9px; background: #f3f6f8; box-shadow: none; }
body[data-route-name] .google-consent-panel { border-radius: 8px; padding: 14px; border-color: #d3dfe5; background: #f3f6f8; }
body[data-route-name] .google-consent-note { font-size: 12px; color: #566c7b; line-height: 1.8; }
body[data-route-name] .google-consent-note a { color: #096b64; }
body[data-route-name] .register-note-panel { background: #1a3543; border-color: #36515e; border-radius: 10px; }
body[data-route-name] .register-note-panel :is(strong,span,a) { color: #d0e4e8; }
@media(max-width:800px) {
 body[data-route-name] :is(.login-shell,.register-shell) { display: flex; flex-direction: column; padding-block: 24px; gap: 24px; }
 body[data-route-name] :is(.login-panel,.register-panel) { width: 100%; order: -1; }
 body[data-route-name] :is(.login-showcase,.register-showcase) { width: 100%; }
 body[data-route-name] :is(.login-card,.register-card) { padding: 24px; }
}
body[data-route-name] .radar-preview-banner a,
body[data-route-name] [data-radar-watchlist-form] button { background: #096b64; color: #fff; min-height: 44px; display: inline-flex; align-items: center; }
body[data-route-name] #global-navbar { background: #102735 !important; }
body[data-route-name] :is(.login-shell,.register-shell) .input-shell { background: var(--q-canvas); border-color: var(--q-line); }
body[data-route-name] .google-consent-panel { background: var(--q-canvas); border-color: var(--q-line); }
body[data-route-name] .google-consent-note { color: var(--q-muted); }
body[data-route-name] :is(.login-inline-link,.login-footer a,.login-secondary-link,.register-footer a,.google-consent-note a) { color: var(--q-accent); }
/* Neutral bridges for secondary research tools and embedded strategy surfaces. */
body[data-route-name][data-finmind-trade-theme] :is(.finmind-backtest-page,.finmind-diagnostics-page,.broker-radar-ai-page),
body[data-route-name][data-finmind-trade-theme]:is([data-route-name="main.finmind_snapshot_treemap"],[data-route-name="main.strategy_dashboard"]) {
 --bg: var(--q-canvas); --bg-2: var(--q-raised); --bg0: var(--q-canvas); --bg1: var(--q-paper); --bg2: var(--q-raised);
 --panel: var(--q-paper); --panel-2: var(--q-raised); --panel-strong: var(--q-raised);
 --line: var(--q-line); --border: var(--q-line); --soft-border: var(--q-line); --subtle-border: var(--q-line);
 --text: var(--q-ink); --muted: var(--q-muted); --muted2: var(--q-muted); --accent: var(--q-accent); --cyan: var(--q-accent);
 --shadow: var(--q-shadow); --field-bg: var(--q-paper); --table-head-bg: var(--q-raised); --chip: var(--q-raised); --chip-bg: var(--q-raised);
 --soft-surface: var(--q-raised); --soft-panel: var(--q-paper); --subtle-surface: var(--q-raised); --surface-gloss: var(--q-paper);
 --code-bg: var(--q-raised); --code-text: var(--q-ink); --code: var(--q-accent); --report-frame-bg: var(--q-paper);
 --control-bg: var(--q-paper); --control-text: var(--q-ink); --control-border: var(--q-line); --refresh-bg: var(--q-paper);
 --chart-bg: var(--q-paper); --row-bg: var(--q-paper); --notice-bg: var(--q-raised); --r1: 16px; --r2: 10px;
 background: var(--q-canvas);
}
body[data-route-name][data-finmind-trade-theme] .broker-radar-page {
 --radar-bg: var(--q-canvas); --radar-panel: var(--q-paper); --radar-panel-strong: var(--q-raised); --radar-line: var(--q-line); --radar-text: var(--q-ink); --radar-muted: var(--q-muted); --radar-cyan: var(--q-accent); --radar-glow: var(--q-canvas);
}
body[data-route-name] .trader-page {
 background: var(--trader-bg); color: var(--trader-text); color-scheme: dark;
 --trader-bg: #0b1621; --trader-surface: #122331; --trader-surface-strong: #1a3040; --trader-border: #304956; --trader-text: #eaf2f6; --trader-muted: #a1b7c5; --trader-accent: #79d9c5; --trader-accent-soft: #173b3c; --trader-ring: #87e8de;
}
body[data-route-name] .trader-page[data-theme="light"] {
 color-scheme: light;
 --trader-bg: #f3f6f8; --trader-surface: #fff; --trader-surface-strong: #eaf0f3; --trader-border: #d3dfe5; --trader-text: #152e40; --trader-muted: #566c7b; --trader-accent: #096b64; --trader-accent-soft: #e0f1ed; --trader-ring: #007f86;
}
body[data-route-name] .pyodide-poc-page { --poc-bg: var(--q-canvas); --poc-surface: var(--q-paper); --poc-border: var(--q-line); --poc-text: var(--q-ink); --poc-muted: var(--q-muted); }
body[data-route-name][data-finmind-trade-theme] :is(.strategy-locked-panel,.finmind-locked-panel) { background: var(--q-paper); border-color: var(--q-line); color: var(--q-ink); box-shadow: var(--q-shadow-raised); border-radius: 18px; }
body[data-route-name][data-finmind-trade-theme] :is(.strategy-locked-panel,.finmind-locked-panel) :is(h1,h2,h3,strong) { color: var(--q-ink); }
body[data-route-name][data-finmind-trade-theme] :is(.strategy-locked-panel,.finmind-locked-panel) p { color: var(--q-muted); }
body[data-route-name][data-finmind-trade-theme] :is(.finmind-backtest-page,.finmind-diagnostics-page,.broker-radar-page,.broker-radar-ai-page,.stock-news-dashboard-page) :is(.panel,.hero,.hero-card,.chart-card,.article-card) { background: var(--q-paper); border-color: var(--q-line); border-radius: 14px; box-shadow: var(--q-shadow); }

/* Working pages prioritize the controls and evidence over campaign artwork. */
body[data-route-name][data-finmind-trade-theme] :is(.custom-dashboard-page,.ih-page,.active-etf-radar-page) h1 { font: 650 clamp(26px,3vw,38px)/1.35 var(--q-font); color: var(--q-ink); -webkit-text-fill-color: currentColor; }
body[data-route-name][data-finmind-trade-theme] .custom-dashboard-page .research-hero__masthead { min-height: 0; display: block; border: 0; border-radius: 0; background: transparent; }
body[data-route-name][data-finmind-trade-theme] .custom-dashboard-page .research-hero__masthead::after { display: none; }
body[data-route-name][data-finmind-trade-theme] .custom-dashboard-page .research-hero__intro { padding: 20px 12px 24px; min-height: 0; max-width: none; position: relative; inset: auto; }
body[data-route-name][data-finmind-trade-theme] .custom-dashboard-page .research-hero__intro .eyebrow { color: var(--q-accent); font-size: 10px; letter-spacing: .13em; }
body[data-route-name][data-finmind-trade-theme] .custom-dashboard-page .research-hero__intro p { color: var(--q-muted); font-size: 14px; margin-top: 10px; }
body[data-route-name][data-finmind-trade-theme] .custom-dashboard-page .research-command-bar { border-radius: 12px; background: var(--q-paper); border-color: var(--q-line); box-shadow: none; }
body[data-route-name][data-finmind-trade-theme] .custom-dashboard-page .research-command-bar :is(input,select,.research-period-toggle,.research-command-status-pill) { background: var(--q-canvas); border-color: var(--q-line); border-radius: 8px; color: var(--q-ink); }
body[data-route-name][data-finmind-trade-theme] .custom-dashboard-page :is(#refresh-btn,#mobile-command-analyze-btn) { background: #096b64; border-color: #096b64; color: #fff; box-shadow: none; }
body[data-route-name][data-finmind-trade-theme] .custom-dashboard-page #mobile-command-analyze-btn:disabled { background: #718d89; border-color: #718d89; }
body[data-route-name][data-finmind-trade-theme] .custom-dashboard-page .research-story { margin-top: 24px; background: var(--q-paper); border: 1px solid var(--q-line); border-radius: 16px; box-shadow: var(--q-shadow); }
body[data-route-name][data-finmind-trade-theme] .ih-hero-section { padding: 28px; min-height: 0; border-radius: 16px; background: var(--q-paper); border: 1px solid var(--q-line); box-shadow: var(--q-shadow); }
body[data-route-name][data-finmind-trade-theme] .ih-hero-section::before,
body[data-route-name][data-finmind-trade-theme] .ih-hero-section::after { display: none; }
body[data-route-name][data-finmind-trade-theme] .ih-hero-grid { grid-template-columns: minmax(0,1fr); }
body[data-route-name][data-finmind-trade-theme] .ih-hero-copy { max-width: none; }
body[data-route-name][data-finmind-trade-theme] :is(.ih-hero-desc,.ih-hero-summary-card span) { color: var(--q-muted); }
body[data-route-name][data-finmind-trade-theme] .ih-hero-summary-card { background: var(--q-canvas); border-color: var(--q-line); border-radius: 10px; }
body[data-route-name][data-finmind-trade-theme] .ih-hero-summary-card strong { color: var(--q-ink); }
body[data-route-name][data-finmind-trade-theme] .active-etf-hero { min-height: 280px; grid-template-columns: minmax(0,1.6fr) minmax(240px,.7fr); }
body[data-route-name][data-finmind-trade-theme] .active-etf-hero-copy { padding: 32px; gap: 14px; }
body[data-route-name][data-finmind-trade-theme] .active-etf-lead { font-size: 14px; line-height: 1.8; }
body[data-route-name][data-finmind-trade-theme] :is(.broker-radar-hero,.broker-radar-ai-hero,.finmind-backtest-page .hero,.finmind-diagnostics-page .hero) { padding: 28px; }
body[data-route-name][data-finmind-trade-theme] :is(.broker-radar-hero,.broker-radar-ai-hero,.finmind-backtest-page,.finmind-diagnostics-page,.strategy-shell,.finmind-overview-hero,.strategy-index-hero) h1 { font-size: clamp(26px,3vw,38px); line-height: 1.4; }
@media(max-width:768px) {
 body[data-route-name][data-finmind-trade-theme] .active-etf-hero { grid-template-columns: 1fr; }
 body[data-route-name][data-finmind-trade-theme] .active-etf-hero-visual { display: none; }
 body[data-route-name][data-finmind-trade-theme] .active-etf-hero-copy { padding: 24px; }
 body[data-route-name][data-finmind-trade-theme] .custom-dashboard-page .research-hero__intro { padding: 12px 4px 20px; }
 body[data-route-name][data-finmind-trade-theme] .ih-hero-section { padding: 22px; }
}

body[data-route-name][data-finmind-trade-theme] .backtest-editorial-masthead { display: block; min-height: 0; }
body[data-route-name][data-finmind-trade-theme] .backtest-editorial-copy { max-width: none; padding: 0; }
body[data-route-name][data-finmind-trade-theme] .finmind-backtest-page .hero h1 { color: var(--q-ink); }
body[data-route-name][data-finmind-trade-theme] .broker-radar-ai-hero { background: var(--q-paper); box-shadow: var(--q-shadow); }
body[data-route-name][data-finmind-trade-theme] .broker-radar-ai-hero::after { display: none; }
body[data-route-name^="admin."] .kpi-card { background: var(--q-paper) !important; color: var(--q-ink) !important; border-top: 3px solid var(--q-accent); }
body[data-route-name^="admin."] .kpi-card :is(.card-header,.card-body) { background: transparent; color: var(--q-ink); }
body[data-route-name^="admin."] .kpi-card .card-header { color: var(--q-muted); font-size: 13px; border-bottom: 0; padding-bottom: 0; }
body[data-route-name^="admin."] .kpi-card.bg-warning { border-top-color: #b67a18; }
body[data-route-name^="admin."] .kpi-card.bg-danger { border-top-color: #c25562; }
body[data-route-name^="admin."] .btn-primary { background: #096b64; border-color: #096b64; color: #fff; }

body[data-route-name="main.chat_legacy"] { --bg-dark: #0b1621; --bg-panel: #122331; --bg-input: #1a3040; --border-color: #304956; --text-primary: #eaf2f6; --text-secondary: #a1b7c5; --accent-color: #79d9c5; }
body[data-route-name="main.chat_legacy"].light-theme { --bg-dark: #f3f6f8; --bg-panel: #fff; --bg-input: #eaf0f3; --border-color: #d3dfe5; --text-primary: #152e40; --text-secondary: #566c7b; --accent-color: #096b64; --accent-hover: #07534e; --accent-soft: #e0f1ed; --surface-muted: #eaf0f3; --surface-elevated: #fff; }
body[data-route-name="main.chat_legacy"] .app-shell { background: var(--bg-dark); }
body[data-route-name="main.chat_legacy"].light-theme :is(.top-bar,.sidebar-header,.sidebar-footer,.canvas-header) { background: var(--bg-panel) !important; }
body[data-route-name="main.chat_legacy"] :is(.input-area,.input-container) { box-shadow: var(--q-shadow-raised); border-radius: 14px; }

body[data-route-name][data-finmind-trade-theme] .ih-shell { margin-top: 24px; }
body[data-route-name][data-finmind-trade-theme] .ih-hero-grid { grid-template-areas: "copy" "command"; }
body[data-route-name][data-finmind-trade-theme] .ih-hero-copy { padding: 0; border: 0; }
body[data-route-name][data-finmind-trade-theme] .ih-command-deck { background: var(--q-canvas); border-color: var(--q-line); border-radius: 12px; box-shadow: none; }
body[data-route-name][data-finmind-trade-theme] .ih-command-deck::after { display: none; }
body[data-route-name][data-finmind-trade-theme] .ih-command-deck :is(h2,strong) { color: var(--q-ink); }
body[data-route-name][data-finmind-trade-theme] .ih-command-deck :is(p,span) { color: var(--q-muted); }
body[data-route-name][data-finmind-trade-theme] :is(.ih-command-chip,.ih-command-stat) { background: var(--q-paper); color: var(--q-ink); border-color: var(--q-line); border-radius: 8px; }
body[data-route-name^="admin."] .admin-shell .hero-links .btn { background: var(--q-paper); color: var(--q-accent); border: 1px solid var(--q-line); box-shadow: none; border-radius: 8px; }
@media(min-width:981px) { body[data-route-name][data-finmind-trade-theme] .ih-command-deck { display: none; } }
@media(max-width:768px) { body[data-route-name][data-finmind-trade-theme] .custom-dashboard-page #refresh-btn { white-space: nowrap; padding-inline: 8px; min-width: 56px; width: 56px; } }

body[data-route-name] { color-scheme: light; }
body[data-route-name]:is([data-finmind-trade-theme="dark"],.dark,.dark-mode,.homepage-theme-dark) { color-scheme: dark; }
body[data-route-name^="admin."] { --admin-bg: var(--q-canvas); --admin-bg-2: var(--q-canvas); --admin-panel: var(--q-paper); --admin-panel-strong: var(--q-raised); --admin-line: var(--q-line); --admin-line-strong: var(--q-line); --admin-text: var(--q-ink); --admin-text-strong: var(--q-ink); --admin-muted: var(--q-muted); --admin-muted-strong: var(--q-muted); --admin-accent: var(--q-accent); --admin-accent-2: var(--q-accent); --admin-shadow: var(--q-shadow); --admin-radius: 16px; --admin-radius-sm: 10px; }

body[data-route-name] .trader-page .trader-page__button--primary { color: #fff; background: #096b64; border-color: #096b64; }
body[data-route-name] .trader-page .trader-page__button--primary:hover:not(:disabled) { background: #07534e; }
/* Complete account surfaces, including permission and security tabs. */
body[data-route-name] .profile-main-container :is(h2,h5,h6,strong,.form-label) { color: var(--q-ink); }
body[data-route-name] .profile-main-container :is(p,small,.form-text,.profile-identity-label,.profile-summary-label,.profile-info-item span,.profile-identity-item span,.profile-cost-card span,.profile-permission-meta-card span) { color: var(--q-muted); }
body[data-route-name] .profile-main-container::before, body[data-route-name] .profile-main-container::after, body[data-route-name] .profile-hero::after, body[data-route-name] .profile-card::before { display: none; }
body[data-route-name] :is(.profile-card,.profile-admin-panel,.profile-info-item,.profile-note-card,.profile-permission-summary-card,.profile-permission-note,.profile-permission-module,.profile-permission-meta-card,.profile-cost-card,.profile-permission-table-wrap) { background: var(--q-paper); color: var(--q-ink); border: 1px solid var(--q-line); border-radius: 12px; box-shadow: var(--q-shadow); }
body[data-route-name] :is(.profile-identity-item,.profile-summary-card,.profile-permission-chip,.profile-hero-highlights span) { background: var(--q-canvas); color: var(--q-muted); border: 1px solid var(--q-line); border-radius: 10px; }
body[data-route-name] .profile-avatar { background: #096b64; border-radius: 16px; box-shadow: none; }
body[data-route-name] .profile-tabs-section { background: transparent; border-bottom-color: var(--q-line); }
body[data-route-name] .profile-tabs .nav-link { min-height: 48px; background: var(--q-canvas); color: var(--q-muted); border-color: var(--q-line); border-radius: 8px; box-shadow: none; }
body[data-route-name] .profile-tabs .nav-link.active { background: #096b64; border-color: #096b64; color: #fff; }
body[data-route-name] .profile-main-container :is(.form-control,.form-select) { color: var(--q-ink); background: var(--q-canvas); }
body[data-route-name] .profile-main-container :is(input,textarea)::placeholder { color: var(--q-muted); opacity: 1; }
body[data-route-name] .profile-permission-table :is(th,td) { background: var(--q-paper); color: var(--q-ink); border-color: var(--q-line); }
body[data-route-name] .profile-permission-table th { background: var(--q-raised); }
body[data-route-name] .profile-links a { color: var(--q-accent); }
body[data-route-name] .consent-shell { width: min(760px,calc(100% - 32px)); }
body[data-route-name] .consent-card { background: var(--q-paper); border: 1px solid var(--q-line); border-radius: 16px; box-shadow: var(--q-shadow-raised); }
body[data-route-name] .consent-title { color: var(--q-ink); line-height: 1.4; }
body[data-route-name] :is(.consent-lead,.consent-actions p,.consent-version-card span) { color: var(--q-muted); }
body[data-route-name] :is(.consent-version-card,.consent-check) { background: var(--q-canvas); color: var(--q-ink); border-color: var(--q-line); border-radius: 10px; }
body[data-route-name] .consent-version-card strong { color: var(--q-ink); }
body[data-route-name] :is(.consent-check a,.consent-eyebrow) { color: var(--q-accent); }
body[data-route-name] .consent-eyebrow { background: var(--q-accent-soft); }
body[data-route-name] .consent-submit { background: #096b64; color: #fff; border-radius: 9px; box-shadow: none; }
/* Community and download collections share readable empty and populated states. */
body[data-route-name] :is(.board-card,.board-filter-form,.board-empty,.board-thread-card,.board-reply-card,.board-notification-item,.download-card,.download-empty) { background: var(--q-paper); color: var(--q-ink); border: 1px solid var(--q-line); border-radius: 14px; box-shadow: var(--q-shadow); }
body[data-route-name] :is(.board-shell,.download-shell) :is(h2,h3,h4,strong,label,.board-section-title) { color: var(--q-ink); }
body[data-route-name] :is(.board-shell,.download-shell) :is(p,li,small,.board-thread-meta,.board-reply-meta,.download-meta-row,.download-card-footnote) { color: var(--q-muted); }
body[data-route-name] .board-shell :is(input,select,textarea) { color: var(--q-ink); background: var(--q-canvas); border-color: var(--q-line); }
body[data-route-name] .board-shell :is(input,textarea)::placeholder { color: var(--q-muted); opacity: 1; }
body[data-route-name] .board-badge { background: var(--q-accent-soft); color: var(--q-accent); }
body[data-route-name] .download-stat-card { background: var(--q-canvas); color: var(--q-ink); border: 1px solid var(--q-line); border-radius: 12px; }
body[data-route-name] .download-stat-card strong { color: var(--q-ink); }
body[data-route-name] .download-stat-card span { color: var(--q-muted); }
body[data-route-name] .download-btn { background: #096b64; color: #fff; border-radius: 9px; }
/* Account recovery is a focused form, with a consistent reading width. */
body[data-route-name] .auth-page-container { padding: 48px 16px; }
body[data-route-name] :is(.auth-page-container .auth-card,.auth-container) { max-width: 520px; width: 100%; margin-inline: auto; padding: 32px; }
body[data-route-name] .auth-container { margin-block: 48px; width: calc(100% - 32px); }
body[data-route-name] .auth-header { margin-bottom: 24px; }
body[data-route-name] .auth-header img { width: 160px; height: auto; margin-bottom: 24px; }
body[data-route-name] :is(.auth-header h1,.auth-container h1) { color: var(--q-ink); font-size: 28px; line-height: 1.4; }
body[data-route-name] :is(.auth-card,.auth-container) .text-muted { color: var(--q-muted) !important; }
body[data-route-name] :is(.auth-card,.auth-container) :is(input,textarea)::placeholder { color: var(--q-muted); opacity: 1; }
body[data-route-name] :is(.auth-card,.auth-container) .input-group-text { background: var(--q-raised); color: var(--q-muted); border-color: var(--q-line); }
body[data-route-name] :is(.auth-footer,.auth-links) { margin-top: 24px; text-align: center; }
body[data-route-name] :is(.auth-footer,.auth-links) a { display: inline-flex; align-items: center; min-height: 44px; color: var(--q-accent); }
@media(max-width:600px) {
 body[data-route-name] .auth-page-container { padding-block: 24px; }
 body[data-route-name] :is(.auth-page-container .auth-card,.auth-container) { padding: 24px; }
}
/* Legacy administration colors used !important; override at the same boundary. */
body[data-route-name^="admin."] :is(.btn-primary,.btn-success) { background: #096b64 !important; color: #fff !important; border-color: #096b64 !important; }
body[data-route-name^="admin."] .btn-danger { background: #a62e3e !important; color: #fff !important; border-color: #a62e3e !important; }
body[data-route-name^="admin."] .btn-warning { background: #f6e8c4 !important; color: #654713 !important; border-color: #cda765 !important; }
body[data-route-name^="admin."] .btn-info { background: #254e68 !important; color: #fff !important; border-color: #254e68 !important; }
body[data-route-name^="admin."] :is(.btn-secondary,.btn-outline-light) { background: var(--q-raised) !important; color: var(--q-ink) !important; border-color: var(--q-line) !important; }
body[data-route-name^="admin."] .admin-summary-value { color: var(--q-ink); }
body[data-route-name^="admin."] .admin-shell .hero-links .btn { background: var(--q-paper) !important; color: var(--q-accent) !important; border-color: var(--q-line) !important; }
