/* =========================================================
   Catalyst Cohort · Shared Stylesheet
   All pages in this project use this single file.
   Edit here → changes propagate everywhere.
   ========================================================= */

:root {
  --paper: #F4EFE6;
  --paper-light: #FBF8F2;
  --paper-dark: #E8E1D2;
  --ink: #1C1B1F;
  --ink-soft: #3A3833;
  --ink-mute: #6B655B;
  --rust: #B04A2A;
  --rust-deep: #8C3A20;
  --forest: #2F4A3D;
  --gold: #C99A3F;
  --gold-soft: #EDD79A;
  --border: #D9D2C2;
  --border-soft: #E8E1D2;
  --shadow: 0 1px 0 rgba(28,27,31,0.04), 0 8px 24px -12px rgba(28,27,31,0.12);
  --shadow-deep: 0 2px 0 rgba(28,27,31,0.04), 0 24px 48px -16px rgba(28,27,31,0.18);
}

* { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; scroll-padding-top: 32px; }

body {
  background: var(--paper);
  background-image:
    radial-gradient(ellipse at top, rgba(176, 74, 42, 0.04), transparent 60%),
    url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.11 0 0 0 0 0.11 0 0 0 0 0.12 0 0 0 0.035 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  color: var(--ink);
  font-family: 'Public Sans', -apple-system, sans-serif;
  font-size: 16px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  min-height: 100vh;
}

/* TYPOGRAPHY */
.serif {
  font-family: 'Fraunces', Georgia, serif;
  font-variation-settings: "opsz" 144, "SOFT" 50;
  letter-spacing: -0.01em;
}
.mono { font-family: 'JetBrains Mono', monospace; font-size: 0.92em; }

h1, h2, h3, h4 {
  font-family: 'Fraunces', Georgia, serif;
  font-variation-settings: "opsz" 144;
  color: var(--ink);
  line-height: 1.15;
  letter-spacing: -0.02em;
}

h2 {
  font-size: clamp(1.85rem, 3vw, 2.6rem);
  font-weight: 500;
  margin: 5rem 0 1.5rem;
  position: relative;
  padding-left: 0;
}
h2::before {
  content: attr(data-num);
  position: absolute;
  left: -3.5rem;
  top: 0.4rem;
  font-size: 0.85rem;
  color: var(--rust);
  font-family: 'JetBrains Mono', monospace;
  font-weight: 500;
  letter-spacing: 0.05em;
}
@media (max-width: 900px) { h2::before { display: none; } }

h3 {
  font-size: 1.35rem;
  font-weight: 500;
  margin: 2rem 0 0.8rem;
}
h4 {
  font-size: 1rem;
  font-weight: 600;
  margin: 1.5rem 0 0.5rem;
  font-family: 'Public Sans', sans-serif;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--rust);
  font-size: 0.78rem;
}

p { margin-bottom: 1rem; color: var(--ink-soft); }
p.lede { font-size: 1.2rem; color: var(--ink); line-height: 1.55; }
em { color: var(--rust); font-style: italic; }
strong { color: var(--ink); font-weight: 600; }
a { color: var(--rust); }

/* LAYOUT */
.shell {
  display: grid;
  grid-template-columns: 1fr;
  max-width: 100%;
}
@media (min-width: 1100px) {
  .shell { grid-template-columns: 240px 1fr; }
}

/* SIDEBAR */
aside {
  background: var(--paper-light);
  border-right: 1px solid var(--border);
  padding: 2rem 1.5rem;
  position: sticky;
  top: 0;
  height: 100vh;
  overflow-y: auto;
  display: none;
}
@media (min-width: 1100px) { aside { display: block; } }

aside .crumb {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin-bottom: 0.4rem;
}
aside h4 {
  font-family: 'Fraunces', Georgia, serif;
  font-size: 1.15rem;
  color: var(--ink);
  margin: 0 0 2rem;
  line-height: 1.2;
  text-transform: none;
  letter-spacing: -0.01em;
  font-weight: 600;
}

nav ol {
  list-style: none;
  counter-reset: section;
}
nav ol li {
  counter-increment: section;
  margin: 0.15rem 0;
}
nav ol li a {
  display: block;
  padding: 0.4rem 0 0.4rem 1.8rem;
  color: var(--ink-mute);
  text-decoration: none;
  font-size: 0.88rem;
  border-left: 1px solid var(--border-soft);
  position: relative;
  transition: all 0.2s;
}
nav ol li a::before {
  content: counter(section, decimal-leading-zero);
  position: absolute;
  left: 0.5rem;
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.65rem;
  color: var(--border);
}
nav ol li a:hover {
  color: var(--rust);
  border-left-color: var(--rust);
}
nav ol li a.active {
  color: var(--rust);
  border-left-color: var(--rust);
  font-weight: 500;
}
nav ol li a.active::before { color: var(--rust); }

/* MAIN */
main {
  padding: 3rem clamp(1.5rem, 5vw, 6rem) 6rem;
  max-width: 880px;
}

/* GLOBAL HEADER (used on index, speakers) */
.global-header {
  padding: 3rem clamp(1.5rem, 5vw, 6rem) 0;
  max-width: 1080px;
  margin: 0 auto;
}
.global-header .meta {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.72rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin-bottom: 1rem;
}
.global-header h1 {
  font-size: clamp(2.4rem, 5vw, 3.6rem);
  font-weight: 400;
  font-variation-settings: "opsz" 144, "SOFT" 80;
  line-height: 1.02;
  margin-bottom: 1rem;
}
.global-header h1 em { font-style: italic; color: var(--rust); }
.global-header .lede {
  max-width: 60ch;
  margin-bottom: 2rem;
}
.global-header .nav-pills {
  display: flex;
  gap: 1.5rem;
  flex-wrap: wrap;
  border-top: 1px dashed var(--border);
  padding-top: 1rem;
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.78rem;
  letter-spacing: 0.05em;
}
.global-header .nav-pills a {
  color: var(--ink-mute);
  text-decoration: none;
  text-transform: uppercase;
  transition: color 0.15s;
}
.global-header .nav-pills a:hover { color: var(--rust); }
.global-header .nav-pills a.active { color: var(--rust); border-bottom: 1px solid var(--rust); padding-bottom: 4px; }

/* HERO (session pages) */
.hero {
  border-bottom: 1px solid var(--border);
  padding-bottom: 3rem;
  margin-bottom: 1rem;
}
.hero .meta {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.72rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin-bottom: 1.5rem;
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
  align-items: center;
}
.hero .meta .dot { color: var(--rust); }
.hero h1 {
  font-size: clamp(2.4rem, 5.5vw, 4.2rem);
  font-weight: 400;
  font-variation-settings: "opsz" 144, "SOFT" 80;
  line-height: 1.02;
  margin-bottom: 1.5rem;
}
.hero h1 em {
  font-style: italic;
  color: var(--rust);
  font-variation-settings: "opsz" 144, "SOFT" 100;
}
.hero .subtitle {
  font-size: 1.2rem;
  color: var(--ink-soft);
  max-width: 60ch;
  line-height: 1.5;
}
.hero .tags {
  margin-top: 2rem;
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
}
.hero .tag {
  font-size: 0.72rem;
  font-family: 'JetBrains Mono', monospace;
  padding: 0.3rem 0.7rem;
  background: var(--paper-light);
  border: 1px solid var(--border);
  color: var(--ink-mute);
  border-radius: 100px;
  letter-spacing: 0.05em;
}

/* SPEAKER BLOCK */
.speaker-block {
  margin-top: 1.8rem;
  padding-top: 1.3rem;
  border-top: 1px dashed var(--border);
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.78rem;
  color: var(--ink-mute);
  letter-spacing: 0.05em;
  text-transform: uppercase;
}
.speaker-block .speaker-name {
  font-family: 'Fraunces', Georgia, serif;
  font-style: italic;
  font-size: 1.05rem;
  color: var(--rust);
  text-decoration: none;
  letter-spacing: 0;
  text-transform: none;
  border-bottom: 1px dashed var(--rust);
  padding-bottom: 1px;
  margin: 0 0.2rem;
}
.speaker-block .speaker-name:hover { color: var(--rust-deep); }

/* RECORDING LINK (hero) */
.recording-link {
  margin-top: 0.8rem;
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.74rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
.recording-link .icon {
  color: var(--rust);
  margin-right: 0.4rem;
  font-size: 0.85rem;
}
.recording-link a {
  color: var(--rust);
  text-decoration: none;
  border-bottom: 1px solid var(--rust);
  padding-bottom: 1px;
}
.recording-link a:hover { color: var(--rust-deep); }
.recording-link a[data-todo] {
  border-bottom-style: dashed;
  opacity: 0.65;
}
.recording-link a[data-todo]:hover { opacity: 1; cursor: help; }

/* SESSION MATERIALS (top of page, after hero) */
.materials {
  margin: 2.8rem auto 2.2rem;
  max-width: 720px;
  padding: 1.4rem 0 1.2rem;
  border-top: 1px dashed var(--border);
  border-bottom: 1px dashed var(--border);
}
.materials-label {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.7rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin-bottom: 1rem;
}
.materials-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.materials-list li {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  padding: 0.55rem 0;
  border-bottom: 1px solid rgba(28,27,31,0.05);
}
.materials-list li:last-child { border-bottom: none; }
.materials-list .mtype-icon {
  flex-shrink: 0;
  font-size: 1.1rem;
  width: 1.6rem;
  text-align: center;
  filter: saturate(0.85);
}
.materials-list .mtitle {
  font-family: 'Public Sans', sans-serif;
  font-size: 0.98rem;
  color: var(--ink);
  text-decoration: none;
  flex-grow: 1;
  border-bottom: 1px solid transparent;
  padding-bottom: 1px;
  transition: color 0.15s ease, border-color 0.15s ease;
}
.materials-list .mtitle:hover {
  border-bottom-color: var(--rust);
  color: var(--rust);
}
.materials-list .mtype-label {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.68rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-mute);
  flex-shrink: 0;
}
.materials-list .marrow {
  color: var(--rust);
  font-size: 0.9rem;
  flex-shrink: 0;
  opacity: 0.7;
}
.materials-list .mtitle:hover ~ .marrow,
.materials-list a:hover + .marrow { opacity: 1; }

