@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;0,9..144,600;1,9..144,400;1,9..144,500&family=Inter:wght@300;400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap');

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
:root{
  /* LIGHT (cooler, bluer) */
  --black:#0a0e17; --ink:#141a24; --bg:#eef2f9; --bg-warm:#e6ecf7;
  --surface:#ffffff; --surface-2:#f5f8fd; --border:#e1e8f2; --border-2:#cdd7e6;
  --blue:#1d4ed8; --blue-bright:#2563eb; --blue-soft:#e3edfd; --blue-tint:#edf3fe;
  --white:#ffffff; --gray-1:#5c6573; --gray-2:#8b94a3; --gray-3:#b7c0cf;
  --green:#15803d; --green-soft:#e4f5ea; --red:#dc2626; --red-soft:#fdeaea;
  --amber:#b45309; --amber-soft:#fef3e2; --purple:#7c3aed; --purple-soft:#f1e9fc;
  --grad-blue:linear-gradient(135deg,#2563eb,#1d4ed8);
  --r:12px; --r-lg:20px; --r-xl:28px;
  --shadow-sm:0 1px 2px rgba(29,78,216,0.05),0 2px 8px rgba(20,26,36,0.04);
  --shadow:0 4px 12px rgba(29,78,216,0.07),0 12px 32px rgba(20,26,36,0.06);
  --shadow-lg:0 8px 24px rgba(29,78,216,0.10),0 24px 64px rgba(20,26,36,0.10);
}
/* DARK */
html[data-theme="dark"]{
  --black:#000000; --ink:#e7eaf0; --bg:#0c0f16; --bg-warm:#11151f;
  --surface:#161b26; --surface-2:#1b2230; --border:#28303f; --border-2:#37404f;
  --blue:#3b82f6; --blue-bright:#60a5fa; --blue-soft:#16233e; --blue-tint:#131d33;
  --white:#ffffff; --gray-1:#9aa4b4; --gray-2:#6c7689; --gray-3:#48515f;
  --green:#34d399; --green-soft:#0e2b20; --red:#f87171; --red-soft:#33191b;
  --amber:#fbbf24; --amber-soft:#322507; --purple:#a78bfa; --purple-soft:#221a39;
  --grad-blue:linear-gradient(135deg,#3b82f6,#2563eb);
  --shadow-sm:0 1px 2px rgba(0,0,0,0.3);
  --shadow:0 4px 14px rgba(0,0,0,0.4);
  --shadow-lg:0 10px 30px rgba(0,0,0,0.55);
}
/* dark overrides for components that use --ink/--black as a fill */
html[data-theme="dark"] .btn-dark{background:var(--blue);border-color:var(--blue);color:#fff;}
html[data-theme="dark"] .btn-dark:hover{background:var(--blue-bright);}
html[data-theme="dark"] .sb-avatar,
html[data-theme="dark"] .sh-logo,
html[data-theme="dark"] .cmp-co-logo,
html[data-theme="dark"] .ipo-logo-fb{background:var(--blue);}
html[data-theme="dark"] .pro-lock-badge{background:var(--blue);}
html[data-theme="dark"] .bento-dark,
html[data-theme="dark"] .cta-inner,
html[data-theme="dark"] .price-card.featured{background:var(--surface-2)!important;border:1px solid var(--border);}
html[data-theme="dark"] img.ipo-logo,html[data-theme="dark"] .sh-logo img{background:#fff;}
html[data-theme="dark"] .topbar{background:rgba(12,15,22,0.82);}
html[data-theme="dark"] .scorechip{background:var(--blue-soft);color:var(--blue-bright);}
html[data-theme="dark"] .hm-tile{filter:saturate(0.85) brightness(0.92);}
html{scroll-behavior:smooth;}
body{background:var(--bg);color:var(--ink);font-family:'Inter',sans-serif;font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;transition:background .25s,color .25s;}
.card,.sidebar,.topbar,.stat-tile,.tbl-wrap,.rt,.fund-card,.bond-cat,.ipo-card{transition:background .25s,border-color .25s,color .25s;}
::-webkit-scrollbar{width:5px;height:5px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:var(--border-2);border-radius:3px;}
a{color:inherit;text-decoration:none;}
.mono{font-family:'IBM Plex Mono',monospace;}
.serif{font-family:'Fraunces',serif;}
.up{color:var(--green);} .dn{color:var(--red);}

/* APP SHELL */
.app{display:grid;grid-template-columns:240px 1fr;min-height:100vh;}
.sidebar{background:var(--surface);border-right:1px solid var(--border);padding:24px 16px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;overflow-y:auto;}
.sidebar::-webkit-scrollbar{width:0;}
.sb-logo{font-family:'Fraunces',serif;font-size:22px;font-weight:600;letter-spacing:-0.5px;padding:0 12px 22px;display:block;}
.sb-logo em{color:var(--blue);font-style:italic;}
.sb-group{margin-bottom:16px;}
.sb-group-label{font-size:10px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--gray-2);padding:0 12px;margin-bottom:6px;}
.sb-footer{margin-top:auto;}
.sb-link{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:10px;font-size:14px;font-weight:500;color:var(--gray-1);transition:all 0.15s;cursor:pointer;margin-bottom:2px;}
.sb-link:hover{background:var(--surface-2);color:var(--ink);}
.sb-link.on{background:var(--blue-soft);color:var(--blue);}
.sb-link svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.6;flex-shrink:0;}
.sb-link .pro-dot{margin-left:auto;font-size:9px;font-weight:600;letter-spacing:0.5px;text-transform:uppercase;color:var(--blue);background:var(--blue-soft);padding:2px 7px;border-radius:100px;}
.sb-footer{margin-top:auto;padding:16px 12px 0;border-top:1px solid var(--border);}
.sb-user{display:flex;align-items:center;gap:10px;}
.sb-avatar{width:34px;height:34px;border-radius:50%;background:var(--ink);color:var(--white);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;}
.sb-user-name{font-size:13px;font-weight:500;color:var(--ink);}
.sb-user-plan{font-size:11px;color:var(--gray-2);}

.main{padding:0;overflow-x:hidden;}
.topbar{height:64px;border-bottom:1px solid var(--border);background:rgba(238,242,249,0.85);backdrop-filter:blur(16px);display:flex;align-items:center;justify-content:space-between;padding:0 32px;position:sticky;top:0;z-index:50;}
.search-box{display:flex;align-items:center;gap:10px;padding:9px 16px;background:var(--surface);border:1px solid var(--border);border-radius:100px;width:340px;}
.search-box svg{width:15px;height:15px;stroke:var(--gray-2);fill:none;stroke-width:2;}
.search-box input{border:none;outline:none;background:transparent;font-family:'Inter',sans-serif;font-size:13px;color:var(--ink);width:100%;}
.search-box input::placeholder{color:var(--gray-2);}
.topbar-right{display:flex;align-items:center;gap:12px;}
.icon-btn{width:38px;height:38px;border-radius:10px;border:1px solid var(--border);background:var(--surface);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all 0.15s;}
.icon-btn:hover{border-color:var(--border-2);}
.icon-btn svg{width:17px;height:17px;stroke:var(--gray-1);fill:none;stroke-width:1.8;}
.content{padding:32px;max-width:1280px;}

/* HEADERS */
.page-head{margin-bottom:28px;}
.page-title{font-family:'Fraunces',serif;font-size:34px;font-weight:500;letter-spacing:-1px;color:var(--ink);}
.page-sub{font-size:14px;color:var(--gray-1);margin-top:4px;}

/* BUTTONS */
.btn{padding:10px 20px;border-radius:100px;font-family:'Inter',sans-serif;font-size:13px;font-weight:500;cursor:pointer;transition:all 0.18s;border:1px solid transparent;display:inline-flex;align-items:center;gap:8px;}
.btn-dark{background:var(--ink);color:var(--white);border-color:var(--ink);}
.btn-dark:hover{background:var(--black);}
.btn-blue{background:var(--blue);color:var(--white);border-color:var(--blue);}
.btn-blue:hover{background:var(--blue-bright);}
.btn-outline{background:transparent;color:var(--ink);border-color:var(--border-2);}
.btn-outline:hover{border-color:var(--ink);}

/* CARDS */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:24px;}
.card-sm{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:18px;}

/* STAT TILES */
.stat-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}
.stat-tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:22px;}
.stat-label{font-size:11px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--gray-2);margin-bottom:10px;}
.stat-val{font-family:'Fraunces',serif;font-size:30px;font-weight:600;letter-spacing:-1px;color:var(--ink);line-height:1;}
.stat-sub{font-size:12px;margin-top:6px;color:var(--gray-1);}

