/* ============================================
   LLM course deck — Ashish-mechanics prototype
   Palette + typography lifted from ashishacharya.com/talk
   ============================================ */

:root {
  --bg: #212737;
  --ink: #eaedf3;
  --ink-60: rgba(234, 237, 243, 0.6);
  --ink-40: rgba(234, 237, 243, 0.4);
  --ink-25: rgba(234, 237, 243, 0.25);
  --accent: #ff6b01;
  --accent-soft: rgba(255, 107, 1, 0.3);
  --green: #4ade80;
  --red: #f87171;
  --blue: #7aa2f7;
  --panel: rgba(52, 63, 96, 0.4);
  --panel-strong: rgba(52, 63, 96, 0.7);
  --hairline: rgba(234, 237, 243, 0.08);
  --mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;

  --r-background-color: #212737;
  --r-main-font: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
  --r-main-font-size: 36px;
  --r-main-color: #eaedf3;
  --r-heading-font: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
  --r-heading-color: #eaedf3;
  --r-heading-text-transform: none;
  --r-heading-font-weight: 600;
  --r-heading-letter-spacing: -0.02em;
  --r-heading-line-height: 1.3;
  --r-heading1-size: 2.2em;
  --r-heading2-size: 1.5em;
  --r-heading3-size: 1.1em;
  --r-link-color: #ff6b01;
  --r-link-color-hover: #ff8a3d;
  --r-selection-background-color: rgba(255, 107, 1, 0.75);
  --r-selection-color: #212737;
  --r-code-font: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
}

