/* Bootstrap 5 adjustments for the homepage. Shared teaching-page styles stay in style.css. */
body {
  --body-copy-size: 19px;
  font-family: Georgia, "Times New Roman", Times, serif;
  font-size: var(--body-copy-size);
  line-height: 1.5;
}

.intro p { font-size: var(--body-copy-size); }

h1, h2, h3, h4, h5, h6 {
  line-height: 1.1;
}

h1 { font-size: 36px; }
h2 { font-size: 30px; }
h3 { font-size: 24px; }
h5 { font-size: 14px; }
h6 { font-size: 12px; }

a { text-decoration: none; }
b, strong { font-weight: 700; }

/* Preserve Bootstrap 3's content widths, 30px gutters, and responsive layout. */
.container {
  --bs-gutter-x: 30px;
  width: 100%;
  max-width: none;
}

.row { --bs-gutter-x: 30px; }

@media (min-width: 768px) {
  .container { max-width: 750px; }
}

@media (min-width: 992px) {
  .container { max-width: 970px; }
}

@media (min-width: 1200px) {
  .container { max-width: 1170px; }
  .site-content-column { width: 75%; margin-inline: auto; }
}

/* Align biography copy with the text inside the paper panels. */
.bio-copy { padding-inline: 15px; }

#working-papers, #research, #others {
  scroll-margin-top: 60px;
}

/* Navigation moves focus to the content without outlining the whole section. */
.navigation-target:focus { outline: none; }

.navbar-custom {
  position: fixed;
  top: 0;
  right: 0;
  left: 0;
  z-index: 1030;
  min-height: 50px;
  padding: 0;
  --bs-navbar-color: white;
  --bs-navbar-hover-color: white;
  --bs-navbar-active-color: white;
}

.navbar-custom > .container { min-height: 50px; }

.navbar-custom .navbar-brand {
  margin: 0;
  padding: 15px 0;
  font-size: 18px;
  line-height: 20px;
  transition: color .1s ease-in-out;
}

.navbar-custom .navbar-toggler {
  margin: 8px 0;
  padding: 6px 10px;
  color: white;
  border-color: rgba(255, 255, 255, .4);
  border-radius: 4px;
  font-size: 14px;
  line-height: 20px;
}

.navbar-custom .nav-link {
  padding: 15px;
  color: white;
  font-size: 16.8px;
  line-height: 20px;
}

.navbar-custom .nav-link.active {
  color: white;
  background: #00a1ff;
  border-radius: 2px;
}

.navbar-custom .nav-link:hover { color: white; }

@media (min-width: 992px) {
  .navbar-custom { padding: 20px 0; }
  .navbar-custom.top-nav-collapse { padding: 0; }
  .navbar-custom .navbar-nav { margin-right: -15px; }
  .navbar-custom .navbar-nav .nav-link { padding: 15px; }
}

@media (max-width: 991.98px) {
  .navbar-custom .navbar-nav { margin: 7.5px -15px; }
  .navbar-custom .nav-link { padding: 10px 15px; }
  .navbar-custom .navbar-collapse { border-top: 1px solid rgba(255, 255, 255, .3); }
  .navbar-custom .navbar-collapse.show {
    max-height: calc(100dvh - 50px);
    overflow-y: auto;
  }
}

@media (max-width: 575.98px) {
  .navbar-custom .navbar-brand { font-size: 14px; }
}

/* Paper panels use consistent spacing within each card. */
.paper-card {
  --paper-row-gap: 12px;
  --paper-edge-padding: 15px;
  --paper-outline-color: #ccc;
  --paper-outline-width: 1px;
  --paper-outline-duration: 220ms;
  position: relative;
  margin-bottom: 0;
  border: 0;
  border-radius: 10px;
  box-shadow: none;
  background: white;
}

@media (hover: hover) and (pointer: fine) {
  .paper-card:hover {
    --paper-outline-color: #0081CC;
    --paper-outline-width: 1.3px;
    --paper-outline-duration: 260ms;
  }
}

/* A continuous curved left/bottom line with a short top extension. */
.paper-card::before,
.paper-card::after {
  content: "";
  position: absolute;
  pointer-events: none;
  transition: border-color var(--paper-outline-duration) cubic-bezier(.25, .1, .25, 1),
              border-width var(--paper-outline-duration) cubic-bezier(.25, .1, .25, 1);
}

.paper-card::before {
  inset: 10px 0 -1px -1px;
  border-left: var(--paper-outline-width) solid var(--paper-outline-color);
  border-bottom: var(--paper-outline-width) solid var(--paper-outline-color);
  border-radius: 0 0 10px 10px;
}

.paper-card::after {
  top: 0;
  left: -1px;
  width: 48px;
  height: 10px;
  border-top: var(--paper-outline-width) solid var(--paper-outline-color);
  border-left: var(--paper-outline-width) solid var(--paper-outline-color);
  border-top-left-radius: 10px;
}