/* TABLE */
.tbl-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;}
.tbl-toolbar{padding:16px 22px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;}
.tbl-toolbar-left{font-size:13px;color:var(--gray-1);font-weight:500;}
table{width:100%;border-collapse:collapse;}
thead th{padding:11px 18px;text-align:left;font-size:10px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--gray-2);border-bottom:1px solid var(--border);font-family:'IBM Plex Mono',monospace;white-space:nowrap;}
th.r,td.r{text-align:right;}
tbody tr{border-bottom:1px solid var(--border);transition:background 0.1s;}
tbody tr:last-child{border-bottom:none;}
tbody tr:hover{background:var(--surface-2);}
tbody td{padding:14px 18px;font-size:13px;color:var(--gray-1);white-space:nowrap;}
.t-sym{font-family:'IBM Plex Mono',monospace;font-weight:500;color:var(--ink);font-size:12px;}
.t-co{font-size:12px;color:var(--gray-2);}
.t-mono{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--ink);}
.scorechip{display:inline-block;font-family:'IBM Plex Mono',monospace;font-size:12px;font-weight:500;padding:3px 10px;border-radius:100px;background:var(--blue-soft);color:var(--blue);}
.pill{display:inline-block;padding:3px 10px;border-radius:100px;font-size:11px;font-weight:500;}
.pill-it{background:var(--blue-soft);color:var(--blue);}
.pill-bk{background:var(--green-soft);color:var(--green);}
.pill-en{background:var(--red-soft);color:var(--red);}
.pill-fm{background:var(--purple-soft);color:var(--purple);}
.pill-ph{background:var(--amber-soft);color:var(--amber);}

