html { scroll-behavior: smooth; }

body {
  color: var(--ink);
  background: var(--surface);
  font-family: var(--font-sans);
  font-size: 1rem;
  line-height: 1.65;
}

/* Quarto reserves 82px for its default fixed navbar. Our navbar is 62px high. */
body.nav-fixed { padding-top: 62px; }

h1, h2, h3, h4 {
  color: var(--primary);
  font-family: var(--font-heading);
  font-weight: 600;
  letter-spacing: -0.02em;
}

h1 { font-size: clamp(2.25rem, 4vw, 3.4rem); }
h2 { margin-top: 3rem; font-size: clamp(1.55rem, 2.5vw, 2.1rem); }
h3 { font-size: 1.22rem; }
h4 { font-size: 1.08rem; }
a { text-underline-offset: 0.2em; }

.navbar {
  background: var(--primary) !important;
  border-bottom: 1px solid transparent;
  padding-block: 0.7rem;
}

#quarto-header.headroom { transition: none !important; }
.navbar-brand-container {
  flex-shrink: 0;
  margin-right: 0 !important;
  margin-left: 0 !important;
}
.navbar-brand {
  color: white !important;
  font-family: var(--font-heading);
  font-size: 1.18rem;
  font-weight: 600;
  letter-spacing: .01em;
}
.navbar-brand:hover { color: var(--surface-soft) !important; }
.navbar-nav { column-gap: .18rem; }
.navbar-nav > .nav-item:first-child {
  margin-left: 1.15rem;
  padding-left: 1.15rem;
  border-left: 1px solid color-mix(in srgb, var(--surface-soft) 38%, transparent);
}
.navbar-nav .nav-link {
  color: color-mix(in srgb, var(--surface-soft) 88%, var(--primary)) !important;
  box-shadow: inset 0 -2px 0 transparent;
  font-size: 0.88rem;
  font-weight: 600;
}
.navbar-nav .nav-link:hover,
.navbar-nav .nav-link.active {
  color: white !important;
  box-shadow: inset 0 -4px 0 var(--line);
}
.navbar .quarto-navbar-tools .quarto-navigation-tool {
  color: color-mix(in srgb, var(--surface-soft) 88%, var(--primary)) !important;
}
.navbar .quarto-navbar-tools .quarto-navigation-tool:hover { color: white !important; }

#quarto-content { min-height: 75vh; }
.quarto-title-block .quarto-title-banner { background: var(--surface-soft); }
.quarto-title h1 { color: var(--primary); }
.description { color: var(--muted); }

/* Home layout */
body:has(.home-intro) #quarto-content > main { padding-top: 0; }
body:has(.home-intro) #title-block-header { display: none; }
.home-intro {
  position: relative;
  display: grid;
  grid-column: screen-start / screen-end;
  grid-template-columns: minmax(0, .62fr) minmax(0, 1fr);
  align-items: center;
  gap: clamp(2rem, 5vw, 4.5rem);
  width: min(1120px, 100%);
  min-height: calc(100vh - 62px);
  min-height: calc(100svh - 62px);
  margin: 0 auto;
  padding: clamp(2.5rem, 6vw, 4.5rem) 2rem calc(clamp(2.5rem, 6vw, 4.5rem) + 2rem);
}
.home-figure { margin: 0; padding: .75rem; }
.home-image { display: block; width: 100%; height: auto; aspect-ratio: 602 / 556; object-fit: contain; }
.home-figure figcaption { margin-top: .75rem; color: var(--muted); font-size: .78rem; }
.home-profile { max-width: 650px; }
.home-profile h1 {
  margin: .35rem 0 .7rem;
  font-size: clamp(2.2rem, 4.2vw, 4rem);
  line-height: 1;
  white-space: nowrap;
}
.home-role { margin-bottom: 1.35rem; color: var(--secondary); font-size: .9rem; font-weight: 650; }
.home-statement { color: var(--muted); font-size: 1.08rem; }
.home-contact { margin: 1.1rem 0 .75rem; font-weight: 600; }
.home-contact a { color: var(--primary); }
.home-destinations p { display: flex; flex-wrap: wrap; gap: .45rem 1rem; margin: 0; }
.home-destinations a { color: var(--secondary); font-weight: 700; text-decoration: none; }
.home-destinations a::after { content: " →"; }
.home-destinations a:hover { color: var(--primary); text-decoration: underline; }
.scroll-cue-wrap {
  position: absolute;
  right: 2rem;
  bottom: 2.1rem;
}
.scroll-cue-wrap p { margin: 0; }
.scroll-cue {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  color: var(--muted);
  font-size: .78rem;
  font-weight: 600;
  letter-spacing: .04em;
  text-decoration: none;
}
.scroll-cue-arrow { color: var(--secondary); font-size: 1.2rem; line-height: 1; }
.scroll-cue:hover { color: var(--secondary); }
.scroll-cue:focus-visible { outline: 2px solid var(--secondary); outline-offset: .35rem; }
.home-research { width: 100%; margin: 0; padding: 3rem max(2rem, calc((100vw - 1120px) / 2)) 4rem; scroll-margin-top: 62px; background: var(--surface-soft); }
.home-research h2 { margin: 0 0 1.25rem; }
.home-research .card-grid { margin-bottom: 0; }
.home-research .content-card { background: var(--surface); }

