:root {
  --ntnu-blue: #00509e;
  --ntnu-blue-deep: #003b72;
  --ntnu-blue-light: #cfdaf1;
  --ntnu-blue-pale: #eef4fb;
  --ntnu-orange: #ef8114;
  --ntnu-orange-light: #fdd9b5;
  --ink: #14212e;
  --ink-soft: #4a5a68;
  --paper: #fff;
  --paper-warm: #f7f6f2;
  --paper-soft: #f7fafc;
  --line: #dce3e8;
  --shadow-editorial: 0 1.1rem 3rem rgba(12, 37, 60, .08);
  --reader-scale: 1;
  --reader-measure: 43rem;
  --md-primary-fg-color: var(--ntnu-blue);
  --md-primary-fg-color--light: #2474bd;
  --md-primary-fg-color--dark: var(--ntnu-blue-deep);
  --md-accent-fg-color: var(--ntnu-orange);
  --md-default-fg-color--light: var(--ink-soft);
  --md-typeset-color: var(--ink);
  --md-text-font: "Open Sans", Arial, sans-serif;
}

html[data-reader-size="-1"] { --reader-scale: .92; }
html[data-reader-size="1"] { --reader-scale: 1.08; }
html[data-reader-size="2"] { --reader-scale: 1.16; }
html[data-reader-width="wide"] { --reader-measure: 53rem; }

[data-md-color-scheme="slate"] {
  --ink: #edf4f8;
  --ink-soft: #afbec9;
  --paper: #17212b;
  --paper-warm: #111a23;
  --paper-soft: #131f29;
  --line: #334353;
  --shadow-editorial: 0 1.1rem 3rem rgba(0, 0, 0, .2);
  --ntnu-blue-pale: #182c41;
  --ntnu-blue-light: #294d72;
  --md-default-bg-color: #17212b;
  --md-default-fg-color: #edf4f8;
  --md-default-fg-color--light: var(--ink-soft);
  --md-typeset-color: var(--ink);
  --md-code-bg-color: #111a23;
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  color: var(--ink);
  letter-spacing: normal;
}

::selection {
  background: var(--ntnu-orange-light);
  color: #1b1f23;
}

a, button { -webkit-tap-highlight-color: transparent; }

a:focus-visible,
button:focus-visible {
  outline: 3px solid var(--orange-ink);
  outline-offset: 3px;
}

.md-header {
  background: color-mix(in srgb, var(--paper) 92%, transparent);
  border-bottom: 1px solid color-mix(in srgb, var(--ntnu-blue) 22%, var(--line));
  color: var(--ink);
  box-shadow: inset 0 2px 0 var(--ntnu-blue);
  backdrop-filter: blur(18px);
}

.md-header__title {
  align-items: center;
  display: flex;
  font-weight: 700;
  letter-spacing: -.025em;
}

.md-header__button,
.md-header__topic,
.md-search__icon { color: var(--ink); }

.md-header__button.md-logo img,
.md-header__button.md-logo svg {
  height: 1.75rem;
  width: 1.75rem;
}

.md-tabs {
  background: color-mix(in srgb, var(--paper) 96%, transparent);
  border-bottom: 1px solid var(--line);
  color: var(--ink);
}

.md-tabs__link {
  font-size: .69rem;
  font-weight: 650;
  letter-spacing: .015em;
  opacity: .68;
}

.md-tabs__link--active,
.md-tabs__link:hover { color: var(--ntnu-blue); opacity: 1; }

.md-search__form {
  background: color-mix(in srgb, var(--ink) 6%, transparent);
  border: 1px solid color-mix(in srgb, var(--ink) 5%, transparent);
  border-radius: 999px;
}

.md-search__input::placeholder { color: var(--ink-soft); opacity: 1; }

.md-sidebar--primary .md-sidebar__scrollwrap {
  background: linear-gradient(180deg, color-mix(in srgb, var(--ntnu-blue-pale) 36%, var(--paper)) 0, var(--paper) 9rem);
  border-right: 1px solid var(--line);
  padding-right: .7rem;
  scrollbar-color: color-mix(in srgb, var(--ntnu-blue) 32%, transparent) transparent;
  scrollbar-width: thin;
}

.md-nav--primary > .md-nav__list {
  padding-bottom: 2rem;
}

.md-nav--primary > .md-nav__title .md-logo { display: none; }

.md-nav--primary .md-nav__link {
  border-radius: .42rem;
  margin-top: .1rem;
  padding: .42rem .5rem;
  transition: background-color .16s ease, box-shadow .16s ease, color .16s ease, transform .16s ease;
}

.md-nav--primary .md-nav__link:hover {
  background: var(--ntnu-blue-pale);
  color: var(--ntnu-blue);
  transform: translateX(2px);
}

.md-nav--primary > .md-nav__list > .md-nav__item > .md-nav__link,
.md-nav--primary > .md-nav__list > .md-nav__item > .md-nav__container > .md-nav__link {
  font-size: .68rem;
  font-weight: 750;
}

.md-nav--primary .md-nav[data-md-level="1"] {
  border-left: 1px solid color-mix(in srgb, var(--ntnu-blue) 28%, var(--line));
  margin: .35rem 0 .65rem .62rem;
  padding-left: .45rem;
}

.md-nav--primary .md-nav[data-md-level="1"] .md-nav__link {
  color: var(--ink-soft);
  font-size: .59rem;
  line-height: 1.38;
  padding: .36rem .45rem;
}

.md-nav--primary .md-nav[data-md-level="1"] .md-nav__link:hover {
  color: var(--ntnu-blue);
}

.md-nav__title,
.md-nav__link { letter-spacing: -.01em; }

.md-nav__link { line-height: 1.45; }

.md-nav__link--active {
  background: var(--ntnu-blue-pale);
  box-shadow: inset 3px 0 0 var(--ntnu-orange);
  color: var(--ntnu-blue) !important;
  font-weight: 700;
}

.md-typeset {
  font-size: .78rem;
  line-height: 1.72;
}

.md-typeset h1,
.md-typeset h2,
.md-typeset h3 {
  color: var(--ink);
  font-weight: 700;
  letter-spacing: -.035em;
}

.md-typeset h1 { font-size: 2.25rem; line-height: 1.08; }
.md-typeset h2 { font-size: 1.55rem; line-height: 1.18; margin-top: 2.9em; }
.md-typeset h3 { font-size: 1.05rem; line-height: 1.32; }

.md-typeset h2[id]::before,
.md-typeset h3[id]::before { display: block; height: 5rem; margin-top: -5rem; content: ""; }

.md-typeset a { color: var(--ntnu-blue); }

.md-typeset code {
  border: 1px solid color-mix(in srgb, var(--line) 70%, transparent);
  border-radius: .3rem;
}

.md-typeset table:not([class]) {
  border: 1px solid var(--line);
  border-radius: .55rem;
  box-shadow: none;
}

.md-footer {
  background: var(--paper-warm);
  border-top: 1px solid var(--line);
  color: var(--ink);
}

.md-footer-meta { background: var(--ink); }
.md-footer__title { color: var(--ink); }
.md-footer__direction { color: var(--ink-soft); opacity: 1; }

.eyebrow,
.section-index {
  color: var(--ntnu-blue);
  font-size: .65rem;
  font-weight: 750;
  letter-spacing: .115em;
  margin: 0 0 1rem;
  text-transform: uppercase;
}

.button {
  align-items: center;
  border-radius: 999px;
  display: inline-flex;
  font-size: .76rem;
  font-weight: 700;
  gap: .8rem;
  justify-content: center;
  min-height: 3.15rem;
  padding: .7rem 1.35rem;
  text-decoration: none;
  transition: transform .2s ease, background .2s ease, color .2s ease;
}

.button:hover { transform: translateY(-2px); }