/* CHIPS */
.chips{display:flex;gap:8px;flex-wrap:wrap;}
.chip{padding:6px 14px;border:1px solid var(--border-2);border-radius:100px;font-size:12px;font-weight:500;color:var(--gray-1);cursor:pointer;transition:all 0.15s;}
.chip.on,.chip:hover{border-color:var(--blue);color:var(--blue);background:var(--blue-tint);}

/* LOCK */
.locked td{filter:blur(5px);opacity:0.4;user-select:none;pointer-events:none;}
.lock-bar{padding:16px 22px;background:var(--surface-2);border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;}
.lock-bar-text{font-size:13px;color:var(--gray-1);}
.lock-bar-text strong{color:var(--ink);}

@keyframes fadeUp{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:translateY(0);}}
.au{animation:fadeUp 0.6s ease forwards;}

/* ══ UPGRADES (v2) ══════════════════════════════════════════════════════════ */

/* ── Pro / paywall ── */
.pro-lock{border:1px dashed var(--border-2)!important;background:var(--surface-2);}
.pro-lock-badge{display:inline-block;background:var(--ink);color:var(--white);font-size:10px;font-weight:700;letter-spacing:1.5px;padding:5px 14px;border-radius:100px;}
.pro-inline{font-size:11px;font-weight:600;color:var(--blue);background:var(--blue-soft);padding:2px 9px;border-radius:100px;text-decoration:none;white-space:nowrap;}
.pro-inline:hover{background:var(--blue);color:var(--white);}
.pro-pill{display:inline-block;font-size:9px;font-weight:700;letter-spacing:.5px;color:var(--blue);background:var(--blue-soft);padding:2px 7px;border-radius:100px;vertical-align:middle;margin-left:6px;}

/* ── Global search dropdown ── */
.search-box{position:relative;}
.sm-search-results{position:absolute;top:calc(100% + 8px);left:0;right:0;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-lg);z-index:120;overflow:hidden;max-height:420px;overflow-y:auto;}
.sm-sr-group-label{font-size:10px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--gray-2);padding:12px 16px 6px;}
.sm-sr-item{display:flex;align-items:center;gap:10px;padding:9px 16px;cursor:pointer;font-size:13px;color:var(--ink);transition:background 0.1s;}
.sm-sr-item:hover,.sm-sr-item.active{background:var(--blue-tint);}
.sm-sr-sym{font-family:'IBM Plex Mono',monospace;font-weight:500;font-size:12px;}
.sm-sr-name{color:var(--gray-1);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sm-sr-tag{margin-left:auto;font-size:9px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:var(--gray-2);background:var(--surface-2);padding:2px 7px;border-radius:100px;}
.sm-sr-empty{padding:16px;font-size:13px;color:var(--gray-2);text-align:center;}

/* ── Info tooltip (ⓘ) ── */
.sm-tip{display:inline-flex;align-items:center;justify-content:center;width:13px;height:13px;border-radius:50%;border:1px solid var(--gray-3);color:var(--gray-2);font-size:9px;font-style:normal;font-weight:600;cursor:help;margin-left:5px;position:relative;vertical-align:middle;line-height:1;}
.sm-tip:hover{border-color:var(--blue);color:var(--blue);}
.sm-tip-pop{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);width:220px;background:var(--ink);color:var(--white);font-size:12px;font-weight:400;line-height:1.5;padding:10px 12px;border-radius:10px;box-shadow:var(--shadow);z-index:300;opacity:0;visibility:hidden;transition:opacity .15s;pointer-events:none;text-transform:none;letter-spacing:0;}
.sm-tip:hover .sm-tip-pop{opacity:1;visibility:visible;}
.sm-tip-pop::after{content:'';position:absolute;top:100%;left:50%;transform:translateX(-50%);border:5px solid transparent;border-top-color:var(--ink);}

/* ── Score radar ── */
.radar-wrap{display:flex;flex-direction:column;align-items:center;}
.radar-wrap svg{overflow:visible;}
.radar-axis-label{font-size:9px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;fill:var(--gray-1);}
.radar-axis-val{font-family:'IBM Plex Mono',monospace;font-size:10px;font-weight:500;fill:var(--ink);}

/* ── Score breakdown (transparent, percentile) ── */
.score-bd{margin-top:4px;}
.sbd-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--border);}
.sbd-row:last-child{border-bottom:none;}
.sbd-label{font-size:12px;color:var(--gray-1);width:92px;flex-shrink:0;}
.sbd-track{flex:1;height:6px;background:var(--border);border-radius:3px;overflow:hidden;}
.sbd-fill{height:6px;border-radius:3px;background:var(--blue);}
.sbd-fill.g{background:var(--green);}.sbd-fill.a{background:var(--amber);}.sbd-fill.r{background:var(--red);}
.sbd-pct{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--gray-1);width:118px;text-align:right;flex-shrink:0;}
.sbd-pct b{color:var(--ink);}