/* Path A vs Path B subtle differentiation (optional, for power users) */
.materials-list li[data-path="b"] .mtype-label::after {
  content: ' · incorporated';
  opacity: 0.6;
}

/* SESSION AT A GLANCE (anchored TOC, for longer sessions) */
.glance {
  margin: 2.2rem auto 2.8rem;
  max-width: 720px;
  padding: 1.4rem 1.8rem;
  background: rgba(176, 74, 42, 0.035);
  border-left: 3px solid var(--rust);
  border-radius: 2px;
}
.glance-label {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.7rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin-bottom: 0.85rem;
}
.glance-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.glance-list li {
  padding: 0.28rem 0;
}
.glance-list a {
  font-family: 'Fraunces', Georgia, serif;
  font-size: 1.06rem;
  color: var(--ink);
  text-decoration: none;
  border-bottom: 1px dashed transparent;
  padding-bottom: 1px;
  transition: color 0.15s ease, border-color 0.15s ease;
}
.glance-list a::before {
  content: '→ ';
  color: var(--rust);
  font-family: 'Public Sans', sans-serif;
  margin-right: 0.35rem;
  font-weight: 500;
}
.glance-list a:hover {
  border-bottom-color: var(--rust);
  color: var(--rust);
}

/* TL;DR */
.tldr {
  background: var(--paper-light);
  border: 1px solid var(--border);
  border-radius: 2px;
  padding: 2rem 2.5rem;
  margin: 3rem 0;
  position: relative;
  box-shadow: var(--shadow);
}
.tldr::before {
  content: "TL;DR";
  position: absolute;
  top: -10px;
  left: 24px;
  background: var(--paper);
  padding: 0 12px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.72rem;
  letter-spacing: 0.1em;
  color: var(--rust);
  font-weight: 600;
}
.tldr ol {
  list-style: none;
  counter-reset: tldr;
}
.tldr ol li {
  counter-increment: tldr;
  padding: 0.7rem 0 0.7rem 2.2rem;
  position: relative;
  border-bottom: 1px dashed var(--border-soft);
  color: var(--ink);
}
.tldr ol li:last-child { border-bottom: none; }
.tldr ol li::before {
  content: counter(tldr, decimal-leading-zero);
  position: absolute;
  left: 0;
  top: 0.85rem;
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.75rem;
  color: var(--rust);
  font-weight: 600;
}

/* BIG IDEA CARDS */
.ideas {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 1rem;
  margin: 2rem 0;
}
.idea {
  background: var(--paper-light);
  border: 1px solid var(--border);
  border-radius: 2px;
  padding: 1.5rem;
  position: relative;
  transition: transform 0.2s, box-shadow 0.2s;
}
.idea:hover { transform: translateY(-2px); box-shadow: var(--shadow-deep); }
.idea .num {
  font-family: 'Fraunces', serif;
  font-size: 2.4rem;
  font-weight: 300;
  color: var(--rust);
  line-height: 1;
  font-variation-settings: "opsz" 144, "SOFT" 100;
  font-style: italic;
}
.idea h4 {
  margin: 0.4rem 0 0.5rem;
  color: var(--ink);
  font-family: 'Fraunces', serif;
  font-size: 1.1rem;
  font-weight: 500;
  text-transform: none;
  letter-spacing: -0.01em;
}
.idea p {
  font-size: 0.92rem;
  color: var(--ink-mute);
  margin: 0;
  line-height: 1.55;
}

/* VALUE EQUATION */
.equation {
  background: var(--paper-light);
  border: 1px solid var(--border);
  padding: 3rem 2rem;
  text-align: center;
  margin: 2rem 0;
  border-radius: 2px;
  box-shadow: var(--shadow);
}
.equation .label {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.7rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin-bottom: 2rem;
}
.equation .frac {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  font-family: 'Fraunces', serif;
  font-size: clamp(1rem, 2.2vw, 1.3rem);
  font-style: italic;
  color: var(--ink);
}
.equation .top, .equation .bot {
  padding: 0.5rem 1.5rem;
  white-space: nowrap;
}
.equation .top {
  border-bottom: 2px solid var(--ink);
  color: var(--forest);
}
.equation .bot {
  color: var(--rust);
  padding-top: 1rem;
}
.equation .times { color: var(--ink-mute); padding: 0 0.5rem; font-style: normal; }
.equation .caption {
  margin-top: 2rem;
  font-size: 0.9rem;
  color: var(--ink-mute);
  max-width: 50ch;
  margin-left: auto;
  margin-right: auto;
  line-height: 1.5;
}

/* SCRIPTS / TEMPLATES */
.script {
  background: var(--paper-light);
  border: 1px solid var(--border);
  border-left: 3px solid var(--rust);
  border-radius: 2px;
  padding: 1.5rem 1.75rem;
  margin: 1.5rem 0;
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.88rem;
  line-height: 1.7;
  position: relative;
  color: var(--ink);
  white-space: pre-wrap;
}
.script .label {
  position: absolute;
  top: -10px;
  left: 16px;
  background: var(--paper);
  padding: 0 10px;
  font-size: 0.65rem;
  letter-spacing: 0.1em;
  color: var(--rust);
  font-weight: 600;
  text-transform: uppercase;
}
.script .copy {
  position: absolute;
  top: 12px;
  right: 12px;
  background: var(--paper);
  border: 1px solid var(--border);
  padding: 4px 10px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.65rem;
  color: var(--ink-mute);
  cursor: pointer;
  border-radius: 2px;
  letter-spacing: 0.05em;
  transition: all 0.15s;
}
.script .copy:hover { background: var(--rust); color: var(--paper); border-color: var(--rust); }
.script .copy.copied { background: var(--forest); color: var(--paper); border-color: var(--forest); }
.script-body { padding-top: 1.5rem; padding-right: 4rem; }

/* THREE-WAY COMPARISON */
.three-way {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1rem;
  margin: 2rem 0;
}
.three-way > div {
  background: var(--paper-light);
  border: 1px solid var(--border);
  padding: 1.5rem;
  border-radius: 2px;
}
.three-way .roman {
  font-family: 'Fraunces', serif;
  font-size: 0.95rem;
  color: var(--rust);
  font-style: italic;
  margin-bottom: 0.4rem;
  font-weight: 500;
}
.three-way h4 {
  font-family: 'Fraunces', serif;
  font-size: 1.25rem;
  text-transform: none;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0 0 0.8rem;
  font-weight: 500;
}
.three-way p { font-size: 0.92rem; margin: 0; }

/* CONSTRAINT / DIAGRAM TREE */
.tree {
  background: var(--paper-light);
  border: 1px solid var(--border);
  padding: 2rem;
  margin: 2rem 0;
  border-radius: 2px;
}
.tree-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
}
@media (min-width: 720px) { .tree-grid { grid-template-columns: 1fr 1fr; gap: 3rem; } }
.tree-branch h4 {
  font-family: 'Fraunces', serif;
  color: var(--ink);
  font-size: 1.2rem;
  font-weight: 500;
  text-transform: none;
  letter-spacing: -0.01em;
  margin: 0 0 0.4rem;
  padding-bottom: 0.4rem;
  border-bottom: 1px solid var(--border);
}
.tree-branch .signal {
  font-size: 0.85rem;
  color: var(--ink-mute);
  margin-bottom: 1rem;
  font-style: italic;
}
.tree-branch ul { list-style: none; }
.tree-branch ul li {
  padding: 0.6rem 0 0.6rem 1.5rem;
  position: relative;
  font-size: 0.92rem;
  border-bottom: 1px dashed var(--border-soft);
}
.tree-branch ul li:last-child { border-bottom: none; }
.tree-branch ul li::before {
  content: "→";
  position: absolute;
  left: 0;
  color: var(--rust);
  font-weight: 600;
}
.tree-branch ul li strong {
  display: block;
  font-family: 'Fraunces', serif;
  font-style: italic;
  color: var(--ink);
  font-weight: 500;
}
.tree-branch ul li span {
  color: var(--ink-mute);
  font-size: 0.85rem;
}

