/* CSUN StockBot — Quant Terminal */
:root{
  --ink:    #0a0e14;
  --ink2:   #0e131c;
  --panel:  #101724;
  --line:   #1c2433;
  --text:   #cdd6e4;
  --dim:    #6b7689;
  --faint:  #3a4456;
  --amber:  #ffb000;
  --up:     #35d07f;
  --down:   #ff5c5c;
  --mono:   'IBM Plex Mono', ui-monospace, monospace;
  --cond:   'Barlow Condensed', sans-serif;
}

*{ margin:0; padding:0; box-sizing:border-box; }
body{
  background:var(--ink);
  color:var(--text);
  font-family:var(--mono);
  font-size:13.5px;
  line-height:1.5;
  min-height:100vh;
  display:flex; flex-direction:column;
}
a{ color:var(--amber); text-decoration:none; }
a:hover{ text-decoration:underline; }
::selection{ background:var(--amber); color:var(--ink); }

/* ---- Topbar ---- */
.topbar{
  display:flex; justify-content:space-between; align-items:center;
  padding:.7rem 1.2rem; border-bottom:1px solid var(--line);
  background:var(--ink2); position:sticky; top:0; z-index:10;
}
.brand{
  font-family:var(--cond); font-weight:600; letter-spacing:.22em;
  font-size:1.05rem; color:var(--text);
}
.brand-mark{ color:var(--amber); margin-right:.4rem; }
.brand-ver{ color:var(--dim); font-weight:500; letter-spacing:.18em; font-size:.85rem; }
.status{ display:flex; align-items:center; gap:.6rem; color:var(--dim); font-size:.8rem; }

.topnav{ display:flex; gap:1.4rem; }
.topnav a{
  font-family:var(--cond); font-weight:600; letter-spacing:.2em;
  font-size:.82rem; text-transform:uppercase; color:var(--dim);
  text-decoration:none; padding:.2rem 0; border-bottom:1px solid transparent;
}
.topnav a:hover{ color:var(--text); text-decoration:none; }
.topnav a.active{ color:var(--amber); border-bottom-color:var(--amber); }
.dot{
  width:8px; height:8px; border-radius:50%; background:var(--faint);
  display:inline-block;
}
.dot.ok{ background:var(--up); box-shadow:0 0 8px rgba(53,208,127,.6); }
.dot.err{ background:var(--down); }

/* ---- Index tape ---- */
.tape{
  display:flex; gap:2.2rem; overflow-x:auto; white-space:nowrap;
  padding:.55rem 1.2rem; border-bottom:1px solid var(--line);
  background:var(--ink2); scrollbar-width:none;
}
.tape::-webkit-scrollbar{ display:none; }
.tape-item{ display:inline-flex; gap:.6rem; align-items:baseline; }
.tape-sym{ color:var(--dim); font-size:.78rem; letter-spacing:.1em; }
.tape-px{ font-weight:500; }
.tape-loading{ color:var(--faint); font-size:.8rem; }

.up{ color:var(--up); }
.down{ color:var(--down); }
.flat{ color:var(--dim); }

/* ---- Grid ---- */
.grid{
  flex:1;
  display:grid;
  grid-template-columns:repeat(2, 1fr);
  gap:1px;
  background:var(--line);
  border-bottom:1px solid var(--line);
}
.panel{ background:var(--ink); padding:1.1rem 1.2rem 1.4rem; min-width:0; }
.panel.wide{ grid-column:1 / -1; }

.panel h2{
  font-family:var(--cond); font-weight:600; font-size:.95rem;
  letter-spacing:.24em; color:var(--text);
  border-bottom:1px solid var(--line); padding-bottom:.6rem; margin-bottom:.9rem;
  display:flex; align-items:baseline; gap:.7rem; flex-wrap:wrap;
}
.panel h2 .k{ color:var(--amber); font-family:var(--mono); font-size:.78rem; }
.panel h2 .sub{
  color:var(--dim); letter-spacing:.12em; font-size:.78rem; font-weight:500;
  text-transform:lowercase;
}
.breadth{ margin-left:auto; color:var(--dim); font-size:.78rem; letter-spacing:.1em; font-family:var(--mono); }

.loading{ color:var(--faint); }
.err-msg{ color:var(--down); font-size:.85rem; }
.hint{ color:var(--dim); font-size:.82rem; margin-top:.4rem; }

