/* =====================================================================
   Finance Monitor Lab — Silicon Terminal
   A trading terminal tinted toward deep blue-slate, copper as the single
   brand accent (PCB / interconnect), green & red reserved strictly for
   price direction. Structural motif: L-shaped reticle corner ticks.
   ===================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Chakra+Petch:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&family=Inter:wght@400;500;600&display=swap');

:root {
  --void:    #0B0E14;
  --slate:   #131822;
  --slate-2: #1A2130;
  --line:    #232C3D;
  --line-2:  #2E3A50;
  --cu:      #C98A5E;
  --cu-br:   #E0A06E;
  --text:    #DCE3ED;
  --muted:   #6B7689;
  --muted-2: #4C566B;
  --up:      #3FB67E;
  --up-bg:   rgba(63,182,126,.12);
  --down:    #E5604D;
  --down-bg: rgba(229,96,77,.12);

  --mono: 'JetBrains Mono', ui-monospace, Menlo, Consolas, monospace;
  --disp: 'Chakra Petch', system-ui, sans-serif;
  --body: 'Inter', system-ui, sans-serif;

  --r: 10px;
  --gap: 18px;
  --maxw: 1280px;
}

* { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background:
    radial-gradient(1200px 600px at 70% -10%, #10182a 0%, transparent 60%),
    var(--void);
  color: var(--text);
  font-family: var(--body);
  font-size: 15px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

a { color: inherit; text-decoration: none; }

.wrap {
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 0 24px 64px;
}

/* numbers everywhere use tabular mono */
.num, .px, .pct, .gauge text, td.num { font-family: var(--mono); font-variant-numeric: tabular-nums; }

/* ---------- direction colours ---------- */
.up   { color: var(--up); }
.down { color: var(--down); }
.flat { color: var(--muted); }

/* =====================================================================
   Masthead + ticker tape
   ===================================================================== */
.mast {
  position: sticky; top: 0; z-index: 40;
  background: rgba(11,14,20,.86);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--line);
}
.mast__bar {
  max-width: var(--maxw); margin: 0 auto;
  padding: 14px 24px;
  display: flex; align-items: center; gap: 22px;
}
.brand { display: flex; align-items: baseline; gap: 1px; font-family: var(--mono); font-weight: 700; font-size: 21px; letter-spacing: .06em; }
.brand b { color: var(--cu-br); font-weight: 700; }
.brand span { color: var(--text); }
.brand small { font-family: var(--body); font-weight: 500; font-size: 11px; color: var(--muted); letter-spacing: .02em; margin-left: 10px; align-self: center; }

.nav { display: flex; gap: 4px; margin-left: auto; }
.nav a {
  font-family: var(--disp); font-size: 13px; font-weight: 500; letter-spacing: .03em;
  color: var(--muted); padding: 7px 13px; border-radius: 7px; border: 1px solid transparent;
}
.nav a:hover { color: var(--text); background: var(--slate); }
.nav a.is-active { color: var(--cu-br); border-color: var(--line-2); background: var(--slate); }