/* Type roles */
.lead { max-width: 780px; margin: .25rem 0 2.25rem; color: var(--muted); font-size: 1.15rem; line-height: 1.6; }
:is(.eyebrow, .card-index, .status, .project-meta, .software-lang, .pub-year, .pub-kicker, .talk-date) {
  color: var(--muted);
  font-family: var(--font-sans);
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .11em;
  text-transform: uppercase;
}
.eyebrow { display: block; margin: 0 0 .7rem; color: var(--secondary); letter-spacing: .16em; }
:is(.card-index, .software-lang, .pub-kicker) { color: var(--secondary); }
.status-ongoing::before { content: "● "; color: var(--ongoing); }
.status-exploratory::before { content: "◇ "; color: var(--exploratory); }
.project-meta { margin-left: .35rem; }
.talk-coauthors { display: block; margin: -.15rem 0 .9rem; color: var(--muted); font-size: .88rem; font-style: italic; }
.text-link { font-weight: 600; text-decoration: none; }

/* Shared component 1: summary cards */
.card-grid { display: grid; gap: 1rem; margin: 1.25rem 0 2.75rem; }
.grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.content-card { min-width: 0; padding: 1.35rem; overflow-wrap: anywhere; background: color-mix(in srgb, var(--surface-soft) 48%, var(--surface)); border: 1px solid var(--line); }
.content-card h3, .content-card h4 { margin: .35rem 0 .65rem; font-size: 1.18rem; line-height: 1.3; }
.content-card h3:first-child, .content-card h4:first-child { margin-top: 0; }
.content-card h3 a, .content-card h4 a { color: var(--primary); text-decoration: none; }
.content-card h3 a:hover, .content-card h4 a:hover { color: var(--secondary); text-decoration: underline; }
.content-card p:last-child { margin-bottom: 0; }
.card-numbered .card-index { display: block; margin-bottom: .8rem; }
.plain-grid { gap: 1.5rem 2.25rem; }
.plain-grid .content-card { padding: .15rem 0; background: transparent; border: 0; }

/* Shared component 2: compact facts */
.fact-strip { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: .5rem 0 2.75rem; border-block: 1px solid var(--line); }
.fact { padding: 1rem 1.25rem; color: var(--muted); font-size: .86rem; border-right: 1px solid var(--line); }
.fact:first-child { padding-left: 0; }
.fact:last-child { border-right: 0; }
.fact strong { display: block; margin-bottom: .15rem; color: var(--primary); font-family: var(--font-heading); font-size: 1.3rem; font-weight: 600; }