/* ── Pros / Cons checklist ── */
.proscons{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.pc-col-title{font-size:11px;font-weight:600;letter-spacing:1px;text-transform:uppercase;margin-bottom:12px;}
.pc-col-title.pro{color:var(--green);}.pc-col-title.con{color:var(--red);}
.pc-item{display:flex;gap:9px;align-items:flex-start;font-size:13px;color:var(--gray-1);line-height:1.5;margin-bottom:11px;}
.pc-item .ic{flex-shrink:0;width:16px;height:16px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;margin-top:1px;}
.pc-item.pro .ic{background:var(--green-soft);color:var(--green);}
.pc-item.con .ic{background:var(--red-soft);color:var(--red);}

/* ── Sector heatmap ── */
.heatmap{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;}
.hm-tile{border-radius:12px;padding:14px 14px 12px;color:var(--white);min-height:74px;display:flex;flex-direction:column;justify-content:space-between;transition:transform .15s;cursor:default;}
.hm-tile:hover{transform:translateY(-2px);}
.hm-name{font-size:11px;font-weight:500;line-height:1.25;opacity:.95;}
.hm-pct{font-family:'IBM Plex Mono',monospace;font-size:17px;font-weight:600;}

/* ── Fund detail page ── */
.fd-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:22px;}
.fd-name{font-family:'Fraunces',serif;font-size:26px;font-weight:500;letter-spacing:-.5px;line-height:1.15;max-width:680px;}
.fd-nav{text-align:right;flex-shrink:0;}
.fd-nav-val{font-family:'IBM Plex Mono',monospace;font-size:28px;font-weight:500;}
.fd-returns{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;margin-bottom:20px;}
.fdr{background:var(--surface);padding:16px 18px;}
.fdr-label{font-size:10px;font-weight:600;letter-spacing:.6px;text-transform:uppercase;color:var(--gray-2);margin-bottom:7px;}
.fdr-val{font-family:'IBM Plex Mono',monospace;font-size:18px;font-weight:500;}

/* ── IPO cards ── */
.ipo-tabs{display:flex;gap:8px;margin-bottom:24px;}
.ipo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;}
.ipo-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:22px;transition:transform .2s,box-shadow .2s;}
.ipo-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);}
.ipo-card-head{display:flex;align-items:center;gap:12px;margin-bottom:16px;}
.ipo-logo{width:44px;height:44px;border-radius:11px;object-fit:contain;background:var(--surface-2);border:1px solid var(--border);flex-shrink:0;}
.ipo-logo-fb{width:44px;height:44px;border-radius:11px;background:var(--ink);color:var(--white);display:flex;align-items:center;justify-content:center;font-family:'Fraunces',serif;font-size:18px;font-weight:600;flex-shrink:0;}
.ipo-name{font-family:'Fraunces',serif;font-size:17px;font-weight:500;line-height:1.2;}
.ipo-badge{display:inline-block;font-size:10px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;padding:3px 9px;border-radius:100px;margin-top:3px;}
.ipo-badge.main{background:var(--blue-soft);color:var(--blue);}
.ipo-badge.sme{background:var(--purple-soft);color:var(--purple);}
.ipo-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.ipo-sl{font-size:10px;color:var(--gray-2);letter-spacing:.4px;text-transform:uppercase;margin-bottom:3px;}
.ipo-sv{font-family:'IBM Plex Mono',monospace;font-size:14px;font-weight:500;color:var(--ink);}

/* ── Mobile nav toggle button ── */
.sm-menu-btn{display:none;width:38px;height:38px;border-radius:10px;border:1px solid var(--border);background:var(--surface);cursor:pointer;align-items:center;justify-content:center;}
.sm-menu-btn svg{width:18px;height:18px;stroke:var(--ink);fill:none;stroke-width:2;}
.sm-backdrop{display:none;position:fixed;inset:0;background:rgba(20,22,26,.4);z-index:90;}

/* ══ RESPONSIVE ══ */
@media(max-width:1024px){
  .ratio-tiles{grid-template-columns:repeat(2,1fr);}
  .fd-returns{grid-template-columns:repeat(3,1fr);}
}
@media(max-width:860px){
  .app{grid-template-columns:1fr;}
  .sidebar{position:fixed;top:0;left:-260px;width:240px;height:100vh;z-index:100;transition:left .25s ease;}
  .sidebar.open{left:0;box-shadow:var(--shadow-lg);}
  .sm-backdrop.show{display:block;}
  .sm-menu-btn{display:flex;}
  .topbar{padding:0 16px;gap:12px;}
  .search-box{width:auto;flex:1;}
  .content{padding:20px 16px;}
  .stat-row{grid-template-columns:repeat(2,1fr);}
  .grid-2,.scr-layout{grid-template-columns:1fr!important;}
  .filter-panel{position:static!important;}
  .page-title{font-size:26px;}
  /* horizontal scroll for wide tables */
  .tbl-wrap,.cmp-table{overflow-x:auto;}
  .tbl-wrap table,.cmp-table table{min-width:640px;}
  .proscons{grid-template-columns:1fr;}
  div[style*="grid-template-columns:1.6fr 1fr"],
  div[style*="grid-template-columns:1.7fr 1fr"],
  div[style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr!important;}
}
@media(max-width:520px){
  .stat-row{grid-template-columns:1fr;}
  .ratio-tiles{grid-template-columns:1fr;}
  .fd-returns{grid-template-columns:repeat(2,1fr);}
  .stock-hero,.fd-head{flex-direction:column;}
  .sh-right,.fd-nav{text-align:left;}
}

/* ════════ THEME TOGGLE + INTERACTIVE CHARTS (v3) ════════ */
.sm-theme-btn{width:36px;height:36px;flex:0 0 auto;border:1px solid var(--border-2);background:var(--surface);color:var(--gray-1);
  border-radius:50%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all .18s;margin-left:4px;}
