/* Apogee — on top of desk.css: the type pairing, the HUD windows, the rooms,
   Orbit, the inbox, the research room and the launch pad. Both themes come
   from desk.css tokens; only what Apogee adds is defined here. */
:root { --bar1: #1c1c1c; --bar2: #0d0d0d; --glowg: rgba(25,214,107,.35); --glowr: rgba(255,59,48,.35); --disp: "Space Grotesk", "Inter", sans-serif; }
[data-theme="light"] { --bar1: #f2ecdb; --bar2: #e9e1cc; --glowg: transparent; --glowr: transparent; }
body { font-family: "JetBrains Mono", "IBM Plex Mono", Menlo, Consolas, monospace; }
.panel h2, .risk-row .rowlabel, .hero-tag, .bookname, .tabbtn, .cmd .prompt, .kpi b, .kpi small, .badge-regime, .sub button, .card h4, .metric b, .hero h2 { font-family: var(--disp); }
.tabbtn b { font-family: "JetBrains Mono", monospace; }
.wordmark { font: 700 15px var(--disp); letter-spacing: .36em; color: var(--brass); margin-right: 4px; }
.cmd .prompt { gap: 10px; }

/* HUD windows: corner brackets + gradient title bars with a brass rule */
.panel, .risk-row, .hero { position: relative; }
.panel::before, .panel::after, .risk-row::before, .risk-row::after, .hero::before, .hero::after {
  content: ""; position: absolute; width: 11px; height: 11px; border: 0 solid var(--brass); pointer-events: none; opacity: .9; z-index: 2; }
.panel::before, .risk-row::before, .hero::before { left: -1px; top: -1px; border-width: 2px 0 0 2px; }
.panel::after, .risk-row::after, .hero::after { right: -1px; bottom: -1px; border-width: 0 2px 2px 0; }
.panel h2, .risk-row .rowlabel, .hero-tag { background: linear-gradient(180deg, var(--bar1), var(--bar2)); box-shadow: inset 0 -1px 0 rgba(201,162,74,.45); }
.tabpane { animation: rise .32s ease-out; }
@keyframes rise { from { opacity: 0; transform: translateY(8px); } }
.glow.pos { text-shadow: 0 0 18px var(--glowg); } .glow.neg { text-shadow: 0 0 18px var(--glowr); }

/* sub-tabs inside a room */
.sub { display: flex; gap: 6px; align-items: center; margin: 0; }
.sub button { background: transparent; border: 1px solid var(--line); color: var(--ivory); font: 600 .74rem var(--disp); letter-spacing: .08em; padding: 3px 12px; cursor: pointer; }
.sub button.on { border-color: var(--brass); color: var(--brass-hi); background: rgba(201,162,74,.08); }
.sub .hint { margin-left: auto; }

/* KPI tiles */
.kpis { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.kpi { padding: 8px 12px 10px; overflow: hidden; }
.kpi small { display: block; color: var(--org); font-size: .62rem; letter-spacing: .2em; text-transform: uppercase; font-weight: 700; }
.kpi b { display: block; font-size: 2.1rem; font-weight: 700; letter-spacing: -.02em; margin: 2px 0; color: var(--yel); }
.kpi span { color: var(--muted); font-size: .72rem; }
.kpi.day { border-color: rgba(255,154,0,.45); } .kpi.swing { border-color: rgba(56,212,255,.4); } .kpi.acct { border-color: rgba(201,162,74,.6); }

/* Core grid */
.core-grid { display: grid; grid-template-columns: 7fr 5fr; gap: 8px; align-items: start; }
@media (max-width: 1000px) { .core-grid, .kpis, .orbit-grid, .sig-grid { grid-template-columns: 1fr; } }
.stack { display: grid; gap: 8px; }

/* decision inbox */
.card { border: 1px solid rgba(255,210,31,.45); padding: 10px 12px; background: var(--navy-2); box-shadow: 0 0 22px rgba(255,210,31,.08); margin-bottom: 8px; }
.card h4 { margin: 0 0 4px; color: var(--yel); font-size: .95rem; }
.card p { color: var(--muted); font-size: .78rem; margin: 0 0 6px; font-family: "Inter", sans-serif; }
.btn { background: transparent; border: 1px solid #555; color: var(--ivory); font: 700 .7rem "JetBrains Mono", monospace; padding: 5px 12px; cursor: pointer; letter-spacing: .08em; }
.btn.go { border-color: var(--green); color: var(--green); } .btn.go:hover { background: rgba(25,214,107,.12); } .btn:hover { border-color: var(--org); } .btn:disabled { opacity: .5; }

/* Orbit */
.orbit-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; align-items: start; }
#orbit3d { width: 100%; height: 380px; display: block; }
.orow { display: grid; grid-template-columns: 16px 130px 130px 1fr; gap: 10px; align-items: center; padding: 4px 0; border-bottom: 1px dotted var(--line); font-size: .8rem; }
.orow input { background: var(--navy-2); border: 1px solid var(--line); color: var(--yel); font: .8rem "JetBrains Mono", monospace; padding: 4px 6px; width: 120px; }
.bars div { display: grid; grid-template-columns: 150px 1fr 48px; gap: 8px; align-items: center; padding: 3px 0; font-size: .78rem; }
.bars .bb { height: 8px; background: var(--navy-3); border: 1px solid var(--line); position: relative; }
.bars .bb i { position: absolute; left: 0; top: 0; height: 100%; background: var(--blue); transition: width 1.2s ease-out; }

/* Signal */
.sig-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; align-items: start; }
.regime { display: flex; align-items: center; gap: 14px; padding: 4px 0; }
.badge-regime { font-size: 1.3rem; font-weight: 800; letter-spacing: .2em; color: #000; background: var(--green); padding: 6px 16px; box-shadow: 0 0 24px rgba(25,214,107,.45); }
.badge-regime.chop { background: var(--amber); box-shadow: 0 0 24px rgba(255,154,0,.4); }
.badge-regime.riskoff { background: var(--red); color: #fff; box-shadow: 0 0 24px rgba(255,59,48,.45); }
#spy-chart svg { width: 100%; height: auto; display: block; }
.rowp { display: grid; grid-template-columns: 60px 64px 90px 1fr; gap: 8px; align-items: center; padding: 4px 0; border-bottom: 1px dotted var(--line); font-size: .78rem; }
textarea { width: 100%; background: var(--navy-2); border: 1px solid var(--line); color: var(--ivory); font: .8rem "JetBrains Mono", monospace; padding: 8px; resize: vertical; min-height: 70px; }
.agents div { display: grid; grid-template-columns: 140px 1fr 90px; gap: 8px; padding: 4px 0; border-bottom: 1px dotted var(--line); font-size: .78rem; align-items: center; }
.agents .o { color: var(--org); font-weight: 700; }
#registry { display: grid; gap: 6px; }

/* ---------- phone: the pit wall ---------- */
@media (max-width: 640px) {
  :root { font-size: 13px; }
  body { padding-bottom: calc(60px + env(safe-area-inset-bottom)); }
  .cmd { flex-wrap: wrap; gap: 6px 10px; padding: 6px 10px; }
  .cmd .field { order: 9; flex: 1 1 100%; font-size: .72rem; padding: 2px 8px; }
  .cmd .clock { font-size: .7rem; }
  .cmd .clock b:nth-of-type(2), .cmd .clock #clk-date { display: none; }
  .fn { position: fixed; left: 0; right: 0; bottom: 0; top: auto; z-index: 40; justify-content: space-around;
    padding: 4px 6px calc(4px + env(safe-area-inset-bottom)); border-top: 1px solid var(--line); border-bottom: 0; box-shadow: 0 -8px 24px rgba(0,0,0,.45); }
  .fnhint { display: none; }
  .tabbtn { flex: 1; justify-content: center; padding: 8px 4px; font-size: .8rem; min-height: 44px; }
  .tabbtn b { display: none; }
  .ticker { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  .ticker::-webkit-scrollbar { display: none; }
  .ticker div { flex: 0 0 auto; }
  main { padding: 6px 6px 16px; gap: 6px; }
  .sub { overflow-x: auto; scrollbar-width: none; }
  .sub button { min-height: 40px; padding: 6px 12px; white-space: nowrap; }
  .sub .hint { display: none; }
  .kpis { grid-template-columns: 1fr 1fr 1fr; gap: 4px; }
  .kpi { padding: 6px 8px 8px; }
  .kpi b { font-size: 1.35rem; }
  .kpi span { font-size: .6rem; display: block; line-height: 1.3; }
  .kpi small { font-size: .52rem; letter-spacing: .12em; }
  .session .body { padding: 22px 8px 6px; overflow-x: auto; scrollbar-width: none; }
  .steps { gap: 14px; min-width: 620px; }
  .st { flex: 0 0 60px; font-size: .6rem; }
  .st b { font-size: .68rem; }
  .core-grid, .orbit-grid, .sig-grid, .kpis.orbit { grid-template-columns: 1fr; }
  .panel h2 { font-size: .66rem; padding: 9px 10px; min-height: 40px; }
  .panel h2 .hint { display: none; }
  .panel[data-fold] h2 { cursor: pointer; }
  .panel[data-fold] h2::after { content: "BE"; margin-left: auto; color: var(--muted); font-size: .9rem; }
  .panel[data-fold].folded h2::after { content: "B8"; }
  .panel[data-fold].folded > *:not(h2) { display: none; }
  .risk-row { grid-template-columns: 1fr 1fr; gap: 6px 10px; }
  .gauge span { font-size: .78rem; }
  .bookdesc { display: none; }
  .tcard { padding: 6px 8px; gap: 6px; }
  .tcard .sym { font-size: .95rem; }
  .tcard .grade { display: none; }
  .rail-labels { font-size: .6rem; }
  .metrics { grid-template-columns: 1fr 1fr 1fr; gap: 4px; }
  .metric { padding: 6px 8px; } .metric b { font-size: .85rem; } .metric label { font-size: .52rem; }
  table { font-size: .7rem; } th, td { padding: 3px 5px; }
  footer { display: none; }
  #orbit3d { height: 300px; }
  .orow { grid-template-columns: 14px 1fr 100px; } .orow .hint { display: none; }
  .bars div { grid-template-columns: 100px 1fr 40px; }
  .rowp { grid-template-columns: 52px 54px 72px 1fr; }
  .agents div { grid-template-columns: 100px 1fr 66px; }
  .banner { margin: 6px; }
  .btn, .tbtn { min-height: 36px; }
}
@media (display-mode: standalone) { .cmd { padding-top: calc(6px + env(safe-area-inset-top)); } }

/* Foundry */
.fd-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.fd-card { border: 1px solid var(--line); background: var(--navy-2); padding: 10px 12px; }
.fd-card.day { border-color: rgba(255,154,0,.45); } .fd-card.swing { border-color: rgba(56,212,255,.4); }
.fd-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-bottom: 6px; font-family: var(--disp); }
.fd-nums { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px 10px; }
.fd-nums small { display: block; color: var(--org); font-size: .58rem; letter-spacing: .18em; text-transform: uppercase; font-weight: 700; }
.fd-nums b { font-size: 1.25rem; color: var(--yel); }
.fd-open { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0; } .fd-open span { border: 1px solid var(--line); padding: 2px 8px; font-size: .72rem; }
.fd-card .btn { margin-top: 6px; }
.road { display: grid; gap: 8px; }
.rstep { display: grid; grid-template-columns: 220px 1fr; gap: 12px; padding: 8px 10px; border: 1px solid var(--line); font-size: .8rem; }
.rstep b { color: var(--muted); font-family: var(--disp); } .rstep.on { border-color: var(--brass); } .rstep.on b { color: var(--brass-hi); }
.idea { border-bottom: 1px dotted var(--line); padding: 4px 0 8px; } .idea-act { display: flex; gap: 10px; align-items: center; margin-top: 4px; flex-wrap: wrap; }
pre.spec { white-space: pre-wrap; font: .76rem "JetBrains Mono", monospace; color: var(--ivory); background: var(--navy-3); border: 1px solid var(--line); padding: 10px; margin: 6px 0 0; max-height: 480px; overflow: auto; }
@media (max-width: 1000px) { .fd-grid { grid-template-columns: 1fr; } }
@media (max-width: 640px) { .fd-grid { grid-template-columns: 1fr; } .rstep { grid-template-columns: 1fr; gap: 4px; } .fd-nums b { font-size: 1.05rem; } }

/* Blackline reports */
.chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; align-items: center; }
.chip { background: transparent; border: 1px solid var(--line); color: var(--ivory); font: 600 .7rem var(--disp); letter-spacing: .06em; padding: 3px 10px; cursor: pointer; }
.chip.on { border-color: var(--brass); color: var(--brass-hi); background: rgba(201,162,74,.1); }
.btn.xs { padding: 2px 8px; font-size: .62rem; min-height: 0; }
.bbar { height: 4px; background: var(--navy-3); margin-top: 3px; width: 140px; max-width: 100%; } .bbar i { display: block; height: 100%; }
.bbar .pos-bar { background: var(--green); } .bbar .neg-bar { background: var(--red); }
tr.excluded td { opacity: .4; text-decoration: line-through; }
tr[data-tk] { cursor: pointer; } tr[data-tk]:hover td { background: rgba(201,162,74,.08); }
.cal-head { display: flex; align-items: center; gap: 12px; margin-bottom: 6px; } .cal-head b { font-family: var(--disp); font-size: .95rem; }
.cal { display: grid; gap: 3px; } .cal-row { display: grid; grid-template-columns: repeat(7, 1fr) 1.15fr; gap: 3px; }
.cal-dow span { font-size: .58rem; letter-spacing: .14em; color: var(--org); text-transform: uppercase; font-weight: 700; text-align: center; }
.cal-cell { min-height: 46px; border: 1px solid var(--line); padding: 3px 4px; position: relative; font-size: .68rem; background: var(--navy-2); }
.cal-cell.off { border-color: transparent; background: transparent; } .cal-cell small { color: var(--muted); font-size: .58rem; }
.cal-cell b { display: block; font-size: .78rem; } .cal-cell i { display: block; font-style: normal; color: var(--muted); font-size: .56rem; }
.cal-cell.up { background: rgba(25,214,107,calc(var(--a) * .35)); border-color: rgba(25,214,107,.5); } .cal-cell.dn { background: rgba(255,59,48,calc(var(--a) * .35)); border-color: rgba(255,59,48,.5); }
.cal-cell.wk { background: transparent; border-style: dashed; } .cal-cell.wk b { font-size: .74rem; }
.metrics.tight { grid-template-columns: repeat(auto-fit, minmax(96px, 1fr)); }
.audit { font-family: "Inter", sans-serif; font-size: .84rem; line-height: 1.5; border: 1px solid var(--brass); padding: 12px 14px; background: var(--navy-2); }
.audit b { color: var(--brass-hi); font-family: var(--disp); }
.drawer { position: fixed; inset: 0; z-index: 60; } .drawer-bg { position: absolute; inset: 0; background: rgba(0,0,0,.55); }
.drawer-panel { position: absolute; top: 0; right: 0; bottom: 0; width: min(920px, 100%); background: var(--navy-1); border-left: 1px solid var(--brass); padding: 14px 16px calc(16px + env(safe-area-inset-bottom)); overflow-y: auto; animation: slidein .25s ease-out; }
@keyframes slidein { from { transform: translateX(40px); opacity: 0; } }
.drawer-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-bottom: 8px; font-size: 1rem; font-family: var(--disp); }
#td-chart svg { width: 100%; height: auto; display: block; margin-bottom: 8px; }
body.drawer-open { overflow: hidden; }
@media (max-width: 640px) { .cal-cell { min-height: 40px; padding: 2px 3px; } .cal-cell b { font-size: .66rem; } .cal-cell i { display: none; } .drawer-panel { width: 100%; padding-top: calc(10px + env(safe-area-inset-top)); } .bbar { width: 80px; } }

/* the tape */
.tape { background: var(--strip-bg); color: var(--strip-ink); border-bottom: 1px solid var(--line); overflow: hidden; white-space: nowrap; font-size: .78rem; }
.tape-track { display: inline-block; padding: 5px 0; }
.tape-track.live { animation: tape 90s linear infinite; }
.tape-track.live:hover { animation-play-state: paused; }
@keyframes tape { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.tk-note { padding: 0 14px; color: var(--strip-mute); letter-spacing: .1em; font-size: .7rem; }
.tk-item { padding: 0 18px; cursor: pointer; border-right: 1px solid var(--line); }
.tk-item b { color: #ffd21f; } .tk-item i { font-style: normal; margin-left: 4px; } .tk-item i.pos { color: #19d66b; } .tk-item i.neg { color: #ff6b62; }
.tk-item u { text-decoration: none; color: #e6c76e; font-size: .62rem; letter-spacing: .1em; margin-left: 4px; }
.tk-item em { font-style: normal; color: var(--strip-ink); margin-left: 6px; }
[data-theme="light"] .tape { background: #0f1b33; color: #f2ecdb; } [data-theme="light"] .tk-item em { color: #f2ecdb; } [data-theme="light"] .tk-note { color: #b8c4dc; }
.tape-track.live { animation-duration: 240s; }
.tp-row { display: grid; grid-template-columns: 64px 62px 110px 1fr; gap: 8px; align-items: center; padding: 5px 0; border-bottom: 1px dotted var(--line); font-size: .78rem; cursor: pointer; }
.tp-row:hover { background: rgba(201,162,74,.06); } .tp-row b { color: var(--yel); } .tp-row .why { color: var(--ivory); font-family: "Inter", sans-serif; }
.tp-row .pos { color: var(--green); } .tp-row .neg { color: var(--red); }
.news div { padding: 5px 0; border-bottom: 1px dotted var(--line); font-size: .78rem; font-family: "Inter", sans-serif; }
.news a { color: var(--ivory); text-decoration: none; } .news a:hover { color: var(--brass-hi); } .news .hint { display: block; font-size: .66rem; }
.why-big { font: 1rem/1.5 "Inter", sans-serif; color: var(--ivory); margin: 0 0 10px; }
.doc { font-family: "Inter", sans-serif; font-size: .86rem; line-height: 1.55; color: var(--ivory); }
.doc p { margin: 0 0 8px; } .doc b { color: var(--brass-hi); font-family: var(--disp); } .doc ul { margin: 0 0 8px 18px; padding: 0; }
.ag-row { display: grid; grid-template-columns: 132px minmax(0, 1fr) auto; gap: 10px; padding: 7px 0; border-bottom: 1px dotted var(--line); font-size: .78rem; align-items: center; }
.ag-row .o { color: var(--org); font-weight: 700; } .ag-row small { color: var(--muted); }
.ag-row .hint, #library .hint, .tp-row .hint { white-space: normal; min-width: 0; overflow-wrap: anywhere; }
.ag-act { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; justify-content: flex-end; max-width: 170px; }
@media (max-width: 640px) {
  .tape { overflow-x: auto; scrollbar-width: none; } .tape::-webkit-scrollbar { display: none; } .tape-track.live { animation: none; }
  .tp-row { grid-template-columns: 56px 54px 1fr; } .tp-row .why { grid-column: 1 / -1; }
  .ag-row { grid-template-columns: 1fr; gap: 4px; } .ag-act { justify-content: flex-start; }
}
.tcard[data-tk] { cursor: pointer; } .tcard[data-tk]:hover { border-color: var(--brass); }
.fd-card.forged { border-color: rgba(25,214,107,.45); } .fd-card.paused { opacity: .6; border-style: dashed; }
.gate-mini { margin: 6px 0; font-size: .72rem; line-height: 1.6; } .gate-mini i { font-style: normal; white-space: nowrap; } .gate-mini .pos { color: var(--green); } .gate-mini .neg { color: var(--muted); } .gate-mini .btn { margin-left: 6px; }

/* the boot screen: the orbit until the first data lands */
.boot { position: fixed; inset: 0; z-index: 200; background: #000; display: grid; place-items: center; align-content: center; gap: 6px; transition: opacity .55s ease; }
[data-theme="light"] .boot { background: #0f1b33; }
.boot.off { opacity: 0; pointer-events: none; }
.boot svg { width: min(46vw, 260px); height: auto; }
.bring { fill: none; stroke: #c9a24a; stroke-opacity: .6; stroke-width: 1.3; transform-origin: 200px 200px; }
.bring.b1 { animation: bspin 9s linear infinite; } .bring.b2 { animation: bspin 14s linear infinite reverse; } .bring.b3 { animation: bspin 20s linear infinite; }
@keyframes bspin { to { transform: rotate(360deg); } } .bpl { fill: #ffd21f; }
.boot-word { font: 700 15px "Space Grotesk", sans-serif; letter-spacing: .5em; color: #c9a24a; margin-top: 14px; padding-left: .5em; }
.boot-sub { font: 500 .7rem "JetBrains Mono", monospace; letter-spacing: .12em; color: #8d8d8d; }
@media (prefers-reduced-motion: reduce) { .bring { animation: none !important; } }
tr.lib-untested td { opacity: .75; }
