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

:root{
  --bg:#FAFBFC;
  --ink:#14212B;
  --muted:#657585;
  --line:#E4E9EE;
  --accent:#1E6FA8;
  --accent-soft:#EAF1F7;
  --accent-2:#2E8B8B;
  --card:#FFFFFF;
  --h-font:'Manrope','Inter',system-ui,sans-serif;
  --b-font:'Inter',system-ui,sans-serif;
  --m-font:'JetBrains Mono','SFMono-Regular',monospace;
}

/* ---------- base ---------- */
.reveal-viewport{ background:var(--bg); }
.reveal{
  font-family:var(--b-font);
  color:var(--ink);
  font-size:24pt;
}
.reveal .slides{ text-align:left; }
.reveal .slides section{
  height:100%;
  box-sizing:border-box;
  padding:54pt 66pt;
  overflow:hidden;
}

h1,h2,h3,h4{ font-family:var(--h-font); color:var(--ink); margin:0 0 16pt; line-height:1.08; }
h1{ font-size:62pt; font-weight:800; letter-spacing:-1pt; }
h2{ font-size:37pt; font-weight:800; letter-spacing:-0.3pt; }
h3{ font-size:22pt; font-weight:700; margin-bottom:8pt; }
h4{ font-size:17pt; font-weight:700; margin-bottom:6pt; }

p{ font-size:19pt; line-height:1.5; margin:0 0 13pt; }
.lead{ font-size:22pt; line-height:1.45; color:var(--muted); max-width:56ch; }

.eyebrow{
  font-family:var(--b-font);
  font-size:12.5pt;
  font-weight:600;
  letter-spacing:2.6pt;
  text-transform:uppercase;
  color:var(--accent);
  margin:0 0 16pt;
}
.eyebrow .num{ color:var(--muted); font-weight:500; }

.muted{ color:var(--muted); }
.small{ font-size:15pt; line-height:1.45; }
.note{ font-size:14.5pt; line-height:1.45; color:var(--muted); margin-top:14pt; }

/* ---------- lists ---------- */
ul{ list-style:none; margin:0; padding:0; font-size:19pt; line-height:1.4; }
li{ position:relative; padding-left:24pt; margin:0 0 11pt; }
li:before{
  content:"";
  position:absolute; left:0; top:0.62em;
  width:11pt; height:2pt; background:var(--accent);
}
ul.plain li:before{ content:""; background:var(--line); }
ul.tight li{ margin-bottom:7pt; }

/* ---------- dividers / title ---------- */
.section-divider, .title-slide{
  display:flex; flex-direction:column; justify-content:center;
}
.section-divider .eyebrow{ font-size:14pt; }
.section-divider h1{ font-size:54pt; }
.section-divider .lead{ font-size:24pt; color:var(--ink); }

.title-slide .eyebrow{ margin-bottom:22pt; }
.title-slide h1{ font-size:82pt; letter-spacing:-2pt; margin-bottom:22pt; }
.title-slide .lead{ font-size:25pt; margin-bottom:10pt; }
.title-slide .meta{ font-size:15pt; color:var(--muted); margin-top:6pt; }
.bar{ width:96pt; height:4pt; background:var(--accent); margin:0 0 26pt; border-radius:2pt; }

/* ---------- layout helpers ---------- */
.cols{ display:grid; gap:26pt; align-items:start; }
.cols.c2{ grid-template-columns:repeat(2,1fr); }
.cols.c3{ grid-template-columns:repeat(3,1fr); }
.stack{ display:flex; flex-direction:column; }
.gap{ gap:18pt; }
.spacer{ height:16pt; }

/* ---------- cards ---------- */
.card{
  background:var(--card);
  border:1pt solid var(--line);
  border-radius:9pt;
  padding:15pt 17pt;
}
.card h3{ font-size:19pt; margin-bottom:5pt; }
.card p{ font-size:15pt; line-height:1.4; color:var(--muted); margin:0; }
.card .tag{ font-size:12pt; letter-spacing:1.2pt; text-transform:uppercase; color:var(--accent); font-weight:600; margin:0 0 6pt; }