/* PRICING CYCLE */
.cycle {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
  margin: 2rem 0;
}
@media (min-width: 720px) { .cycle { grid-template-columns: 1fr 1fr; } }
.cycle-side {
  padding: 2rem;
  border-radius: 2px;
  border: 1px solid var(--border);
}
.cycle-side.low { background: var(--paper-light); }
.cycle-side.high { background: #FFFAEC; border-color: var(--gold); }
.cycle-side h4 {
  font-family: 'Fraunces', serif;
  font-size: 1.15rem;
  text-transform: none;
  letter-spacing: -0.01em;
  margin: 0 0 1rem;
  font-weight: 500;
}
.cycle-side.low h4 { color: var(--rust); }
.cycle-side.high h4 { color: var(--forest); }
.cycle-side ul { list-style: none; }
.cycle-side ul li {
  padding: 0.5rem 0 0.5rem 1.5rem;
  position: relative;
  font-size: 0.92rem;
  color: var(--ink-soft);
}
.cycle-side.low ul li::before {
  content: "↓"; position: absolute; left: 0;
  color: var(--rust); font-weight: 600;
}
.cycle-side.high ul li::before {
  content: "↑"; position: absolute; left: 0;
  color: var(--forest); font-weight: 600;
}

/* PULL QUOTE */
blockquote {
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-size: 1.35rem;
  line-height: 1.45;
  color: var(--ink);
  padding: 2rem 2rem 2rem 3rem;
  margin: 2.5rem 0;
  border-left: 3px solid var(--rust);
  position: relative;
  font-variation-settings: "opsz" 144, "SOFT" 100;
}
blockquote::before {
  content: "\201C";
  position: absolute;
  left: 0.5rem;
  top: -0.5rem;
  font-size: 4rem;
  color: var(--rust);
  line-height: 1;
}
blockquote cite {
  display: block;
  font-style: normal;
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.7rem;
  color: var(--ink-mute);
  margin-top: 1rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

/* ACTION CHECKLIST */
.checklist {
  background: var(--paper-light);
  border: 1px solid var(--border);
  padding: 2rem;
  margin: 2rem 0;
  border-radius: 2px;
}
.checklist ul { list-style: none; }
.checklist label {
  display: flex;
  gap: 0.8rem;
  padding: 0.6rem 0;
  border-bottom: 1px dashed var(--border-soft);
  cursor: pointer;
  align-items: flex-start;
}
.checklist li:last-child label { border-bottom: none; }
.checklist input[type="checkbox"] {
  margin-top: 6px;
  appearance: none;
  width: 18px;
  height: 18px;
  border: 1.5px solid var(--ink-mute);
  border-radius: 3px;
  cursor: pointer;
  flex-shrink: 0;
  background: var(--paper);
  transition: all 0.15s;
}
.checklist input[type="checkbox"]:checked {
  background: var(--forest);
  border-color: var(--forest);
}
.checklist input[type="checkbox"]:checked::after {
  content: "\2713";
  color: var(--paper);
  display: block;
  text-align: center;
  line-height: 15px;
  font-size: 12px;
  font-weight: 700;
}
.checklist label:has(input:checked) span {
  text-decoration: line-through;
  color: var(--ink-mute);
}

/* DEEP DIVE */
details {
  background: var(--paper-light);
  border: 1px solid var(--border);
  margin: 0.6rem 0;
  border-radius: 2px;
  overflow: hidden;
}
details summary {
  padding: 1rem 1.5rem;
  cursor: pointer;
  font-family: 'Fraunces', serif;
  font-size: 1.05rem;
  color: var(--ink);
  list-style: none;
  position: relative;
  padding-right: 3rem;
  font-weight: 500;
  transition: background 0.15s;
}
details summary::-webkit-details-marker { display: none; }
details summary::after {
  content: "+";
  position: absolute;
  right: 1.5rem;
  top: 50%;
  transform: translateY(-50%);
  font-size: 1.4rem;
  color: var(--rust);
  transition: transform 0.2s;
  font-weight: 300;
}
details[open] summary { background: var(--paper-dark); }
details[open] summary::after { content: "\2212"; }
details .body {
  padding: 0 1.5rem 1.5rem;
  border-top: 1px dashed var(--border);
  padding-top: 1rem;
}
details .body p { margin-bottom: 0.8rem; }
details .body ul { padding-left: 1.2rem; margin-bottom: 0.8rem; color: var(--ink-soft); }
details .body ul li { margin-bottom: 0.3rem; }

/* CALLOUT */
.callout {
  background: #FFFAEC;
  border: 1px solid var(--gold);
  padding: 1.2rem 1.5rem;
  margin: 1.5rem 0;
  border-radius: 2px;
  font-size: 0.95rem;
}
.callout strong {
  display: block;
  color: var(--rust-deep);
  margin-bottom: 0.3rem;
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

/* MAPPING TABLE */
.mapping {
  margin: 2rem 0;
  border: 1px solid var(--border);
  border-radius: 2px;
  overflow: hidden;
  background: var(--paper-light);
}
.mapping-row {
  display: grid;
  grid-template-columns: 180px 1fr;
  border-bottom: 1px solid var(--border);
}
.mapping-row:last-child { border-bottom: none; }
.mapping-row .key {
  padding: 1rem 1.2rem;
  background: var(--paper-dark);
  font-family: 'Fraunces', serif;
  font-style: italic;
  color: var(--ink);
  font-size: 0.95rem;
  font-weight: 500;
  border-right: 1px solid var(--border);
}
.mapping-row .val {
  padding: 1rem 1.2rem;
  font-size: 0.9rem;
  color: var(--ink-soft);
}
@media (max-width: 600px) {
  .mapping-row { grid-template-columns: 1fr; }
  .mapping-row .key { border-right: none; border-bottom: 1px solid var(--border); }
}

/* RELATED SESSIONS */
.related {
  background: var(--paper-light);
  border: 1px solid var(--border);
  padding: 1.5rem 1.75rem;
  margin: 2rem 0;
  border-radius: 2px;
}
.related .label {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--rust);
  margin-bottom: 0.8rem;
  font-weight: 600;
}
.related ul { list-style: none; }
.related li {
  padding: 0.7rem 0;
  border-bottom: 1px dashed var(--border-soft);
}
.related li:last-child { border-bottom: none; }
.related a {
  color: var(--ink);
  text-decoration: none;
  display: flex;
  align-items: baseline;
  gap: 0.8rem;
  font-size: 0.95rem;
  transition: color 0.15s;
}
.related a:hover { color: var(--rust); }
.related .session-num {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.7rem;
  color: var(--ink-mute);
  letter-spacing: 0.05em;
  flex-shrink: 0;
}
.related .session-arrow {
  margin-left: auto;
  color: var(--rust);
  font-family: 'Fraunces', serif;
}
.related .desc {
  font-style: italic;
  color: var(--ink-mute);
  font-size: 0.88rem;
}

/* RESOURCES */
.resources {
  background: var(--paper-light);
  border: 1px solid var(--border);
  padding: 1.5rem 1.75rem;
  margin: 2rem 0;
  border-radius: 2px;
}
.resources .label {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--rust);
  margin-bottom: 0.8rem;
  font-weight: 600;
}
.resources ul { list-style: none; }
.resources li {
  padding: 0.7rem 0;
  border-bottom: 1px dashed var(--border-soft);
  font-size: 0.92rem;
  display: flex;
  align-items: baseline;
  gap: 0.8rem;
  flex-wrap: wrap;
}
.resources li:last-child { border-bottom: none; }
.resources .type {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.66rem;
  color: var(--rust);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  background: var(--paper-dark);
  padding: 2px 8px;
  border-radius: 100px;
  flex-shrink: 0;
}
.resources a {
  color: var(--ink);
  text-decoration: underline;
  text-decoration-color: var(--border);
  text-underline-offset: 3px;
}
.resources a:hover { text-decoration-color: var(--rust); color: var(--rust); }
.resources .note {
  color: var(--ink-mute);
  font-style: italic;
  font-size: 0.85rem;
}

/* FORMULA */
.formula {
  display: inline-block;
  font-family: 'Fraunces', serif;
  font-style: italic;
  background: var(--gold-soft);
  padding: 2px 8px;
  border-radius: 2px;
  color: var(--ink);
  font-size: 1.02em;
}

/* SESSION GRID (used on index.html) */
.session-grid {
  max-width: 1080px;
  margin: 2rem auto 0;
  padding: 0 clamp(1.5rem, 5vw, 6rem) 6rem;
}

/* BLOCK CONTAINER — groups multiple weeks under a thematic header */
.block-section { margin-bottom: 4rem; }
.block-header {
  display: flex;
  align-items: baseline;
  gap: 1rem;
  margin-bottom: 1.5rem;
  padding-bottom: 0.6rem;
  border-bottom: 2px solid var(--rust);
  flex-wrap: wrap;
}
.block-header .block-num {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.78rem;
  letter-spacing: 0.15em;
  color: var(--rust);
  text-transform: uppercase;
  font-weight: 600;
}
.block-header h2 {
  font-family: 'Fraunces', serif;
  font-size: clamp(1.4rem, 2.5vw, 1.85rem);
  font-weight: 500;
  margin: 0;
  padding: 0;
  color: var(--ink);
  font-style: italic;
  font-variation-settings: "opsz" 144, "SOFT" 80;
  letter-spacing: -0.01em;
}
.block-header h2::before { content: none; }
.block-header .span {
  margin-left: auto;
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.7rem;
  letter-spacing: 0.05em;
  color: var(--ink-mute);
}

.week-block { margin-bottom: 2rem; }
.week-block h3 {
  font-family: 'Fraunces', serif;
  font-size: 0.78rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--rust);
  font-weight: 600;
  font-style: normal;
  margin-bottom: 0.6rem;
  display: flex;
  align-items: baseline;
  gap: 0.8rem;
}
.week-block h3 .week-dates {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.72rem;
  color: var(--ink-mute);
  letter-spacing: 0.05em;
  text-transform: none;
  font-weight: 400;
}

/* OFFICE HOURS row variant — visually de-emphasized */
.session-row.office-hours {
  margin-left: 2rem;
  padding: 0.85rem 1.4rem 0.85rem 1.3rem;
  font-size: 0.9rem;
  background: rgba(217, 210, 194, 0.25);
}
.session-row.office-hours .num { font-size: 0.7rem; color: var(--forest); }
.session-row.office-hours .session-title h3 {
  font-size: 1.15rem;
  font-weight: 400;
  font-style: italic;
  color: var(--ink-soft);
}
.session-row.office-hours:hover .session-title h3 { color: var(--forest); }
.session-row.office-hours .subtitle { font-size: 0.82rem; }

/* BASECAMP collapsed section at top of index */
.basecamp-block {
  max-width: 1080px;
  margin: 2rem auto 3rem;
  padding: 0 clamp(1.5rem, 5vw, 6rem);
}
.basecamp-block details {
  background: var(--paper-light);
  border: 1px dashed var(--border);
}
.basecamp-block summary {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.78rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 500;
  font-style: normal;
}
.basecamp-block .body { padding-top: 0.5rem; }

/* ==========================================================
   SESSION ROW · Card design with status border, subtitle,
   meta row with avatar, materials count, revisit dot.
   ========================================================== */