.paper-card.has-faded-outline::before,
.paper-card.has-faded-outline::after { display: none; }

.paper-outline {
  position: absolute;
  top: 0;
  left: -1px;
  width: calc(100% + 1px);
  height: calc(100% + 1px);
  overflow: visible;
  pointer-events: none;
  color: var(--paper-outline-color);
  stroke-width: var(--paper-outline-width);
  transition: color var(--paper-outline-duration) cubic-bezier(.25, .1, .25, 1),
              stroke-width var(--paper-outline-duration) cubic-bezier(.25, .1, .25, 1);
}

.paper-card .paper-header {
  position: relative;
  padding: var(--paper-edge-padding) var(--paper-edge-padding) 0;
  border-bottom: 0;
  border-radius: 10px 10px 0 0;
  background: white;
}

.paper-heading {
  margin: 0;
  font-size: 16px;
  scroll-margin-top: 60px;
}

.paper-title {
  color: #0081CC;
  font-size: 22px;
  text-align: left;
}

.paper-title a,
.paper-download-links .pdf-link {
  font-weight: 400;
  /* Georgia has no semibold face; slightly reinforce the regular face. */
  -webkit-text-stroke: 0.65px currentColor;
}
.paper-download-links .fa-cloud-download { color: #303030; margin-right: 5px; }

.paper-body { padding: var(--paper-row-gap) var(--paper-edge-padding) var(--paper-edge-padding); border-top: 0; }
.paper-text {
  display: flex;
  flex-direction: column;
  gap: var(--paper-row-gap);
  font-size: inherit;
  text-align: justify;
}
.paper-text > p { margin: 0; font-size: var(--body-copy-size); }
.paper-citation { text-align: left; }
.paper-citation a { color: inherit; font-weight: 400; }
.paper-citation a:hover,
.paper-citation a:focus-visible { color: var(--site-accent-red); }
.paper-metadata, .paper-download {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--paper-row-gap);
}
.paper-author-row {
  display: flex;
  flex-basis: 100%;
  align-items: baseline;
  gap: var(--paper-row-gap);
}
.paper-authors { flex: 1; min-width: 0; }
.paper-metadata > .paper-authors { flex: 1 1 auto; }
.paper-publication { display: block; flex-basis: 100%; }
.paper-journal, .paper-download-note {
  max-width: 100%;
  margin-left: auto;
  text-align: right;
}

@media (max-width: 767.98px) {
  .paper-metadata > .paper-journal {
    flex-basis: 100%;
    margin-left: 0;
    text-align: left;
  }
}

.paper-download-links { max-width: 100%; }
.paper-status {
  display: inline-block;
  flex-shrink: 0;
  margin-left: auto;
  color: var(--site-accent-red);
  font-size: 18px;
  font-weight: 600;
  white-space: nowrap;
}
.paper-status:hover { color: var(--site-accent-red); }
.paper-list {
  display: flex;
  flex-direction: column;
  gap: 40px;
  margin-bottom: 0;
}
.paper-abstract-line { font-size: var(--body-copy-size); }
.paper-abstract-line.is-animating { overflow: hidden; }

.abstract-toggle {
  display: inline;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 3px;
  color: inherit;
  background: transparent;
  font: inherit;
  font-weight: 400;
  -webkit-text-stroke: 0.65px currentColor;
  text-align: left;
  white-space: nowrap;
  transition: color .1s ease-in-out;
}

.abstract-toggle[hidden] { display: none; }

.abstract-toggle:hover,
.abstract-toggle:focus-visible {
  color: var(--site-accent-red);
  text-decoration: none;
}

.abstract-toggle:focus-visible,
.paper-status:focus-visible,
.navbar-custom a:focus-visible,
.navbar-custom .navbar-toggler:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto !important; }
  .navbar, a, .abstract-toggle, .paper-outline,
  .paper-card::before, .paper-card::after { transition: none !important; }
  i.animated { animation: none !important; }
}

/* The three research subsections share one parent heading. */
#others .others-subheading {
  color: #303030;
  font-weight: 400;
  margin: 0 0 30px;
}

/* Keep section gaps independent of old heading margins and intro padding. */
body { --section-gap: 80px; }
.intro { display: block; height: auto; padding: 0; }
.intro .intro-body { display: block; }
.site-section, .others-subsection { padding-top: var(--section-gap); }
.section-heading { margin: 0 0 30px; }
#others-heading { margin-bottom: 0; }
#others > .others-subsection:first-of-type { padding-top: 40px; }

@media (max-width: 767.98px) {
  body { --section-gap: 48px; }
  #others > .others-subsection:first-of-type { padding-top: 24px; }
}