/* ticker tape */
.tape { border-bottom: 1px solid var(--line); background: var(--slate); overflow: hidden; }
.tape__track {
  display: inline-flex; gap: 34px; padding: 8px 0; white-space: nowrap;
  animation: tape 60s linear infinite; will-change: transform;
}
.tape:hover .tape__track { animation-play-state: paused; }
.tick { display: inline-flex; align-items: baseline; gap: 8px; font-family: var(--mono); font-size: 12.5px; }
.tick b { color: var(--text); font-weight: 700; letter-spacing: .03em; }
.tick .px { color: var(--muted); }
@keyframes tape { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* =====================================================================
   Panels with reticle corner ticks (the recurring motif)
   ===================================================================== */
.panel {
  position: relative;
  background: linear-gradient(180deg, var(--slate) 0%, #11161f 100%);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: 18px;
}
.panel::before {
  content: ""; position: absolute; inset: 6px; pointer-events: none; opacity: .55;
  background:
    linear-gradient(var(--cu), var(--cu)) left 0 top 0 / 13px 1.5px,
    linear-gradient(var(--cu), var(--cu)) left 0 top 0 / 1.5px 13px,
    linear-gradient(var(--cu), var(--cu)) right 0 top 0 / 13px 1.5px,
    linear-gradient(var(--cu), var(--cu)) right 0 top 0 / 1.5px 13px,
    linear-gradient(var(--cu), var(--cu)) left 0 bottom 0 / 13px 1.5px,
    linear-gradient(var(--cu), var(--cu)) left 0 bottom 0 / 1.5px 13px,
    linear-gradient(var(--cu), var(--cu)) right 0 bottom 0 / 13px 1.5px,
    linear-gradient(var(--cu), var(--cu)) right 0 bottom 0 / 1.5px 13px;
  background-repeat: no-repeat;
}
.panel > * { position: relative; }

.panel__head {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  margin-bottom: 14px;
}
.eyebrow {
  font-family: var(--disp); font-size: 11px; font-weight: 600; letter-spacing: .18em;
  text-transform: uppercase; color: var(--cu); display: flex; align-items: center; gap: 8px;
}
.eyebrow::before { content: ""; width: 7px; height: 7px; background: var(--cu); transform: rotate(45deg); display: inline-block; }
.panel__note { font-size: 11.5px; color: var(--muted-2); font-family: var(--mono); }

/* =====================================================================
   Page scaffolding
   ===================================================================== */
.page-head { padding: 26px 0 18px; display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.page-head h1 { font-family: var(--disp); font-weight: 700; font-size: 26px; letter-spacing: .01em; margin: 0; }
.page-head p { margin: 4px 0 0; color: var(--muted); font-size: 13.5px; }

.grid { display: grid; gap: var(--gap); }
.cols-main { grid-template-columns: 1fr; }
@media (min-width: 1080px) { .cols-main { grid-template-columns: 1fr 340px; align-items: start; } }

.stack { display: grid; gap: var(--gap); }

/* banners */
.banner {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  border: 1px solid var(--line-2); border-left: 3px solid var(--cu);
  background: linear-gradient(90deg, rgba(201,138,94,.10), transparent 60%);
  border-radius: 8px; padding: 11px 16px; margin: 16px 0; font-size: 13.5px; color: var(--text);
}
.banner b { color: var(--cu-br); font-family: var(--disp); letter-spacing: .02em; }
.banner code { font-family: var(--mono); background: var(--void); padding: 2px 6px; border-radius: 5px; color: var(--cu-br); font-size: 12px; }

/* =====================================================================
   Market header — benchmark chips
   ===================================================================== */
.bench { display: flex; gap: 10px; flex-wrap: wrap; }
.bench__chip {
  flex: 1 1 150px; background: var(--slate-2); border: 1px solid var(--line);
  border-radius: 8px; padding: 11px 14px;
}
.bench__sym { font-family: var(--disp); font-weight: 600; font-size: 12px; letter-spacing: .08em; color: var(--muted); }
.bench__px { font-family: var(--mono); font-size: 19px; font-weight: 500; margin-top: 3px; }
.bench__chg { font-family: var(--mono); font-size: 12.5px; margin-top: 1px; }

/* =====================================================================
   Sector / theme momentum meters
   ===================================================================== */
.themes { display: grid; gap: 10px; }
.theme {
  display: grid; grid-template-columns: 1fr auto; gap: 4px 16px; align-items: center;
  padding: 12px 14px; background: var(--slate-2); border: 1px solid var(--line); border-radius: 8px;
}
.theme__name { font-family: var(--disp); font-weight: 600; font-size: 14px; letter-spacing: .01em; }
.theme__members { font-family: var(--mono); font-size: 11px; color: var(--muted-2); grid-column: 1; }
.theme__right { grid-column: 2; grid-row: 1 / span 2; text-align: right; display: flex; align-items: center; gap: 14px; }
.theme__mom { font-family: var(--mono); font-size: 13px; min-width: 58px; text-align: right; }
.theme__rate { font-family: var(--mono); font-weight: 700; font-size: 18px; min-width: 34px; text-align: right; }

.chip {
  font-family: var(--disp); font-size: 11px; font-weight: 600; letter-spacing: .02em;
  padding: 3px 9px; border-radius: 20px; border: 1px solid var(--line-2); white-space: nowrap;
}
.chip--up   { color: var(--up);   border-color: rgba(63,182,126,.4);  background: var(--up-bg); }
.chip--down { color: var(--down); border-color: rgba(229,96,77,.4);   background: var(--down-bg); }
.chip--flat { color: var(--muted); }

/* =====================================================================
   Stock datasheet cards
   ===================================================================== */
.cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: var(--gap); }
.card {
  position: relative; display: block;
  background: linear-gradient(180deg, var(--slate) 0%, #10151e 100%);
  border: 1px solid var(--line); border-radius: var(--r); padding: 16px;
  transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease;
}
.card:hover { transform: translateY(-3px); border-color: var(--line-2); box-shadow: 0 14px 30px -18px rgba(0,0,0,.8); }
.card:focus-visible { outline: 2px solid var(--cu); outline-offset: 2px; }
.card::after { /* die corner tick, top-left only — subtle */
  content: ""; position: absolute; top: 9px; left: 9px; width: 11px; height: 11px;
  border-top: 1.5px solid var(--cu); border-left: 1.5px solid var(--cu); opacity: .5;
}

.card__top { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.card__id { min-width: 0; }
.card__sym { font-family: var(--mono); font-weight: 700; font-size: 19px; letter-spacing: .02em; }
.card__name { font-size: 12px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 150px; }
.card__theme { display: inline-block; margin-top: 7px; font-family: var(--disp); font-size: 10px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--cu); border: 1px solid var(--line-2); border-radius: 4px; padding: 2px 7px; }

.card__px { text-align: right; }
.card__price { font-family: var(--mono); font-size: 20px; font-weight: 500; }
.card__chg { font-family: var(--mono); font-size: 13px; margin-top: 2px; }

.card__mid { display: flex; align-items: center; gap: 8px; margin: 14px 0 12px; }
.card__mid .spark { flex: 1; }

.card__driver { font-size: 12px; color: var(--muted); border-top: 1px dashed var(--line); padding-top: 11px; display: grid; gap: 5px; }
.card__driver .d { display: flex; gap: 7px; align-items: baseline; }
.card__driver .d b { font-family: var(--disp); font-size: 10px; letter-spacing: .06em; text-transform: uppercase; color: var(--muted-2); min-width: 42px; }
.card__driver .d.bull span { color: #b9d8c8; }
.card__driver .d.bear span { color: #e7b6ad; }
.card__order { margin-top: 9px; }

/* =====================================================================
   Copper rating dial
   ===================================================================== */
.gauge { position: relative; flex: 0 0 auto; }
.gauge__track { stroke: var(--line-2); stroke-width: 9; }
.gauge__val   { stroke: var(--cu); stroke-width: 9; stroke-dasharray: var(--len) 999; }
.gauge--strong-buy .gauge__val { stroke: var(--cu-br); }
.gauge--sell .gauge__val,
.gauge--reduce .gauge__val { stroke: #9aa3b4; }
.gauge__num { font-family: var(--mono); font-weight: 700; font-size: 27px; fill: var(--text); }
.gauge__lab { font-family: var(--disp); font-weight: 600; font-size: 9px; letter-spacing: .14em; fill: var(--cu); }
.gauge__cov { font-family: var(--mono); font-size: 7.5px; fill: var(--muted-2); }

@media (prefers-reduced-motion: no-preference) {
  .gauge__val { animation: gaugefill .9s cubic-bezier(.4,0,.2,1) both; }
  @keyframes gaugefill { from { stroke-dasharray: 0 999; } to { stroke-dasharray: var(--len) 999; } }
}

/* =====================================================================
   Sparkline
   ===================================================================== */
.spark__line { stroke-width: 1.6px; }
.spark--up   .spark__line { stroke: var(--up); }
.spark--down .spark__line { stroke: var(--down); }
.spark--up   .spark__g0 { stop-color: var(--up);   stop-opacity: .28; }
.spark--down .spark__g0 { stop-color: var(--down); stop-opacity: .28; }
.spark__g1 { stop-color: transparent; stop-opacity: 0; }

/* =====================================================================
   Correlation matrix (die-grid heatmap)
   ===================================================================== */
.matrix-scroll { overflow-x: auto; margin: 0 -4px; padding: 0 4px; }
table.matrix { border-collapse: separate; border-spacing: 3px; font-family: var(--mono); }
table.matrix th { font-weight: 500; font-size: 11px; color: var(--muted); padding: 4px; }
table.matrix th.row { text-align: right; padding-right: 8px; color: var(--text); }
table.matrix th.col { writing-mode: vertical-rl; transform: rotate(180deg); height: 64px; vertical-align: bottom; }
.cell { width: 38px; height: 30px; border-radius: 4px; text-align: center; font-size: 10.5px; color: #0b0e14; font-weight: 500; }
.cell.self { background: var(--slate-2); color: var(--cu); border: 1px solid var(--line-2); }
.cell.na { background: var(--slate-2); color: var(--muted-2); }
.mx-legend { display: flex; align-items: center; gap: 10px; margin-top: 12px; font-size: 11px; color: var(--muted); font-family: var(--mono); }
.mx-legend i { width: 80px; height: 8px; border-radius: 4px; background: linear-gradient(90deg,#2b3a5a,#3a557f,#6f6a86,#b07a55,var(--cu-br)); display: inline-block; }

/* =====================================================================
   Signals / news feed
   ===================================================================== */
.feed { display: grid; gap: 0; }
.feed__item {
  display: grid; grid-template-columns: 20px 1fr auto; gap: 10px; align-items: start;
  padding: 11px 2px; border-bottom: 1px solid var(--line);
}
.feed__item:last-child { border-bottom: 0; }
.feed__body { min-width: 0; }
.feed__msg { font-size: 13px; line-height: 1.4; }
.feed__msg a:hover { color: var(--cu-br); }
.feed__meta { font-family: var(--mono); font-size: 11px; color: var(--muted-2); margin-top: 3px; display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.feed__sym { color: var(--cu); font-weight: 700; }
.feed__time { font-family: var(--mono); font-size: 11px; color: var(--muted-2); white-space: nowrap; }

.lvl { font-size: 12px; line-height: 1.4; }
.lvl--good { color: var(--up); }
.lvl--bad  { color: var(--down); }
.lvl--info { color: var(--cu); }

.tag {
  display: inline-block; font-family: var(--disp); font-size: 9.5px; font-weight: 600;
  letter-spacing: .05em; text-transform: uppercase; padding: 1px 6px; border-radius: 4px; margin-right: 5px;
}
.tag--order { background: var(--cu); color: #1b1206; }
.tag--pos { color: var(--up);   border: 1px solid rgba(63,182,126,.4); }
.tag--neg { color: var(--down); border: 1px solid rgba(229,96,77,.4); }
.tag--neu { color: var(--muted); border: 1px solid var(--line-2); }

.subtabs { display: flex; gap: 4px; }
.subtabs button {
  font-family: var(--disp); font-size: 11px; font-weight: 600; letter-spacing: .04em;
  background: transparent; color: var(--muted); border: 1px solid var(--line); border-radius: 6px;
  padding: 4px 10px; cursor: pointer;
}
.subtabs button.is-active { color: var(--cu-br); border-color: var(--line-2); background: var(--slate-2); }

/* =====================================================================
   Stock detail page
   ===================================================================== */
.detail-head { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; }
.detail-head .gauge { order: 2; }
.detail-id h1 { font-family: var(--mono); font-weight: 700; font-size: 32px; margin: 0; letter-spacing: .02em; }
.detail-id .co { color: var(--muted); font-size: 14px; }
.detail-price { margin-left: auto; text-align: right; }
.detail-price .p { font-family: var(--mono); font-size: 30px; font-weight: 500; }
.detail-price .c { font-family: var(--mono); font-size: 15px; margin-top: 2px; }

.bigchart { width: 100%; height: auto; display: block; }
.bigchart .area { fill: url(#bigfill); }
.bigchart .line { fill: none; stroke: var(--cu-br); stroke-width: 2; vector-effect: non-scaling-stroke; }
.bigchart .ma { fill: none; stroke: var(--muted); stroke-width: 1; stroke-dasharray: 4 4; vector-effect: non-scaling-stroke; opacity: .7; }
.chart-axis { font-family: var(--mono); font-size: 10px; fill: var(--muted-2); }
.chart-grid { stroke: var(--line); stroke-width: 1; }

/* rating breakdown */
.breakdown { display: grid; gap: 12px; }
.brk {
  display: grid; grid-template-columns: 120px 1fr 44px; gap: 12px; align-items: center;
}
.brk__label { font-family: var(--disp); font-size: 12px; font-weight: 600; letter-spacing: .02em; }
.brk__label small { display: block; font-family: var(--mono); font-weight: 400; font-size: 10px; color: var(--muted-2); letter-spacing: 0; }
.brk__detail { font-size: 11.5px; color: var(--muted); margin-top: 3px; }
.brk__score { font-family: var(--mono); font-weight: 700; font-size: 16px; text-align: right; }
.brk__score.na { color: var(--muted-2); font-size: 12px; }

.bar { height: 7px; background: var(--slate-2); border: 1px solid var(--line); border-radius: 20px; overflow: hidden; }
.bar span { display: block; height: 100%; border-radius: 20px; }
.bar--up span   { background: linear-gradient(90deg, var(--cu), var(--up)); }
.bar--mid span  { background: linear-gradient(90deg, #6a5a7a, var(--cu)); }
.bar--down span { background: linear-gradient(90deg, #6a3f4a, var(--down)); }
.bar--empty span { background: var(--muted-2); }

/* analyst recommendation bars */
.recs { display: grid; gap: 7px; }
.rec { display: grid; grid-template-columns: 80px 1fr 30px; gap: 10px; align-items: center; font-size: 12px; }
.rec__track { height: 16px; background: var(--slate-2); border-radius: 4px; overflow: hidden; }
.rec__fill { height: 100%; }
.rec__fill.sb { background: var(--up); }
.rec__fill.b  { background: #5fae87; }
.rec__fill.h  { background: var(--muted); }
.rec__fill.s  { background: #c0705f; }
.rec__fill.ss { background: var(--down); }
.rec__n { font-family: var(--mono); text-align: right; color: var(--muted); }

/* fundamentals table */
table.facts { width: 100%; border-collapse: collapse; }
table.facts th { text-align: left; font-family: var(--disp); font-size: 11px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); padding: 9px 0; border-bottom: 1px solid var(--line); width: 55%; }
table.facts td { font-family: var(--mono); font-size: 13px; text-align: right; padding: 9px 0; border-bottom: 1px solid var(--line); }

/* =====================================================================
   Forms / settings
   ===================================================================== */
.form-row { display: grid; gap: 6px; margin-bottom: 14px; }
.form-row label { font-family: var(--disp); font-size: 12px; font-weight: 600; letter-spacing: .02em; color: var(--text); }
.form-row .hint { font-size: 11.5px; color: var(--muted-2); }
input[type=text], input[type=email], input[type=number], select {
  background: var(--void); border: 1px solid var(--line-2); border-radius: 7px; color: var(--text);
  font-family: var(--mono); font-size: 13px; padding: 9px 11px; width: 100%;
}
input:focus, select:focus { outline: 2px solid var(--cu); outline-offset: 0; border-color: var(--cu); }
.inline-form { display: flex; gap: 10px; flex-wrap: wrap; align-items: end; }
.inline-form .form-row { margin: 0; }

.btn {
  font-family: var(--disp); font-weight: 600; font-size: 13px; letter-spacing: .03em;
  background: var(--cu); color: #1b1206; border: 0; border-radius: 7px; padding: 9px 16px; cursor: pointer;
  transition: background .14s ease, transform .14s ease;
}
.btn:hover { background: var(--cu-br); }
.btn:active { transform: translateY(1px); }
.btn--ghost { background: transparent; color: var(--text); border: 1px solid var(--line-2); }
.btn--ghost:hover { background: var(--slate-2); color: var(--cu-br); }
.btn--danger { background: transparent; color: var(--down); border: 1px solid rgba(229,96,77,.4); }
.btn--danger:hover { background: var(--down-bg); }
.btn:focus-visible { outline: 2px solid var(--cu-br); outline-offset: 2px; }

table.list { width: 100%; border-collapse: collapse; }
table.list th { text-align: left; font-family: var(--disp); font-size: 11px; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); padding: 10px 12px; border-bottom: 1px solid var(--line-2); }
table.list td { padding: 10px 12px; border-bottom: 1px solid var(--line); font-size: 13px; vertical-align: middle; }
table.list td.num { font-family: var(--mono); text-align: right; }
table.list tr:hover td { background: var(--slate-2); }

.toggle { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; color: var(--muted); cursor: pointer; }
.toggle input { width: auto; }

.flash { border-radius: 8px; padding: 11px 15px; margin: 14px 0; font-size: 13.5px; border: 1px solid var(--line-2); }
.flash--ok   { border-color: rgba(63,182,126,.4); background: var(--up-bg); color: #bfe6d2; }
.flash--err  { border-color: rgba(229,96,77,.4);  background: var(--down-bg); color: #f0c2ba; }

.status-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 6px; }
.status-dot.on { background: var(--up); }
.status-dot.off { background: var(--muted-2); }

/* =====================================================================
   Footer / disclaimer
   ===================================================================== */
.disclaimer {
  margin-top: 30px; padding: 16px 18px; border: 1px solid var(--line);
  border-radius: 8px; background: var(--slate); color: var(--muted); font-size: 12px; line-height: 1.6;
}
.disclaimer b { color: var(--cu); font-family: var(--disp); }

.foot { text-align: center; color: var(--muted-2); font-size: 11.5px; font-family: var(--mono); padding: 26px 0 6px; }

/* =====================================================================
   Utilities
   ===================================================================== */
.muted { color: var(--muted); }
.tiny { font-size: 11px; }
.mt { margin-top: var(--gap); }
.right { text-align: right; }
.flex { display: flex; gap: 10px; align-items: center; }
.space { justify-content: space-between; }
.wrap-gap { flex-wrap: wrap; }
.empty { color: var(--muted-2); font-size: 13px; padding: 18px 2px; text-align: center; font-family: var(--mono); }

/* =====================================================================
   Responsive
   ===================================================================== */
@media (max-width: 720px) {
  .wrap { padding: 0 16px 48px; }
  .mast__bar { padding: 12px 16px; gap: 12px; }
  .brand small { display: none; }
  .nav { gap: 2px; }
  .nav a { padding: 6px 9px; font-size: 12px; }
  .page-head h1 { font-size: 22px; }
  .cards { grid-template-columns: 1fr; }
  .detail-price { margin-left: 0; text-align: left; width: 100%; }
  .brk { grid-template-columns: 96px 1fr 38px; }
}

@media (prefers-reduced-motion: reduce) {
  .tape__track { animation: none; }
  .card { transition: none; }
  * { scroll-behavior: auto; }
}

/* ============================================================
   v2 — accounts, auth pages, discovery
   ============================================================ */
.acct { display: flex; align-items: center; gap: 12px; }
.acct__who {
  font: 500 12px/1 "JetBrains Mono", ui-monospace, monospace;
  color: var(--muted);
  max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.acct__badge {
  font-size: 10px; letter-spacing: .06em; text-transform: uppercase;
  color: var(--cu-br); border: 1px solid var(--line); border-radius: 4px;
  padding: 1px 5px; margin-left: 2px;
}
.acct__link {
  font: 600 12px/1 "Chakra Petch", system-ui, sans-serif;
  letter-spacing: .03em; color: var(--muted); text-decoration: none;
  padding: 7px 10px; border-radius: 7px; border: 1px solid transparent;
}
.acct__link:hover { color: var(--text); background: var(--slate); }
.acct__link--cta { color: var(--void); background: var(--cu); border-color: var(--cu); }
.acct__link--cta:hover { color: var(--void); background: var(--cu-br); }

/* narrow centered shell for login / register */
.narrow { max-width: 440px; margin: 48px auto; }
.narrow .panel { padding: 26px 26px 30px; }
.auth__lede { color: var(--muted); font-size: 14px; margin: 2px 0 20px; }
.auth__field { margin-bottom: 14px; }
.auth__field label {
  display: block; font: 600 11px/1 "Chakra Petch", sans-serif;
  letter-spacing: .06em; text-transform: uppercase; color: var(--muted); margin-bottom: 6px;
}
.auth__field input {
  width: 100%; box-sizing: border-box;
  background: var(--slate-2); border: 1px solid var(--line); border-radius: 8px;
  color: var(--text); padding: 11px 12px;
  font: 400 15px/1.2 "JetBrains Mono", ui-monospace, monospace;
}
.auth__field input:focus { outline: none; border-color: var(--cu); }
.auth .btn--block { width: 100%; justify-content: center; padding: 12px; margin-top: 4px; }
.auth__alt { margin-top: 18px; text-align: center; color: var(--muted); font-size: 13px; }
.auth__alt a { color: var(--cu-br); text-decoration: none; }
.auth__alt a:hover { text-decoration: underline; }

/* discovery */
.disc-search { display: flex; gap: 10px; margin-bottom: 6px; }
.disc-search input {
  flex: 1; background: var(--slate-2); border: 1px solid var(--line); border-radius: 8px;
  color: var(--text); padding: 11px 13px;
  font: 400 15px/1.2 "JetBrains Mono", ui-monospace, monospace;
}
.disc-search input:focus { outline: none; border-color: var(--cu); }

.results { display: flex; flex-direction: column; gap: 8px; }
.result {
  display: flex; align-items: center; gap: 12px;
  background: var(--slate-2); border: 1px solid var(--line); border-radius: 9px; padding: 10px 12px;
}
.result__sym { font: 700 14px/1 "JetBrains Mono", monospace; color: var(--text); min-width: 78px; }
.result__name { color: var(--muted); font-size: 13px; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.result__ex { color: var(--muted); font-size: 11px; opacity: .8; }

.finds { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.find {
  position: relative; background: var(--slate); border: 1px solid var(--line);
  border-radius: 11px; padding: 14px; display: flex; flex-direction: column; gap: 10px;
}
.find__top { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.find__sym { font: 700 16px/1 "JetBrains Mono", monospace; color: var(--text); }
.find__name { color: var(--muted); font-size: 12px; margin-top: 3px; }
.find__score { font: 700 18px/1 "JetBrains Mono", monospace; }
.find__score small { display: block; font-size: 9px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); font-weight: 600; text-align: right; }
.find__row { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.metric { font: 600 12px/1 "JetBrains Mono", monospace; }
.metric small { color: var(--muted); font-weight: 500; margin-right: 3px; text-transform: uppercase; font-size: 9px; letter-spacing: .05em; }
.find__reasons { display: flex; flex-wrap: wrap; gap: 5px; }
.rtag {
  font-size: 10.5px; letter-spacing: .02em; color: var(--cu-br);
  background: rgba(201,138,94,.10); border: 1px solid var(--line); border-radius: 5px; padding: 2px 7px;
}
.find__cta { display: flex; gap: 8px; margin-top: 2px; }
.find__cta .btn { flex: 1; justify-content: center; }
.find__watching { font-size: 11px; color: var(--up); align-self: center; }

@media (max-width: 900px) { .finds { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .finds { grid-template-columns: 1fr; } .acct__who { display: none; } }

/* v2 admin extras */
.btn--xs { padding: 5px 9px; font-size: 11px; }
.select-wide {
  width: 100%; box-sizing: border-box; background: var(--slate-2);
  border: 1px solid var(--line); border-radius: 8px; color: var(--text);
  padding: 10px 12px; font: 400 14px/1.2 "Inter", system-ui, sans-serif;
}
.select-wide:focus { outline: none; border-color: var(--cu); }
.adv { border: 1px solid var(--line); border-radius: 8px; padding: 10px 12px; background: var(--slate-2); }
.adv > summary {
  cursor: pointer; color: var(--muted); font: 600 12px/1 "Chakra Petch", sans-serif;
  letter-spacing: .04em; list-style: none;
}
.adv > summary::-webkit-details-marker { display: none; }
.adv > summary::before { content: "▸ "; color: var(--cu); }
.adv[open] > summary::before { content: "▾ "; }

.btn--block { width: 100%; justify-content: center; }

/* ============================================================
   v3 — landing page, sectors, movers, portfolio, earnings, prefs
   ============================================================ */
.hero { margin: 4px 0 22px; }
.hero__in { max-width: 760px; }
.hero__title {
  font: 700 40px/1.08 "Chakra Petch", system-ui, sans-serif;
  letter-spacing: -0.01em; color: var(--text); margin: 10px 0 12px;
}
.hero__sub { color: var(--muted); font-size: 16px; line-height: 1.55; max-width: 640px; }
.hero__cta { display: flex; gap: 10px; margin-top: 20px; flex-wrap: wrap; }

.sct { margin-bottom: 14px; }
.sct:last-child { margin-bottom: 0; }
.sct__top { display: flex; justify-content: space-between; align-items: baseline; }
.sct__name { font: 600 13px/1 "Chakra Petch", sans-serif; color: var(--text); }
.sct__bar { height: 7px; background: var(--slate-2); border-radius: 4px; overflow: hidden; margin: 6px 0 4px; }
.sct__bar span { display: block; height: 100%; border-radius: 4px; }
details.sct > summary { list-style: none; cursor: pointer; outline: none; }
details.sct > summary::-webkit-details-marker { display: none; }
details.sct > summary:hover .sct__name { color: var(--cu-br); }
.sct__chev { display: inline-block; color: var(--muted); margin-right: 7px; font-size: 10px; transition: transform .15s ease, color .15s ease; }
details.sct[open] .sct__chev { transform: rotate(90deg); color: var(--cu-br); }
.sct__list { padding: 6px 0 10px 4px; display: flex; flex-direction: column; gap: 2px; }
.sct__stock { display: flex; align-items: baseline; gap: 12px; padding: 7px 9px; border-radius: 7px; text-decoration: none; color: var(--text); }
.sct__stock:hover { background: var(--slate-2); }
.sct__sym { font: 700 13px/1 "JetBrains Mono", monospace; color: var(--text); min-width: 82px; }
.sct__co { color: var(--muted); flex: 1; font-size: 13px; }
.sct__sc { font: 700 13px/1 "JetBrains Mono", monospace; min-width: 30px; text-align: right; }

.mv { display: flex; align-items: center; gap: 10px; padding: 6px 0; border-bottom: 1px solid var(--line); }
.mv:last-child { border-bottom: 0; }
.mv__sym { font: 700 13px/1 "JetBrains Mono", monospace; color: var(--text); min-width: 64px; }
.mv__px { font: 500 12px/1 "JetBrains Mono", monospace; color: var(--muted); flex: 1; }

/* portfolio */
.pf-sum { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 18px; }
.pf-card { background: var(--slate-2); border: 1px solid var(--line); border-radius: 10px; padding: 14px; }
.pf-card small { display: block; font-size: 10px; letter-spacing: .07em; text-transform: uppercase; color: var(--muted); margin-bottom: 6px; }
.pf-card b { font: 700 22px/1 "JetBrains Mono", monospace; color: var(--text); }
.num { font-family: "JetBrains Mono", ui-monospace, monospace; }
@media (max-width: 720px) { .pf-sum { grid-template-columns: 1fr 1fr; } }

/* earnings list */
.ern { display: flex; align-items: center; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--line); }
.ern:last-child { border-bottom: 0; }
.ern__when { min-width: 92px; text-align: center; }
.ern__days { font: 700 22px/1 "JetBrains Mono", monospace; color: var(--cu-br); }
.ern__days small { display: block; font-size: 10px; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.ern__sym { font: 700 15px/1 "JetBrains Mono", monospace; color: var(--text); }
.ern__meta { color: var(--muted); font-size: 12px; margin-top: 3px; }
.chip-ern {
  display: inline-block; font-size: 11px; letter-spacing: .03em; color: var(--cu-br);
  background: rgba(201,138,94,.10); border: 1px solid var(--line); border-radius: 5px; padding: 2px 8px;
}

/* notes / journal */
.note { background: var(--slate-2); border: 1px solid var(--line); border-radius: 9px; padding: 11px 13px; margin-bottom: 8px; }
.note__body { color: var(--text); font-size: 14px; line-height: 1.5; white-space: pre-wrap; }
.note__meta { color: var(--muted); font-size: 11px; margin-top: 6px; display: flex; justify-content: space-between; }
.note textarea, .pref textarea { width: 100%; box-sizing: border-box; }
textarea {
  background: var(--slate-2); border: 1px solid var(--line); border-radius: 8px; color: var(--text);
  padding: 10px 12px; font: 400 14px/1.5 "Inter", system-ui, sans-serif; resize: vertical; min-height: 64px;
}
textarea:focus { outline: none; border-color: var(--cu); }

/* 2FA secret display */
.totp-secret {
  font: 600 16px/1.4 "JetBrains Mono", monospace; letter-spacing: .12em; color: var(--cu-br);
  background: var(--void); border: 1px solid var(--line); border-radius: 8px; padding: 12px; word-break: break-all;
}
.kv-uri { font: 400 11px/1.5 "JetBrains Mono", monospace; color: var(--muted); word-break: break-all; }

/* audit log */
.audit { width: 100%; border-collapse: collapse; }
.audit td { padding: 7px 8px; border-bottom: 1px solid var(--line); font-size: 12.5px; vertical-align: top; }
.audit .num { color: var(--muted); white-space: nowrap; }
.audit__act { color: var(--cu-br); font-weight: 600; }

/* ============================================================
   privacy / legal document
   ============================================================ */
.legal { max-width: 820px; margin: 0 auto; }
.legal__h { font: 700 18px/1.3 "Chakra Petch", system-ui, sans-serif; color: var(--text); margin: 26px 0 8px; }
.legal p { color: var(--text); font-size: 14.5px; line-height: 1.65; margin: 0 0 12px; }
.legal a { color: var(--cu-br); }
.legal__ul { margin: 0 0 14px; padding-left: 20px; }
.legal__ul li { color: var(--text); font-size: 14px; line-height: 1.6; margin-bottom: 7px; }
.legal__tbl { width: 100%; border-collapse: collapse; margin: 8px 0 16px; }
.legal__tbl th { text-align: left; font: 600 11px/1.3 "Chakra Petch", sans-serif; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); padding: 8px 10px; border-bottom: 1px solid var(--line); vertical-align: bottom; }
.legal__tbl td { padding: 10px; border-bottom: 1px solid var(--line); font-size: 13px; line-height: 1.5; color: var(--text); vertical-align: top; }
.legal__tbl td:nth-child(3), .legal__tbl td:nth-child(2) { color: var(--muted); white-space: nowrap; }
.legal__tbl td:nth-child(2) { white-space: normal; }
.legal__note { margin-top: 22px; padding: 12px 14px; border: 1px dashed var(--line); border-radius: 8px; color: var(--muted); font-size: 12.5px; }
@media (max-width: 640px) { .legal__tbl td, .legal__tbl th { white-space: normal !important; font-size: 12px; } }

/* ============================================================
   v3.2 — live prices + interactive charts
   ============================================================ */
.fw-svg { display: block; width: 100%; height: 300px; }
#fw-chart { position: relative; min-height: 300px; }
#fw-chart.is-loading { opacity: .5; transition: opacity .2s; }
.fw-tip {
  position: absolute; top: 6px; pointer-events: none; z-index: 3;
  background: var(--void); border: 1px solid var(--line); border-radius: 7px;
  padding: 5px 9px; font: 500 11px/1.35 "JetBrains Mono", monospace; color: var(--text);
  box-shadow: 0 6px 18px rgba(0,0,0,.45); white-space: nowrap;
}
.fw-tip b { display: block; font-size: 13px; }
.fw-tip span { color: var(--muted); font-size: 10px; }
.fw-flash { animation: fwflash .6s ease-out; }
@keyframes fwflash { 0% { color: var(--cu-br); } 100% { color: inherit; } }

.range-bar { display: flex; gap: 4px; flex-wrap: wrap; }
.range-bar button {
  font: 600 11px/1 "Chakra Petch", sans-serif; letter-spacing: .04em;
  color: var(--muted); background: var(--slate-2); border: 1px solid var(--line);
  padding: 6px 11px; border-radius: 6px; cursor: pointer; transition: all .12s;
}
.range-bar button:hover { color: var(--text); border-color: var(--line-2); }
.range-bar button.is-active { color: var(--void); background: var(--cu); border-color: var(--cu); }

.live-px { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.live-px__c { font: 700 30px/1 "JetBrains Mono", monospace; color: var(--text); }
.live-px__dp { font: 600 15px/1 "JetBrains Mono", monospace; }
.live-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--up); margin-right: 5px; animation: pulse 2s infinite; vertical-align: middle; }
@keyframes pulse { 0%,100% { opacity: 1; } 50% { opacity: .35; } }
.tick .chg::before { content: "· "; }
.tick .chg.up::before { content: "▲ "; }
.tick .chg.down::before { content: "▼ "; }

/* ============================================================
   Deep analysis page
   ============================================================ */
.flash--warn { border-color:#5a4422; background:rgba(201,138,94,.10); color:var(--cu-br); }

/* verdict pill */
.verdict { display:inline-block; font:600 11px/1 "Chakra Petch",sans-serif; letter-spacing:.04em;
  text-transform:uppercase; padding:5px 9px; border-radius:5px; border:1px solid var(--line-2); color:var(--muted); white-space:nowrap; }
.verdict--under { color:var(--up);   border-color:rgba(63,182,126,.45); background:rgba(63,182,126,.10); }
.verdict--over  { color:var(--down); border-color:rgba(229,96,77,.45);  background:rgba(229,96,77,.10); }
.verdict--fair  { color:var(--cu-br);border-color:rgba(201,138,94,.45); background:rgba(201,138,94,.10); }
.verdict--na    { color:var(--muted); }
.verdict--lg { font-size:13px; padding:7px 12px; }

/* header */
.an-head { display:flex; justify-content:space-between; align-items:flex-start; gap:18px; flex-wrap:wrap; }
.an-head__sym { color:var(--muted); font-size:.6em; letter-spacing:.05em; margin-left:6px; }
.an-head__right { display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.an-head__px { display:flex; align-items:baseline; gap:8px; }
.an-head__px b { font-size:24px; }
.an-actions { display:flex; gap:10px; flex-wrap:wrap; margin:-4px 0 18px; }

.an-desc { color:var(--text); line-height:1.55; margin:2px 0 0; }

/* valuation bar */
.val-bar { margin:16px 0 4px; }
.val-bar__track { position:relative; height:12px; border-radius:7px;
  background:linear-gradient(90deg, rgba(63,182,126,.30), rgba(107,118,137,.18) 50%, rgba(229,96,77,.30)); border:1px solid var(--line); }
.val-bar__fair { position:absolute; left:33.33%; right:33.33%; top:-1px; bottom:-1px; border-left:1px dashed var(--line-2); border-right:1px dashed var(--line-2); background:rgba(201,138,94,.08); }
.val-bar__marker { position:absolute; top:50%; width:14px; height:14px; margin:-7px 0 0 -7px; border-radius:50%;
  background:var(--text); border:2px solid var(--void); box-shadow:0 0 0 1px var(--line-2); }
.val-bar__labs { display:flex; justify-content:space-between; margin-top:5px; color:var(--muted); font-size:11px; }

/* assumptions */
.an-assume summary { cursor:pointer; color:var(--cu-br); font-size:13px; }
.an-list { margin:10px 0 0; padding-left:18px; color:var(--muted); font-size:13px; line-height:1.6; }
.an-list li { margin:2px 0; }

/* trend block */
.an-trend { display:flex; gap:16px; align-items:center; flex-wrap:wrap; }
.an-trend .facts { flex:1 1 180px; }
.an-rating { display:flex; gap:14px; align-items:center; flex-wrap:wrap; }

/* scarcity tag */
.scar { display:inline-block; font:600 11px/1 "Chakra Petch",sans-serif; letter-spacing:.04em; text-transform:uppercase;
  padding:5px 9px; border-radius:5px; border:1px solid var(--line-2); color:var(--muted); }
.scar--veryhigh { color:var(--cu-br); border-color:rgba(224,160,110,.5); background:rgba(224,160,110,.12); }
.scar--high     { color:var(--cu);    border-color:rgba(201,138,94,.45); background:rgba(201,138,94,.08); }
.scar--moderate { color:#7FA6D9; border-color:rgba(127,166,217,.4); }
.scar--low      { color:var(--muted); }

/* competitors */
.an-comp { display:flex; flex-wrap:wrap; gap:8px; }

/* analysis index grid */
.an-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:14px; }
.an-card { display:block; padding:14px; border:1px solid var(--line); border-radius:10px; background:var(--slate);
  text-decoration:none; color:var(--text); transition:border-color .15s, transform .15s; }
.an-card:hover { border-color:var(--line-2); transform:translateY(-2px); }
.an-card__top { display:flex; justify-content:space-between; align-items:flex-start; gap:8px; }
.an-card__sym { font:600 15px/1.2 "Chakra Petch",sans-serif; }
.an-card__name { color:var(--muted); font-size:12px; margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:130px; }
.an-card__mid { display:flex; justify-content:space-between; align-items:center; gap:10px; margin:12px 0 10px; }
.an-card__px { text-align:right; }
.an-card__px b { display:block; font-size:16px; }
.an-card__foot { display:flex; justify-content:space-between; align-items:center; gap:8px; border-top:1px solid var(--line); padding-top:9px; }

/* ============================================================
   Collapsible panels (accordions)
   ============================================================ */
details.acc > summary { cursor: pointer; list-style: none; justify-content: flex-start; -webkit-tap-highlight-color: transparent; }
details.acc > summary::-webkit-details-marker { display: none; }
details.acc > summary > .eyebrow { margin-right: auto; }
details.acc > summary::after {
  content: ""; flex: 0 0 auto; width: 8px; height: 8px; margin-left: 10px; align-self: center;
  border-right: 2px solid var(--muted); border-bottom: 2px solid var(--muted);
  transform: rotate(45deg); transition: transform .2s ease;
}
details.acc[open] > summary::after { transform: rotate(-135deg); }
details.acc > summary:hover::after { border-color: var(--cu-br); }
details.acc:not([open]) > summary { margin-bottom: 0; }
details.acc > summary:focus-visible { outline: 2px solid var(--cu-br); outline-offset: 3px; border-radius: 4px; }

/* charts always fill their container */
.bigchart, .fw-svg { width: 100%; height: auto; display: block; }

/* ============================================================
   Mobile hamburger navigation (CSS-only, works without JS)
   ============================================================ */
.navcb { display: none; }
.burger {
  display: none; flex-direction: column; justify-content: center; gap: 4px;
  width: 40px; height: 38px; margin-left: auto; cursor: pointer;
  border: 1px solid var(--line-2); border-radius: 8px; background: var(--slate);
  -webkit-tap-highlight-color: transparent;
}
.burger span { display: block; width: 18px; height: 2px; margin: 0 auto; background: var(--text); border-radius: 2px; transition: transform .2s ease, opacity .2s ease; }
.navcb:focus-visible + .mast__bar .burger { outline: 2px solid var(--cu-br); outline-offset: 2px; }

/* ============================================================
   Phones / small tablets
   ============================================================ */
@media (max-width: 720px) {
  .wrap { padding: 0 14px 56px; }
  .mast__bar { padding: 11px 14px; gap: 10px 12px; flex-wrap: wrap; }
  .brand { font-size: 19px; }
  .brand small { display: none; }

  /* show the burger; collapse nav + account into a dropdown menu */
  .navcb { display: block; position: absolute; width: 1px; height: 1px; opacity: 0; }
  .burger { display: flex; }
  .nav { display: none; order: 5; flex-basis: 100%; flex-direction: column; gap: 0; margin: 6px 0 0; border-top: 1px solid var(--line); }
  .nav a { padding: 13px 6px; font-size: 15px; border-radius: 0; border-bottom: 1px solid var(--line); }
  .nav a.is-active { background: var(--slate-2); }
  .acct { display: none; order: 6; flex-basis: 100%; gap: 14px; padding-top: 4px; }
  #fw-nav:checked ~ .mast__bar .nav { display: flex; }
  #fw-nav:checked ~ .mast__bar .acct { display: flex; }
  #fw-nav:checked ~ .mast__bar .burger span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
  #fw-nav:checked ~ .mast__bar .burger span:nth-child(2) { opacity: 0; }
  #fw-nav:checked ~ .mast__bar .burger span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
  .acct__who { display: none; }

  /* generous touch targets */
  .btn, .acct__link, input[type="text"], input[type="email"], input[type="password"],
  input[type="number"], select, textarea { min-height: 44px; }
  .btn { padding: 11px 16px; }
  .btn--xs { min-height: 0; }
  .nav a, summary, .an-card, .feed__item a, .note__meta .btn { -webkit-tap-highlight-color: rgba(201,138,94,.18); }

  /* headings + spacing */
  .page-head { padding: 20px 0 14px; }
  .page-head h1 { font-size: 21px; }
  .panel { padding: 15px; }

  /* wide data tables scroll horizontally instead of overflowing */
  table.list, table.audit { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; white-space: nowrap; }
  .matrix-scroll { -webkit-overflow-scrolling: touch; }

  /* charts a touch shorter on phones */
  #fw-chart { min-height: 170px; }

  /* analysis page header + actions stack cleanly */
  .an-head__right { width: 100%; justify-content: space-between; }
  .an-actions { gap: 8px; }
  .an-actions .btn { flex: 1 1 auto; text-align: center; }
  .an-grid { grid-template-columns: 1fr 1fr; gap: 10px; }
  .an-trend { gap: 12px; }
  .pf-sum { grid-template-columns: 1fr !important; }
}

/* very small phones */
@media (max-width: 400px) {
  .an-grid { grid-template-columns: 1fr; }
  .brand { font-size: 18px; }
  .page-head h1 { font-size: 19px; }
}

/* ============================================================
   Macro board · earnings track · analyst actions
   ============================================================ */

/* regime pill + banner */
.regime-pill { font-family: var(--disp); font-weight: 600; font-size: 11px; letter-spacing: .04em; text-transform: uppercase; padding: 5px 11px; border-radius: 999px; border: 1px solid var(--line-2); color: var(--muted); white-space: nowrap; }
.regime--on { color: var(--up); border-color: rgba(63,182,126,.45); background: rgba(63,182,126,.10); }
.regime--neutral { color: var(--cu-br); border-color: rgba(201,138,94,.45); background: rgba(201,138,94,.10); }
.regime--off { color: var(--down); border-color: rgba(229,96,77,.45); background: rgba(229,96,77,.10); }

.regime-banner { display: flex; gap: 24px; align-items: center; justify-content: space-between; flex-wrap: wrap; border-left: 3px solid var(--cu); }
.regime-banner.regime--on { border-left-color: var(--up); }
.regime-banner.regime--off { border-left-color: var(--down); }
.regime-banner__label { font-family: var(--disp); font-weight: 700; font-size: 30px; letter-spacing: .01em; margin-top: 4px; }
.regime-banner__note { color: var(--muted); font-size: 13px; max-width: 48ch; margin: 6px 0 0; }
.regime-banner__stats { display: flex; gap: 26px; }
.regime-banner__stats > div { text-align: right; }
.regime-banner__stats b { display: block; font-size: 26px; font-family: var(--mono); }
.regime-banner__stats small { color: var(--muted); font-size: 11px; }

/* index cards */
.macro-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: var(--gap); margin-bottom: var(--gap); }
.macro-card { background: linear-gradient(180deg, var(--slate) 0%, #11161f 100%); border: 1px solid var(--line); border-radius: var(--r); padding: 15px; }
.macro-card__top { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.macro-card__label { font-family: var(--disp); font-weight: 600; font-size: 13px; color: var(--text); }
.macro-card__px { font-size: 23px; margin: 6px 0 8px; }
.macro-card .spark { width: 100%; height: 46px; display: block; }
.macro-card__foot { display: flex; justify-content: space-between; align-items: center; margin-top: 6px; }

/* geopolitical news tags */
.geo-tags { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.geo-tag { font-family: var(--mono); font-size: 10.5px; letter-spacing: .02em; padding: 2px 7px; border-radius: 5px; border: 1px solid var(--line-2); color: var(--muted); white-space: nowrap; }
.geo-tag--fed, .geo-tag--inflation, .geo-tag--economy { color: var(--cu-br); border-color: rgba(201,138,94,.4); background: rgba(201,138,94,.08); }
.geo-tag--trade, .geo-tag--geopolitics { color: var(--down); border-color: rgba(229,96,77,.4); background: rgba(229,96,77,.08); }
.geo-mini { display: flex; flex-direction: column; gap: 10px; }
.geo-item--mini { border-top: 1px solid var(--line); padding-top: 8px; }
.geo-item--mini:first-child { border-top: 0; padding-top: 0; }
.geo-item--mini .geo-tags { margin-top: 5px; }

/* Fed / rates box */
.fed-box { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.fed-box > div { background: var(--slate-2); border: 1px solid var(--line); border-radius: 9px; padding: 12px; }
.fed-box small { display: block; color: var(--muted); font-size: 11px; text-transform: uppercase; letter-spacing: .04em; }
.fed-box b { display: block; font-family: var(--mono); font-size: 20px; margin: 4px 0 2px; }
.fed-box__rate b { color: var(--cu-br); }

/* earnings / analyst summary header */
.ern-top { display: flex; gap: 24px; align-items: flex-start; justify-content: space-between; flex-wrap: wrap; margin-bottom: 14px; }
.ern-next small { display: block; color: var(--muted); font-size: 11px; text-transform: uppercase; letter-spacing: .04em; }
.ern-next b { font-family: var(--mono); font-size: 24px; }
.ern-stats { display: flex; gap: 22px; flex-wrap: wrap; }
.ern-stats > div { text-align: right; }
.ern-stats b { display: block; font-family: var(--mono); font-size: 20px; }
.ern-stats small { color: var(--muted); font-size: 11px; }

/* result pills (beat / miss / in-line) */
.pill { font-family: var(--disp); font-weight: 600; font-size: 11px; letter-spacing: .03em; padding: 3px 9px; border-radius: 999px; border: 1px solid var(--line-2); color: var(--muted); white-space: nowrap; }
.pill--beat { color: var(--up); border-color: rgba(63,182,126,.45); background: rgba(63,182,126,.10); }
.pill--miss { color: var(--down); border-color: rgba(229,96,77,.45); background: rgba(229,96,77,.10); }
.pill--inline { color: var(--cu-br); border-color: rgba(201,138,94,.4); background: rgba(201,138,94,.08); }

/* analyst action badges */
.act { font-family: var(--disp); font-weight: 600; font-size: 11px; padding: 3px 9px; border-radius: 6px; border: 1px solid var(--line-2); color: var(--muted); white-space: nowrap; }
.act--upgrade { color: var(--up); border-color: rgba(63,182,126,.45); background: rgba(63,182,126,.10); }
.act--downgrade { color: var(--down); border-color: rgba(229,96,77,.45); background: rgba(229,96,77,.10); }
.act--init { color: var(--cu-br); border-color: rgba(201,138,94,.4); }
.ern-table th, .ern-table td { white-space: nowrap; }

@media (max-width: 720px) {
  .regime-banner__stats { gap: 18px; width: 100%; justify-content: space-between; }
  .regime-banner__label { font-size: 24px; }
  .ern-stats { gap: 16px; }
  .ern-top { gap: 14px; }
  .fed-box { grid-template-columns: 1fr; }
}

/* earnings: per-report "what happened" read + overall narrative */
.ern-narrative { margin: 0 0 14px; padding: 11px 14px; background: var(--slate-2); border-left: 3px solid var(--cu); border-radius: 0 8px 8px 0; color: var(--text); font-size: 13.5px; line-height: 1.5; }
.read { font-family: var(--mono); font-size: 12px; white-space: nowrap; cursor: help; }
.read--up { color: var(--up); }
.read--down { color: var(--down); }
.read--flat, .read--na { color: var(--muted); }

/* general up/down streak readout (Trend panel) */
.streak-line { margin: 10px 0 0; font-size: 12.5px; color: var(--muted); line-height: 1.55; }
.streak-line b { font-family: var(--mono); }

/* guest read-only banner + members-only gate */
.guestbar { display: flex; align-items: center; justify-content: space-between; gap: 10px 16px; flex-wrap: wrap; margin: 14px 0 0; padding: 10px 14px; background: rgba(201,138,94,.09); border: 1px solid rgba(201,138,94,.32); border-radius: 9px; font-size: 13px; color: var(--text); }
.guestbar__cta { display: flex; gap: 8px; flex-wrap: wrap; flex: 0 0 auto; }
.gate { display: flex; justify-content: center; padding: 44px 0; }
.gate__card { max-width: 440px; text-align: center; background: linear-gradient(180deg, var(--slate) 0%, #11161f 100%); border: 1px solid var(--line); border-radius: var(--r); padding: 34px 28px; }
.gate__card h1 { font-family: var(--disp); font-size: 24px; margin: 8px 0; }
.gate__card p { color: var(--muted); font-size: 14px; line-height: 1.6; margin: 0 0 18px; }
.gate__cta { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
hr.rule { border: 0; border-top: 1px solid var(--line); margin: 4px 0; }