.session-row {
  display: block;
  text-decoration: none;
  color: var(--ink);
  background: var(--paper-light);
  border-left: 4px solid var(--ink-mute);
  padding: 1.05rem 1.4rem;
  margin-bottom: 0.55rem;
  transition: background 0.18s, transform 0.18s;
  position: relative;
}
.session-row:hover { background: var(--paper-dark); transform: translateX(2px); }
.session-row[data-status="built"] { border-left-color: var(--forest); }
.session-row[data-status="in-progress"] { border-left-color: var(--gold); }
.session-row[data-status="upcoming"] {
  border-left-style: dashed;
  border-left-color: var(--ink-mute);
  opacity: 0.7;
}
.session-row[data-status="placeholder"] {
  border-left-style: dashed;
  border-left-color: var(--border);
  opacity: 0.55;
  pointer-events: none;
}

/* Title row — number + title + status badge + revisit dot */
.session-row .session-title {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 1.2rem;
  align-items: center;
  margin-bottom: 0.35rem;
}
.session-row .session-title .title-left {
  display: flex;
  align-items: baseline;
  gap: 0.7rem;
}
.session-row .num {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.7rem;
  font-weight: 600;
  color: var(--rust);
  letter-spacing: 0.05em;
  flex-shrink: 0;
}
.session-row .session-title h3 {
  font-family: 'Fraunces', Georgia, serif;
  font-size: 1.5rem;
  font-weight: 500;
  line-height: 1.15;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0;
}
.session-row:hover .session-title h3 { color: var(--rust); }
.session-row .session-title h3 em {
  color: var(--rust);
  font-style: italic;
  font-variation-settings: "opsz" 144, "SOFT" 100;
}
.session-row .title-right {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  flex-shrink: 0;
}
.session-row .status-badge {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.65rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 600;
  white-space: nowrap;
}
.session-row[data-status="built"] .status-badge { color: var(--forest); }
.session-row[data-status="in-progress"] .status-badge { color: #8B6A24; }
.session-row[data-status="upcoming"] .status-badge { color: var(--rust); }

/* Subtitle (data-card-subtitle) */
.session-row .subtitle {
  font-family: 'Fraunces', Georgia, serif;
  font-style: italic;
  font-size: 0.92rem;
  color: var(--ink-soft);
  line-height: 1.45;
  margin: 0 0 0.6rem;
  padding-right: 1rem;
}

/* Meta row — date · duration · speaker · materials · tags */
.session-row .meta-row {
  display: grid;
  grid-template-columns: auto auto auto auto 1fr;
  gap: 1.1rem;
  align-items: center;
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.72rem;
  color: var(--ink-mute);
  letter-spacing: 0.04em;
}
.session-row .meta-row > * { white-space: nowrap; }
.session-row .meta-row .date {
  display: flex;
  align-items: center;
  gap: 0.4rem;
}
.session-row .meta-row .date::before {
  content: "▶";
  color: rgba(28,27,31,0.35);
  font-size: 0.7em;
}
.session-row .meta-row .speaker-meta {
  display: flex;
  align-items: center;
  gap: 0.45rem;
}
.session-row .meta-row .avatar {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--rust);
  color: var(--paper-light);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: 'Fraunces', Georgia, serif;
  font-style: italic;
  font-size: 0.66rem;
  font-weight: 500;
  flex-shrink: 0;
}
.session-row .meta-row .avatar.avatar-forest { background: var(--forest); }
.session-row .meta-row .avatar.avatar-gold { background: var(--gold); }
.session-row .meta-row .avatar.avatar-steel { background: #4A6A7A; }
.session-row .meta-row .avatar.avatar-rust-deep { background: var(--rust-deep); }
.session-row .meta-row .avatar.avatar-slate { background: #5F6770; }
.session-row .meta-row .speaker-name {
  text-transform: uppercase;
}
.session-row .meta-row .materials {
  color: var(--forest);
  font-weight: 600;
}
.session-row[data-status="in-progress"] .meta-row .materials { color: #8B6A24; }
.session-row .meta-row .tags {
  display: flex;
  gap: 0.35rem;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.session-row .meta-row .tag {
  font-size: 0.62rem;
  padding: 2px 7px;
  background: var(--paper);
  border: 1px solid var(--border);
  color: var(--ink-soft);
  border-radius: 100px;
  letter-spacing: 0.04em;
}

/* Upcoming/placeholder slimmer layout — only date and speaker */
.session-row[data-status="upcoming"] .session-title h3,
.session-row[data-status="placeholder"] .session-title h3 {
  color: var(--ink-mute);
  font-style: italic;
}
.session-row[data-status="upcoming"] .subtitle,
.session-row[data-status="placeholder"] .subtitle { display: none; }
.session-row[data-status="upcoming"] .meta-row,
.session-row[data-status="placeholder"] .meta-row {
  grid-template-columns: auto auto;
  gap: 1.2rem;
}
.session-row[data-status="upcoming"] .meta-row .materials,
.session-row[data-status="placeholder"] .meta-row .materials,
.session-row[data-status="upcoming"] .meta-row .tags,
.session-row[data-status="placeholder"] .meta-row .tags { display: none; }

/* Office hours adjustment for meta row */
.session-row.office-hours .session-title h3 { font-size: 1.15rem; }
.session-row.office-hours .meta-row { font-size: 0.68rem; gap: 0.95rem; }
.session-row.office-hours .meta-row .avatar { width: 16px; height: 16px; font-size: 0.6rem; }

/* Responsive — meta wraps on narrow viewports */
@media (max-width: 720px) {
  .session-row .meta-row {
    grid-template-columns: 1fr;
    gap: 0.4rem;
  }
  .session-row .meta-row .tags { justify-content: flex-start; }
  .session-row .session-title h3 { font-size: 1.25rem; }
  .session-row .subtitle { font-size: 0.88rem; }
}

/* ==========================================================
   REVISIT DOT · click to toggle, hover for tooltip
   ========================================================== */
.rev-dot {
  position: relative;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--gold);
  box-shadow: 0 0 0 3px rgba(201, 154, 63, 0.18);
  cursor: pointer;
  display: inline-block;
  transition: transform 0.15s, box-shadow 0.15s;
  border: none;
  padding: 0;
}
.rev-dot:hover { transform: scale(1.25); box-shadow: 0 0 0 4px rgba(201, 154, 63, 0.32); }
.rev-dot:not(.is-marked) {
  background: transparent;
  box-shadow: inset 0 0 0 1px var(--border);
  opacity: 0;
  transition: opacity 0.15s, transform 0.15s, box-shadow 0.15s;
}
.session-row:hover .rev-dot:not(.is-marked) { opacity: 0.6; }
.rev-dot:not(.is-marked):hover { opacity: 1; box-shadow: inset 0 0 0 1px var(--gold); }
.rev-tip {
  position: absolute;
  top: calc(100% + 9px);
  left: 50%;
  transform: translateX(-50%);
  background: var(--paper-light);
  color: var(--ink-soft);
  padding: 5px 12px;
  border-radius: 4px;
  font-family: 'Fraunces', Georgia, serif;
  font-style: italic;
  font-size: 0.82rem;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.18s;
  z-index: 10;
  border: 1px solid var(--border);
  box-shadow: 0 4px 12px rgba(28, 27, 31, 0.08);
}
.rev-tip::before {
  content: "";
  position: absolute;
  top: -5px;
  left: 50%;
  transform: translateX(-50%) rotate(45deg);
  width: 8px;
  height: 8px;
  background: var(--paper-light);
  border-top: 1px solid var(--border);
  border-left: 1px solid var(--border);
}
.rev-dot:hover .rev-tip { opacity: 1; }

/* FILTER BAR (index) */
.filter-bar {
  max-width: 1080px;
  margin: 2rem auto 0;
  padding: 0 clamp(1.5rem, 5vw, 6rem);
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
  align-items: center;
}
.filter-bar .filter-label {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin-right: 0.5rem;
}
.filter-bar button {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.72rem;
  padding: 0.4rem 0.9rem;
  background: var(--paper-light);
  border: 1px solid var(--border);
  color: var(--ink-mute);
  border-radius: 100px;
  letter-spacing: 0.05em;
  cursor: pointer;
  transition: all 0.15s;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
}
.filter-bar button:hover { color: var(--rust); border-color: var(--rust); }
.filter-bar button.active { background: var(--rust); color: var(--paper); border-color: var(--rust); font-weight: 600; }
.filter-bar button .pill-count {
  font-size: 0.62rem;
  opacity: 0.7;
}
.filter-bar button.active .pill-count { opacity: 0.85; }
.filter-bar button.filter-revisit::before {
  content: "";
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--gold);
  display: inline-block;
}
.filter-bar button.filter-revisit.active::before { background: var(--paper); }
.filter-bar input[type="search"] {
  flex: 1;
  min-width: 200px;
  font-family: 'Public Sans', sans-serif;
  font-size: 0.9rem;
  padding: 0.5rem 0.9rem;
  background: var(--paper-light);
  border: 1px solid var(--border);
  color: var(--ink);
  border-radius: 100px;
  outline: none;
  transition: border-color 0.15s;
}
.filter-bar input[type="search"]:focus { border-color: var(--rust); }

/* SPEAKERS GRID */
.speakers-grid {
  max-width: 1080px;
  margin: 2rem auto 0;
  padding: 0 clamp(1.5rem, 5vw, 6rem) 6rem;
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
}
@media (min-width: 720px) { .speakers-grid { grid-template-columns: 1fr 1fr; } }
.speaker {
  background: var(--paper-light);
  border: 1px solid var(--border);
  padding: 2rem;
  border-radius: 2px;
  display: grid;
  grid-template-columns: 72px 1fr;
  gap: 1.5rem;
  box-shadow: var(--shadow);
}
.speaker .avatar {
  width: 72px;
  height: 72px;
  border-radius: 50%;
  background: var(--avatar-color, var(--rust));
  color: var(--paper);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: 'Fraunces', serif;
  font-size: 2rem;
  font-style: italic;
  font-weight: 500;
  flex-shrink: 0;
}
.speaker .speaker-content header { margin-bottom: 0.8rem; }
.speaker .speaker-content h2 {
  font-family: 'Fraunces', serif;
  font-size: 1.6rem;
  font-weight: 500;
  margin: 0 0 0.2rem;
  font-style: italic;
  font-variation-settings: "opsz" 144, "SOFT" 100;
}
.speaker .speaker-content h2::before { content: none; }
.speaker .speaker-content .role {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0;
}
.speaker .bio {
  font-size: 0.95rem;
  color: var(--ink-soft);
  margin-bottom: 1rem;
  line-height: 1.55;
}
.speaker .sessions {
  font-size: 0.85rem;
  color: var(--ink-mute);
  margin-bottom: 1rem;
  padding: 0.5rem 0;
  border-top: 1px dashed var(--border);
  border-bottom: 1px dashed var(--border);
}
.speaker .sessions .label {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--rust);
  margin-right: 0.5rem;
}
.speaker .sessions a {
  color: var(--ink);
  text-decoration: none;
  border-bottom: 1px dashed var(--border);
}
.speaker .sessions a:hover { color: var(--rust); border-color: var(--rust); }
.speaker .links {
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
}
.speaker .links a {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.7rem;
  letter-spacing: 0.05em;
  padding: 0.3rem 0.7rem;
  background: var(--paper);
  border: 1px solid var(--border);
  color: var(--ink-mute);
  text-decoration: none;
  border-radius: 100px;
  transition: all 0.15s;
}
.speaker .links a:hover { color: var(--rust); border-color: var(--rust); }
.speaker .links a[data-todo] {
  border-style: dashed;
  opacity: 0.55;
}
.speaker .links a[data-todo]:hover {
  opacity: 1;
  cursor: help;
}
@media (max-width: 540px) {
  .speaker { grid-template-columns: 1fr; }
  .speaker .avatar { margin: 0 auto; }
}

/* FOOTER */
footer {
  margin-top: 6rem;
  padding-top: 2rem;
  border-top: 1px solid var(--border);
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 1rem;
}
footer .nav-next {
  font-family: 'Fraunces', serif;
  font-size: 1.1rem;
  color: var(--ink);
  text-decoration: none;
  font-style: italic;
}
footer .nav-next .arrow { color: var(--rust); }
footer .stamp {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  color: var(--ink-mute);
  text-transform: uppercase;
}

/* SCROLL TOP */
.scrolltop {
  position: fixed;
  bottom: 2rem;
  right: 2rem;
  background: var(--ink);
  color: var(--paper);
  border: none;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  cursor: pointer;
  opacity: 0;
  transition: opacity 0.2s;
  font-size: 1.2rem;
  box-shadow: var(--shadow-deep);
}
.scrolltop.show { opacity: 0.9; }
.scrolltop:hover { opacity: 1; background: var(--rust); }

/* SELECTION */
::selection { background: var(--gold-soft); color: var(--ink); }

/* === generated-site additions (same design language) === */
.kb-main { max-width:1080px; margin:0 auto; padding:0 clamp(1.5rem,5vw,6rem) 6rem; }
.kb-main h2 { margin-top:3.2rem; }
.stat-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:1rem; margin:2rem 0; }
.stat { background:var(--paper-light); border:1px solid var(--border); border-radius:2px; padding:1.2rem 1.4rem; box-shadow:var(--shadow); }
.stat .n { font-family:'Fraunces',serif; font-size:2rem; font-weight:500; color:var(--rust); line-height:1.1; }
.stat .l { font-family:'JetBrains Mono',monospace; font-size:0.68rem; letter-spacing:0.1em; text-transform:uppercase; color:var(--ink-mute); margin-top:0.3rem; }
.progress-wrap { background:var(--paper-light); border:1px solid var(--border); border-radius:2px; padding:1.5rem 1.75rem; margin:2rem 0; box-shadow:var(--shadow); }
.progress-wrap .label { font-family:'JetBrains Mono',monospace; font-size:0.7rem; letter-spacing:0.12em; text-transform:uppercase; color:var(--rust); font-weight:600; margin-bottom:0.8rem; }
.progress-bar { height:10px; background:var(--paper-dark); border-radius:100px; overflow:hidden; margin:0.6rem 0; }
.progress-bar .fill { height:100%; background:var(--rust); border-radius:100px; }
.progress-wrap .caption { font-family:'JetBrains Mono',monospace; font-size:0.72rem; color:var(--ink-mute); letter-spacing:0.04em; }
.kb-table { width:100%; border-collapse:collapse; background:var(--paper-light); border:1px solid var(--border); margin:1.5rem 0; }
.kb-table th { font-family:'JetBrains Mono',monospace; font-size:0.68rem; letter-spacing:0.1em; text-transform:uppercase; color:var(--rust); text-align:left; padding:0.7rem 1rem; border-bottom:2px solid var(--border); background:var(--paper-dark); }
.kb-table td { padding:0.7rem 1rem; border-bottom:1px dashed var(--border-soft); font-size:0.92rem; color:var(--ink-soft); vertical-align:top; }
.kb-table tr:last-child td { border-bottom:none; }
.mode-badge { font-family:'JetBrains Mono',monospace; font-size:0.64rem; letter-spacing:0.08em; text-transform:uppercase; padding:2px 9px; border-radius:100px; color:var(--paper-light); white-space:nowrap; }
.mode-demonstrated { background:var(--forest); } .mode-explained { background:#4A6A7A; } .mode-mentioned { background:var(--ink-mute); }
.tstamp { font-size:0.78rem; color:var(--forest); text-decoration:none; border-bottom:1px dashed var(--forest); white-space:nowrap; }
.tstamp:hover { color:var(--rust); border-color:var(--rust); }
.hit-list .session-row h3 { font-size:1.15rem; }
.arch-wrap { background:var(--paper-light); border:1px solid var(--border); border-radius:2px; padding:1.5rem; margin:1.5rem 0; box-shadow:var(--shadow); }
.search-big { width:100%; font-family:'Public Sans',sans-serif; font-size:1.05rem; padding:0.8rem 1.2rem; background:var(--paper-light); border:1px solid var(--border); border-radius:100px; outline:none; color:var(--ink); }
.search-big:focus { border-color:var(--rust); }
.kind-pill { font-family:'JetBrains Mono',monospace; font-size:0.62rem; letter-spacing:0.08em; text-transform:uppercase; padding:2px 8px; border-radius:100px; color:var(--paper-light); margin-right:0.6rem; }

.idea .kp { font-size:.88rem; color:var(--ink-soft); margin:.35rem 0 0; padding-left:1.05rem; position:relative; }
.idea .kp::before { content:"\2192"; position:absolute; left:0; color:var(--rust); }
.idea.analogy-idea { border-left:3px solid var(--gold); padding-left:1.1rem; background:rgba(201,154,63,.07); border-radius:2px; }
/* teaching cards — one horizontal card per concept, layered learning inside */
.tcard { background:var(--paper-light); border:1px solid var(--border); border-radius:8px;
  box-shadow:var(--shadow); margin:1.2rem 0; max-width:940px; overflow:hidden; }
.tcard.analogy-card { border-top:3px solid var(--gold); }
.tc-head { display:flex; gap:.9rem; align-items:baseline; flex-wrap:wrap; padding:1.1rem 1.5rem .1rem; }
.tc-head .num { font-family:'JetBrains Mono',monospace; font-size:.78rem; color:var(--rust); }
.tc-head h3 { font-size:1.65rem; font-weight:600; margin:0; text-transform:none; letter-spacing:-.012em; flex:1; line-height:1.15; }
.tc-idea { font-size:1.1rem; font-weight:500; color:var(--ink); max-width:66ch; margin:.55rem 0 .9rem; padding:0 1.5rem; }
.tc-grid { display:grid; grid-template-columns:1fr; gap:1.1rem; padding:0 1.5rem 1.1rem; }
@media (min-width:900px) { .tc-grid { grid-template-columns:1.45fr 1fr; align-items:start; } }
.tc-explain p { font-size:.95rem; color:var(--ink-soft); margin:0 0 .65rem; }
.tc-side { display:flex; flex-direction:column; gap:.8rem; }
.tc-box { border:1px solid var(--border); border-radius:6px; padding:.75rem 1rem .85rem; background:var(--paper); }
.tc-box .lbl { font-family:'JetBrains Mono',monospace; font-size:.62rem; letter-spacing:.1em;
  text-transform:uppercase; color:var(--ink-mute); display:block; margin-bottom:.25rem; }
.tc-box p { font-size:.88rem; color:var(--ink-soft); margin:0; }
.tc-box.ex { border-color:var(--gold); background:rgba(201,154,63,.08); }
.tc-box.ex .lbl { color:#8a6a25; }
.tc-box.why { border-left:3px solid var(--forest); }
.tc-box.why .lbl { color:var(--forest); }
.tc-deeper { border-top:1px dashed var(--border); }
.tc-deeper summary { list-style:none; cursor:pointer; padding:.7rem 1.5rem;
  font-family:'JetBrains Mono',monospace; font-size:.72rem; letter-spacing:.08em;
  text-transform:uppercase; color:var(--rust); }
.tc-deeper summary::-webkit-details-marker { display:none; }
.tc-deeper summary::before { content:"\203A "; }
.tc-deeper[open] summary::before { content:"\2304 "; }
.tc-deeper .din { padding:0 1.5rem 1.2rem; }
.tc-deeper .din p { font-size:.9rem; color:var(--ink-soft); margin:.5rem 0 0; }
.tc-deeper .din .kp { padding-left:1.05rem; position:relative; }
.tc-deeper .din .kp::before { content:"\2192"; position:absolute; left:0; color:var(--rust); }
.tc-try { border:1px dashed var(--forest); border-radius:6px; padding:.7rem 1rem; margin-top:.7rem; }
.tc-try .lbl { font-family:'JetBrains Mono',monospace; font-size:.62rem; letter-spacing:.1em;
  text-transform:uppercase; color:var(--forest); display:block; margin-bottom:.2rem; }
.tc-try p { font-size:.88rem; margin:0; }
.tc-quote { margin:.3rem 1.5rem 1.2rem; padding:.5rem 0 .2rem 2.7rem; position:relative;
  font-family:'Source Serif 4',Georgia,serif; font-size:1.08rem; font-weight:500;
  color:var(--rust-deep); max-width:62ch; }
.tc-quote::before { content:"\201C"; position:absolute; left:.4rem; top:-.5rem;
  font-size:3.4rem; line-height:1; color:var(--gold); font-family:'Source Serif 4',Georgia,serif;
  font-style:normal; }
.tc-quote cite { display:block; font-family:'JetBrains Mono',monospace; font-size:.7rem;
  color:var(--ink-mute); margin-top:.4rem; font-weight:400; }
.tc-fig { margin:.2rem 1.5rem 1.1rem; padding:1rem 1rem .6rem; background:var(--paper);
  border:1px solid var(--border); border-radius:6px; cursor:zoom-in; }
.tc-fig svg { width:100%; height:auto; display:block; }
/* --- learning features (ROADMAP #2/#4-strip/#5/#6/#7/#8) --- */
.kind-badge { font-family:'JetBrains Mono',monospace; font-size:.6rem; letter-spacing:.09em;
  text-transform:uppercase; background:var(--forest); color:var(--paper-light);
  padding:2px 9px; border-radius:100px; align-self:center; }
/* #5 misconception box (side column) */
.tc-mis { border:1px solid var(--rust); border-left:3px solid var(--rust); border-radius:6px;
  padding:.75rem 1rem .8rem; background:rgba(176,74,42,.06); }
.tc-mis .lbl { font-family:'JetBrains Mono',monospace; font-size:.62rem; letter-spacing:.1em;
  text-transform:uppercase; color:var(--rust); display:block; margin-bottom:.35rem; }
.tc-mis p { font-size:.88rem; color:var(--ink-soft); margin:0 0 .35rem; padding-left:1.15rem;
  position:relative; }
.tc-mis p:last-child { margin-bottom:0; }
.tc-mis .w::before { content:"\2715"; position:absolute; left:0; color:var(--rust); font-weight:700; }
.tc-mis .r::before { content:"\2713"; position:absolute; left:0; color:var(--forest); font-weight:700; }
/* #6 procedural step strip (replaces prose in the side column) */
.tc-steps { border:1px solid var(--forest); border-radius:6px; padding:.75rem 1rem .8rem;
  background:var(--paper); }
.tc-steps .lbl { font-family:'JetBrains Mono',monospace; font-size:.62rem; letter-spacing:.1em;
  text-transform:uppercase; color:var(--forest); display:block; margin-bottom:.3rem; }
.tc-steps ol { list-style:none; margin:0; padding:0; }
.tc-steps li { position:relative; padding:.3rem 0; border-bottom:1px dashed var(--border-soft); }
.tc-steps li:last-child { border-bottom:none; }
.tc-steps label { display:flex; gap:.55rem; align-items:flex-start; cursor:pointer;
  font-size:.88rem; color:var(--ink-soft); line-height:1.45; }
.tc-steps input { margin-top:.25rem; accent-color:var(--forest); flex:none; }
.tc-steps b { font-family:'JetBrains Mono',monospace; font-size:.72rem; color:var(--rust);
  font-weight:500; margin-right:.3rem; }
.tc-steps input:checked + span { opacity:.5; text-decoration:line-through; }
.tc-steps .gotcha { font-size:.84rem; color:var(--ink-soft); margin:.6rem 0 0;
  padding-top:.55rem; border-top:1px dashed var(--border); }
.tc-steps .gotcha .lbl { color:var(--rust); }
/* #7/#8 for-your-projects + idea sparks */
.tc-you { border:1px dashed var(--rust); border-radius:6px; margin:.2rem 1.5rem 1.1rem;
  padding:.8rem 1rem .85rem; background:rgba(176,74,42,.045); max-width:none; }
.tc-you .lbl { font-family:'JetBrains Mono',monospace; font-size:.62rem; letter-spacing:.1em;
  text-transform:uppercase; color:var(--rust); display:block; margin-bottom:.3rem; }
.tc-you p { font-size:.9rem; color:var(--ink-soft); margin:0; max-width:72ch; }
.tc-you .sparks { list-style:none; margin:.6rem 0 0; padding:0; }
.tc-you .sparks li { position:relative; padding-left:1.25rem; margin:.32rem 0;
  font-size:.86rem; color:var(--ink-soft); max-width:72ch; }
.tc-you .sparks li::before { content:"\2726"; position:absolute; left:0; color:var(--gold); }
/* #4 (strip only) this idea elsewhere */
.tc-thread { margin:.2rem 1.5rem 1.1rem; display:flex; gap:.5rem; flex-wrap:wrap; align-items:center; }
.tc-thread .lbl { font-family:'JetBrains Mono',monospace; font-size:.62rem; letter-spacing:.1em;
  text-transform:uppercase; color:var(--ink-mute); }
.tc-thread a { font-size:.82rem; color:var(--ink-soft); text-decoration:none;
  border:1px solid var(--border); border-radius:100px; padding:.18rem .7rem; background:var(--paper); }
.tc-thread a:hover { border-color:var(--rust); color:var(--rust); }
.tc-thread a .how { font-family:'JetBrains Mono',monospace; font-size:.6rem; letter-spacing:.06em;
  text-transform:uppercase; color:var(--ink-mute); margin-right:.4rem; }
/* #2 check yourself — retrieval practice */
.tc-check { border-top:1px dashed var(--border); background:var(--paper); padding:.9rem 1.5rem 1.1rem; }
.tc-check .lbl { font-family:'JetBrains Mono',monospace; font-size:.66rem; letter-spacing:.1em;
  text-transform:uppercase; color:var(--rust); display:block; }
.tc-check .hint { font-size:.78rem; color:var(--ink-mute); margin:.2rem 0 .65rem; }
.tc-check details { border:1px solid var(--border); border-radius:6px; background:var(--paper-light);
  padding:.55rem .9rem; margin:.4rem 0; }
.tc-check summary { list-style:none; cursor:pointer; font-size:.93rem; font-weight:500;
  color:var(--ink); display:flex; gap:.8rem; justify-content:space-between; align-items:baseline; }
.tc-check summary::-webkit-details-marker { display:none; }
.tc-check summary::after { content:"reveal"; font-family:'JetBrains Mono',monospace; font-size:.6rem;
  letter-spacing:.09em; text-transform:uppercase; color:var(--rust); flex:none; }
.tc-check details[open] summary::after { content:"\2304"; }
.tc-check details p { font-size:.88rem; color:var(--ink-soft); margin:.55rem 0 0;
  padding-top:.5rem; border-top:1px dashed var(--border-soft); }
/* speaker card external links */
.spk-links { display:flex; gap:.5rem; flex-wrap:wrap; margin:.55rem 0 .2rem; }
.spk-link { font-family:'JetBrains Mono',monospace; font-size:.66rem; letter-spacing:.07em;
  text-transform:uppercase; color:var(--rust); text-decoration:none;
  border:1px solid var(--border); border-radius:100px; padding:.22rem .75rem;
  background:var(--paper); }
.spk-link:hover { border-color:var(--rust); background:rgba(176,74,42,.07); }
/* tool logos (favicons fetched to _pipeline\logos, copied to assets/logos).
   .name-logo sits INSIDE the name text and scales with its font size. */
.name-logo { width:1.05em; height:1.05em; object-fit:contain; border-radius:.18em;
  vertical-align:-0.14em; margin-right:.38em; display:inline-block; }
.tool-logo.sm { width:18px; height:18px; border-radius:4px; vertical-align:-4px;
  margin-right:.45rem; object-fit:contain; }
/* tools page — shelf cards: the tool NAME is the headline (per Paul 2026-08-17) */
.tool-shelf-card .tool-head { display:flex; gap:.9rem; align-items:baseline; flex-wrap:wrap;
  margin:.15rem 0 .55rem; }
.tool-shelf-card .tool-head h3 { font-size:1.45rem; font-weight:600; margin:0;
  text-transform:none; letter-spacing:-.012em; line-height:1.15; }
.tool-shelf-card .tool-head h3 a { color:var(--ink); text-decoration:none;
  border-bottom:2px solid transparent; }
.tool-shelf-card .tool-head h3 a:hover { color:var(--rust); border-bottom-color:var(--rust); }
.tool-shelf-card .tool-head .moments { font-family:'JetBrains Mono',monospace; font-size:.68rem;
  letter-spacing:.08em; text-transform:uppercase; color:var(--ink-mute); }
/* concepts front door — topic menu + collapsed cards (per Paul 2026-08-17) */
.topic-menu { display:flex; gap:.5rem; flex-wrap:wrap; margin:1.4rem 0 1.8rem; max-width:940px; }
.topic-chip { font-family:'JetBrains Mono',monospace; font-size:.7rem; letter-spacing:.06em;
  text-transform:uppercase; color:var(--ink-soft); background:var(--paper-light);
  border:1px solid var(--border); border-radius:100px; padding:.42rem .95rem; cursor:pointer; }
.topic-chip:hover { border-color:var(--rust); color:var(--rust); }
.topic-chip.active { background:var(--rust); border-color:var(--rust); color:var(--paper-light); }
.topic-chip.active .n { color:var(--paper-light); opacity:.75; }
.topic-chip .n { color:var(--rust); margin-left:.25rem; }
.topic-chip.ghost { border-style:dashed; margin-left:auto; }
.topic-chip.ghost + .topic-chip.ghost { margin-left:0; }
.topic-tag { font-family:'JetBrains Mono',monospace; font-size:.6rem; letter-spacing:.06em;
  text-transform:uppercase; color:var(--ink-mute); border:1px solid var(--border-soft);
  border-radius:100px; padding:.14rem .55rem; background:var(--paper); white-space:nowrap; }
.lite-list { margin:1.6rem 0; }
.tcard-lite { background:var(--paper-light); border:1px solid var(--border); border-radius:8px;
  box-shadow:var(--shadow); margin:.55rem 0; max-width:940px; }
.tcard-lite summary { list-style:none; cursor:pointer; display:flex; gap:.8rem;
  align-items:center; flex-wrap:wrap; padding:.75rem 1.35rem; }
.tcard-lite summary::-webkit-details-marker { display:none; }
.tcard-lite h4 { font-size:1.45rem; font-weight:600; margin:0; flex:1; text-transform:none;
  letter-spacing:-.012em; line-height:1.15; min-width:16ch; }
.tcard-lite summary:hover h4 { color:var(--rust); }
.tcard-lite .tl-chips { display:flex; gap:.35rem; flex-wrap:wrap; }
.tcard-lite .tl-chev { font-size:1.3rem; color:var(--ink-mute); line-height:1;
  transition:transform .15s; flex:none; }
.tcard-lite[open] .tl-chev { transform:rotate(90deg); color:var(--rust); }
.tcard-lite .tl-body { padding:.15rem 1.35rem 1.05rem; border-top:1px dashed var(--border-soft); }
.tcard-lite .tl-hook { font-size:1rem; font-weight:500; color:var(--ink); margin:.55rem 0 .3rem;
  max-width:66ch; }
.tcard-lite .tl-def { font-size:.9rem; color:var(--ink-soft); margin:0; max-width:74ch; }
.tcard-lite .tl-meta { margin-top:.65rem; font-family:'JetBrains Mono',monospace; font-size:.72rem;
  color:var(--ink-mute); }
.tcard-lite .tl-meta a.sess { color:var(--rust); text-decoration:none; border-bottom:1px dashed var(--rust); }
.tc-fig figcaption { font-family:'JetBrains Mono',monospace; font-size:.66rem; letter-spacing:.08em;
  text-transform:uppercase; color:var(--ink-mute); margin-top:.55rem; }
.tc-fig:hover { border-color:var(--rust); }

/* === readability pass (per Paul, 2026-08-16): no italic, no soft/script serif === */
em, i, p.lede, .desc,
.hero h1 em, .global-header h1 em,
.speaker-block .speaker-name, .related .desc, .resources .note { font-style: normal !important; }
/* quotes are the one place italic returns — Source Serif's italic is a true print italic */
blockquote, .tc-quote { font-style: italic !important; }
blockquote cite, .tc-quote cite { font-style: normal !important; }
h1, h2, h3, h4, .serif, .hero h1, .global-header h1,
blockquote, .speaker-block .speaker-name { font-variation-settings: "opsz" 144 !important; }
/* === heading face: Source Serif 4 (Paul's pick, font-options Option B) === */
h1, h2, h3, h4, .serif, .hero h1, .global-header h1, aside h4,
.mappanel h3, .speaker-block .speaker-name, .stat .n,
blockquote { font-family: 'Source Serif 4', Georgia, serif !important; }
h1, .hero h1, .global-header h1 { font-weight: 600; letter-spacing: -.015em; }
h2 { font-weight: 600; } h3, h4, aside h4, .mappanel h3 { font-weight: 600; }
blockquote { font-weight: 500; font-size: 1.18rem; }
.speaker-block .speaker-name { font-weight: 600; }

/* === session-page shell additions (mirrors session-01 reference layout) === */
.shell main { min-width: 0; }
.aside-sitenav { margin-top: 2.2rem; padding-top: 1.2rem; border-top: 1px dashed var(--border); }
.aside-sitenav a { display:block; padding:0.28rem 0; color:var(--ink-mute); text-decoration:none;
  font-family:'JetBrains Mono',monospace; font-size:0.7rem; letter-spacing:0.08em; text-transform:uppercase; }
.aside-sitenav a:hover { color: var(--rust); }
.mobile-top { display:flex; gap:1rem; flex-wrap:wrap; padding:0.9rem 1.5rem; border-bottom:1px solid var(--border);
  background:var(--paper-light); font-family:'JetBrains Mono',monospace; font-size:0.72rem;
  letter-spacing:0.06em; text-transform:uppercase; }
.mobile-top a { color: var(--ink-mute); text-decoration: none; }
.mobile-top a:hover { color: var(--rust); }
@media (min-width: 1100px) { .mobile-top { display: none; } }
.scrolltop-fab { position:fixed; right:200px; bottom:1.6rem; width:46px; height:46px; border-radius:50%;
  border:1px solid var(--border); background:var(--paper-light); color:var(--rust); font-size:1.2rem;
  cursor:pointer; box-shadow:var(--shadow); display:none; z-index:50; }
@media (max-width:1100px) { .scrolltop-fab { right:1.3rem; } }
.scrolltop-fab.show { display:block; }
/* program cards + multi-progress + toc accordions (hub rework, per Paul 2026-08-16) */
.pm-row { display:grid; grid-template-columns:minmax(150px,220px) 1fr; gap:.9rem; align-items:center; margin:.45rem 0; }
.pm-row .pm-name { font-size:.88rem; font-weight:600; }
.pm-row .caption { grid-column:2; margin-top:-.2rem; }
.prog-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(330px,1fr)); gap:1.1rem; margin:1.4rem 0; }
.prog-card { background:var(--paper-light); border:1px solid var(--border); border-radius:8px;
  box-shadow:var(--shadow); padding:1.2rem 1.3rem; display:flex; flex-direction:column; gap:.5rem; }
