/* Nord Cool — Research Governance
   Accent: Frost Blue (#5e81ac) + Teal (#8fbcbb)
   Background: Snow Storm (#eceff4)
   Text: Polar Night (#2e3440 headings, #3b4252 body)
   All body text meets WCAG AA (>=4.5:1 on #eceff4)            */

:root {
  --r-heading1-size: 2em;
  --r-heading2-size: 1.5em;
  --r-heading3-size: 1em;
  --r-main-font-size: 42px;
  --r-background-color: #eceff4;
  --r-heading-color: #2e3440;
  --r-main-color: #3b4252;        /* 9.2:1 on #eceff4 — AAA */
  --r-link-color: #4a6d94;        /* darkened frost — 5.1:1 AA */
  --r-link-color-hover: #5e81ac;
  --r-heading-text-transform: none;
  --r-box-shadow: none;
  --nord-accent: #5e81ac;
  --nord-accent-light: #81a1c1;
  --nord-highlight: #88c0d0;
}

/* ---- progress bar ----
   Section colour map uses hard-stop linear gradient (Nord Aurora).
   Breakpoints are slideIndex / (totalSlides - 1); with 65 slides
   (title + 64 top-level) that's N/64.
     Section 1 (intro → Ethicus):                    0      → 18/64 = 28.13%
     Section 2 (Good Enough → Symptom burden):       28.13% → 44/64 = 68.75%
     Section 3 (Bad Death – Family → Carson):        68.75% → 50/64 = 78.13%
     Section 4 (What Are We Doing Locally → End):    78.13% → 100%
   Recalculate if slides are added/removed. Overlay span = Nord
   Snow Storm white: "consumes" the aurora as the talk progresses. */
.reveal .progress {
  height: 15px;
  background-color: #d8dee9;
  background-image: linear-gradient(to right,
    #bf616a 0%,       #bf616a 28.13%,   /* Aurora red    */
    #d08770 28.13%,   #d08770 68.75%,   /* Aurora orange */
    #ebcb8b 68.75%,   #ebcb8b 78.13%,   /* Aurora yellow */
    #a3be8c 78.13%,   #a3be8c 100%);    /* Aurora green  */
}
.reveal .progress span {
  background-color: #eceff4;            /* Nord Snow Storm 3 */
}

/* ---- code blocks ---- */
.reveal pre {
  box-shadow: none;
}

/* ---- emoji display ---- */
.reveal .emoji-display {
  position: absolute;
  right: 30px;
  bottom: 8px;
  font-size: 48px;
  color: var(--nord-accent);
  pointer-events: none;
  z-index: 31;
}

/* ---- footnotes ----
   With reveal.js `center: true`, a <section>'s height is its content
   height, so `bottom: 25px` on an absolutely-positioned footnote lands
   at the bottom of the *content*, not the slide — which puts it mid-
   screen on near-empty slides. Forcing sections that contain a
   footnote to fill the slide canvas (and re-centring in-flow content
   via flex) makes `bottom: 25px` resolve to the true slide bottom in
   the default viewer. Print-pdf keeps working via the YAML script. */
.reveal .slides > section:has(> .footnote),
.reveal .slides > section > section:has(> .footnote) {
  height: 100% !important;
  top: 0 !important;
  display: flex !important;
  flex-direction: column;
  justify-content: center;
}

.reveal .footnote {
  position: absolute;
  left: 30px;
  bottom: 5px;
  font-size: 0.4em;
  color: var(--nord-accent);
  font-style: italic;
  z-index: 200;
  white-space: nowrap;
  max-width: calc(100% - 60px);
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ---- layout helpers ---- */
.left-title {
  position: absolute;
  left: 0;
  width: 45%;
  text-align: left;
  margin-left: 20px;
}

/* ---- highlight / mark ---- */
mark {
  background-color: var(--nord-highlight);
  color: #2e3440;
}

/* ---- lists ---- */
.reveal ul, .reveal ol {
  color: var(--r-main-color);
}

/* ---- blockquotes ---- */
.reveal blockquote {
  border-left: 4px solid var(--nord-accent-light);
  background: rgba(94, 129, 172, 0.06);
  padding: 0.5em 1em;
  font-style: italic;
}

/* ---- strong emphasis ---- */
.reveal strong {
  color: var(--nord-accent);
}