/* ---------- tables ---------- */
table.min{ width:100%; border-collapse:collapse; }
table.min th{
  font-family:var(--h-font); font-weight:700; text-align:left;
  font-size:15.5pt; padding:9pt 12pt; color:var(--ink);
  border-bottom:2pt solid var(--ink);
}
table.min td{
  font-size:15.5pt; line-height:1.35; padding:9pt 12pt;
  border-bottom:1pt solid var(--line); vertical-align:top;
}
table.min tr:last-child td{ border-bottom:none; }
table.min td.k, table.min th.k{ color:var(--muted); width:22%; }
table.min td code{ font-size:14pt; }

/* ---------- code ---------- */
.reveal code{
  font-family:var(--m-font); font-size:16pt; font-weight:500;
  background:var(--accent-soft); color:var(--accent);
  padding:1.5pt 7pt; border-radius:4pt;
}
.codeblock{
  font-family:var(--m-font); font-size:16pt; line-height:1.5;
  background:var(--card); border:1pt solid var(--line); border-left:3pt solid var(--accent);
  border-radius:0 7pt 7pt 0; padding:14pt 18pt; margin:0 0 14pt;
  white-space:pre-wrap;
}

/* ---------- answer / task ---------- */
.answer{
  margin-top:16pt; padding:11pt 16pt;
  background:var(--accent-soft); border-left:3pt solid var(--accent);
  border-radius:0 7pt 7pt 0;
}
.answer p{ margin:0; font-size:17pt; }
.answer .lbl{ font-size:12pt; letter-spacing:1.6pt; text-transform:uppercase; color:var(--accent); font-weight:600; }

/* ---------- misc ---------- */
.skip{ color:var(--muted); text-decoration:line-through; text-decoration-thickness:1pt; }
.rule{ height:1pt; background:var(--line); border:0; margin:18pt 0; }
.stat{ font-family:var(--h-font); font-weight:800; font-size:38pt; line-height:1; color:var(--accent); margin:0 0 5pt; }
.stat-label{ font-size:14.5pt; color:var(--muted); margin:0; }
.pipeline{ display:flex; flex-wrap:wrap; gap:9pt; align-items:center; margin-top:6pt; }
.chip{
  background:var(--card); border:1pt solid var(--line); border-radius:20pt;
  padding:5pt 13pt; font-size:14.5pt; color:var(--ink);
}
.arrow{ color:var(--accent); font-size:15pt; }
.map-row{ display:grid; grid-template-columns:150pt 1fr; gap:14pt; padding:11pt 0; border-bottom:1pt solid var(--line); }
.map-row:last-child{ border-bottom:none; }
.map-row .m{ font-family:var(--h-font); font-weight:700; font-size:16pt; }
.map-row .steps{ font-size:15.5pt; line-height:1.5; color:var(--ink); }

/* ---------- slide number ---------- */
.reveal .slide-number{
  font-family:var(--b-font); font-size:12pt; color:var(--muted);
  background:transparent; right:24pt; bottom:18pt;
}

/* ---------- pdf export freeze ---------- */
.exporting, .exporting *{ animation:none !important; transition:none !important; }

/* ---------- images ---------- */
.reveal img{ max-width:100%; }
.fig{
  display:block;
  border:1pt solid var(--line);
  border-radius:8pt;
  background:#fff;
}
figure.fig-wrap{ margin:0; }
figure.fig-wrap.center{ display:flex; flex-direction:column; align-items:center; }
.caption{
  font-size:12.5pt; line-height:1.35; color:var(--muted);
  margin:8pt 0 0; max-width:60ch;
}
.card .formula{
  height:56pt; width:auto; max-width:100%; object-fit:contain;
  display:block; margin:0 auto 10pt; background:transparent; border:none;
}

/* ---------- this deck ---------- */
.logo{ background:transparent; border:none; }
.banner{
  margin-top:26pt; padding-top:16pt;
  border-top:1pt solid var(--line);
  text-align:center;
  font-family:var(--h-font); font-weight:700; font-size:22pt; color:var(--ink);
}
.numlist{ list-style:none; counter-reset:step; margin:10pt 0 0; padding:0; }
.numlist li{
  counter-increment:step; position:relative;
  padding-left:58pt; margin:0 0 26pt; font-size:23pt; line-height:1.35;
}
.numlist li:before{
  content:counter(step); position:absolute; left:0; top:-7pt;
  width:auto; height:auto; background:transparent;
  font-family:var(--h-font); font-weight:800; font-size:30pt; color:var(--accent);
}
.wordmark{
  font-family:var(--h-font); font-weight:800;
  font-size:66pt; letter-spacing:-1.5pt; color:var(--accent);
  margin:0 0 30pt;
}
