body { font-family: 'Google Sans', 'Noto Sans', sans-serif; }

.publication-title { margin-bottom: 0.5rem; }
.publication-subtitle { color: #4a4a4a; margin-bottom: 1.5rem; }

.publication-authors { margin: 0.25rem 0; }
.author-block { display: inline-block; margin: 0 0.35rem; }
.publication-authors a { color: #3273dc; }

.publication-links { margin-top: 1.5rem; }
.publication-links .link-block { display: inline-block; margin: 0.25rem; }
.external-link.button { padding-left: 1.1rem; padding-right: 1.1rem; }

.hero.teaser { padding-top: 1rem; padding-bottom: 1rem; }
.teaser .subtitle { margin-top: 1rem; color: #555; }

/* two side-by-side teaser cases: card border + shadow so they read as separate */
.teaser-case {
  border: 1px solid #e4e4e7;
  border-radius: 12px;
  box-shadow: 0 3px 16px rgba(0, 0, 0, 0.10);
  overflow: hidden;
  background: #fff;
}
.teaser-case img { display: block; width: 100%; }

/* multi-frame auto-play animation (PPT slides as frames) */
.frame-anim { position: relative; }
.frame-anim img { width: 100%; display: block; opacity: 0; transition: opacity .4s ease; }
.frame-anim img:first-child { position: relative; }   /* sizer: keeps the box height */
.frame-anim img:not(:first-child) { position: absolute; top: 0; left: 0; }
.frame-anim img.active { opacity: 1; }

/* placeholder boxes for figures/videos to drop in later */
.placeholder-box {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 240px;
  border: 2px dashed #c5c5c5;
  border-radius: 10px;
  background: repeating-linear-gradient(45deg, #fafafa, #fafafa 12px, #f2f2f2 12px, #f2f2f2 24px);
  color: #888;
  font-size: 0.95rem;
  margin: 0;
}
.placeholder-box code { background: #eaeaea; padding: 1px 6px; border-radius: 4px; }

#BibTeX pre {
  background: #f5f5f5;
  border-radius: 8px;
  padding: 1rem 1.25rem;
  overflow-x: auto;
}

.footer { padding: 2.5rem 1.5rem; }

/* ---------- carousel (qualitative results) ---------- */
.carousel { position: relative; overflow: hidden; border-radius: 10px; outline: none; }
.carousel-track { display: flex; cursor: grab; touch-action: pan-y; will-change: transform; }
.carousel-track:active { cursor: grabbing; }
.carousel-slide { min-width: 100%; flex: 0 0 100%; }
.carousel-slide img {
  width: 100%; display: block; border-radius: 10px;
  user-select: none; -webkit-user-drag: none;
}
.carousel-btn {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 44px; height: 44px; border-radius: 50%; border: none;
  background: rgba(20, 22, 28, 0.45); color: #fff; font-size: 18px;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; z-index: 2; transition: background .15s;
}
.carousel-btn:hover { background: rgba(20, 22, 28, 0.8); }
.carousel-btn.prev { left: 12px; }
.carousel-btn.next { right: 12px; }
.carousel-dots { display: flex; justify-content: center; gap: 8px; margin-top: 12px; }
.carousel-dot {
  width: 10px; height: 10px; padding: 0; border: none; border-radius: 50%;
  background: #cfcfcf; cursor: pointer; transition: background .15s;
}
.carousel-dot.active { background: #444; }