.button--primary { background: var(--ntnu-blue); color: #fff !important; }
.button--primary:hover { background: var(--ntnu-blue-deep); }
.button--quiet { border: 1px solid var(--line); color: var(--ink) !important; }
.button--quiet:hover { background: var(--paper-warm); }
.button--white { background: #fff; color: var(--ntnu-blue-deep) !important; }

.text-link {
  align-items: center;
  border-bottom: 1px solid color-mix(in srgb, var(--ntnu-blue) 35%, transparent);
  display: inline-flex;
  font-size: .75rem;
  font-weight: 700;
  gap: .55rem;
  padding-bottom: .16rem;
  text-decoration: none;
}

/* Homepage */

body.is-home .md-main__inner {
  margin: 0;
  max-width: none;
}

body.is-home .md-content { max-width: none; }
body.is-home .md-content__inner { margin: 0; padding: 0; }
body.is-home .md-content__inner::before { display: none; }

.compendium-home { overflow: hidden; }

.compendium-home .hero {
  background:
    radial-gradient(circle at 77% 32%, color-mix(in srgb, var(--ntnu-blue-light) 64%, transparent) 0, transparent 32%),
    linear-gradient(145deg, var(--paper) 30%, var(--ntnu-blue-pale) 100%);
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(23rem, .95fr);
  min-height: calc(100vh - 6rem);
  padding: clamp(4.5rem, 8vw, 8rem) max(1.25rem, calc((100vw - 76rem) / 2));
  position: relative;
}

.hero__copy {
  align-self: center;
  max-width: 42rem;
  padding: 2rem 2rem 3rem 0;
  position: relative;
  z-index: 2;
}

.hero h1 {
  color: var(--ink);
  font-size: clamp(3.25rem, 6.5vw, 6.2rem);
  font-weight: 750;
  letter-spacing: -.07em;
  line-height: .94;
  margin: 0;
}

.hero h1 span { color: var(--ntnu-blue); }

.hero__lead {
  color: var(--ink-soft);
  font-size: clamp(1rem, 1.5vw, 1.25rem);
  line-height: 1.55;
  margin: 2rem 0 0;
  max-width: 34rem;
}

.hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: .75rem;
  margin-top: 2.25rem;
}

.hero__meta {
  color: var(--ink-soft);
  display: flex;
  flex-wrap: wrap;
  font-size: .62rem;
  font-weight: 650;
  gap: 1.8rem;
  letter-spacing: .045em;
  margin-top: 4rem;
  text-transform: uppercase;
}

.hero__meta span + span { position: relative; }
.hero__meta span + span::before { content: ""; background: var(--ntnu-orange); border-radius: 50%; height: 4px; left: -.95rem; position: absolute; top: .44rem; width: 4px; }

.hero__visual {
  align-self: stretch;
  min-height: 36rem;
  position: relative;
}

.hero-rail {
  bottom: -8rem;
  color: var(--ntnu-blue);
  height: calc(100% + 9rem);
  left: 8%;
  position: absolute;
  width: 88%;
}

.route-card {
  background: color-mix(in srgb, var(--paper) 82%, transparent);
  border: 1px solid color-mix(in srgb, var(--paper) 80%, var(--line));
  border-radius: .75rem;
  box-shadow: 0 1.2rem 3rem rgba(0, 47, 91, .12);
  display: flex;
  flex-direction: column;
  padding: 1rem 1.15rem;
  position: absolute;
  width: 8.7rem;
  z-index: 2;
}

.route-card span { color: var(--ntnu-orange); font-size: .61rem; font-weight: 750; letter-spacing: .08em; }
.route-card b { color: var(--ink); font-size: .75rem; margin-top: .25rem; }
.route-card--one { left: 6%; top: 52%; transform: rotate(-4deg); }
.route-card--two { right: 2%; top: 25%; transform: rotate(3deg); }
.route-card--three { right: 16%; top: 68%; transform: rotate(-2deg); }

.hero__annotation {
  color: var(--ink-soft);
  font-size: .64rem;
  left: 7%;
  line-height: 1.45;
  position: absolute;
  top: 27%;
}

.hero__annotation strong { color: var(--ntnu-blue); }

.dedication {
  align-items: center;
  background: var(--paper-warm);
  display: grid;
  gap: 2rem;
  grid-template-columns: 1fr auto 1fr;
  padding: 4.25rem max(1.25rem, calc((100vw - 76rem) / 2));
  text-align: center;
}

.dedication__line { background: var(--line); height: 1px; }
.dedication p { color: var(--ink-soft); font-size: .61rem; letter-spacing: .1em; margin: 0 0 .45rem; text-transform: uppercase; }
.dedication h2 { font-size: clamp(1.2rem, 2.2vw, 1.75rem); letter-spacing: -.03em; margin: 0; }
.dedication h2 i { color: var(--ntnu-orange); font-family: Georgia, serif; font-weight: 400; padding: 0 .35em; }

.home-section {
  margin: 0 auto;
  max-width: 76rem;
  padding: clamp(5rem, 9vw, 8.5rem) 1.25rem;
}

.home-section--intro {
  display: grid;
  gap: clamp(2.5rem, 7vw, 8rem);
  grid-template-columns: .9fr 1.1fr;
}

.home-section h2 {
  color: var(--ink);
  font-size: clamp(2.2rem, 4vw, 3.75rem);
  letter-spacing: -.055em;
  line-height: 1.03;
  margin: 0;
}

.intro-copy { align-self: end; max-width: 34rem; }
.intro-copy p { color: var(--ink-soft); }
.intro-copy .large-copy { color: var(--ink); font-size: clamp(1.05rem, 1.8vw, 1.35rem); line-height: 1.55; }

.chapter-preview { border-top: 1px solid var(--line); }

.section-heading {
  align-items: end;
  display: flex;
  justify-content: space-between;
  margin-bottom: 3rem;
}

.chapter-preview__grid {
  display: grid;
  gap: 1rem;
  grid-template-columns: repeat(12, 1fr);
}

.feature-card {
  border-radius: .95rem;
  display: grid;
  grid-template-columns: 1fr auto;
  min-height: 22rem;
  overflow: hidden;
  padding: clamp(1.4rem, 3vw, 2.25rem);
  position: relative;
  text-decoration: none;
  transition: transform .25s ease, box-shadow .25s ease;
}

.feature-card:hover { box-shadow: 0 1.4rem 3rem rgba(12, 37, 60, .15); transform: translateY(-5px); }
.feature-card:nth-child(1), .feature-card:nth-child(4) { grid-column: span 7; }
.feature-card:nth-child(2), .feature-card:nth-child(3) { grid-column: span 5; }
.feature-card__number { font-size: 3.4rem; font-weight: 250; letter-spacing: -.06em; opacity: .74; }
.feature-card__group { font-size: .6rem; font-weight: 750; letter-spacing: .11em; padding-top: .65rem; text-transform: uppercase; }
.feature-card h3 { align-self: end; font-size: clamp(1.55rem, 2.8vw, 2.45rem); grid-column: 1 / -1; line-height: 1.05; margin: 4.2rem 0 .75rem; max-width: 27rem; }
.feature-card p { align-self: start; font-size: .75rem; grid-column: 1 / -1; line-height: 1.6; margin: 0; max-width: 25rem; opacity: .8; }
.feature-card__arrow { bottom: 1.7rem; font-size: 1.5rem; position: absolute; right: 1.8rem; }
.feature-card--blue { background: var(--ntnu-blue); color: #fff !important; }
.feature-card--orange { background: var(--ntnu-orange-light); color: #442e23 !important; }
.feature-card--dark { background: #14212e; color: #fff !important; }
.feature-card--light { background: var(--ntnu-blue-pale); color: var(--ink) !important; }

.reader-promise {
  border-top: 1px solid var(--line);
  display: grid;
  gap: clamp(3rem, 8vw, 9rem);
  grid-template-columns: 1fr 1fr;
}

.reader-promise__copy p:last-child { color: var(--ink-soft); max-width: 29rem; }
.reader-promise__list { border-top: 1px solid var(--line); }
.reader-promise__list div { align-items: center; border-bottom: 1px solid var(--line); display: grid; gap: 1rem; grid-template-columns: 2rem 1fr; padding: 1.25rem 0; }
.reader-promise__list strong { color: var(--ntnu-orange); font-size: .62rem; }
.reader-promise__list span { font-size: .79rem; font-weight: 650; }

.home-cta {
  background: var(--ntnu-blue);
  color: #fff;
  padding: clamp(5rem, 10vw, 9rem) max(1.25rem, calc((100vw - 76rem) / 2));
}

.home-cta > p { font-size: .64rem; letter-spacing: .1em; text-transform: uppercase; }
.home-cta h2 { color: #fff; font-size: clamp(2.5rem, 5vw, 4.8rem); letter-spacing: -.06em; line-height: .98; margin: 1rem 0 2.5rem; }
.home-cta > div { align-items: center; display: flex; flex-wrap: wrap; gap: 1.5rem; }
.home-cta > div > a:last-child { color: #fff; font-size: .75rem; font-weight: 700; }

/* Editorial homepage */

.home-intro-v2 {
  background:
    linear-gradient(112deg,
      var(--paper) 0 70%,
      color-mix(in srgb, var(--ntnu-blue-pale) 64%, var(--paper)) 70% 91%,
      color-mix(in srgb, var(--ntnu-orange-light) 38%, var(--paper)) 91% 100%);
  border-bottom: 1px solid var(--line);
  padding: clamp(5rem, 10vw, 9rem) max(1.25rem, calc((100vw - 76rem) / 2));
}

.home-title { max-width: 64rem; }
.home-title::after {
  background: linear-gradient(90deg, var(--ntnu-blue) 0 5.5rem, var(--ntnu-orange) 5.5rem 7rem);
  border-radius: 999px;
  content: "";
  display: block;
  height: 4px;
  margin-top: 2.6rem;
  width: 7rem;
}
.home-title__edition { color: var(--ntnu-blue); font-size: .64rem; font-weight: 750; letter-spacing: .13em; margin: 0 0 1.4rem; text-transform: uppercase; }
.home-title h1 { color: var(--ink); font-size: clamp(3.7rem, 8.5vw, 7.6rem); font-weight: 750; letter-spacing: -.075em; line-height: .88; margin: 0; }
.home-title__byline { align-items: center; color: var(--ink-soft); display: flex; font-size: .78rem; font-weight: 700; gap: .7rem; margin: 2.2rem 0 0; }
.home-title__byline::before { background: var(--ntnu-orange); content: ""; height: 2px; width: 2.8rem; }

.home-podcasts-v2 {
  margin: 0 auto;
  max-width: 76rem;
  padding: clamp(5rem, 9vw, 8rem) 1.25rem;
}

.home-foreword-v2 { margin-top: clamp(4.5rem, 8vw, 7rem); max-width: 76rem; }
.home-foreword-v2__heading h2 { color: var(--ink); font-size: clamp(2rem, 3.5vw, 3.2rem); letter-spacing: -.055em; line-height: 1; margin: 0; }

.home-section-heading-v2 { max-width: 51rem; }
.home-section-heading-v2 > p,
.home-section-heading-v2--row > div > p,
.home-contact-v2__intro > p {
  color: var(--ntnu-blue);
  font-size: .62rem;
  font-weight: 750;
  letter-spacing: .12em;
  margin: 0 0 1rem;
  text-transform: uppercase;
}

.home-section-heading-v2 h2,
.home-contact-v2 h2 {
  color: var(--ink);
  font-size: clamp(2.4rem, 5vw, 4.5rem);
  letter-spacing: -.06em;
  line-height: .98;
  margin: 0;
}

.home-foreword-v2__body {
  border-top: 1px solid var(--line);
  display: grid;
  grid-template-columns: minmax(0, 45rem);
  margin-top: 1.5rem;
  padding-top: 2.25rem;
}

.home-foreword-v2__text { max-width: 45rem; }
.home-foreword-v2__text > p { color: var(--ink-soft); font-size: .79rem; line-height: 1.78; }
.home-foreword-v2__text > p:first-child { color: var(--ink); font-size: .87rem; }
.home-foreword-v2__signature { border-left: 3px solid var(--ntnu-orange); display: flex; flex-direction: column; margin: 2.4rem 0 0 !important; padding-left: 1rem; }
.home-foreword-v2__signature strong { color: var(--ink); font-size: .84rem; }
.home-foreword-v2__signature span { font-size: .66rem; line-height: 1.55; }

.home-dedication-v2 {
  margin-top: 2rem;
  padding-top: 0;
  text-align: center;
}

.home-dedication-v2 strong { color: var(--ink-soft); font-family: Georgia, serif; font-size: .72rem; }
.home-dedication-v2 + .home-foreword-v2__signature { margin-top: 1.5rem !important; }

.home-chapters-v2 {
  background: var(--paper-warm);
  border-bottom: 1px solid var(--line);
  border-top: 1px solid var(--line);
  padding: clamp(5rem, 9vw, 8rem) max(1.25rem, calc((100vw - 76rem) / 2));
  padding-top: clamp(4rem, 7vw, 6rem);
}

.home-section-heading-v2--row { align-items: end; display: flex; justify-content: space-between; max-width: 76rem; }
.home-section-heading-v2--row > span { color: var(--ink-soft); font-size: .69rem; margin-bottom: .35rem; }

.home-chapter-grid-v2 {
  display: grid;
  gap: .75rem;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-top: 3rem;
  max-width: 76rem;
}

.home-chapter-card-v2 {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: .65rem;
  color: var(--ink) !important;
  display: grid;
  grid-template-columns: 1fr auto;
  min-height: 14.5rem;
  overflow: hidden;
  padding: 1.25rem 1.3rem;
  position: relative;
  text-decoration: none;
  transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}

.home-chapter-card-v2::before {
  background: var(--card-accent, var(--ntnu-blue));
  content: "";
  height: 4px;
  left: 0;
  position: absolute;
  right: 0;
  top: 0;
}

.home-chapter-card-v2:nth-child(-n+4) { --card-accent: var(--ntnu-blue); }
.home-chapter-card-v2:nth-child(n+5):nth-child(-n+10) { --card-accent: var(--ntnu-orange); }
.home-chapter-card-v2:nth-child(n+11):nth-child(-n+14) { --card-accent: var(--ntnu-blue-deep); }
.home-chapter-card-v2:nth-child(n+15) { --card-accent: color-mix(in srgb, var(--ntnu-orange) 58%, var(--ntnu-blue)); }

.home-chapter-card-v2:hover { border-color: color-mix(in srgb, var(--ntnu-blue) 42%, var(--line)); box-shadow: 0 .8rem 2rem rgba(12, 37, 60, .09); transform: translateY(-3px); }
.home-chapter-card-v2 > span { color: var(--ntnu-blue-light); font-size: 2.8rem; font-weight: 300; letter-spacing: -.07em; line-height: .9; }
.home-chapter-card-v2 > small { color: var(--blue-ink); font-size: .54rem; font-weight: 750; letter-spacing: .075em; opacity: 1; padding-top: .35rem; text-transform: uppercase; }
.home-chapter-card-v2 h3 { align-self: end; font-size: 1.05rem; grid-column: 1 / -1; letter-spacing: -.035em; line-height: 1.2; margin: 2.4rem 2rem .55rem 0; }
.home-chapter-card-v2 p { color: var(--ink-soft); font-size: .63rem; grid-column: 1 / -1; line-height: 1.52; margin: 0 1.7rem 0 0; }
.home-chapter-card-v2 b { bottom: 1.15rem; color: var(--ntnu-orange); font-size: 1rem; font-weight: 500; position: absolute; right: 1.2rem; transition: transform .2s ease; }
.home-chapter-card-v2:hover b { transform: translateX(.2rem); }

.home-podcasts-v2__intro { color: var(--ink-soft); font-size: .76rem; line-height: 1.7; margin-top: 2rem; max-width: 44rem; }
.home-podcasts-v2__intro p:last-child { margin-bottom: 0; }

.home-podcast-grid-v2 { display: grid; gap: 1rem; grid-template-columns: 1fr 1fr; margin-top: 3rem; }
.home-podcast-card-v2 { align-items: center; background: var(--paper-warm); border: 1px solid var(--line); border-radius: .75rem; display: grid; gap: 1rem; grid-template-columns: 8.5rem minmax(0, 1fr) 6.5rem; padding: .85rem; }
.home-podcast-card-v2__cover { border-radius: .5rem; display: block; overflow: hidden; }
.home-podcast-card-v2__cover img { aspect-ratio: 1; display: block; height: auto; object-fit: cover; width: 100%; }
.home-podcast-card-v2__copy > span { color: var(--ntnu-orange); display: inline-block; font-size: .54rem; font-weight: 750; letter-spacing: .08em; text-transform: uppercase; white-space: nowrap; }
.home-podcast-card-v2__copy h3 { font-size: 1.15rem; margin: .35rem 0 .45rem; }
.home-podcast-card-v2__copy h3 a { color: var(--ink); text-decoration: none; }
.home-podcast-card-v2__copy p { color: var(--ink-soft); font-size: .62rem; line-height: 1.5; margin: 0; }
.home-podcast-card-v2__qr { align-items: center; color: var(--ink-soft) !important; display: flex; flex-direction: column; font-size: .49rem; gap: .4rem; line-height: 1.25; text-align: center; text-decoration: none; }
.home-podcast-card-v2__qr img { background: #fff; border: 1px solid var(--line); border-radius: .35rem; display: block; height: auto; padding: .28rem; width: 100%; }

.home-contact-v2 {
  background: var(--ntnu-blue-deep);
  color: #fff;
  display: grid;
  gap: clamp(3rem, 8vw, 8rem);
  grid-template-columns: .85fr 1.15fr;
  padding: clamp(5rem, 9vw, 8rem) max(1.25rem, calc((100vw - 76rem) / 2));
}

.home-contact-v2__intro { display: flex; flex-direction: column; }
.home-contact-v2__intro > p { color: var(--ntnu-orange-light); }
.home-contact-v2 h2 { color: #fff; margin-bottom: 1.2rem; }
.home-contact-v2__intro > span { color: rgba(255, 255, 255, .72); font-size: .7rem; line-height: 1.55; }
.home-contact-v2__details { border-top: 1px solid rgba(255, 255, 255, .28); display: grid; font-style: normal; grid-template-columns: 1fr 1fr; }
.home-contact-v2__details > * { border-bottom: 1px solid rgba(255, 255, 255, .28); color: #fff !important; display: flex; flex-direction: column; gap: .25rem; min-height: 6rem; padding: 1.1rem 1.2rem 1.1rem 0; text-decoration: none; }
.home-contact-v2__details > :nth-child(even) { border-left: 1px solid rgba(255, 255, 255, .28); padding-left: 1.2rem; }
.home-contact-v2__details small { color: rgba(255, 255, 255, .78); font-size: .53rem; font-weight: 700; letter-spacing: .08em; opacity: 1; text-transform: uppercase; }
.home-contact-v2__details strong { color: #fff; font-size: .69rem; font-weight: 650; line-height: 1.45; }
.home-contact-v2__details a:hover strong { color: var(--ntnu-orange-light); }

/* Albert Lau profile and graphical CV */

.cv-page { margin: 0 auto; max-width: 68rem; padding: 2.5rem 0 5rem; }

.cv-hero {
  align-items: center;
  display: grid;
  gap: clamp(2.5rem, 7vw, 6rem);
  grid-template-columns: minmax(15rem, 21rem) minmax(0, 1fr);
  min-height: 34rem;
  padding: 1rem 0 4rem;
}

.cv-portrait { margin: 0; position: relative; }
.cv-portrait::before { background: var(--ntnu-blue); border-radius: .9rem; content: ""; inset: 1rem -1rem -1rem 1rem; position: absolute; z-index: -1; }
.cv-portrait img { aspect-ratio: 4 / 5; background: #fff; border: 1px solid var(--line); border-radius: .9rem; display: block; object-fit: cover; object-position: 50% 50%; width: 100%; }
.cv-portrait figcaption { color: rgba(255, 255, 255, .78); font-size: .49rem; margin-top: 1.5rem; padding-right: .1rem; text-align: right; }

.cv-kicker { color: var(--ntnu-blue); font-size: .58rem; font-weight: 800; letter-spacing: .12em; margin: 0 0 1rem; text-transform: uppercase; }
.cv-kicker--spaced { margin-top: 2.2rem; }
.cv-hero__copy h1 { font-size: clamp(3rem, 6.2vw, 5.8rem); letter-spacing: -.07em; line-height: .92; margin: 0; }
.cv-hero__role { border-left: 3px solid var(--ntnu-orange); color: var(--ink); font-size: .78rem; font-weight: 700; line-height: 1.55; margin: 2rem 0 0; padding-left: 1rem; }
.cv-hero__intro { color: var(--ink-soft); font-size: .78rem; line-height: 1.75; margin: 1.5rem 0 0; max-width: 34rem; }

.cv-actions { display: flex; flex-wrap: wrap; gap: .55rem; margin-top: 2rem; }
.cv-button { align-items: center; border: 1px solid var(--line); border-radius: 999px; color: var(--ink) !important; display: inline-flex; font-size: .59rem; font-weight: 750; gap: .35rem; min-height: 2.35rem; padding: .55rem .9rem; text-decoration: none; }
.cv-button:hover { background: var(--ntnu-blue-pale); border-color: color-mix(in srgb, var(--ntnu-blue) 38%, var(--line)); }
.cv-button--primary { background: var(--ntnu-blue); border-color: var(--ntnu-blue); color: #fff !important; }
.cv-button--primary:hover { background: var(--ntnu-blue-deep); color: #fff !important; }

.cv-metrics { border-bottom: 1px solid var(--line); border-top: 1px solid var(--line); display: grid; grid-template-columns: repeat(4, 1fr); }
.cv-metrics > div { display: flex; flex-direction: column; min-height: 8.5rem; padding: 1.35rem 1.25rem 1.35rem 0; }
.cv-metrics > div + div { border-left: 1px solid var(--line); padding-left: 1.25rem; }
.cv-metrics strong { color: var(--ntnu-blue); font-size: 1.45rem; letter-spacing: -.055em; }
.cv-metrics span { color: var(--ink-soft); font-size: .57rem; line-height: 1.5; margin-top: auto; max-width: 9rem; }

.cv-section { padding: clamp(4.5rem, 8vw, 7rem) 0; }
.cv-about { display: grid; gap: clamp(3rem, 8vw, 8rem); grid-template-columns: .9fr 1.1fr; }
.cv-section h2 { font-size: clamp(2.4rem, 4.8vw, 4.5rem); letter-spacing: -.06em; line-height: .98; margin: 0; }
.cv-about__copy > p { color: var(--ink-soft); font-size: .76rem; line-height: 1.8; }
.cv-about__copy > p:first-child { color: var(--ink); font-size: .83rem; }
.cv-tags { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: 1.7rem; }
.cv-tags span { background: var(--ntnu-blue-pale); border: 1px solid color-mix(in srgb, var(--ntnu-blue) 18%, var(--line)); border-radius: 999px; color: var(--ntnu-blue); font-size: .52rem; font-weight: 700; padding: .42rem .66rem; }

.cv-section-heading { margin-bottom: 2.8rem; }
.cv-section-heading--row { align-items: end; display: flex; justify-content: space-between; }
.cv-section-heading--row > a { color: var(--ntnu-blue); font-size: .58rem; font-weight: 700; margin-bottom: .35rem; text-decoration: none; }

.cv-achievements { border-top: 1px solid var(--line); }
.cv-achievement-grid { display: grid; gap: .7rem; grid-template-columns: repeat(4, 1fr); }
.cv-achievement-grid article { background: var(--paper-warm); border: 1px solid var(--line); border-radius: .7rem; min-height: 15.5rem; padding: 1.2rem; }
.cv-achievement-grid article > span { color: var(--ntnu-orange); font-size: .55rem; font-weight: 800; }
.cv-achievement-grid h3 { font-size: 1rem; line-height: 1.2; margin: 4.5rem 0 .7rem; }
.cv-achievement-grid p { color: var(--ink-soft); font-size: .61rem; line-height: 1.6; margin: 0; }

.cv-timeline-section { border-top: 1px solid var(--line); }
.cv-timeline-layout { display: grid; gap: clamp(2.5rem, 7vw, 6rem); grid-template-columns: minmax(0, 1.45fr) minmax(14rem, .72fr); }
.cv-timeline article { border-top: 1px solid var(--line); display: grid; gap: 1.2rem; grid-template-columns: 6.3rem 1fr; padding: 1.2rem 0; }
.cv-timeline time { color: var(--ntnu-blue); font-size: .55rem; font-weight: 800; }
.cv-timeline h3 { font-size: .84rem; margin: 0 0 .35rem; }
.cv-timeline p { color: var(--ink-soft); font-size: .61rem; line-height: 1.58; margin: 0; }
.cv-education { background: var(--ntnu-blue-deep); border-radius: .8rem; color: #fff; padding: 1.5rem; }
.cv-education .cv-kicker { color: var(--ntnu-orange-light); }
.cv-education > div:not(.cv-language-list) { border-top: 1px solid rgba(255, 255, 255, .23); display: flex; flex-direction: column; padding: .95rem 0; }
.cv-education strong { color: #fff; font-size: .79rem; }
.cv-education span { color: rgba(255, 255, 255, .74); font-size: .56rem; }
.cv-education small { color: rgba(255, 255, 255, .64); font-size: .53rem; line-height: 1.45; margin-top: .3rem; }
.cv-language-list { display: flex; flex-wrap: wrap; gap: .4rem; }
.cv-language-list span { border: 1px solid rgba(255, 255, 255, .28); border-radius: 999px; color: #fff; padding: .35rem .55rem; }

.cv-publications { border-top: 1px solid var(--line); }
.cv-publication-list { border-top: 1px solid var(--line); display: grid; grid-template-columns: 1fr 1fr; }
.cv-publication-list > a { color: var(--ink) !important; display: grid; grid-template-columns: 1fr auto; min-height: 14.5rem; padding: 1.25rem 1.4rem 1.25rem 0; position: relative; text-decoration: none; }
.cv-publication-list > a:nth-child(even) { border-left: 1px solid var(--line); padding-left: 1.4rem; }
.cv-publication-list > a:nth-child(n+3) { border-top: 1px solid var(--line); }
.cv-publication-list > a:hover h3 { color: var(--ntnu-blue); }
.cv-publication-list span { color: var(--ntnu-orange); font-size: .5rem; font-weight: 800; grid-column: 1 / -1; letter-spacing: .06em; text-transform: uppercase; }
.cv-publication-list h3 { font-size: .88rem; grid-column: 1 / -1; line-height: 1.32; margin: 2rem 2rem .7rem 0; transition: color .16s ease; }
.cv-publication-list p { align-self: end; color: var(--ink-soft); font-size: .55rem; grid-column: 1 / -1; margin: 0 2rem 0 0; }
.cv-publication-list b { bottom: 1.2rem; color: var(--ntnu-blue); font-size: .49rem; position: absolute; right: 1.2rem; }
.cv-publications__footer { align-items: center; border-top: 1px solid var(--line); display: flex; justify-content: space-between; padding-top: 1.2rem; }
.cv-publications__footer p { color: var(--ink-soft); font-size: .52rem; margin: 0; }
.cv-publications__footer div { display: flex; gap: 1rem; }
.cv-publications__footer a { color: var(--ntnu-blue); font-size: .52rem; font-weight: 700; text-decoration: none; }

/* Front matter */

.frontmatter-page { margin: 0 auto; max-width: 55rem; }

.frontmatter-hero {
  border-bottom: 1px solid var(--line);
  padding: 2.5rem 0 3rem;
}

.frontmatter-hero h1 {
  font-size: clamp(3.6rem, 9vw, 6.8rem);
  letter-spacing: -.07em;
  margin: 0;
}

.frontmatter-hero__deck { color: var(--ink-soft); font-size: 1.15rem; margin: 1.25rem 0 0; }

.foreword-grid {
  display: grid;
  gap: 3.5rem;
  grid-template-columns: 9rem minmax(0, 1fr);
  padding: 4rem 0;
}

.foreword-grid aside { color: var(--ink-soft); font-size: .67rem; line-height: 1.55; }
.drop-number { color: var(--ntnu-blue); display: block; font-size: 2.3rem; font-weight: 700; letter-spacing: -.05em; }

.prose {
  font-size: calc(.82rem * var(--reader-scale));
  line-height: 1.78;
}

.prose--foreword p:first-child::first-letter {
  color: var(--ntnu-blue);
  float: left;
  font-size: 3.55rem;
  font-weight: 700;
  line-height: .82;
  padding: .13em .12em 0 0;
}

.signature { border-left: 3px solid var(--ntnu-orange); display: flex; flex-direction: column; font-size: .71rem; line-height: 1.55; margin-top: 3rem; padding-left: 1rem; }
.signature strong { font-size: .86rem; }

.dedication-card {
  background: var(--ntnu-blue-pale);
  border-radius: .9rem;
  margin: 1rem 0 4rem;
  padding: 5rem 2rem;
  text-align: center;
}

.dedication-card p { color: var(--ink-soft); font-size: .62rem; letter-spacing: .1em; text-transform: uppercase; }
.dedication-card h2 { font-size: clamp(1.8rem, 4vw, 3rem); margin: .5rem 0 0; }
.dedication-card h2 i { color: var(--ntnu-orange); font-family: Georgia, serif; font-weight: 400; }

.continue-card {
  align-items: center;
  border: 1px solid var(--line);
  border-radius: .75rem;
  display: grid;
  gap: 1.25rem;
  grid-template-columns: 3rem 1fr 3rem;
  margin-bottom: 3rem;
  padding: 1.25rem 1.5rem;
}

.continue-card > span { color: var(--ntnu-orange); font-size: .61rem; font-weight: 750; letter-spacing: .08em; text-transform: uppercase; }
.continue-card strong { font-size: .86rem; }
.continue-card p { color: var(--ink-soft); font-size: .67rem; margin: .2rem 0 0; }
.continue-card > a { align-items: center; background: var(--ntnu-blue); border-radius: 50%; color: #fff; display: flex; height: 2.5rem; justify-content: center; text-decoration: none; width: 2.5rem; }

/* Chapter library */

.library-hero { border-bottom: 1px solid var(--line); padding: 2.25rem 0 4rem; }
.library-hero h1 { font-size: clamp(3rem, 7vw, 5.4rem); letter-spacing: -.065em; line-height: .97; margin: 0; }
.library-hero > p:last-child { color: var(--ink-soft); font-size: 1rem; margin: 1.5rem 0 0; max-width: 35rem; }
.library-group { padding: 3.75rem 0 1rem; }
.library-group__heading { align-items: center; display: flex; justify-content: space-between; margin-bottom: 1.2rem; }
.library-group__heading p { color: var(--ink); font-size: 1.05rem; font-weight: 700; margin: 0; }
.library-group__heading span { color: var(--ink-soft); font-size: .61rem; letter-spacing: .08em; text-transform: uppercase; }
.library-grid { border-top: 1px solid var(--line); }

.library-card {
  align-items: start;
  border-bottom: 1px solid var(--line);
  color: var(--ink) !important;
  display: grid;
  gap: 1.5rem;
  grid-template-columns: 3.2rem 1fr 2rem;
  padding: 1.4rem .5rem;
  text-decoration: none;
  transition: background .18s ease, padding .18s ease;
}

.library-card:hover { background: var(--ntnu-blue-pale); padding-left: 1rem; padding-right: 1rem; }
.library-card__number { color: var(--ntnu-orange); font-size: .7rem; font-weight: 750; padding-top: .18rem; }
.library-card h3 { font-size: .89rem; margin: 0 0 .22rem; }
.library-card p { color: var(--ink-soft); font-size: .67rem; line-height: 1.5; margin: 0; }
.library-card__arrow { font-size: 1rem; justify-self: end; }

.questions-note {
  background: var(--ink);
  border-radius: .8rem;
  color: var(--paper);
  display: grid;
  gap: 3rem;
  grid-template-columns: 1fr 1.25fr;
  margin: 5rem 0 2rem;
  padding: clamp(1.6rem, 4vw, 3rem);
}

[data-md-color-scheme="slate"] .questions-note { background: #eef4f8; color: #14212e; }
.questions-note span, .questions-note strong { display: block; font-size: 1.25rem; line-height: 1.2; }
.questions-note strong { color: var(--ntnu-orange); }
.questions-note p { align-self: center; font-size: .72rem; line-height: 1.6; margin: 0; opacity: .78; }

/* Chapter reader */

.chapter-shell {
  margin: 0 auto;
  max-width: var(--reader-measure);
  padding-bottom: 3rem;
  position: relative;
  transition: max-width .2s ease;
}

body:has(.chapter-shell) .md-main {
  background:
    linear-gradient(90deg, color-mix(in srgb, var(--ntnu-blue-pale) 36%, var(--paper)) 0, var(--paper) 18%, var(--paper) 82%, color-mix(in srgb, var(--ntnu-blue-pale) 36%, var(--paper)) 100%);
}

body:has(.chapter-shell) .md-content__inner {
  background: var(--paper);
  border: 1px solid color-mix(in srgb, var(--ntnu-blue) 12%, var(--line));
  border-radius: .9rem;
  box-shadow: var(--shadow-editorial);
  margin-bottom: 2rem;
  margin-top: 1rem;
  padding: 0 clamp(1rem, 4vw, 2.5rem);
}

.chapter-shell > p,
.chapter-shell > ul,
.chapter-shell > ol,
.chapter-shell > blockquote,
.chapter-shell > .arithmatex,
.chapter-shell > .admonition,
.chapter-shell > details {
  font-size: calc(.82rem * var(--reader-scale));
}

.chapter-shell > p,
.chapter-shell > ul,
.chapter-shell > ol { line-height: 1.78; }

/* Governing rules and quotations are long-form reading content. Material's
   stock blockquote uses semi-transparent grey that only narrowly clears the
   minimum contrast ratio, so give these passages the same strong ink as the
   surrounding chapter and a visible, non-colour-only boundary. */
.md-typeset .chapter-shell > blockquote {
  background: color-mix(in srgb, var(--blue-ink) 7%, var(--paper));
  border-left: 4px solid var(--blue-ink);
  border-radius: 0 .5rem .5rem 0;
  color: var(--ink);
  font-size: calc(.84rem * var(--reader-scale));
  line-height: 1.72;
  margin: 1.4rem 0;
  padding: .9rem 1.05rem;
}

.md-typeset .chapter-shell > blockquote p { color: inherit; margin: 0; }
.md-typeset .chapter-shell > blockquote em { color: inherit; font-style: normal; }

/* Inline links remain recognisable without relying on colour alone. Numbered
   citations already have brackets and weight as a second visual cue. */
.chapter-shell :where(p, li, blockquote, td, figcaption) > a:not(.glightbox) {
  text-decoration: underline;
  text-decoration-thickness: .07em;
  text-underline-offset: .16em;
}

.chapter-shell > h2 {
  color: var(--ntnu-blue-deep);
  font-size: calc(1.55rem * var(--reader-scale));
  padding-bottom: .55rem;
  position: relative;
}

[data-md-color-scheme="slate"] .chapter-shell > h2 { color: #d8eaff; }

.chapter-shell > h2::after {
  background: linear-gradient(90deg, var(--ntnu-blue) 0 3.25rem, var(--ntnu-orange) 3.25rem 4rem, transparent 4rem);
  bottom: 0;
  content: "";
  height: 3px;
  left: 0;
  position: absolute;
  width: 100%;
}

.chapter-shell > h3 {
  font-size: calc(1.02rem * var(--reader-scale));
  padding-left: .75rem;
  position: relative;
}

.chapter-shell > h3::after {
  background: var(--ntnu-orange);
  border-radius: 999px;
  bottom: .08em;
  content: "";
  height: 1.35em;
  left: 0;
  position: absolute;
  width: 3px;
}
.chapter-shell > h4 { font-size: calc(.86rem * var(--reader-scale)); }
.chapter-shell > h5 { color: var(--ntnu-blue); font-size: calc(.72rem * var(--reader-scale)); margin-top: 2rem; }
.chapter-shell > h2,
.chapter-shell > h3,
.chapter-shell > h4,
.chapter-shell > h5 { scroll-margin-top: 6.5rem; }

.chapter-anchor,
.equation-anchor,
.figure-alias { display: block; height: 0; scroll-margin-top: 7rem; visibility: hidden; }

.chapter-hero {
  align-items: end;
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--ntnu-blue-pale) 78%, var(--paper)) 0, var(--paper) 68%),
    var(--paper);
  border: 1px solid color-mix(in srgb, var(--ntnu-blue) 16%, var(--line));
  border-radius: .8rem;
  box-shadow: inset 0 3px 0 var(--ntnu-blue);
  display: grid;
  gap: 1.75rem;
  grid-template-columns: 5.4rem 1fr;
  margin-bottom: 1.25rem;
  margin-top: 1.5rem;
  overflow: hidden;
  padding: 3rem clamp(1.2rem, 4vw, 2.25rem) 2.4rem;
  position: relative;
}

.chapter-hero__number {
  color: var(--ghost-number);
  font-size: 4.8rem;
  font-weight: 250;
  letter-spacing: -.09em;
  line-height: .8;
  white-space: nowrap;
}

.chapter-hero h1 {
  color: var(--ntnu-blue-deep);
  font-size: clamp(2.55rem, 6vw, 4.6rem);
  letter-spacing: -.065em;
  line-height: .96;
  margin: 0;
}

[data-md-color-scheme="slate"] .chapter-hero h1 { color: #f4f8fb; }

.chapter-hero__lead {
  color: var(--ink-soft);
  font-size: calc(.87rem * var(--reader-scale));
  line-height: 1.58;
  margin: 1.25rem 0 0;
  max-width: 35rem;
}

.chapter-hero--clean {
  align-items: center;
  margin-bottom: 0;
  padding-bottom: 2rem;
  padding-top: 2.6rem;
}

.chapter-hero--clean + h2 { margin-top: 2.2rem; }

body:has(.chapter-shell) .md-sidebar--secondary { display: none; }

.chapter-hero--illustrated { grid-template-columns: 5.4rem minmax(0, 1fr); padding-right: 5rem; }
.chapter-hero__curve { bottom: -2.5rem; height: 11rem; opacity: .5; position: absolute; right: -4rem; transform: rotate(-12deg); width: 13rem; }
.chapter-hero__curve::before, .chapter-hero__curve::after { border: 2px solid var(--ntnu-blue); border-bottom: 0; border-left: 0; border-radius: 0 100% 0 0; content: ""; height: 100%; position: absolute; width: 100%; }
.chapter-hero__curve::after { height: 80%; right: 1.8rem; top: 2rem; width: 80%; }
.chapter-hero__curve span, .chapter-hero__curve i { background: var(--ntnu-orange); height: 2px; position: absolute; right: 2rem; top: 4rem; transform: rotate(24deg); width: 4rem; }
.chapter-hero__curve i { right: 4rem; top: 7rem; }

.learning-card {
  background: var(--ntnu-blue-pale);
  border-left: 4px solid var(--ntnu-blue);
  border-radius: 0 .65rem .65rem 0;
  margin: 2.5rem 0;
  padding: 1.35rem 1.55rem;
}

.learning-card > p { color: var(--ntnu-blue); font-size: .63rem; font-weight: 750; letter-spacing: .08em; margin: 0 0 .6rem; text-transform: uppercase; }
.learning-card ul { font-size: calc(.72rem * var(--reader-scale)); line-height: 1.65; margin: 0; }

.chapter-excerpt::first-letter {
  color: var(--ntnu-blue);
  float: left;
  font-size: 3.5rem;
  font-weight: 700;
  line-height: .82;
  padding: .13em .12em 0 0;
}

.principle-grid {
  display: grid;
  gap: .75rem;
  grid-template-columns: 1fr 1fr;
  margin: 2rem 0;
}

.principle-grid > div { border: 1px solid var(--line); border-radius: .6rem; padding: 1rem; }
.principle-grid span { color: var(--ntnu-blue); font-size: .63rem; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; }
.principle-grid p { color: var(--ink-soft); font-size: calc(.68rem * var(--reader-scale)); line-height: 1.55; margin: .45rem 0 0; }

.chapter-figure {
  margin: 2.4rem calc((var(--reader-measure) - min(var(--reader-measure), 48rem)) / -2);
}

.chapter-figure--narrow { margin-left: auto; margin-right: auto; max-width: 38rem; }
.chapter-figure a.glightbox { background: var(--paper-warm); border: 1px solid var(--line); border-radius: .65rem; display: block; overflow: hidden; }
.chapter-figure a.glightbox { box-shadow: 0 .7rem 2rem rgba(12, 37, 60, .1); }
.chapter-figure img { display: block; height: auto; margin: 0 auto; transition: transform .35s ease; width: 100%; }
.chapter-figure img.source-image--narrow { width: min(100%, 32rem); }
.chapter-figure img.source-image--medium { width: min(100%, 40rem); }
.chapter-figure img.source-image--wide { width: 100%; }
.chapter-figure a.glightbox:hover img { transform: scale(1.015); }
.chapter-figure figcaption {
  background: linear-gradient(90deg, color-mix(in srgb, var(--ntnu-blue-pale) 64%, var(--paper)), transparent);
  border-left: 3px solid var(--ntnu-orange);
  border-radius: 0 .35rem .35rem 0;
  color: var(--ink-soft);
  font-size: calc(.68rem * var(--reader-scale));
  line-height: 1.6;
  margin-top: .65rem;
  padding: .55rem .75rem;
}
.chapter-figure figcaption > span:first-child { color: var(--ntnu-blue); font-weight: 750; margin-right: .35rem; }

.source-figure > p { margin: 0; }
.source-figure .citation { font-style: normal; }
.citation--numbered { font-size: .92em; font-style: normal; white-space: nowrap; }
.citation--numbered a { color: var(--ntnu-blue); font-weight: 750; text-decoration: none; }
.citation--numbered a:hover { color: var(--ntnu-orange); text-decoration: underline; }
.chapter-figure figcaption .citation--numbered,
.chapter-figure figcaption .citation--numbered a {
  background: transparent;
  border: 0;
  border-radius: 0;
  display: inline;
  margin: 0;
  overflow: visible;
  padding: 0;
}

.md-typeset img.source-image--responsive {
  display: block;
  height: auto;
  max-width: 100%;
  width: 100%;
}

.source-figure-grid {
  align-items: start;
  display: grid;
  gap: 1.1rem;
  margin: 0 auto;
}

.source-figure-grid--multi { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.source-figure-grid--single { grid-template-columns: minmax(0, 1fr); }
.source-figure-panel { min-width: 0; }
.source-figure-panel > p { margin: 0; }
.source-figure-panel > p:not(:first-child),
.source-figure-panel > p:first-child:not(:has(a.glightbox:only-child)) {
  color: var(--ink-soft);
  font-size: calc(.67rem * var(--reader-scale));
  line-height: 1.45;
  padding: .45rem .25rem 0;
  text-align: center;
}
.source-figure-panel__label {
  color: var(--ink-soft);
  display: block;
  font-size: calc(.67rem * var(--reader-scale));
  line-height: 1.45;
  padding: .45rem .25rem 0;
  text-align: center;
}

.md-typeset img.assignment-image--responsive {
  display: block;
  height: auto;
  margin: 1rem auto;
  max-width: 100%;
  width: auto;
}

.md-typeset img.assignment-image--contained {
  display: block;
  height: auto;
  margin: 1rem auto;
  max-height: min(70vh, 42rem);
  max-width: 100%;
  object-fit: contain;
  width: auto;
}

.chapter-shell details.question table img.assignment-image--table {
  display: block;
  height: auto;
  margin: 0 auto;
  max-width: none;
  min-width: clamp(13rem, 40vw, 24rem);
  object-fit: contain;
  width: 100%;
}

.assignment-image-table-scroll {
  max-width: 100%;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  padding-bottom: .35rem;
  scrollbar-gutter: stable;
  -webkit-overflow-scrolling: touch;
}

.chapter-shell details.question .assignment-image-table-scroll table {
  min-width: 32rem;
  table-layout: fixed;
  width: 100%;
}

.source-table {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: .65rem;
  box-shadow: 0 .55rem 1.6rem rgba(12, 37, 60, .07);
  margin: 2.2rem 0;
  overflow: hidden;
  padding: 0;
  text-align: left;
}

.source-table--compact { width: min(100%, 34rem); }

.source-table .md-typeset__scrollwrap {
  margin: 0;
  overflow-x: auto;
}

.source-table .md-typeset__table {
  display: block;
  margin: 0;
  padding: 0;
  width: 100%;
}

.source-table table:not([class]) {
  border: 0;
  border-collapse: collapse;
  display: table;
  font-size: calc(.68rem * var(--reader-scale));
  margin: 0;
  min-width: 100%;
  width: 100%;
}

.source-table--wide table:not([class]) { min-width: 44rem; }

.source-table table:not([class]) th {
  background: var(--ntnu-blue-pale);
  border-bottom: 2px solid color-mix(in srgb, var(--ntnu-blue) 35%, var(--line));
  color: var(--ntnu-blue-deep);
  font-size: calc(.65rem * var(--reader-scale));
  font-weight: 750;
  letter-spacing: .025em;
  line-height: 1.35;
  padding: .75rem .9rem;
  text-transform: none;
  vertical-align: bottom;
}

[data-md-color-scheme="slate"] .source-table table:not([class]) th { color: #d8eaff; }

.source-table table:not([class]) td {
  border-top: 1px solid color-mix(in srgb, var(--line) 82%, transparent);
  line-height: 1.5;
  padding: .68rem .9rem;
  vertical-align: top;
}

.source-table table:not([class]) tbody tr:first-child td { border-top: 0; }
.source-table table:not([class]) tbody tr:nth-child(even) td { background: color-mix(in srgb, var(--ntnu-blue-pale) 42%, var(--paper)); }
.source-table table:not([class]) tbody tr:hover td { background: color-mix(in srgb, var(--ntnu-orange-light) 20%, var(--paper)); }
.source-table--compact table:not([class]) { table-layout: fixed; }

.source-table > .table-caption {
  border-top: 1px solid var(--line);
  color: var(--ink-soft);
  display: block;
  font-size: calc(.67rem * var(--reader-scale));
  line-height: 1.5;
  margin: 0;
  padding: .7rem .9rem .8rem;
  text-align: left;
}

.source-table > .table-caption > span:first-child {
  color: var(--blue-ink, var(--ntnu-blue));
  font-weight: 750;
  margin-right: .35rem;
}

.source-table > table + table { border-top: 1px solid var(--line); }
.table-header-note { font-size: .9em; font-weight: 550; }

.references-page .csl-bib-body { margin-top: 2.5rem; }
.references-page .csl-entry { border-top: 1px solid var(--line); display: grid; font-size: calc(.72rem * var(--reader-scale)); gap: .7rem; grid-template-columns: 2.5rem minmax(0, 1fr); line-height: 1.6; padding: .9rem 0; scroll-margin-top: 5rem; }
.references-page .csl-entry:target { background: var(--ntnu-blue-pale); box-shadow: inset 3px 0 0 var(--ntnu-orange); padding-left: .65rem; padding-right: .65rem; }
.references-page .csl-left-margin { color: var(--ntnu-blue); font-weight: 800; }
.references-page .csl-right-inline { min-width: 0; overflow-wrap: anywhere; }

.key-idea {
  align-items: start;
  border-bottom: 1px solid var(--line);
  border-top: 1px solid var(--line);
  display: grid;
  gap: 1.5rem;
  grid-template-columns: 5rem 1fr;
  margin: 2rem 0;
  padding: 1.25rem 0;
}

.key-idea span { color: var(--ntnu-orange); font-size: .62rem; font-weight: 750; letter-spacing: .08em; text-transform: uppercase; }
.key-idea p { font-size: calc(.8rem * var(--reader-scale)); font-weight: 650; line-height: 1.55; margin: 0; }

.comparison-band {
  background: linear-gradient(90deg, var(--ntnu-blue-pale), var(--paper-warm));
  border-radius: .7rem;
  display: grid;
  gap: 1.25rem;
  grid-template-columns: 1fr 2px 1fr;
  margin: 2rem 0;
  padding: 1.35rem;
}

.comparison-band i { background: var(--line); }
.comparison-band span { color: var(--ink-soft); display: block; font-size: .59rem; letter-spacing: .06em; text-transform: uppercase; }
.comparison-band strong { display: block; font-size: .82rem; margin: .3rem 0; }
.comparison-band p { color: var(--ink-soft); font-size: .66rem; line-height: 1.5; margin: 0; }

.criteria-list {
  border-top: 1px solid var(--line);
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  margin: 2rem 0;
}

.criteria-list > div { border-bottom: 1px solid var(--line); padding: 1.1rem .8rem 1.2rem 0; }
.criteria-list > div + div { border-left: 1px solid var(--line); padding-left: .8rem; }
.criteria-list span { color: var(--ntnu-orange); font-size: .59rem; font-weight: 750; }
.criteria-list h3 { font-size: .75rem; margin: .6rem 0 .3rem; }
.criteria-list p { color: var(--ink-soft); font-size: .62rem; line-height: 1.45; min-height: 2.7em; }
.criteria-list code { display: inline-block; font-size: .58rem; padding: .28rem .4rem; }

.pull-quote {
  border: 0 !important;
  color: var(--ntnu-blue) !important;
  font-size: calc(1.55rem * var(--reader-scale)) !important;
  font-weight: 700;
  letter-spacing: -.035em;
  line-height: 1.3;
  margin: 2.5rem 0 !important;
  padding: 0 !important;
}

.summary-grid {
  display: grid;
  gap: 1px;
  grid-template-columns: 1fr 1fr;
  margin: 1.5rem 0 3rem;
  overflow: hidden;
}

.summary-grid > div { background: var(--ntnu-blue-pale); padding: 1.25rem; }
.summary-grid span { color: var(--ntnu-orange); font-size: .58rem; font-weight: 750; }
.summary-grid h3 { font-size: .78rem; margin: .65rem 0 .4rem; }
.summary-grid p { color: var(--ink-soft); font-size: calc(.65rem * var(--reader-scale)); line-height: 1.5; margin: 0; }

.chapter-shell details.question {
  background: var(--paper);
  border: 1px solid color-mix(in srgb, var(--ntnu-blue) 23%, var(--line));
  border-left: 4px solid var(--ntnu-blue);
  border-radius: .65rem;
  box-shadow: 0 .35rem 1rem rgba(12, 37, 60, .055);
  margin: .85rem 0;
  overflow: hidden;
}

.chapter-shell details.question > summary {
  background: linear-gradient(90deg, color-mix(in srgb, var(--ntnu-blue-pale) 48%, var(--paper)), var(--paper));
  color: var(--ink);
  font-size: calc(.75rem * var(--reader-scale));
  font-weight: 700;
  padding-bottom: .85rem;
  padding-left: 1rem;
  padding-top: .85rem;
}

.chapter-shell details.question > summary::before { display: none !important; }
.chapter-shell details.question > summary::after {
  background-color: var(--ntnu-blue) !important;
  color: var(--ntnu-blue) !important;
}

.chapter-shell details.question > summary:hover { background: var(--ntnu-blue-pale); }
.chapter-shell details.question[open] { border-color: color-mix(in srgb, var(--ntnu-blue) 55%, var(--line)); }
.chapter-shell details.question[open] > summary {
  background: linear-gradient(90deg, var(--ntnu-blue-pale), color-mix(in srgb, var(--ntnu-blue-pale) 28%, var(--paper)));
  border-bottom: 1px solid var(--line);
}
.chapter-shell details.question .md-typeset__scrollwrap,
.chapter-shell details.question p,
.chapter-shell details.question li { font-size: calc(.75rem * var(--reader-scale)); }

.reader-tools {
  align-items: center;
  background: color-mix(in srgb, var(--paper) 92%, transparent);
  border: 1px solid var(--line);
  border-radius: 999px;
  box-shadow: 0 .5rem 1.5rem rgba(8, 31, 50, .08);
  display: flex;
  font-size: .56rem;
  gap: .15rem;
  margin-left: auto;
  padding: .2rem;
  position: sticky;
  top: 4.15rem;
  width: max-content;
  z-index: 4;
}

.reader-tools__label { color: var(--ink-soft); font-size: .54rem; font-weight: 700; letter-spacing: .06em; padding: 0 .55rem; text-transform: uppercase; }
.reader-tools button { background: transparent; border: 0; border-radius: 999px; color: var(--ink); cursor: pointer; font: inherit; font-weight: 700; height: 1.8rem; min-width: 1.8rem; padding: 0 .35rem; }
.reader-tools button:hover { background: var(--ntnu-blue-pale); }
.reader-tools [data-size-value] { color: var(--ink-soft); min-width: 2.3rem; text-align: center; }
.reader-tools svg { fill: none; height: .95rem; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5; width: .95rem; }

.reader-progress {
  background: transparent;
  height: 3px;
  left: 0;
  pointer-events: none;
  position: fixed;
  right: 0;
  top: 0;
  z-index: 20;
}

.reader-progress span { background: var(--ntnu-orange); display: block; height: 100%; width: var(--progress, 0%); }

.chapter-mobile-nav { display: none; }

/* Admonitions and math */

.md-typeset .admonition,
.md-typeset details {
  border-radius: .55rem;
  box-shadow: none;
}

.md-typeset .admonition.note,
.md-typeset details.note { border-color: var(--ntnu-blue); }
.md-typeset .note > .admonition-title,
.md-typeset .note > summary { background: var(--ntnu-blue-pale); }

div.arithmatex {
  -webkit-overflow-scrolling: touch;
  margin: 1.2rem 0;
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  padding: .35rem .5rem .65rem;
  scrollbar-color: color-mix(in srgb, var(--ntnu-blue) 45%, transparent) transparent;
  scrollbar-width: thin;
}

div.arithmatex::-webkit-scrollbar { height: .35rem; }
div.arithmatex::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--ntnu-blue) 45%, transparent); border-radius: 999px; }
div.arithmatex::-webkit-scrollbar-track { background: transparent; }

div.arithmatex > mjx-container[display="true"] {
  box-sizing: border-box;
  min-width: 100%;
  width: max-content;
}

div.arithmatex:focus-visible {
  border-radius: .35rem;
  outline: 2px solid color-mix(in srgb, var(--ntnu-blue) 55%, transparent);
  outline-offset: 2px;
}

.equation-scroll-hint {
  color: var(--ink-soft);
  display: block;
  font-size: .6rem;
  letter-spacing: .025em;
  margin: -.8rem .5rem 1.15rem;
  text-align: right;
}

mjx-container { color: var(--ink); }

/* Responsive */

@media screen and (max-width: 76.234375em) {
  .md-tabs { display: none; }
  .reader-tools { top: 3.65rem; }

  .md-sidebar--primary .md-sidebar__scrollwrap {
    background: var(--paper);
    border-right: 0;
    padding-right: 0;
  }

  .md-nav--primary {
    background: var(--paper);
  }

  .md-nav--primary > .md-nav__title {
    background: linear-gradient(145deg, var(--ntnu-blue-deep), var(--ntnu-blue));
    box-shadow: inset 0 -3px 0 var(--ntnu-orange);
    color: transparent;
    display: block;
    font-size: 0;
    height: auto;
    line-height: 1;
    min-height: 6.5rem;
    padding: 1.65rem 1.1rem 1.35rem;
    white-space: normal;
  }

  .drawer-brand__title {
    color: #fff;
    display: block;
    font-size: 1.15rem;
    font-weight: 750;
    letter-spacing: -.045em;
    line-height: 1.08;
  }

  .drawer-brand__title::after {
    background: linear-gradient(90deg, var(--ntnu-orange) 0 1rem, rgba(255, 255, 255, .7) 1rem 4rem);
    border-radius: 999px;
    content: "";
    display: block;
    height: 2px;
    margin-top: 1rem;
    width: 4rem;
  }

  .md-nav--primary > .md-nav__list {
    padding: 1rem .7rem 2rem;
  }

  .md-nav--primary > .md-nav__list::before {
    color: var(--ink-soft);
    content: "READER NAVIGATION";
    display: block;
    font-size: .48rem;
    font-weight: 800;
    letter-spacing: .12em;
    padding: 0 .5rem .55rem;
  }

  /* Keep the chapter list inside the main drawer instead of opening a
     second navigation panel on phones and tablets. */
  .md-nav--primary .drawer-chapters > .md-nav {
    background: transparent;
    display: none;
    left: auto;
    opacity: 1;
    position: static;
    transform: none;
    visibility: visible;
    width: auto;
  }

  .md-nav--primary .drawer-chapters > .md-nav__toggle:checked ~ .md-nav {
    display: block;
  }

  .md-nav--primary .drawer-chapters > .md-nav > .md-nav__title {
    display: none;
  }
}

@media screen and (min-width: 76.234375em) {
  body:has(.compendium-home) .md-sidebar--primary { display: none; }
}

@media screen and (max-width: 60em) {
  .compendium-home .hero { grid-template-columns: 1fr minmax(18rem, .72fr); min-height: auto; }
  .hero h1 { font-size: clamp(3.2rem, 8.5vw, 5rem); }
  .hero__visual { min-height: 32rem; }
  .feature-card { min-height: 19rem; }
  .home-chapter-grid-v2 { grid-template-columns: 1fr 1fr; }
  .home-podcast-grid-v2 { grid-template-columns: 1fr; }
  .home-podcast-card-v2 { grid-template-columns: 9rem minmax(0, 1fr) 7rem; }
  .cv-hero { grid-template-columns: minmax(13rem, 17rem) minmax(0, 1fr); }
  .cv-metrics { grid-template-columns: 1fr 1fr; }
  .cv-metrics > div:nth-child(3) { border-left: 0; border-top: 1px solid var(--line); }
  .cv-metrics > div:nth-child(4) { border-top: 1px solid var(--line); }
  .cv-achievement-grid { grid-template-columns: 1fr 1fr; }
  .cv-achievement-grid article { min-height: 13rem; }
  .cv-timeline-layout { grid-template-columns: 1fr minmax(13rem, .65fr); }
}

@media screen and (max-width: 48em) {
  .md-typeset h1 { font-size: 1.9rem; }
  body:has(.chapter-shell) .md-main { background: var(--paper); }
  body:has(.chapter-shell) .md-content__inner {
    border: 0;
    border-radius: 0;
    box-shadow: none;
    margin-top: 0;
    padding-left: .4rem;
    padding-right: .4rem;
  }
  .home-intro-v2 {
    background: linear-gradient(180deg, color-mix(in srgb, var(--ntnu-blue-pale) 42%, var(--paper)), var(--paper) 19rem);
    padding-bottom: 4.5rem;
    padding-top: 5rem;
  }
  .home-title h1 { font-size: clamp(3.2rem, 14vw, 5.2rem); }
  .home-foreword-v2__body { grid-template-columns: 1fr; }
  .home-section-heading-v2--row { align-items: flex-start; flex-direction: column; gap: 1rem; }
  .home-contact-v2 { grid-template-columns: 1fr; }
  .cv-page { padding-top: 1rem; }
  .cv-hero { align-items: start; grid-template-columns: 1fr; min-height: auto; padding-top: 0; }
  .cv-portrait { margin-left: auto; margin-right: auto; max-width: 15rem; }
  .cv-portrait img { aspect-ratio: 1 / 1.08; object-position: 50% 41%; }
  .cv-hero__copy h1 { font-size: clamp(3rem, 13vw, 5.2rem); }
  .cv-about { gap: 2.5rem; grid-template-columns: 1fr; }
  .cv-timeline-layout { grid-template-columns: 1fr; }
  .cv-section-heading--row { align-items: flex-start; flex-direction: column; gap: 1.2rem; }
  .cv-publication-list { grid-template-columns: 1fr; }
  .cv-publication-list > a:nth-child(even) { border-left: 0; padding-left: 0; }
  .cv-publication-list > a:nth-child(n+2) { border-top: 1px solid var(--line); }
  .cv-publications__footer { align-items: flex-start; flex-direction: column; gap: 1rem; }
  .compendium-home .hero { display: block; min-height: auto; padding-top: 5.5rem; }
  .hero__copy { padding-right: 0; }
  .hero__visual { margin-top: 1rem; min-height: 24rem; }
  .route-card { width: 7.7rem; }
  .route-card--one { left: 3%; top: 50%; }
  .route-card--three { right: 7%; }
  .dedication { gap: 1rem; grid-template-columns: 1fr auto 1fr; padding-bottom: 3rem; padding-top: 3rem; }
  .home-section--intro, .reader-promise { gap: 2.5rem; grid-template-columns: 1fr; }
  .section-heading { align-items: start; flex-direction: column; gap: 1.5rem; }
  .feature-card:nth-child(n) { grid-column: span 12; min-height: 17rem; }
  .feature-card h3 { margin-top: 2.5rem; }
  .foreword-grid { gap: 1.5rem; grid-template-columns: 1fr; }
  .foreword-grid aside { border-bottom: 1px solid var(--line); padding-bottom: 1rem; }
  .questions-note { gap: 1.5rem; grid-template-columns: 1fr; }
  .chapter-hero, .chapter-hero--illustrated { gap: .75rem; grid-template-columns: 1fr; padding-right: 0; }
  .chapter-hero--clean { gap: .85rem; grid-template-columns: 3.8rem 1fr; padding-bottom: 1.5rem; padding-top: 1.8rem; }
  .chapter-hero--clean h1 { font-size: clamp(2rem, 10vw, 3rem); }
  .chapter-hero__number { font-size: 3.4rem; }
  .chapter-hero__curve { opacity: .22; }
  .criteria-list { grid-template-columns: 1fr; }
  .criteria-list > div + div { border-left: 0; padding-left: 0; }
  .criteria-list p { min-height: 0; }
  .chapter-figure { margin-left: 0; margin-right: 0; }
  .source-figure-grid--multi { grid-template-columns: minmax(0, 1fr); }
  .source-table--compact { width: 100%; }
  .source-table table:not([class]) th,
  .source-table table:not([class]) td { padding-left: .7rem; padding-right: .7rem; }
  .reader-tools { display: none; }
  .chapter-mobile-nav {
    align-items: center;
    background: color-mix(in srgb, var(--paper) 94%, transparent);
    border: 1px solid var(--line);
    border-radius: 999px;
    bottom: .7rem;
    box-shadow: 0 .6rem 1.7rem rgba(8, 31, 50, .16);
    display: grid;
    gap: .5rem;
    grid-template-columns: 2.3rem 1fr 2.3rem;
    left: 50%;
    padding: .22rem;
    position: fixed;
    transform: translateX(-50%);
    width: min(18rem, calc(100vw - 2rem));
    z-index: 15;
  }
  .chapter-mobile-nav a,
  .chapter-mobile-nav button { align-items: center; background: transparent; border: 0; border-radius: 999px; color: var(--ink); display: flex; font-size: .64rem; font-weight: 700; height: 2.3rem; justify-content: center; text-decoration: none; }
  .chapter-mobile-nav a { background: var(--ntnu-blue); color: #fff; }
  body:has(.chapter-shell) .md-footer { padding-bottom: 4rem; }
}

@media screen and (max-width: 34em) {
  .md-header__title::before { display: none; }
  .cv-actions { align-items: stretch; flex-direction: column; }
  .cv-button { justify-content: center; }
  .cv-metrics { grid-template-columns: 1fr; }
  .cv-metrics > div + div { border-left: 0; border-top: 1px solid var(--line); padding-left: 0; }
  .cv-metrics > div { min-height: 6.8rem; }
  .cv-achievement-grid { grid-template-columns: 1fr; }
  .cv-achievement-grid article { min-height: 11.5rem; }
  .cv-achievement-grid h3 { margin-top: 3.2rem; }
  .cv-timeline article { gap: .35rem; grid-template-columns: 1fr; }
  .cv-publications__footer div { align-items: flex-start; flex-direction: column; gap: .4rem; }
  .hero h1 { font-size: clamp(2.85rem, 14vw, 4rem); }
  .hero__lead { font-size: .9rem; }
  .hero__actions { align-items: stretch; flex-direction: column; }
  .button { width: 100%; }
  .hero__meta { gap: 1.25rem; margin-top: 2.5rem; }
  .hero__visual { min-height: 20rem; }
  .hero__annotation { top: 15%; }
  .home-title h1 { font-size: clamp(2.65rem, 12.8vw, 3.4rem); }
  .home-title__edition { font-size: .56rem; }
  .home-chapter-grid-v2 { grid-template-columns: 1fr; }
  .home-chapter-card-v2 { min-height: 12.5rem; }
  .home-podcast-card-v2 { align-items: start; grid-template-columns: 5.8rem 1fr; padding: .75rem; }
  .home-podcast-card-v2__qr { align-items: center; border-top: 1px solid var(--line); flex-direction: row; grid-column: 1 / -1; justify-content: center; padding-top: .75rem; text-align: left; }
  .home-podcast-card-v2__qr img { width: 5.4rem; }
  .home-contact-v2__details { grid-template-columns: 1fr; }
  .home-contact-v2__details > :nth-child(even) { border-left: 0; padding-left: 0; }
  .route-card--two { top: 12%; }
  .route-card--three { top: 65%; }
  .dedication { display: block; }
  .dedication__line { display: none; }
  .home-section { padding-bottom: 4.5rem; padding-top: 4.5rem; }
  .chapter-preview__grid { display: block; }
  .feature-card + .feature-card { margin-top: .8rem; }
  .frontmatter-hero h1 { font-size: 3.5rem; }
  .continue-card { grid-template-columns: 1fr 2.5rem; }
  .continue-card > span { display: none; }
  .library-card { gap: .75rem; grid-template-columns: 2rem 1fr 1.25rem; }
  .library-card p { display: none; }
  .principle-grid, .summary-grid { grid-template-columns: 1fr; }
  .comparison-band { grid-template-columns: 1fr; }
  .comparison-band i { height: 1px; }
  .key-idea { gap: .5rem; grid-template-columns: 1fr; }
}

/* ------------------------------------------------------------------
   Device refinements — phones, tablets, dark reading mode
   (added by Claude; kept in one block so it is easy to review/revert)
   ------------------------------------------------------------------ */

html {
  -webkit-text-size-adjust: 100%;
  -moz-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

/* Chapter hero: size the ghost number column to its content so the
   number is never clipped behind the title. */
.chapter-hero,
.chapter-hero--illustrated { grid-template-columns: auto minmax(0, 1fr); }

/* The ghost chapter number is nearly invisible on the slate scheme. */
[data-md-color-scheme="slate"] .chapter-hero__number { color: var(--ghost-number); }

/* Wide data tables: keep readable column widths and scroll sideways
   instead of wrapping one word per line on small screens. */
.source-table[data-columns="3"] table:not([class]),
.source-table[data-columns="4"] table:not([class]) { min-width: 30rem; }
.source-table[data-columns="5"] table:not([class]),
.source-table[data-columns="6"] table:not([class]) { min-width: 42rem; }
.source-table[data-columns="7"] table:not([class]),
.source-table[data-columns="8"] table:not([class]),
.source-table[data-columns="9"] table:not([class]) { min-width: 52rem; }

.source-table .md-typeset__scrollwrap {
  -webkit-overflow-scrolling: touch;
  scrollbar-color: color-mix(in srgb, var(--ntnu-blue) 45%, transparent) transparent;
  scrollbar-width: thin;
}

.source-table .md-typeset__scrollwrap::-webkit-scrollbar { height: .35rem; }
.source-table .md-typeset__scrollwrap::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--ntnu-blue) 45%, transparent); border-radius: 999px; }
.source-table .md-typeset__scrollwrap::-webkit-scrollbar-track { background: transparent; }

/* Figures in dark reading mode: mat white-background diagrams on a
   light plate and soften their glare slightly. */
[data-md-color-scheme="slate"] .chapter-figure a.glightbox {
  background: #e9eef3;
  border-color: color-mix(in srgb, var(--line) 55%, transparent);
}

@media screen and (max-width: 48em) {
  /* Chapter hero on phones: stack the number above a full-width title
     instead of squeezing the title into a narrow right column. */
  .chapter-hero,
  .chapter-hero--illustrated { grid-template-columns: minmax(0, 1fr); }

  .chapter-hero--clean {
    align-items: start;
    gap: .3rem;
    grid-template-columns: minmax(0, 1fr);
    padding-bottom: 1.7rem;
    padding-top: 1.6rem;
  }

  .chapter-hero--clean .chapter-hero__number { font-size: 2.7rem; }
  .chapter-hero--clean h1 { font-size: clamp(2.05rem, 9.5vw, 3rem); }

  /* Homepage on phones: less dead space before and between sections. */
  .home-intro-v2 { padding-bottom: 3.5rem; padding-top: 3.5rem; }
  .home-foreword-v2 { margin-top: 3rem; }
  .home-chapters-v2,
  .home-podcasts-v2,
  .home-contact-v2 { padding-bottom: 3.75rem; padding-top: 3.75rem; }
  .home-chapter-grid-v2 { margin-top: 2rem; }
  .home-podcast-grid-v2 { margin-top: 2rem; }

  /* Keep the floating chapter bar clear of the iPhone home indicator. */
  .chapter-mobile-nav { bottom: calc(.7rem + env(safe-area-inset-bottom, 0px)); }
  body:has(.chapter-shell) .md-footer { padding-bottom: calc(4rem + env(safe-area-inset-bottom, 0px)); }
}

@media screen and (max-width: 34em) {
  /* Chapter cards on phones: compact rows instead of tall tiles, so
     the 17-chapter list is comfortable to scan. */
  .home-chapter-card-v2 {
    align-items: start;
    column-gap: .9rem;
    grid-template-columns: 3rem minmax(0, 1fr);
    grid-template-rows: auto auto auto;
    min-height: 0;
    padding: 1.05rem 2.4rem 1.05rem 1.1rem;
  }

  .home-chapter-card-v2 > span { font-size: 2.05rem; grid-row: 1 / span 3; padding-top: .2rem; }
  .home-chapter-card-v2 > small { grid-column: 2; padding-top: 0; }
  .home-chapter-card-v2 h3 { align-self: auto; font-size: .92rem; grid-column: 2; margin: .3rem 0 .25rem; }
  .home-chapter-card-v2 p { grid-column: 2; margin-right: 0; }
  .home-chapter-card-v2 b { bottom: auto; top: 50%; transform: translateY(-50%); }
  .home-chapter-card-v2:hover b { transform: translate(.2rem, -50%); }
}

/* ------------------------------------------------------------------
   Readability palette — WCAG-checked ink colours per scheme
   The NTNU brand blue (#00509e) reads at only 2.05:1 on the slate
   background, and brand orange at 2.5:1 on white. These tokens keep the
   brand hues for graphic elements but substitute readable variants
   wherever the colour carries text.
   ------------------------------------------------------------------ */

:root {
  --blue-ink: var(--ntnu-blue);   /* 7.4:1 on white */
  --orange-ink: #b45309;          /* 5.0:1 on white (brand orange is 2.9:1) */
  --ghost-number: #6a88b4;        /* 3.3:1 or better on cards and pale hero gradients */
  --md-typeset-a-color: var(--blue-ink);
  --md-accent-fg-color: var(--orange-ink);
}

/* Resolve every content link from the active scheme token. This explicit
   declaration also prevents an instant-navigation palette change from
   retaining the previous scheme's computed link colour. */
.md-typeset a { color: var(--blue-ink); }
.md-typeset a:hover,
.md-typeset a:focus-visible { color: var(--orange-ink); }

.chapter-shell .footnote-ref { font-size: .75em; }

[data-md-color-scheme="slate"] {
  --blue-ink: #8ab8ea;            /* 7.9:1 on #17212b */
  --orange-ink: #f4a259;          /* 7.9:1 on #17212b */
  --ghost-number: #5a83b2;        /* 3.6:1 or better on the dark hero gradient */
  --md-typeset-a-color: var(--blue-ink);  /* Material-styled links, nav trail, TOC */
}

/* Text that used raw brand orange on light backgrounds */
.home-podcast-card-v2__copy > span { color: var(--orange-ink); }
.citation--numbered a:hover { color: var(--orange-ink); }

/* Chapter-card ghost numbers: legible in both schemes */
.home-chapter-card-v2 > span { color: var(--ghost-number); }
.home-chapter-card-v2 > b { color: var(--orange-ink); }

/* Blue text on the slate scheme: links, labels, and navigation */
[data-md-color-scheme="slate"] .md-typeset a,
[data-md-color-scheme="slate"] .citation--numbered a,
[data-md-color-scheme="slate"] .md-tabs__link--active,
[data-md-color-scheme="slate"] .md-tabs__link:hover,
[data-md-color-scheme="slate"] .md-nav--primary .md-nav__link:hover,
[data-md-color-scheme="slate"] .md-nav--primary .md-nav[data-md-level="1"] .md-nav__link:hover,
[data-md-color-scheme="slate"] .home-title__edition,
[data-md-color-scheme="slate"] .home-section-heading-v2 > p,
[data-md-color-scheme="slate"] .home-section-heading-v2--row > div > p,
[data-md-color-scheme="slate"] .eyebrow,
[data-md-color-scheme="slate"] .section-index,
[data-md-color-scheme="slate"] .home-chapter-card-v2 > small,
[data-md-color-scheme="slate"] .learning-card > p,
[data-md-color-scheme="slate"] .chapter-figure figcaption > span:first-child,
[data-md-color-scheme="slate"] .chapter-shell > h5,
[data-md-color-scheme="slate"] .references-page .csl-left-margin { color: var(--blue-ink); }

[data-md-color-scheme="slate"] .md-nav__link--active { color: var(--blue-ink) !important; }

/* Keep hover and keyboard-focus states distinct after the normal dark-link
   override above.  These selectors intentionally follow that override. */
[data-md-color-scheme="slate"] .md-typeset a:hover,
[data-md-color-scheme="slate"] .md-typeset a:focus-visible,
[data-md-color-scheme="slate"] .citation--numbered a:hover,
[data-md-color-scheme="slate"] .citation--numbered a:focus-visible { color: var(--orange-ink); }

/* Scheme switches happen without a full page load. Pin chapter and reference
   links to an explicit accessible ink in each scheme so a previously computed
   colour cannot linger during instant navigation. Figure lightboxes carry no
   text colour and are intentionally excluded. */
body[data-md-color-scheme="default"] .chapter-shell a:not(.glightbox) {
  color: #00509e !important;
}

body[data-md-color-scheme="slate"] .chapter-shell a:not(.glightbox) {
  color: #8ab8ea !important;
}

body[data-md-color-scheme="default"] .chapter-shell a:not(.glightbox):hover,
body[data-md-color-scheme="default"] .chapter-shell a:not(.glightbox):focus-visible {
  color: #b45309 !important;
}

body[data-md-color-scheme="slate"] .chapter-shell a:not(.glightbox):hover,
body[data-md-color-scheme="slate"] .chapter-shell a:not(.glightbox):focus-visible {
  color: #f4a259 !important;
}

[data-md-color-scheme="slate"] .chapter-shell details.question > summary::after {
  background-color: var(--blue-ink) !important;
  color: var(--blue-ink) !important;
}

/* Footer copyright strip: set text and every link state explicitly. Material
   otherwise lowers the copyright opacity, and its link selectors can outrank
   a simple inherited colour. */
.md-footer-meta,
.md-footer-meta .md-copyright,
.md-footer-meta .md-copyright__highlight,
.md-footer-meta.md-typeset a,
.md-footer-meta.md-typeset a:hover,
.md-footer-meta.md-typeset a:focus-visible { color: #fff; }

body[data-md-color-scheme="slate"] .md-footer-meta,
body[data-md-color-scheme="slate"] .md-footer-meta .md-copyright,
body[data-md-color-scheme="slate"] .md-footer-meta .md-copyright__highlight,
body[data-md-color-scheme="slate"] .md-footer-meta.md-typeset a,
body[data-md-color-scheme="slate"] .md-footer-meta.md-typeset a:hover,
body[data-md-color-scheme="slate"] .md-footer-meta.md-typeset a:focus-visible { color: #26313c; }

/* Landscape phones: trim tall hero paddings so content appears within
   the first screen. */
@media screen and (max-height: 32em) {
  .home-intro-v2 { padding-bottom: 3rem; padding-top: 2.6rem; }
  .home-title::after { margin-top: 1.6rem; }
  .chapter-hero { margin-top: 1rem; padding-bottom: 1.8rem; padding-top: 2rem; }
  .chapter-hero--clean { padding-bottom: 1.5rem; padding-top: 1.6rem; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; }
}

@media print {
  .md-header, .md-tabs, .md-sidebar, .md-footer, .reader-tools, .reader-progress, .chapter-mobile-nav { display: none !important; }
  .md-content { margin: 0; }
  .chapter-shell { max-width: none; }
  .chapter-shell details { display: block; }
  .chapter-shell details > * { display: block !important; }
  .chapter-figure { break-inside: avoid; }
}