.prog-topic { font-family:'JetBrains Mono',monospace; font-size:.62rem; letter-spacing:.1em;
  text-transform:uppercase; color:#fff; border-radius:100px; padding:.14rem .65rem; align-self:flex-start; }
.pt-ai { background:var(--rust); } .pt-websites { background:#2F5D7A; } .pt-drones { background:var(--forest); }
.pt-other { background:var(--ink-mute); }
.prog-card h3 { font-family:'Source Serif 4',serif; font-size:1.35rem; font-weight:600; margin:0; text-transform:none; }
.prog-card .pdesc { font-size:.88rem; color:var(--ink-soft); flex:1; }
.prog-card .pstats { font-family:'JetBrains Mono',monospace; font-size:.7rem; color:var(--ink-mute); }
.prog-card a.popen { font-family:'JetBrains Mono',monospace; font-size:.74rem; letter-spacing:.06em;
  text-transform:uppercase; color:var(--rust); text-decoration:none; margin-top:.3rem; }
.prog-card a.popen:hover { border-bottom:1px dashed var(--rust); }
details.toc-sec { border:1px solid var(--border); border-radius:6px; background:var(--paper-light);
  margin:.6rem 0; box-shadow:var(--shadow); }
details.toc-sec summary { list-style:none; cursor:pointer; padding:.75rem 1.1rem; display:flex;
  gap:.8rem; align-items:baseline; }
details.toc-sec summary::-webkit-details-marker { display:none; }
details.toc-sec summary .sn { font-family:'Source Serif 4',serif; font-size:1.1rem; font-weight:600; flex:1; }
details.toc-sec summary .sc { font-family:'JetBrains Mono',monospace; font-size:.68rem; color:var(--ink-mute); }
details.toc-sec summary .chev { color:var(--rust); transition:transform .2s; }
details.toc-sec[open] summary .chev { transform:rotate(90deg); }
details.toc-sec .secbody { padding:.2rem 1.1rem .8rem; border-top:1px dashed var(--border-soft); }
/* program accordions on the hub (default closed, short descriptor in the head — per Paul 2026-08-19) */
details.prog-acc { margin:.9rem 0; }
details.prog-acc > summary { align-items:center; padding:.9rem 1.1rem; }
details.prog-acc > summary .sn { font-size:1.25rem; flex:0 1 auto; }
details.prog-acc > summary .pa-short { font-size:.82rem; font-style:italic; color:var(--ink-mute); flex:1; }
details.prog-acc > summary .prog-topic { align-self:center; }
details.prog-acc .pa-body .pdesc { font-size:.88rem; color:var(--ink-soft); margin:.7rem 0 .5rem; }
details.prog-acc .pa-body .pstats { font-family:'JetBrains Mono',monospace; font-size:.7rem; color:var(--ink-mute); display:block; margin:.35rem 0 .5rem; }
details.prog-acc .pa-body a.popen { color:var(--rust); text-decoration:none; }
details.prog-acc .pa-body a.popen:hover { border-bottom:1px dashed var(--rust); }
details.prog-acc details.toc-sec { box-shadow:none; }
@media print { .scrolltop-fab, .mobile-top, aside { display:none !important; } }

/* === C→A→B session template (per Paul, design-lab verdict 2026-08-16) === */
/* session map (Option C at the head) */
.mapfig { background:var(--paper-light); border:1px solid var(--border); border-radius:4px;
  padding:1rem 1rem .6rem; margin:1.4rem 0; box-shadow:var(--shadow); position:relative; }
.mapfig svg text { font-family:'Public Sans',sans-serif; pointer-events:none; }
.mapfig .mnode { cursor:pointer; }
.mapfig .mnode rect { transition:stroke-width .12s, filter .12s; }
.mapfig .mnode:hover rect { stroke-width:2.5; }
.map-legend { display:flex; gap:1.1rem; flex-wrap:wrap; font-family:'JetBrains Mono',monospace;
  font-size:.64rem; text-transform:uppercase; letter-spacing:.06em; color:var(--ink-mute); margin:.5rem 0 .2rem; }
.map-legend span::before { content:""; display:inline-block; width:10px; height:10px; border-radius:2px;
  margin-right:.35rem; vertical-align:-1px; border:1px solid; }
.map-legend .b1::before { background:#F3DFD4; border-color:var(--rust); }
.map-legend .b2::before { background:#E4EAE0; border-color:var(--forest); }
.map-legend .b3::before { background:#E2EAF0; border-color:#2F5D7A; }
.map-hint { font-family:'JetBrains Mono',monospace; font-size:.66rem; color:var(--ink-mute); }
.expand-btn { position:absolute; top:.6rem; right:.6rem; font-family:'JetBrains Mono',monospace;
  font-size:.68rem; background:var(--paper); border:1px solid var(--border); border-radius:4px;
  padding:.25rem .6rem; cursor:pointer; color:var(--ink-mute); }
.expand-btn:hover { color:var(--rust); border-color:var(--rust); }
/* lightbox */
.lightbox { position:fixed; inset:0; background:rgba(28,27,31,.82); z-index:100; display:none;
  align-items:center; justify-content:center; padding:2rem; cursor:zoom-out; }
.lightbox.show { display:flex; }
.lightbox .box { background:var(--paper-light); border-radius:6px; padding:1.5rem; width:min(1200px,94vw);
  max-height:92vh; overflow:auto; cursor:default; }
.lightbox svg { width:100%; height:auto; }
/* filter rail (Option B's sort menus) */
.rail { display:flex; gap:.5rem; flex-wrap:wrap; position:sticky; top:0; z-index:6;
  background:var(--paper); padding:.7rem 0 .6rem; border-bottom:1px solid var(--border); margin:1.2rem 0 .4rem; }
.rail button { font-family:'JetBrains Mono',monospace; font-size:.68rem; letter-spacing:.06em;
  text-transform:uppercase; padding:.4rem .85rem; border-radius:100px; border:1px solid var(--border);
  background:var(--paper-light); color:var(--ink-mute); cursor:pointer; }
.rail button.on { color:#fff; }
.rail button[data-k="all"].on { background:var(--ink); border-color:var(--ink); }
.rail button[data-k="concepts"].on { background:var(--rust); border-color:var(--rust); }
.rail button[data-k="tools"].on { background:#2F5D7A; border-color:#2F5D7A; }
.rail button[data-k="materials"].on { background:var(--gold); border-color:var(--gold); }
.rail button[data-k="actions"].on { background:var(--forest); border-color:var(--forest); }
.rail button[data-k="quotes"].on { background:#9A7420; border-color:#9A7420; }
/* accordion concepts (Option A's three-clicks-deep) */
details.layer { background:var(--paper-light); border:1px solid var(--border); border-left:3px solid var(--rust);
  border-radius:3px; margin:.55rem 0; box-shadow:var(--shadow); }
details.layer.analogy-layer { border-left-color:var(--gold); }
details.layer summary { cursor:pointer; list-style:none; padding:.8rem 1.05rem; display:flex; gap:.75rem;
  align-items:baseline; flex-wrap:wrap; }
details.layer summary::-webkit-details-marker { display:none; }
details.layer summary .n { font-family:'JetBrains Mono',monospace; font-size:.72rem; color:var(--rust); min-width:1.6rem; }
details.layer summary .t { font-weight:600; }
details.layer summary .gist { color:var(--ink-mute); font-size:.88rem; flex:1 1 220px; }
details.layer summary .chev { color:var(--rust); transition:transform .2s; }
details.layer[open] summary .chev { transform:rotate(90deg); }
details.layer .lbody { padding:.15rem 1.05rem 1rem 3.4rem; border-top:1px dashed var(--border-soft); }
details.layer .lbody p { font-size:.94rem; margin:.55rem 0 0; }
details.layer .lbody .kp { font-size:.87rem; color:var(--ink-soft); margin:.35rem 0 0; padding-left:1rem; position:relative; }
details.layer .lbody .kp::before { content:"\2192"; position:absolute; left:0; color:var(--rust); }
@media (max-width:700px){ details.layer .lbody { padding-left:1.05rem; } }
/* materials cards */
.matgrid { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:.8rem; margin:1rem 0; }
.matcard { background:var(--paper-light); border:1px solid var(--border); border-radius:6px; padding:.85rem 1rem;
  box-shadow:var(--shadow); text-decoration:none; color:var(--ink); display:block; transition:transform .12s; }
.matcard:hover { transform:translateY(-2px); border-color:var(--gold); }
.matcard .ft { font-family:'JetBrains Mono',monospace; font-size:.6rem; letter-spacing:.08em; text-transform:uppercase;
  color:#fff; background:var(--gold); border-radius:4px; padding:.1rem .45rem; display:inline-block; margin-bottom:.4rem; }
.matcard .ft.f-pdf { background:var(--rust); } .matcard .ft.f-json { background:var(--forest); }
.matcard .ft.f-lms { background:#2F5D7A; }
.matcard .fn { font-size:.88rem; font-weight:600; line-height:1.35; word-break:break-word; }
.matcard .fs { font-family:'JetBrains Mono',monospace; font-size:.68rem; color:var(--ink-mute); margin-top:.3rem; }
/* C module: full-width map + floating concept card (per Paul, readability pass 2) */
/* session main runs wide so the map is readable; prose blocks stay at reading width */
.shell main { max-width:1240px; }
main .tldr, main details.layer, main .checklist, main blockquote, main .resources,
main .callout, main .fresh-list, main .hero, main p.desc { max-width:900px; }
main .ideas { max-width:940px; }
.mapfig { width:100%; margin:1.3rem 0; }
.mappanel { position:fixed; right:2rem; top:16vh; width:min(420px, 92vw); z-index:60;
  background:var(--paper-light); border:1px solid var(--border); border-radius:6px;
  box-shadow:var(--shadow-deep); display:none; }
.mappanel.show { display:block; }
@media (max-width:700px) { .mappanel { right:0; left:0; top:auto; bottom:0; width:auto;
  border-radius:10px 10px 0 0; max-height:60vh; overflow:auto; } }
.mappanel .ph { padding:.9rem 1.2rem .7rem; border-bottom:1px solid var(--border);
  display:flex; justify-content:space-between; align-items:flex-start; gap:.8rem;
  cursor:grab; user-select:none; }
.mappanel .ph:active { cursor:grabbing; }
.mappanel .pclose { background:none; border:none; font-size:1.5rem; line-height:1;
  color:var(--ink-mute); cursor:pointer; padding:0 .1rem; }
.mappanel .pclose:hover { color:var(--rust); }
.mappanel .pk { font-family:'JetBrains Mono',monospace; font-size:.64rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-mute); }
.mappanel h3 { font-family:'Fraunces',Georgia,serif; font-weight:550; font-size:1.3rem; margin:.15rem 0 0; text-transform:none; letter-spacing:-.01em; color:var(--ink); }
.mappanel .pb { padding:.8rem 1.2rem 1.1rem; }
.mappanel .pb p { font-size:.92rem; margin:.5rem 0 0; color:var(--ink-soft); }
.mappanel .kp { font-size:.85rem; padding-left:1rem; position:relative; }
.mappanel .kp::before { content:"\2192"; position:absolute; left:0; color:var(--rust); }
.map-jump a { font-family:'JetBrains Mono',monospace; font-size:.72rem; color:var(--forest); }
.mnode.sel rect { stroke-width:3; filter:drop-shadow(0 3px 6px rgba(28,27,31,.3)); }
main h2[id], details.layer { scroll-margin-top:3.4rem; }
/* extraction notes, humanized */
.notes-h { font-family:'JetBrains Mono',monospace; font-size:.72rem; letter-spacing:.1em; text-transform:uppercase; color:var(--rust); margin:1.6rem 0 .4rem; }
.fresh-list { list-style:none; margin:.4rem 0 0; padding:0; }
.fresh-list li { padding:.4rem 0 .4rem 1.7rem; position:relative; font-size:.9rem; color:var(--ink-soft); border-bottom:1px dashed var(--border-soft); }
.fresh-list li::before { content:"\26A0"; position:absolute; left:0; color:var(--gold); }
/* speakers page v2 — card grid, per Paul 2026-08-16 */
.spk-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:1.1rem; margin:1.5rem 0; }
.spk-card { background:var(--paper-light); border:1px solid var(--border); border-radius:8px;
  box-shadow:var(--shadow); padding:1.2rem 1.3rem 1rem; }
.spk-top { display:flex; gap:1rem; align-items:center; }
.spk-avatar { width:64px; height:64px; border-radius:50%; flex:none; object-fit:cover;
  display:flex; align-items:center; justify-content:center;
  font-family:'Source Serif 4',serif; font-size:1.5rem; font-weight:600; color:#fff; }
.spk-first { font-family:'Source Serif 4',serif; font-size:1.45rem; font-weight:600; line-height:1.05; }
.spk-last { font-family:'Source Serif 4',serif; font-size:1.05rem; font-weight:500; color:var(--ink-soft); }
.spk-count { font-family:'JetBrains Mono',monospace; font-size:.64rem; letter-spacing:.08em;
  text-transform:uppercase; color:#fff; background:var(--forest); border-radius:100px;
  padding:.14rem .6rem; display:inline-block; margin-top:.3rem; }
.spk-role { color:var(--ink-mute); font-size:.88rem; margin:.7rem 0 0; }
.spk-note { font-size:.82rem; color:var(--ink-soft); background:rgba(201,154,63,.08);
  border:1px dashed var(--gold); border-radius:4px; padding:.45rem .7rem; margin:.6rem 0 0; }
.spk-sessions { margin-top:.7rem; border-top:1px dashed var(--border); }
.spk-sessions summary { list-style:none; cursor:pointer; padding:.55rem 0;
  font-family:'JetBrains Mono',monospace; font-size:.68rem; letter-spacing:.08em;
  text-transform:uppercase; color:var(--rust); }
.spk-sessions summary::-webkit-details-marker { display:none; }
.spk-sessions summary::before { content:"\203A "; }
.spk-sessions[open] summary::before { content:"\2304 "; }
.spk-row { display:flex; gap:.6rem; align-items:baseline; padding:.3rem 0;
  border-bottom:1px dashed var(--border-soft); font-size:.86rem; }
.spk-row:last-child { border-bottom:none; }
.spk-row a.stitle { color:var(--ink); text-decoration:none; flex:1; }
.spk-row a.stitle:hover { color:var(--rust); }
.spk-row .sdur { font-family:'JetBrains Mono',monospace; font-size:.7rem; color:var(--ink-mute); white-space:nowrap; }
.spk-row a.splay { text-decoration:none; font-size:.8rem; color:var(--forest); }
.spk-row a.splay:hover { color:var(--rust); }
a.speaker-name { text-decoration:none; }
a.speaker-name:hover { border-bottom:1px dashed var(--rust); }