/* Shared component 3: ruled content lists */
.item { display: flow-root; padding: 1.5rem 0; border-top: 1px solid var(--line); }
.level2 > h2 + .item { border-top: 0; }
.item-list > .item { border-top: 0; border-bottom: 1px solid var(--line); }
.item-list > .item:first-child { padding-top: .75rem; }
.item-list > .item:last-child { padding-bottom: 0; border-bottom: 0; }
.item-list > .item > :last-child { margin-bottom: 0; }
.level2:has(> .item-list) + .level2 > h2 { margin-top: 2.5rem; }
.item h3, .item h4 { margin: .45rem 0 .65rem; }
.meta-legend { margin: -1rem 0 2rem; color: var(--muted); font-size: .82rem; }

/* Shared component 4: wide and narrow content columns */
.wide-narrow-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.618fr) minmax(17rem, 1fr);
  gap: clamp(1.5rem, 4vw, 2.75rem);
  align-items: center;
}
.split-content { min-width: 0; }
.example-block { min-width: 0; }
.example-block-title {
  margin: 0 0 .55rem;
  color: var(--secondary);
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.example-block div.sourceCode {
  margin: 0;
  background: transparent;
  border: 0;
}
.example-block pre.sourceCode {
  margin: 0;
  padding: 1rem;
  overflow-x: auto;
  background: var(--surface-soft);
  border: 0;
  border-top: 2px solid var(--secondary);
  font-size: .72rem;
  line-height: 1.55;
}
.example-block pre.sourceCode code { background: transparent; }
.example-block > :last-child { margin-bottom: 0; }

/* Shared component 5: inset notes */
.note { clear: both; margin: 1rem 0; padding: .9rem 1rem; background: color-mix(in srgb, var(--surface-soft) 40%, var(--surface)); border-left: 2px solid var(--line); }
.note p:last-child { margin-bottom: 0; }
.note h3 { margin: 0 0 .5rem; font-family: var(--font-sans); font-size: .76rem; font-weight: 750; letter-spacing: .1em; text-transform: uppercase; }
.area-question { margin: .75rem 0 1.5rem; color: var(--primary); font-weight: 600; }
.area-question p { margin: 0; }
.related-links { margin: .75rem 0 2.75rem; padding-top: .75rem; color: var(--muted); border-top: 1px solid var(--line); font-size: .88rem; }
.related-links p { margin: 0; }
.research-area-list ol { padding-left: 1.75rem; list-style-type: upper-alpha; }
.research-area-list li { margin-bottom: 1rem; padding-left: .35rem; }
.research-area-list li::marker { color: var(--secondary); font-weight: 700; }
.research-area-list li p:last-child { margin-bottom: 0; }
.read-more { display: inline-block; margin-left: .35rem; color: var(--secondary); font-size: .9em; font-weight: 700; text-decoration: none; white-space: nowrap; }
.read-more::after { content: " →"; }
.read-more:hover { color: var(--primary); text-decoration: underline; }

/* Figures and publication details */
.area-figure, .publication-figure { float: right; width: min(34%, 270px); margin: .35rem 0 1.25rem 1.75rem; padding: .55rem; border: 1px solid var(--line); }
.area-figure-wide { width: min(42%, 340px); }
.area-figure img, .publication-figure img { display: block; width: 100%; height: auto; max-height: 250px; object-fit: contain; }
.area-figure figcaption, .publication-figure figcaption { margin-top: .55rem; color: var(--muted); font-size: .76rem; line-height: 1.4; }
.pub-year, .pub-kicker, .talk-date { display: inline-block; margin: 0 .65rem .35rem 0; }
.publication h3 { max-width: 850px; }
.publication-compact { margin-bottom: 2rem; }
.talk-reflection { position: relative; padding: .15rem 0 .15rem 2.5rem; color: var(--muted); background: transparent; border-left: 0; }
.talk-reflection::before { content: "“"; position: absolute; top: -.4rem; left: 0; color: var(--secondary); font-family: var(--font-heading); font-size: 3.4rem; line-height: 1; }
.talk-archive { margin: 1rem 0 2.5rem; padding: 1rem 1.2rem; border: 1px solid var(--line); }
.talk-archive summary { color: var(--primary); cursor: pointer; font-family: var(--font-heading); font-size: 1.08rem; font-weight: 600; }
.talk-archive[open] summary { margin-bottom: .8rem; }
.talk-archive li { margin-bottom: .55rem; }

/* Bibliography */
#refs .csl-bib-body { counter-reset: bibliography-entry; }
#refs .csl-entry { counter-increment: bibliography-entry; padding-block: .65rem; border-bottom: 1px solid var(--line); }
#refs .csl-left-margin { color: var(--secondary); font-size: 0; font-weight: 700; }
#refs .csl-left-margin::before { content: counter(bibliography-entry) "."; font-size: .82rem; }

#quarto-sidebar.sidebar-navigation .sidebar-menu-container {
  border-top: 3px solid var(--primary);
}
#quarto-sidebar.sidebar-navigation .sidebar-menu-container::before {
  display: block;
  padding: .65rem .85rem;
  color: var(--muted);
  border-bottom: 1px solid var(--line);
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .14em;
}
body.research-section #quarto-sidebar .sidebar-menu-container::before { content: "RESEARCH"; }
body.publications-section #quarto-sidebar .sidebar-menu-container::before { content: "PUBLICATIONS"; }
#quarto-sidebar.sidebar-navigation .sidebar-item {
  margin: 0;
  border-bottom: 1px solid var(--line);
}
#quarto-sidebar.sidebar-navigation .sidebar-item-container { margin: 0; }
#quarto-sidebar.sidebar-navigation .sidebar-link {
  position: relative;
  display: block;
  padding: .72rem .8rem .72rem 1.6rem;
  color: var(--ink);
  border-left: 3px solid transparent;
  text-decoration: none;
}
#quarto-sidebar.sidebar-navigation .sidebar-link::before {
  content: "▸";
  position: absolute;
  left: .65rem;
  color: var(--secondary);
}
#quarto-sidebar.sidebar-navigation .sidebar-link:hover {
  color: var(--primary);
  background: color-mix(in srgb, var(--surface-soft) 58%, transparent);
}
#quarto-sidebar.sidebar-navigation .sidebar-link.active {
  color: var(--primary);
  background: var(--surface-soft);
  border-left-color: var(--primary-light);
  font-weight: 700;
}
.quarto-secondary-nav .quarto-btn-toggle {
  padding: .375rem .75rem;
  font-weight: 400;
}