/* ---- Sector bars ---- */
.sector-row{
  display:grid; grid-template-columns:110px 1fr 64px;
  align-items:center; gap:.8rem; padding:.32rem 0; font-size:.85rem;
}
.sector-name{ color:var(--dim); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bar-track{ height:6px; background:var(--ink2); position:relative; border-radius:1px; }
.bar-fill{ position:absolute; top:0; bottom:0; border-radius:1px; }
.bar-fill.up{ background:var(--up); }
.bar-fill.down{ background:var(--down); }
.sector-val{ text-align:right; font-size:.82rem; }

/* ---- Tables ---- */
.scroll-x{ overflow-x:auto; }
table{ border-collapse:collapse; width:100%; font-size:.85rem; }
th{
  font-family:var(--cond); font-weight:600; letter-spacing:.18em;
  font-size:.74rem; color:var(--dim); text-align:right;
  padding:.35rem .7rem; border-bottom:1px solid var(--line);
  text-transform:uppercase; white-space:nowrap;
}
th:first-child, td:first-child{ text-align:left; padding-left:0; }
td{
  padding:.42rem .7rem; text-align:right; border-bottom:1px solid var(--ink2);
  white-space:nowrap; font-variant-numeric:tabular-nums;
}
td.tick{ color:var(--amber); font-weight:500; }
tr:hover td{ background:var(--ink2); }

.rsi-hot{ color:var(--down); }
.rsi-cold{ color:var(--up); }

/* ---- Market share ---- */
.share-group{ margin-bottom:1.2rem; }
.share-title{
  font-family:var(--cond); letter-spacing:.16em; font-size:.82rem;
  color:var(--text); text-transform:uppercase; margin-bottom:.45rem;
}
.share-row{
  display:grid; grid-template-columns:58px 1fr 56px;
  gap:.7rem; align-items:center; padding:.22rem 0; font-size:.82rem;
}
.share-tick{ color:var(--dim); }
.share-bar{ height:8px; background:var(--ink2); position:relative; }
.share-bar i{
  position:absolute; left:0; top:0; bottom:0; background:var(--amber);
  opacity:.85;
}
.share-val{ text-align:right; }

/* ---- Patents ---- */
.pat-group{ margin-bottom:1rem; }
.pat-head{
  display:flex; justify-content:space-between; align-items:baseline;
  font-size:.85rem; padding:.25rem 0; border-bottom:1px dashed var(--ink2);
}
.pat-count{ color:var(--amber); }
.pat-item{ font-size:.8rem; color:var(--dim); padding:.22rem 0 .22rem .9rem; }
.pat-item a{ color:var(--text); }
.pat-item a:hover{ color:var(--amber); }
.pat-date{ color:var(--faint); margin-right:.5rem; }
.pat-err{ color:var(--down); font-size:.74rem; padding:.2rem 0 .4rem .9rem; word-break:break-word; }

/* ---- Filings (grouped) ---- */
.f-group{ border-bottom:1px solid var(--ink2); }
.f-head{
  display:grid; grid-template-columns:70px 110px 100px 1fr auto;
  gap:1rem; padding:.4rem 0; font-size:.84rem; align-items:baseline;
  cursor:default; list-style:none;
}
details.f-group > summary.f-head{ cursor:pointer; }
details.f-group > summary.f-head::-webkit-details-marker{ display:none; }
details.f-group[open] .f-open{ color:var(--amber); }
.f-tick{ color:var(--amber); }
.f-form{ color:var(--text); }
.f-form.insider{ color:var(--up); }
.f-count{ color:var(--dim); font-size:.76rem; }
.f-date{ color:var(--dim); }
.f-tag{
  font-family:var(--cond); letter-spacing:.14em; text-transform:uppercase;
  font-size:.72rem; color:var(--faint);
}
.f-open{ text-align:right; }
.f-open a, .f-open{ color:var(--dim); font-size:.78rem; }
.f-open a:hover{ color:var(--amber); }
.f-docs{ padding:.1rem 0 .55rem 70px; }
.f-doc{ font-size:.8rem; padding:.16rem 0; }
.f-doc a{ color:var(--text); }
.f-doc a:hover{ color:var(--amber); }
.f-items{ color:var(--faint); font-size:.74rem; }

/* ---- Footer ---- */
.foot{
  display:flex; justify-content:space-between; gap:1rem; flex-wrap:wrap;
  padding:.8rem 1.2rem; color:var(--faint); font-size:.74rem;
  letter-spacing:.06em;
}

/* ---- Responsive ---- */
@media (max-width: 860px){
  .grid{ grid-template-columns:1fr; }
  .topnav{ display:none; }
  .f-head{ grid-template-columns:56px 90px 86px 1fr auto; gap:.5rem; }
  .f-docs{ padding-left:1rem; }
  .sector-row{ grid-template-columns:90px 1fr 56px; }
}

@media (prefers-reduced-motion: reduce){
  *{ transition:none !important; animation:none !important; }
}

.f-raw{ color:var(--faint); font-size:.72rem; margin-left:.4rem; }
.f-raw:hover{ color:var(--amber); text-decoration:none; }

/* ---- Market share: revenue column, totals, methodology ---- */
.share-row{ grid-template-columns:58px 1fr 86px 52px; }
.share-rev{ text-align:right; color:var(--dim); font-size:.78rem; white-space:nowrap; }
.share-fx{ color:var(--faint); font-size:.64rem; }
.share-total{ float:right; color:var(--dim); font-size:.74rem; letter-spacing:.08em; text-transform:none; font-family:var(--mono); }
.meth{ margin-top:.8rem; border-top:1px dashed var(--line); padding-top:.55rem; }
.meth summary{ cursor:pointer; color:var(--dim); font-size:.76rem; letter-spacing:.1em; text-transform:uppercase; font-family:var(--cond); }
.meth summary:hover{ color:var(--amber); }
.meth p{ color:var(--dim); font-size:.78rem; line-height:1.55; padding-top:.45rem; }
.pat-alt{ color:var(--faint); font-size:.7rem; margin-left:.35rem; }
.pat-alt:hover{ color:var(--amber); text-decoration:none; }

/* ---- Sector heat table ---- */
.sector-table{ width:100%; }
.sector-table th{ padding:.3rem .45rem; font-size:.7rem; }
.sector-table td{ padding:.32rem .45rem; font-size:.78rem; border-bottom:1px solid var(--ink2); }
.sector-table td.sec-name{ color:var(--dim); text-align:left; font-size:.78rem; white-space:nowrap; }
.sec-note{ color:var(--faint); font-size:.7rem; margin-top:.55rem; letter-spacing:.04em; }

/* ---- Macro regime ---- */
.regime-badge{ margin-left:auto; font-family:var(--mono); font-size:.8rem; padding:.18rem .7rem; letter-spacing:.1em; border:1px solid var(--faint); color:var(--dim); }
.regime-badge.r-on{ color:var(--up); border-color:var(--up); box-shadow:0 0 10px rgba(53,208,127,.25); }
.regime-badge.r-off{ color:var(--down); border-color:var(--down); box-shadow:0 0 10px rgba(255,92,92,.25); }
.regime-badge.r-mix{ color:var(--amber); border-color:var(--amber); }
.macro-grid{ display:grid; grid-template-columns:1.15fr 1fr; gap:1.6rem; }
.mini-h{ font-family:var(--cond); font-weight:600; letter-spacing:.2em; font-size:.74rem; color:var(--dim); text-transform:uppercase; margin-bottom:.5rem; }
.sig-row{ display:grid; grid-template-columns:1.4fr 86px 64px 1.5fr; gap:.7rem; padding:.3rem 0; border-bottom:1px solid var(--ink2); font-size:.8rem; align-items:baseline; }
.sig-name{ color:var(--text); }
.sig-val{ text-align:right; font-variant-numeric:tabular-nums; }
.sig-why{ color:var(--faint); font-size:.72rem; }
@media (max-width:860px){ .macro-grid{ grid-template-columns:1fr; } .sig-row{ grid-template-columns:1.3fr 80px 60px; } .sig-why{ display:none; } }

/* ---- Correlation matrix ---- */
.corr-table{ border-collapse:collapse; }
.corr-table th, .corr-table td{ padding:.18rem .3rem; font-size:.66rem; text-align:center; border:1px solid var(--ink2); }
.corr-table .c-h{ color:var(--dim); font-size:.62rem; letter-spacing:.04em; }
.c-cell{ min-width:32px; font-variant-numeric:tabular-nums; color:var(--text); }
.c-diag{ background:var(--ink2); }

/* ---- Claude daily brief ---- */
#panel-brief{ background:linear-gradient(180deg, var(--ink2), var(--ink)); }
.brief-meta{ margin-left:auto; color:var(--faint); font-size:.72rem; font-family:var(--mono); }
.brief-refresh{ background:none; border:1px solid var(--line); color:var(--dim);
  font-family:var(--cond); letter-spacing:.14em; text-transform:uppercase; font-size:.7rem;
  padding:.2rem .65rem; cursor:pointer; }
.brief-refresh:hover{ color:var(--amber); border-color:var(--amber); }
.brief-text p{ color:var(--text); font-size:.88rem; line-height:1.7; max-width:88ch; }
.brief-text p + p{ margin-top:.7rem; }

.show-more{ background:none; border:1px solid var(--line); color:var(--dim); width:100%;
  font-family:var(--cond); letter-spacing:.16em; text-transform:uppercase; font-size:.74rem;
  padding:.4rem; margin-top:.6rem; cursor:pointer; }
.show-more:hover{ color:var(--amber); border-color:var(--amber); }

/* ---- Trade of the day ---- */
.alpha-badge{ margin-left:auto; font-family:var(--mono); font-size:.78rem; padding:.18rem .7rem; letter-spacing:.08em; border:1px solid var(--faint); color:var(--dim); }
.alpha-badge.r-on{ color:var(--up); border-color:var(--up); box-shadow:0 0 10px rgba(53,208,127,.25); }
.alpha-badge.r-off{ color:var(--down); border-color:var(--down); }
.brief-text-p{ color:var(--text); font-size:.88rem; line-height:1.65; max-width:92ch; margin-bottom:.7rem; }
.dim-label{ font-family:var(--cond); letter-spacing:.16em; text-transform:uppercase; font-size:.72rem; color:var(--dim); }
.trade-buy{ border-left:2px solid var(--up); padding:.35rem 0 .35rem .8rem; margin:.45rem 0; font-size:.86rem; }
.trade-buy .tick{ color:var(--amber); font-weight:500; }
.trade-why{ color:var(--dim); font-size:.78rem; margin-top:.15rem; }
.trade-event{ color:var(--amber); font-size:.78rem; padding:.15rem 0; }
.trade-stats{ display:flex; flex-wrap:wrap; gap:1.4rem 2rem; margin-top:1rem; padding-top:.8rem; border-top:1px solid var(--ink2); }
.stat-cell{ display:flex; flex-direction:column; gap:.1rem; font-size:.84rem; font-variant-numeric:tabular-nums; }
.stat-l2{ font-family:var(--cond); letter-spacing:.18em; text-transform:uppercase; font-size:.66rem; color:var(--faint); }

/* ---- Treemap heatmap ---- */
.tmap{ position:relative; width:100%; padding-top:42%; background:var(--ink2); }
.tile{ position:absolute; border:1px solid var(--ink); overflow:hidden; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.1rem; transition:filter .15s; }
.tile:hover{ filter:brightness(1.35); z-index:2; }
.t-sym{ color:var(--text); font-weight:600; letter-spacing:.02em; line-height:1; }
.t-pct{ font-size:.68rem; line-height:1; }
@media (max-width:860px){ .tmap{ padding-top:80%; } }

/* ---- S&P 500 sector treemap ---- */
.tmap-sp{ padding-top:63%; }
.sec-block{ position:absolute; border:1px solid var(--faint); z-index:1; pointer-events:none; }
.sec-label{ font-family:var(--cond); font-size:.62rem; letter-spacing:.14em; text-transform:uppercase;
  color:var(--dim); background:rgba(10,14,20,.85); padding:0 .35rem; line-height:15px; height:15px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.tmap-sp .tile{ z-index:0; }
.brief-more summary{ cursor:pointer; color:var(--dim); font-family:var(--cond);
  letter-spacing:.16em; text-transform:uppercase; font-size:.74rem; margin-top:.5rem; }
.brief-more summary:hover{ color:var(--amber); }
.brief-more p{ margin-top:.7rem; }
@media (max-width:860px){ .tmap-sp{ padding-top:130%; } }

/* ---- Strategy comparison ---- */
.strat-row{ display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line);
  border:1px solid var(--line); margin-top:1rem; }
.strat{ background:var(--ink2); padding:.7rem .9rem; }
.strat-h{ font-family:var(--cond); font-weight:600; letter-spacing:.16em; font-size:.7rem; color:var(--dim); margin-bottom:.3rem; }
.strat-v{ font-size:1.05rem; font-weight:500; }
.strat-sub{ color:var(--faint); font-size:.7rem; margin-top:.2rem; }
@media (max-width:860px){ .strat-row{ grid-template-columns:repeat(2,1fr); } }
