/* ===== Typography & smoothing ===== */
html {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  font-family: 'Noto Sans', sans-serif; /* effective current font */
  font-weight: 400;                      /* Regular */
  font-synthesis: none;                  /* prevent faux bold/italic */
}

/* Explicit weights for headings so no synthesis happens */
h1, h2, h3 { font-weight: 700; }
h4, h5, h6 { font-weight: 500; }

/* ===== Footer & links ===== */
.footer .icon-link {
  font-size: 25px;
  color: #000;
}

.link-block a {
  margin-top: 5px;
  margin-bottom: 5px;
}

/* ===== Teaser ===== */
.dnerf { font-variant: small-caps; }

.teaser .hero-body {
  padding-top: 0;
  padding-bottom: 3rem;
}

.teaser { font-family: 'Google Sans', sans-serif; }

/* ===== Publication blocks ===== */
.publication-banner { max-height: parent; }

.publication-banner video {
  position: relative;
  left: auto;
  top: auto;
  transform: none;
  object-fit: fit;
}

.publication-title { font-family: 'Google Sans', sans-serif; }

.publication-title-sketch {
  /* font-family: "Gloria Hallelujah", cursive; */
  /* font-weight: 400; */
  /* font-style: normal; */
  font-family: "Mynerve", cursive;
  font-weight: 900;
  font-style: normal;
}

.publication-authors { font-family: 'Google Sans', sans-serif; }
/* .publication-authors { color: #4286f4; } */

.publication-authors a { color: hsl(204, 86%, 53%) !important; }
.publication-authors a:hover { text-decoration: underline; }

.publication-venue {
  color: #555;
  width: fit-content;
  font-weight: bold;
}

.publication-awards {
  color: #ff3860;
  width: fit-content;
  font-weight: bolder;
}

.author-block { display: inline-block; }

/* ===== Video container ===== */
.publication-video {
  position: relative;
  width: 100%;
  height: 0;
  padding-bottom: 56.25%;
  overflow: hidden;
  border-radius: 10px !important;
}

.publication-video iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

/* ===== Results carousel (Bulma-based videos, if used) ===== */
.results-carousel { overflow: hidden; }

.results-carousel .item {
  margin: 5px;
  overflow: hidden;
  border: 1px solid #bbb;
  border-radius: 10px;
  padding: 0;
  font-size: 0;
}

.results-carousel video { margin: 0; }

/* ===== Interpolation panel ===== */
.interpolation-panel {
  background: #f5f5f5;
  border-radius: 10px;
}

.interpolation-panel .interpolation-image {
  width: 100%;
  border-radius: 5px;
}

.interpolation-panel .slider { margin: 0 !important; }

#interpolation-image-wrapper { width: 100%; }
#interpolation-image-wrapper img { border-radius: 5px; }

/* ===== Publication link buttons ===== */
.publication-links {
  display: flex;
  flex-wrap: wrap;     /* keeps nice wrapping on small screens */
  gap: 0.5rem;         /* matches Bulma’s default spacing = 8px */
  justify-content: center;
}

/* ===== Gradient text utility ===== */
.text-color-gradient {
  display: inline-block;
  background: linear-gradient(120deg, rgb(216, 34, 30), rgb(235, 158, 116));
  /* background: linear-gradient(120deg, #eecda3 0%, #ef629f 100%); */
  /* background: linear-gradient(120deg, #108dc7 0%, #ef8e38 100%); */
  background-clip: text;
  -webkit-background-clip: text;
  color: transparent;
}

/* ===================================================================== */
/* ==================== Custom Image Carousel (no deps) ================= */
/* ===================================================================== */

.image-carousel {
  position: relative;
  overflow: visible; /* allow arrows to sit slightly outside */
}

/* Viewport: white window, clips neighbors, nice default ratio */
.image-carousel .ic-viewport {
  overflow: hidden;
  border-radius: 10px;
  background: #fff;
  aspect-ratio: 16 / 9;
}

/* Fallback for browsers without aspect-ratio support */
@supports not (aspect-ratio: 1) {
  .image-carousel .ic-viewport { position: relative; height: 0; padding-bottom: 56.25%; }
  .image-carousel .ic-track    { position: absolute; inset: 0; height: 100%; }
  .image-carousel .ic-slide    { position: relative; height: 100%; }
}

/* Track & slides: one-up, no peeking */
.image-carousel .ic-track {
  display: flex;
  width: 100%;
  height: 100%;
  touch-action: pan-y;  /* keep vertical page scroll on mobile */
}

.image-carousel .ic-slide {
  min-width: 100%;
  margin: 0;
  background: #fff;     /* white behind letterboxed images */
}

.image-carousel .ic-slide img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;  /* fit by width/height, no crop, no distortion */
  object-position: center;
}

/* Fallback to ensure the image fills each slide box correctly */
@supports not (aspect-ratio: 1) {
  .image-carousel .ic-slide img {
    position: absolute; inset: 0; width: 100%; height: 100%;
    object-fit: contain; object-position: center;
  }
}

/* Arrows (outside on desktop) */
.image-carousel .ic-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 44px; height: 44px;           /* Button size */
  border: 1px solid rgba(0,0,0,.15);
  border-radius: 50%;
  background: #fff;                     /* white circular arrow buttons */
  color: #000;                          /* color of ❮ / ❯ */
  cursor: pointer;
  display: grid; place-items: center;
  box-shadow: 0 2px 8px rgba(0,0,0,.12);
  z-index: 2;
}

.image-carousel .ic-nav:hover {
  box-shadow: 0 4px 12px rgba(0,0,0,.18);
}

.image-carousel .ic-nav:active {
  transform: translateY(-50%) scale(0.98); /* keep vertical centering */
}

.image-carousel .ic-prev { left: -56px; }
.image-carousel .ic-next { right: -56px; }

/* Keep arrows inside on small screens */
@media (max-width: 768px) {
  .image-carousel .ic-prev { left: 8px; }
  .image-carousel .ic-next { right: 8px; }
}

/* Dots below the image */
.image-carousel .ic-dots {
  display: flex;
  justify-content: center;
  gap: 8px;
  margin-top: 10px;
}

/* Reset UA button styles and force a perfect circle + your colors */
.image-carousel .ic-dots .ic-dot {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;

  display: inline-block;
  padding: 0;
  margin: 0;
  border: 0;
  box-sizing: border-box;

  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: rgb(235, 158, 116);  /* inactive */
  line-height: 0;
  vertical-align: middle;
  cursor: pointer;
}

.image-carousel .ic-dots .ic-dot.is-active {
  background: rgb(216, 34, 30);    /* active */
}

/* Better keyboard focus */
.image-carousel .ic-dots .ic-dot:focus-visible {
  outline: 2px solid rgb(216, 34, 30);
  outline-offset: 2px;
}

/* Optional: use aspect-ratio for dots if supported */
@supports (aspect-ratio: 1) {
  .image-carousel .ic-dots .ic-dot {
    height: auto;
    aspect-ratio: 1 / 1;
  }
}

/* Highlight text */
/* Gradient marker behind text (clean edges, wraps nicely) */
.tldr-mark {
  background: linear-gradient(120deg,
              rgba(216, 34, 30, 0.35),
              rgba(235, 158, 116, 0.35));
  /* ↑ adjust 0.28 for stronger/weaker highlight */
  border-radius: .40em;
  padding: 0 .20em;
  color: inherit;                /* keep your text color */
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;   /* rounded corners on wrapped lines */
}