.about-entity .about-image { border: 8px solid var(--surface-soft); }

@media (min-width: 992px) {
  div.quarto-about-solana .about-entity {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) 15em;
    column-gap: 3rem;
    align-items: start;
  }

  div.quarto-about-solana .about-entity .entity-contents,
  div.quarto-about-solana .about-entity .about-contents,
  div.quarto-about-solana .about-entity .about-contents main.content {
    display: contents;
  }

  div.quarto-about-solana #title-block-header,
  div.quarto-about-solana .about-links {
    grid-column: 1;
  }

  div.quarto-about-solana #title-block-header { grid-row: 1; }
  div.quarto-about-solana .about-links { grid-row: 2; }

  div.quarto-about-solana .about-image {
    grid-column: 2;
    grid-row: 1 / span 2;
  }

  div.quarto-about-solana .portrait-credit {
    grid-column: 2;
    grid-row: 3;
    margin: .55rem 0 1.5rem;
    text-align: center;
  }

  div.quarto-about-solana .about-contents main.content > section,
  div.quarto-about-solana #quarto-back-to-top {
    grid-column: 1 / -1;
  }
}
.portrait-credit {
  margin-top: -1.25rem;
  margin-bottom: 2.5rem;
  color: var(--muted);
  font-size: 0.78rem;
  font-style: italic;
}
.about-links .about-link { border-radius: 0 !important; }
.callout { border-radius: 0; }

