/* css styles */

/* ieee.csl uses second-field-align="flush" (a hanging citation number
   followed by flush text), which needs an explicit flex layout -- Quarto's
   bundled CSS only ships the plain hanging-indent rule, which leaves the
   [N] label stacked above the entry instead of beside it. */
.csl-entry {
  display: flex;
  align-items: baseline;
  margin-left: 0;
  text-indent: 0;
  padding: 0.55em 0.7em;
  border-left: 3px solid transparent;
  border-radius: 0 0.25rem 0.25rem 0;
  transition: border-color 0.15s ease, background-color 0.15s ease;
}
.csl-entry:hover {
  border-left-color: var(--bs-primary);
  background-color: color-mix(in srgb, var(--bs-primary) 6%, transparent);
}
.csl-entry .csl-left-margin {
  flex: 0 0 auto;
  min-width: 0;
  padding-right: 0.5em;
  color: var(--bs-secondary-color);
  font-variant-numeric: tabular-nums;
  font-size: 0.9em;
}
.csl-entry .csl-right-inline {
  flex: 1 1 auto;
  /* Without this, a flex child won't shrink below its content's intrinsic
     width -- a long unbroken token (a DOI, a stray URL) would otherwise
     push the row past the viewport on narrow screens. */
  min-width: 0;
  overflow-wrap: anywhere;
  /* A standalone Quarto render (e.g. a blog post, unlike publications.qmd's
     bare pandoc fragment -- see pub_common.py) ships Pandoc's own default
     citation CSS inline in <head>, which sets margin-left/padding-left here
     for a float-based hanging indent. Our flex layout replaces that scheme,
     but being a more specific selector only wins the properties we actually
     declare -- these two must be zeroed explicitly or Pandoc's 3em of
     unclaimed spacing still applies underneath. */
  margin-left: 0;
  padding-left: 0;
}
/* Title is a link when the entry has a DOI or URL (see title_link_href in
   build_publications.py) -- its color/underline is emphasis enough, so it's
   deliberately not also bold. Entries with neither stay plain text. */
a.pub-title {
  text-decoration-thickness: 1px;
}

.pub-status {
  vertical-align: middle;
}

.pub-extras {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35em;
  margin-top: 0.4em;
}

/* Research-area keywords, shared between the Research page's hand-picked
   topics and any real (non-bookkeeping) keywords a publication carries. */
.topic-pill {
  display: inline-block;
  padding: 0.2em 0.7em;
  border: 1px solid var(--bs-primary);
  border-radius: 999px;
  color: var(--bs-primary);
  font-size: 0.8em;
  font-weight: 500;
  line-height: 1.6;
}

.pub-link-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.3em;
  padding: 0.2em 0.65em;
  border: 1px solid var(--bs-border-color);
  border-radius: 999px;
  color: var(--bs-body-color);
  font-size: 0.8em;
  text-decoration: none;
}
.pub-link-chip:hover {
  border-color: var(--bs-primary);
  color: var(--bs-primary);
}

/* A short accent rule under section headings instead of the plain default,
   sized to the text rather than the full column width. */
h2 {
  display: inline-block;
  padding-bottom: 0.25rem;
  border-bottom: 2px solid var(--bs-primary);
}

/* In the collapsed mobile menu (navbar-expand-lg), Bootstrap stacks
   .navbar-nav in a single flex column, so each icon-only link (GitHub,
   LinkedIn -- marked .compact by Quarto) lands on its own row. Force text
   items to keep taking a full row while letting the compact icon items
   flow onto the same trailing row, side by side. */
@media (max-width: 991.98px) {
  .navbar-collapse .navbar-nav {
    flex-direction: row;
    flex-wrap: wrap;
  }
  .navbar-collapse .navbar-nav .nav-item:not(.compact) {
    flex: 1 0 100%;
  }
  .navbar-collapse .navbar-nav .nav-item.compact {
    flex: 0 0 auto;
  }
}