.reveal-viewport { background: #212737; }

/* Signature h2: dashed orange underline, fit-content, centered */
.reveal h2 {
  border-bottom: 2px dashed var(--accent-soft);
  padding-bottom: 0.3em;
  width: fit-content;
  margin-left: auto;
  margin-right: auto;
}

.reveal strong { color: var(--accent); }
.reveal em { color: var(--ink-60); }
.reveal li::marker { color: var(--accent); }

.reveal blockquote {
  border-left: 3px solid rgba(255, 107, 1, 0.6);
  background: rgba(52, 63, 96, 0.3);
  box-shadow: none;
  padding: 0.6em 1em;
}

.reveal .progress span { background: var(--accent); }
.reveal .controls button { color: var(--accent); }
.reveal .slide-number {
  font-family: var(--mono);
  color: rgba(234, 237, 243, 0.35);
  background: transparent;
  font-size: 14px;
}

/* ---------- shared components ---------- */

.badge {
  display: inline-block;
  border: 1px solid var(--ink-25);
  color: var(--ink-60);
  padding: 0.2em 1em;
  border-radius: 100px;
  font-size: 0.5em;
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.author { font-size: 0.65em; color: rgba(234, 237, 243, 0.5); margin-top: 0.5em; }

.section-num { font-size: 0.6em; color: var(--accent); margin-bottom: 0.2em; letter-spacing: 0.12em; }

/* Beat kicker: "ACT I · 030" above each beat's h2 */
.kicker {
  font-size: 0.42em;
  color: var(--accent);
  letter-spacing: 0.22em;
  text-transform: uppercase;
  margin: 0 0 0.4em 0;
  opacity: 0.85;
}

.hook-text {
  font-weight: 300 !important;
  font-size: 1.5em !important;
  color: var(--ink-60) !important;
  border: none !important;
}

.small-note {
  font-size: 0.45em;
  color: rgba(234, 237, 243, 0.35);
  font-style: italic;
  margin-top: 0.9em;
  text-align: center;
}

.mono { font-family: var(--mono); }

/* --- preview / roadmap table --- */
.preview-table { width: 100%; border-collapse: collapse; font-size: 0.72em; margin-top: 0.5em; }
.preview-table td { padding: 0.6em 0.8em; border-bottom: 1px solid var(--hairline); vertical-align: top; text-align: left; }
.preview-table td:first-child { color: var(--accent); width: 4.5em; white-space: nowrap; }
.preview-table td:nth-child(2) { width: 14em; }
.preview-table td:nth-child(3) { color: rgba(234, 237, 243, 0.5); font-size: 0.85em; }

/* --- big quote (takeaway beats) --- */
.big-quote {
  font-size: 1.25em;
  font-weight: 300;
  line-height: 1.5;
  text-align: center;
  border: none !important;
  background: none !important;
  box-shadow: none !important;
  padding: 0 !important;
}
.big-quote em { color: var(--accent); font-style: normal; }

/* --- tech-style tables --- */
.tech-table { width: 100%; border-collapse: collapse; font-size: 0.65em; margin-top: 0.3em; }
.tech-table td { padding: 0.5em 0.6em; border-bottom: 1px solid var(--hairline); text-align: left; }
.tech-label { font-size: 0.85em; color: var(--accent); width: 9em; text-transform: uppercase; letter-spacing: 0.05em; }
.tech-note { color: rgba(234, 237, 243, 0.35); font-size: 0.9em; text-align: right !important; }

/* --- flow rows (pipelines) --- */
.flow-row { display: flex; align-items: stretch; justify-content: center; gap: 0.5em; margin-top: 0.6em; }
.flow-box {
  background: var(--panel);
  border: 1px solid rgba(171, 75, 8, 0.3);
  border-radius: 10px;
  padding: 0.7em 0.8em;
  text-align: center;
  flex: 1;
  min-width: 0;
}
.flow-box h3 { font-size: 0.72em; margin: 0 0 0.25em 0; color: var(--accent); border: none; }
.flow-box p { font-size: 0.5em; margin: 0; color: var(--ink-60); }
.flow-arrow { display: flex; align-items: center; color: var(--accent); opacity: 0.6; font-size: 0.9em; }

/* --- columns --- */
.columns { display: flex; gap: 1.2em; margin-top: 0.5em; align-items: stretch; }
.col { flex: 1; min-width: 0; }

/* ============================================
   The recurring key-idea / actionable device.
   Every beat ends on these; they consolidate
   into the closing fact sheet.
   ============================================ */
.takeaways { margin-top: 0.8em; display: flex; flex-direction: column; gap: 0.35em; }
.tk {
  text-align: left;
  font-size: 0.55em;
  line-height: 1.35;
  padding: 0.45em 0.8em;
  background: rgba(52, 63, 96, 0.35);
  border-left: 3px solid var(--accent);
  border-radius: 0 6px 6px 0;
  color: var(--ink);
}
.tk .tk-label {
  color: var(--accent);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.72em;
  font-weight: 600;
  margin-right: 0.9em;
}
.tk.do { border-left-color: var(--green); }
.tk.do .tk-label { color: var(--green); }

/* ---------- act section slides ---------- */
.act-slide h1 { font-size: 2.1em; }
.act-sub { font-size: 0.7em; color: var(--ink-60); margin-top: 0.4em; }

/* ---------- beat 010: definitional matrix ---------- */
.def-matrix { border-collapse: collapse; margin: 0.6em auto 0; font-size: 0.7em; }
.def-matrix th, .def-matrix td {
  border: 1px solid rgba(234, 237, 243, 0.18);
  padding: 0.35em 0.9em;
  text-align: center;
}
.def-matrix th { color: var(--accent); font-weight: 600; font-size: 0.8em; }
.def-matrix td:first-child, .def-matrix th:first-child { text-align: left; color: var(--ink); }
.def-matrix .b1 { color: var(--green); }
.def-matrix .b0 { color: var(--ink-40); }
.def-matrix .ghost { color: var(--ink-25); border-style: dashed; }

/* word pair hook */
.word-pair { display: flex; gap: 1em; justify-content: center; align-items: center; margin: 0.4em 0 0.2em; }
.word-chip {
  font-size: 1.3em; font-weight: 600; color: var(--ink);
  background: var(--panel); border: 1px solid var(--accent-soft);
  padding: 0.25em 0.7em; border-radius: 10px;
}

/* ---------- beat 020: sentiment cards ---------- */
.sent-card {
  background: var(--panel); border: 1px solid var(--hairline);
  border-radius: 10px; padding: 0.7em 1em; font-size: 0.7em; text-align: left;
  margin: 0.5em auto 0; max-width: 900px;
  display: flex; align-items: center; gap: 1em; justify-content: space-between;
}
.sent-card .kw { color: var(--green); font-weight: 600; }
.sent-score { font-size: 1.1em; white-space: nowrap; }
.ok { color: var(--green); } .bad { color: var(--red); }

/* ---------- beat 030: two camps ---------- */
.camp { background: var(--panel); border: 1px solid var(--hairline); border-radius: 10px; padding: 0.7em 0.9em; text-align: left; }
.camp h3 { border: none; font-size: 0.75em; margin: 0 0 0.2em; color: var(--accent); }
.camp .camp-meta { font-size: 0.45em; color: var(--ink-40); margin: 0 0 0.4em; text-transform: uppercase; letter-spacing: 0.1em; }
.camp p { font-size: 0.55em; margin: 0.2em 0; color: var(--ink-60); }
.window-sent { font-size: 0.8em; margin-top: 0.4em; letter-spacing: 0.04em; }
.window-sent .win { background: rgba(255, 107, 1, 0.16); border: 1px solid var(--accent-soft); border-radius: 6px; padding: 0.1em 0.25em; }
.window-sent .tgt { color: var(--accent); font-weight: 600; }

/* ---------- beat 050: bank ---------- */
.bank-sent { font-size: 0.72em; line-height: 1.7; max-width: 1000px; margin: 0.4em auto 0; }
.bank { font-weight: 600; padding: 0.05em 0.25em; border-radius: 5px; }
.bank.money { color: #4ade80; background: rgba(74, 222, 128, 0.12); }
.bank.river { color: #7aa2f7; background: rgba(122, 162, 247, 0.12); }
.bank.tilt  { color: #f7768e; background: rgba(247, 118, 142, 0.12); }
.bank.rely  { color: #e0af68; background: rgba(224, 175, 104, 0.12); }

/* ---------- chips (tokens, messages) ---------- */
.chip {
  display: inline-block; font-family: var(--mono);
  background: var(--panel); border: 1px solid var(--hairline);
  border-radius: 8px; padding: 0.15em 0.5em; margin: 0.1em;
}
.chip.user { border-color: var(--accent-soft); color: var(--accent); }
.chip.asst { color: var(--ink-60); }

/* ---------- beat 130: message stacking ---------- */
.stack-diagram { display: flex; flex-direction: column; gap: 0.45em; margin-top: 0.6em; }
.stack-row { display: flex; align-items: center; gap: 0.7em; font-size: 0.62em; }
.stack-turn { color: var(--ink-40); width: 5.2em; text-align: right; flex: none; font-size: 0.8em; text-transform: uppercase; letter-spacing: 0.08em; }
.stack-msgs { display: flex; gap: 0.3em; flex: 1; }
.stack-msg {
  border-radius: 8px; padding: 0.3em 0.9em; font-weight: 600;
  border: 1px solid var(--hairline); background: var(--panel); color: var(--ink-60);
}
.stack-msg.u { border-color: var(--accent-soft); color: var(--accent); background: rgba(255, 107, 1, 0.08); }
.stack-arrow { color: var(--accent); opacity: 0.7; flex: none; }
.stack-model {
  flex: none; width: 9.5em; text-align: center;
  border: 1px dashed var(--accent-soft); border-radius: 10px;
  padding: 0.4em 0.5em; color: var(--ink-60); font-size: 0.82em; line-height: 1.3;
}
.stack-model b { color: var(--accent); font-weight: 600; }
.stack-out { flex: none; width: 3.2em; color: var(--green); font-weight: 600; }

.token-bar { display: flex; align-items: center; gap: 0.6em; margin-top: 0.9em; font-size: 0.5em; }
.token-bar .old { height: 1.6em; background: rgba(255, 107, 1, 0.35); border: 1px solid var(--accent-soft); border-radius: 4px; flex: 100; }
.token-bar .new { height: 1.6em; background: rgba(74, 222, 128, 0.5); border: 1px solid var(--green); border-radius: 4px; flex: 1; min-width: 5px; }
.token-bar span { white-space: nowrap; color: var(--ink-60); }

/* ---------- charts ---------- */
.chart-title { font-size: 0.5em; color: var(--ink-60); text-transform: uppercase; letter-spacing: 0.12em; margin-bottom: 0.2em; }
svg text { font-family: var(--mono); }

/* ---------- beat 190: split card ---------- */
.split-cards { display: flex; gap: 1em; margin-top: 0.6em; }
.split-card { flex: 1; background: var(--panel); border: 1px solid var(--hairline); border-radius: 10px; padding: 0.8em 1em; text-align: left; }
.split-card h3 { border: none; font-size: 0.7em; margin: 0 0 0.4em; }
.split-card pre { margin: 0.4em 0 0; }
.split-card code {
  display: block; font-size: 0.5em; line-height: 1.5; text-align: left;
  background: rgba(0, 0, 0, 0.25); border-radius: 6px; padding: 0.7em 0.9em; color: var(--ink);
}
.split-card .verdict { font-size: 1.0em; margin-top: 0.4em; font-weight: 600; }

/* ---------- fact sheet ---------- */
.fact-sheet { display: flex; gap: 1.6em; margin-top: 0.5em; }
.fact-col { flex: 1; }
.fact-sheet table { width: 100%; border-collapse: collapse; font-size: 0.42em; }
.fact-sheet td { padding: 0.4em 0.5em; border-bottom: 1px solid var(--hairline); text-align: left; vertical-align: top; }
.fact-sheet td:first-child { color: var(--ink-40); width: 2.6em; }
.fact-sheet .fs-do { color: var(--green); }
.fact-sheet .fs-key { color: var(--ink); }

/* ---------- misc ---------- */
.stat-line { font-size: 0.85em; margin-top: 0.5em; }
.term-chip {
  display: inline-block; font-size: 0.55em; color: var(--accent);
  border: 1px solid var(--accent-soft); background: rgba(255, 107, 1, 0.08);
  border-radius: 8px; padding: 0.25em 0.7em; margin-top: 0.6em;
}
.muted { color: var(--ink-40); }
.gpt-row { display: flex; align-items: flex-end; justify-content: center; gap: 0.4em; margin-top: 0.8em; }
.gpt-box {
  background: var(--panel); border: 1px solid var(--accent-soft); border-radius: 10px;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.1em;
}
.gpt-box .gname { font-weight: 600; color: var(--ink); }
.gpt-box .gverdict { font-size: 0.45em; color: var(--ink-60); }
.gpt-more { font-size: 0.45em; color: var(--accent); align-self: center; padding-bottom: 1.2em; white-space: nowrap; }

/* layer stack (080) */
.layer-stack { display: flex; flex-direction: column; align-items: center; gap: 0.3em; margin-top: 0.6em; }
.layer {
  width: 620px; max-width: 90%;
  background: var(--panel); border: 1px solid var(--hairline); border-radius: 10px;
  padding: 0.5em 0.9em; font-size: 0.62em;
}
.layer b { color: var(--accent); }
.layer .sub { font-size: 0.75em; color: var(--ink-40); display: block; margin-top: 0.15em; }
.layer-plus { color: var(--accent); font-size: 0.8em; }
.layer.result { border-color: rgba(74, 222, 128, 0.4); }
.layer.result b { color: var(--green); }

/* thinking stream (220) */
.think-stream {
  font-size: 0.52em; text-align: left; line-height: 1.6;
  background: rgba(0, 0, 0, 0.22); border: 1px solid var(--hairline);
  border-radius: 10px; padding: 0.8em 1.1em; margin: 0.5em auto 0; max-width: 980px;
  color: var(--ink-40); font-style: italic;
}
.think-stream .ans { color: var(--green); font-style: normal; font-weight: 600; }