.nav-footer { background: var(--primary-dark); color: color-mix(in srgb, var(--surface-soft) 88%, var(--primary)); }
.nav-footer a { color: white; }

@media (max-width: 991.98px) {
  .grid-3, .grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .home-intro { gap: 3rem; }
  .wide-narrow-grid { grid-template-columns: 1fr; }

  body.nav-fixed:has(#quarto-sidebar) { padding-top: 101px; }

  .navbar-toggler {
    border-color: color-mix(in srgb, white 42%, transparent);
  }
  .navbar-nav > .nav-item:first-child {
    margin-left: 0;
    padding-left: 0;
    border-left: 0;
  }
  .navbar .quarto-navbar-tools {
    margin-left: auto;
  }
  .navbar #quarto-search {
    margin-left: .25rem;
  }

  div.quarto-about-solana .about-entity {
    display: flex !important;
    flex-direction: column !important;
    width: 100%;
    text-align: left;
  }
  div.quarto-about-solana .about-entity .entity-contents,
  div.quarto-about-solana .about-entity .about-contents,
  div.quarto-about-solana .about-entity .about-contents main.content {
    display: contents;
  }
  div.quarto-about-solana .about-image {
    order: 1;
    align-self: center;
    margin-bottom: 0;
  }
  div.quarto-about-solana .portrait-credit {
    order: 2;
    align-self: center;
    margin: .55rem 0 1.75rem;
    text-align: center;
  }
  div.quarto-about-solana #title-block-header { order: 3; }
  div.quarto-about-solana .about-links {
    order: 4;
    flex-direction: row !important;
    flex-wrap: wrap;
    width: auto !important;
    column-gap: .6rem;
    row-gap: .6rem !important;
    padding-bottom: 1.5rem;
  }
  div.quarto-about-solana .about-link {
    padding: .35rem .65rem !important;
    font-size: .9rem !important;
  }
  div.quarto-about-solana .about-contents main.content > section { order: 5; }
  div.quarto-about-solana #quarto-back-to-top { order: 6; }
}

@media (max-width: 700px) {
  body { font-size: .98rem; }
  .lead { margin-bottom: 2rem; font-size: 1.04rem; line-height: 1.58; }
  .scroll-cue-wrap { display: none; }
  .home-profile h1 { font-size: clamp(1.75rem, 9vw, 3.4rem); }
  .home-intro {
    grid-template-columns: 1fr;
    gap: 2rem;
    min-height: 0;
    padding: 1.5rem 1rem 3rem;
  }
  figure.home-figure {
    display: grid;
    grid-template-columns: minmax(0, .618fr) minmax(0, 1fr);
    align-items: center;
    gap: 1rem;
    width: min(100%, 430px);
    margin-inline: auto;
    padding: .25rem;
  }
  figure.home-figure .home-image {
    grid-column: 1;
    margin: 0;
  }
  .home-figure figcaption {
    grid-column: 2;
    align-self: center;
    margin-top: 0;
    line-height: 1.45;
  }
  .home-profile { max-width: none; }
  .home-research { width: 100%; padding: 2.25rem 1rem 3.5rem; }
  .card-grid { grid-template-columns: 1fr; }
  .fact-strip { grid-template-columns: 1fr; }
  .fact, .fact:first-child { padding: .85rem 0; border-right: 0; border-bottom: 1px solid var(--line); }
  .fact:last-child { border-bottom: 0; }
  .area-figure,
  .area-figure-wide,
  .publication-figure {
    float: none;
    width: min(100%, 320px);
    margin: .5rem auto 1.5rem;
  }
}

@media (max-width: 767.98px) {
  .navbar .quarto-navbar-tools .quarto-navigation-tool:nth-child(-n + 2) {
    display: none;
  }
  .navbar-brand { font-size: 1.05rem; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; }
}