.sm-theme-btn:hover{color:var(--blue);border-color:var(--blue);background:var(--blue-tint);transform:translateY(-1px);}
html[data-theme="dark"] .sm-theme-btn:hover{background:var(--blue-soft);}

.sm-chart{width:100%;}
.sm-chart-periods{display:flex;gap:4px;justify-content:flex-end;margin-bottom:10px;flex-wrap:wrap;}
.sm-chart-period{font:500 12px/1 'Inter',sans-serif;padding:6px 12px;border-radius:8px;border:1px solid var(--border);
  background:var(--surface);color:var(--gray-1);cursor:pointer;transition:all .15s;}
.sm-chart-period:hover{border-color:var(--blue);color:var(--blue);}
.sm-chart-period.active{background:var(--blue);border-color:var(--blue);color:#fff;}
.sm-chart-plot{position:relative;width:100%;touch-action:pan-y;}
.sm-chart-plot svg{display:block;overflow:visible;}
.sm-chart-cross{position:absolute;top:0;bottom:22px;width:1px;background:var(--blue);opacity:0;pointer-events:none;transition:opacity .12s;}
.sm-chart-dot{position:absolute;width:9px;height:9px;border-radius:50%;background:var(--blue);border:2px solid var(--surface);
  transform:translate(-50%,-50%);opacity:0;pointer-events:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--blue) 22%,transparent);transition:opacity .12s;}
.sm-chart-tip{position:absolute;pointer-events:none;background:var(--ink);color:var(--surface);border-radius:8px;padding:6px 10px;
  font-size:12px;line-height:1.3;white-space:nowrap;z-index:5;opacity:0;transition:opacity .12s;box-shadow:var(--shadow);display:flex;flex-direction:column;}
html[data-theme="dark"] .sm-chart-tip{background:#020409;border:1px solid var(--border);}
.sm-chart-tip-v{font-weight:600;font-family:'IBM Plex Mono',monospace;}
.sm-chart-tip-l{font-size:10.5px;opacity:.7;margin-top:1px;}
.sm-chart-marker-lbl{font:500 10px 'IBM Plex Mono',monospace;}
.sm-chart-empty{display:flex;align-items:center;justify-content:center;height:100%;color:var(--gray-2);font-size:13px;}
.rt-vs{display:inline-block;font-size:11px;font-weight:500;margin-top:2px;}
.rt-vs.up{color:var(--green);} .rt-vs.dn{color:var(--red);}
.sm-chart-xaxis{display:flex;justify-content:space-between;margin-top:8px;font:500 10.5px 'IBM Plex Mono',monospace;color:var(--gray-2);}
.sm-chart-xaxis span{flex:0 0 auto;}

/* ════════ RECENTLY VIEWED + ALERTS (dashboard) ════════ */
.recent-strip{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:-6px 0 22px;}
.recent-lab{font-size:12px;color:var(--gray-2);font-weight:500;margin-right:2px;}
.recent-chip{font:500 12px/1 'IBM Plex Mono',monospace;padding:6px 11px;border-radius:8px;border:1px solid var(--border);
  background:var(--surface);color:var(--gray-1);transition:all .15s;}
.recent-chip:hover{border-color:var(--blue);color:var(--blue);background:var(--blue-tint);}
.al-formbox{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:14px;margin-bottom:14px;}
.al-lab{display:block;font-size:11px;color:var(--gray-1);margin-bottom:5px;}
.al-in{padding:9px 11px;border:1px solid var(--border-2);border-radius:9px;font-size:13px;background:var(--surface);color:var(--ink);outline:none;font-family:'Inter',sans-serif;}
.al-in:focus{border-color:var(--blue);}
.al-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 12px;border:1px solid var(--border);border-radius:10px;margin-bottom:8px;background:var(--surface);}
.al-row.on{border-color:var(--green);background:var(--green-soft);}
.al-main{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.al-cond{font-size:13px;color:var(--gray-1);}
.al-right{display:flex;align-items:center;gap:10px;flex-shrink:0;}
.al-cur{font:500 12px 'IBM Plex Mono',monospace;color:var(--gray-2);}
.al-badge{font-size:10px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;color:#fff;background:var(--green);padding:3px 8px;border-radius:100px;}
.al-del{border:none;background:transparent;color:var(--gray-3);cursor:pointer;font-size:13px;padding:2px 4px;border-radius:5px;transition:all .15s;}
.al-del:hover{color:var(--red);background:var(--red-soft);}
.sm-chart-legend{display:flex;gap:18px;flex-wrap:wrap;margin-bottom:12px;}
.sm-cl{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--gray-1);font-weight:500;}
.sm-cl i{width:11px;height:11px;border-radius:3px;display:inline-block;}
.sm-chart-tip-multi{min-width:120px;}
.sm-cl-row{display:flex;justify-content:space-between;gap:14px;font-size:12px;line-height:1.5;}
.sm-cl-row b{font-family:'IBM Plex Mono',monospace;font-weight:600;}
.exp-bars{display:flex;flex-direction:column;gap:11px;}
.exp-row{display:grid;grid-template-columns:160px 1fr 52px;align-items:center;gap:14px;}
.exp-name{font:500 13px 'IBM Plex Mono',monospace;color:var(--ink);display:flex;flex-direction:column;}
.exp-under{font:400 11px 'Inter',sans-serif;color:var(--gray-2);margin-top:1px;}
.exp-track{height:10px;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;overflow:hidden;}
.exp-fill{height:100%;border-radius:6px 0 0 6px;transition:width .6s cubic-bezier(.2,.7,.2,1),filter .15s;}
.exp-row:hover .exp-fill{filter:brightness(1.1);}
.exp-val{font:500 13px 'IBM Plex Mono',monospace;color:var(--gray-1);text-align:right;}
@media(max-width:520px){.exp-row{grid-template-columns:110px 1fr 46px;gap:10px;}}

/* ════════ DEPTH: results · dividends · shareholding · filings ════════ */
.nextres-badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;color:var(--blue);background:var(--blue-soft);padding:3px 9px;border-radius:100px;margin-left:8px;}
.shh-legend{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:14px;}
.shh-legend span{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--gray-1);}
.shh-legend i{width:10px;height:10px;border-radius:3px;display:inline-block;}
.shh-list{display:flex;flex-direction:column;gap:9px;}
.shh-row{display:grid;grid-template-columns:74px 1fr 52px;align-items:center;gap:12px;}
.shh-q{font:500 11px 'IBM Plex Mono',monospace;color:var(--gray-2);}
.shh-bar{display:flex;height:14px;border-radius:5px;overflow:hidden;background:var(--surface-2);}
.shh-bar div{height:100%;}
.shh-val{font:500 12px 'IBM Plex Mono',monospace;color:var(--ink);text-align:right;}
.filing-row{display:flex;gap:14px;padding:11px 0;border-bottom:1px solid var(--border);}
.filing-row:last-child{border-bottom:none;}
.filing-date{font:500 11px 'IBM Plex Mono',monospace;color:var(--gray-2);width:84px;flex-shrink:0;padding-top:1px;}
.filing-title{font-size:13px;color:var(--ink);line-height:1.5;}
.filing-cat{display:inline-block;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--gray-1);background:var(--surface-2);border:1px solid var(--border);padding:1px 7px;border-radius:100px;margin-top:5px;}
.cal-row{display:flex;gap:14px;align-items:center;padding:10px 0;border-bottom:1px solid var(--border);}
.cal-row:last-child{border-bottom:none;}
.cal-date{font:500 12px 'IBM Plex Mono',monospace;color:var(--gray-1);width:96px;flex-shrink:0;}
.cal-main{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.cal-type{font-size:11px;font-weight:600;padding:2px 9px;border-radius:100px;}
.cal-type.results{color:var(--blue);background:var(--blue-soft);}
.cal-type.dividend{color:var(--green);background:var(--green-soft);}

/* ════════ ADMIN ════════ */
.uf-chip{font:500 12px/1 'Inter',sans-serif;padding:7px 14px;border-radius:100px;border:1px solid var(--border);background:var(--surface);color:var(--gray-1);cursor:pointer;transition:all .15s;}
.uf-chip:hover{border-color:var(--blue);color:var(--blue);}
.uf-chip.on{background:var(--blue);border-color:var(--blue);color:#fff;}
.adm-toggle{width:46px;height:26px;border-radius:100px;border:none;background:var(--border-2);cursor:pointer;position:relative;transition:background .2s;flex-shrink:0;padding:0;}
.adm-toggle.on{background:var(--green);}
.adm-toggle span{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:left .2s;box-shadow:0 1px 3px rgba(0,0,0,.2);}
.adm-toggle.on span{left:23px;}

/* ── Admin · Monitoring ── */
.mon-cards{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
@media(max-width:900px){.mon-cards{grid-template-columns:1fr;}}
.mon-h{font-size:13px;font-weight:600;margin-bottom:14px;display:flex;align-items:center;justify-content:space-between;color:var(--ink);}
.mon-live{font-size:10px;font-weight:700;color:var(--green);letter-spacing:.04em;animation:monpulse 2s ease-in-out infinite;}
@keyframes monpulse{0%,100%{opacity:1;}50%{opacity:.35;}}
.mon-hours{display:flex;align-items:flex-end;gap:3px;height:92px;}
.mon-hbar{flex:1;height:100%;display:flex;align-items:flex-end;}
.mon-hbar-fill{width:100%;background:var(--blue);opacity:.3;border-radius:3px 3px 0 0;min-height:2px;transition:height .3s;}
.mon-hbar-fill.now{opacity:1;}
.mon-hbar:hover .mon-hbar-fill{opacity:.7;}
.mon-hours-ax{display:flex;justify-content:space-between;margin-top:6px;font-size:10px;color:var(--gray-2);font-family:var(--mono,ui-monospace,monospace);}
.mon-health{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px;padding-top:16px;border-top:1px solid var(--border);}
.mon-hpill{background:var(--surface-2);border-radius:8px;padding:9px 11px;}
.mon-hpill-l{font-size:10px;color:var(--gray-2);text-transform:uppercase;letter-spacing:.04em;}
.mon-hpill-v{font-size:14px;font-weight:600;margin-top:2px;color:var(--ink);}
.mon-bar{margin-bottom:11px;}
.mon-bar-top{display:flex;justify-content:space-between;font-size:12px;margin-bottom:4px;gap:10px;}
.mon-bar-lbl{color:var(--gray-1);font-family:var(--mono,ui-monospace,monospace);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.mon-bar-val{font-weight:600;color:var(--ink);flex:none;}
.mon-bar-track{height:7px;background:var(--surface-2);border-radius:4px;overflow:hidden;}
.mon-bar-fill{height:100%;border-radius:4px;transition:width .4s;}
.mon-li{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--border);}
.mon-li:last-child{border-bottom:none;}
.mon-li-main{flex:1;min-width:0;}
.mon-li-name{font-size:13px;font-weight:500;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.mon-li-sub{font-size:11px;color:var(--gray-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.mon-li-meta{font-size:11px;color:var(--gray-2);white-space:nowrap;margin-left:8px;flex:none;}
.mon-empty{font-size:12px;color:var(--gray-2);padding:10px 0;}
.mon-err{display:flex;gap:8px;align-items:center;padding:7px 0;border-bottom:1px solid var(--border);font-size:11px;}
.mon-err:last-child{border-bottom:none;}
.mon-err-code{font-weight:700;color:var(--red);font-family:var(--mono,ui-monospace,monospace);flex:none;}
.mon-err-path{flex:1;color:var(--gray-1);font-family:var(--mono,ui-monospace,monospace);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.mon-err-t{color:var(--gray-2);flex:none;}
.mon-svc{display:flex;align-items:center;gap:18px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 18px;}
.mon-svc-item{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:500;}
.mon-svc-meta{margin-left:auto;font-size:11px;color:var(--gray-2);}

/* ── AI research assistant ── */
.ai-card{margin-bottom:20px;border:1px solid var(--border);position:relative;overflow:hidden;}
.ai-card::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--blue),#7c3aed);}
.ai-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;}
.ai-title{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--ink);}
.ai-spark{color:var(--blue);font-size:13px;}
.ai-by{font-size:11px;color:var(--gray-2);background:var(--surface-2);padding:3px 9px;border-radius:100px;}
.ai-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:4px;}
.ai-actions .btn{padding:7px 13px;font-size:12px;}
.ai-out{margin-top:4px;}
.ai-tldr{font-size:14px;line-height:1.6;color:var(--ink);margin:8px 0 14px;font-weight:500;}
.ai-point{display:flex;gap:12px;padding:9px 0;border-top:1px solid var(--border);}
.ai-point-l{flex:none;width:104px;font-size:12px;font-weight:600;}
.ai-point-t{font-size:13px;line-height:1.55;color:var(--gray-1);}
.ai-watch{margin-top:14px;background:var(--surface-2);border-radius:10px;padding:12px 14px;}
.ai-watch-h,.ai-grp-h{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--gray-2);margin-bottom:8px;}
.ai-watch ul,.ai-grp ul{margin:0;padding-left:18px;}
.ai-watch li,.ai-grp li{font-size:13px;line-height:1.7;color:var(--gray-1);}
.ai-grp{margin-bottom:14px;}
.ai-disc{margin-top:14px;font-size:11px;color:var(--gray-2);font-style:italic;border-top:1px dashed var(--border);padding-top:10px;}
.ai-note{font-size:13px;color:var(--gray-2);padding:14px;background:var(--surface-2);border-radius:10px;}
.ai-loading{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--gray-2);padding:10px 0;}
.ai-dots{display:inline-flex;gap:3px;}
.ai-dots i{width:6px;height:6px;border-radius:50%;background:var(--blue);opacity:.4;animation:aidot 1.2s infinite;}
.ai-dots i:nth-child(2){animation-delay:.2s;}.ai-dots i:nth-child(3){animation-delay:.4s;}
@keyframes aidot{0%,100%{opacity:.3;transform:translateY(0);}50%{opacity:1;transform:translateY(-3px);}}
.ai-chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:6px;}
.ai-chip{display:inline-flex;gap:7px;align-items:center;background:var(--surface-2);border:1px solid var(--border);border-radius:100px;padding:5px 11px;font-size:12px;text-decoration:none;color:var(--ink);}
.ai-chip b{font-weight:600;}
.ai-comp{margin-top:14px;}
.ai-bar{margin-bottom:9px;}
.ai-bar-top{display:flex;justify-content:space-between;font-size:12px;color:var(--gray-1);margin-bottom:4px;}
.ai-bar-tk{height:6px;background:var(--surface-2);border-radius:3px;overflow:hidden;}
.ai-bar-fl{height:100%;background:var(--blue);border-radius:3px;}
.ai-nl-row{display:flex;gap:8px;}
.ai-nl-input{flex:1;border:1px solid var(--border);border-radius:10px;padding:10px 14px;font-size:13px;background:var(--surface);color:var(--ink);font-family:inherit;}
.ai-nl-input:focus{outline:none;border-color:var(--blue);}
.ai-interp{font-size:13px;color:var(--gray-1);margin:12px 0 10px;}
.ai-scr-list{display:flex;flex-direction:column;gap:1px;background:var(--border);border:1px solid var(--border);border-radius:10px;overflow:hidden;}
.ai-scr{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:8px;align-items:center;background:var(--surface);padding:10px 14px;font-size:12px;color:var(--gray-1);text-decoration:none;font-family:var(--mono,ui-monospace,monospace);}
.ai-scr:hover{background:var(--surface-2);}
.ai-scr-sym{font-weight:600;color:var(--ink);}
/* modal (research brief) */
.ai-modal{position:fixed;inset:0;background:rgba(0,0,0,.45);display:none;align-items:flex-start;justify-content:center;z-index:9998;padding:40px 16px;overflow:auto;}
.ai-modal.show{display:flex;}
.ai-modal-box{background:var(--surface);border:1px solid var(--border);border-radius:16px;width:100%;max-width:720px;box-shadow:0 20px 60px rgba(0,0,0,.25);overflow:hidden;}
.ai-modal-top{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--border);}
.ai-modal-title{font-family:'Fraunces',serif;font-size:20px;font-weight:500;letter-spacing:-.3px;color:var(--ink);}
.ai-modal-sub{font-size:12px;color:var(--gray-2);margin-top:3px;display:flex;align-items:center;gap:6px;}
.ai-modal-x{background:none;border:none;font-size:16px;cursor:pointer;color:var(--gray-2);line-height:1;}
.ai-modal-scroll{padding:20px 24px;max-height:70vh;overflow:auto;}
.ai-brief-summary{font-size:14px;line-height:1.65;color:var(--ink);margin-bottom:18px;font-weight:500;}
.ai-sec{margin-bottom:16px;}
.ai-sec-h{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--blue);margin-bottom:5px;}
.ai-sec-b{font-size:13px;line-height:1.65;color:var(--gray-1);}
.ai-risks{margin:4px 0 0;padding-left:18px;}.ai-risks li{font-size:13px;line-height:1.6;color:var(--gray-1);}
/* ask drawer */
.ai-ask{position:fixed;top:0;right:0;bottom:0;width:380px;max-width:92vw;background:var(--surface);border-left:1px solid var(--border);box-shadow:-8px 0 40px rgba(0,0,0,.18);z-index:9997;display:flex;flex-direction:column;transform:translateX(105%);transition:transform .25s ease;}
.ai-ask.show{transform:translateX(0);}
.ai-ask-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--border);}
.ai-ask-x{background:none;border:none;font-size:15px;cursor:pointer;color:var(--gray-2);}
.ai-ask-scope{display:none;padding:8px 18px;font-size:12px;color:var(--gray-1);background:var(--surface-2);border-bottom:1px solid var(--border);}
.ai-scope-x{cursor:pointer;color:var(--gray-2);margin-left:4px;}
.ai-ask-msgs{flex:1;overflow:auto;padding:16px 18px;display:flex;flex-direction:column;gap:12px;}
.ai-ask-hint{font-size:12px;color:var(--gray-2);line-height:1.6;background:var(--surface-2);padding:12px;border-radius:10px;}
.ai-msg{font-size:13px;line-height:1.55;max-width:90%;}
.ai-msg-user{align-self:flex-end;background:var(--blue);color:#fff;padding:9px 13px;border-radius:14px 14px 4px 14px;}
.ai-msg-ai{align-self:flex-start;background:var(--surface-2);color:var(--ink);padding:11px 14px;border-radius:14px 14px 14px 4px;width:100%;}
.ai-msg-ai .ai-disc{margin-top:8px;}
.ai-ask-row{display:flex;gap:8px;padding:12px 14px;border-top:1px solid var(--border);}
.ai-ask-row input{flex:1;border:1px solid var(--border);border-radius:10px;padding:10px 13px;font-size:13px;background:var(--surface);color:var(--ink);font-family:inherit;}
.ai-ask-row input:focus{outline:none;border-color:var(--blue);}
.ai-fab{position:fixed;bottom:24px;right:24px;z-index:9996;display:inline-flex;align-items:center;gap:7px;background:var(--ink);color:var(--white);border:none;border-radius:100px;padding:12px 18px;font-size:13px;font-weight:600;cursor:pointer;box-shadow:0 6px 20px rgba(0,0,0,.22);font-family:inherit;}
.ai-fab .ai-spark{color:#a5b4fc;}
.ai-fab:hover{transform:translateY(-1px);}
@media(max-width:600px){.ai-point-l{width:84px;}.ai-fab{bottom:16px;right:16px;}}
/* admin AI settings/usage */
.ai-set-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--border);}
.ai-set-row label{font-size:13px;color:var(--gray-1);}
.ai-set-row input{width:55%;border:1px solid var(--border);border-radius:8px;padding:8px 11px;font-size:13px;background:var(--surface);color:var(--ink);font-family:var(--mono,ui-monospace,monospace);}
.ai-set-row input:focus{outline:none;border-color:var(--blue);}
.ai-set-h{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--gray-2);margin:16px 0 8px;}
.ai-feats{display:flex;flex-wrap:wrap;gap:10px 18px;}
.ai-feat{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--gray-1);cursor:pointer;}
.ai-recs{display:flex;flex-direction:column;}
.ai-rec{display:grid;grid-template-columns:1.4fr 1fr .8fr .8fr 24px;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--border);font-size:12px;color:var(--gray-1);}
.ai-rec:last-child{border-bottom:none;}
.ai-rec-tag{font-weight:500;color:var(--ink);}
