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


.footer .icon-link {
    font-size: 25px;
    color: #000;
}

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

.dnerf {
  font-variant: small-caps;
}


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

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


.publication-title {
}

.publication-banner {
  max-height: parent;

}

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

.publication-header { position: static; top: auto; z-index: auto; background: transparent; }
.overlay-title { position: fixed; top: 0; left: 0; right: 0; height: 35vh; z-index: 100000 !important; display: flex; align-items: flex-end; background: transparent; }
.overlay-title { overflow: visible; }
.overlay-title .hero-body { width: 100%; padding-top: env(safe-area-inset-top); padding-bottom: calc(0.5rem + env(safe-area-inset-bottom)); display: flex; align-items: flex-end; position: relative; z-index: 10002; }
.publication-header .hero-body { padding-top: 1.5rem; padding-bottom: 1.5rem; }

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

/* Red, italic styling for "Sweep Volumes" */
.sweep-highlight { color: #c62828; font-style: italic; }

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

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

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

.publication-authors {
}

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

.publication-authors a:hover {
    text-decoration: underline;
}

.author-block {
  display: inline-block;
  margin-left: 20px;
  margin-right: 20px;
}

.publication-banner img {
}

.publication-authors {
  /*color: #4286f4;*/
}

.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%;
}

.publication-body img {
}

.results-carousel {
  overflow: hidden;
}

.results-carousel .item {
  margin-left: 200px;
  margin-right: 200px;
  overflow: hidden;
  padding: 20px;
  font-size: 0;
}

.results-carousel video {
  margin: 0;
}

/* Normalize carousel image sizing so all images share the same visual scale */
.results-carousel .item { display: flex; flex-direction: column; align-items: center; }
.results-carousel .item img { height: 70vh; width: auto; max-width: 100%; object-fit: contain; display: block; margin: 0 auto; }
/* Ensure captions do not inherit zero font-size and wrap nicely */
.results-carousel .item h2 { font-size: 1rem; line-height: 1.35; margin-top: 0.75rem; text-align: center; white-space: normal; word-break: normal; overflow-wrap: anywhere; hyphens: auto; }

.slider-pagination .slider-page {
  background: #000000;
}

.eql-cntrb { 
  font-size: smaller;
}




.csc { height: 65vh; width: 87%; position: sticky; top: 35vh; display: flex; align-items: center; justify-content: center; z-index: 0; margin-left: auto; margin-right: auto; overflow: visible; }
.csc-canvas { display: block; max-width: 100%; max-height: 100%; object-fit: contain; position: relative; z-index: 0 !important; pointer-events: none; margin: 0 auto; }
/* Spacer so the fixed overlay doesn't cover the next section before canvas initializes */
.canvas-container { min-height: 65vh; }

/* Second title shown inside canvas wrapper after sequence finished */
.flow-title-in-canvas { position: absolute; top: -35vh; left: 0; right: 0; height: auto; z-index: 100002 !important; display: none; align-items: flex-end; background: transparent; overflow: visible; pointer-events: auto; }
.flow-title-in-canvas .hero-body { width: 100%; padding-top: 1.5rem; padding-bottom: 0; display: flex; align-items: flex-end; position: relative; z-index: 10002; }

/* Mobile-safe viewport sizing using svh where supported */
@supports (height: 100svh) {
  .overlay-title { height: 35svh; }
  .csc { top: 35svh; height: 65svh; }
  .flow-title-in-canvas { height: auto; top: -35svh; }
}

/* Prefer dvh when supported (best handling of dynamic UI on mobile) */
@supports (height: 100dvh) {
  .overlay-title { height: 35dvh; }
  .csc { top: 35dvh; height: 65dvh; }
  .flow-title-in-canvas { height: auto; top: -35dvh; }
}

/* WebKit sticky fallback for iOS */
.csc { position: sticky; position: -webkit-sticky; }

/* Small-screen adjustments */
@media (max-width: 600px) {
  /* Tighter typography for small screens */
  .title.is-1.publication-title { font-size: clamp(1.3rem, 7.2vw, 1.9rem); line-height: 1.1; }
  .publication-title { font-size: clamp(0.95rem, 4.8vw, 1.1rem); line-height: 1.15; }
  .publication-authors { font-size: clamp(0.72rem, 2.8vw, 0.85rem); line-height: 1.25; }
  .publication-venue { font-size: clamp(0.72rem, 2.8vw, 0.85rem); }
  .publication-links .button { width: 100%; }
  .author-block { margin-left: 8px; margin-right: 8px; display: inline; }

  /* Make overlay/canvas split less tall to fit small screens */
  /* Title/canvas 65/35 split on small screens (sticky, not fixed) */
  .overlay-title { height: 65svh; height: 65dvh; }
  .csc { position: sticky; top: 65svh; height: 35svh; height: 35dvh; width: 100%; }
  .flow-title-in-canvas { position: absolute; top: -65svh; left: 0; right: 0; height: auto; display: none; align-items: flex-end; background: transparent; overflow: visible; }
  .canvas-container { min-height: 65svh; padding-bottom: 0; }

  /* Teaser full-width and centered */
  .teaser .container { max-width: none; padding-left: 0; padding-right: 0; }
  .teaser img { width: 100%; height: auto; display: block; margin: 0 auto; }

  /* Carousel images not too tall on phones */
  .results-carousel .item { margin-left: 0; margin-right: 0; padding: 10px; }
  .results-carousel .item img { height: 45svh; height: 45dvh; }
  .results-carousel .item h2 { font-size: 0.95rem; line-height: 1.3; padding: 0 12px; }

  /* Make scroll canvas fill bottom 35% of screen */
  .csc-canvas { width: 100%; height: 35svh !important; max-width: 100%; object-fit: contain; }
}

/* Extra narrow phones */
@media (max-width: 360px) {
  .publication-title { font-size: clamp(1rem, 6.5vw, 1.2rem); }
  .publication-authors, .publication-venue { font-size: clamp(0.8rem, 3.8vw, 0.9rem); }
  .overlay-title { height: 26svh; height: 26dvh; }
  .csc { top: 26svh; top: 26dvh; height: 74svh; height: 74dvh; }
}

/* Robust typography to prevent breaking/overflow across devices */
.publication-title { 
  font-size: clamp(1.5rem, 4vw, 2.5rem);
  line-height: 1.15;
  margin-bottom: 0.5rem;
  word-break: normal;
  overflow-wrap: break-word;
  hyphens: none;
}

.publication-authors {
  font-size: clamp(1rem, 2.8vw, 1.25rem);
  line-height: 1.3;
  word-break: normal;
  overflow-wrap: break-word;
  hyphens: none;
}
.flow-title-in-canvas .hero-body { width: 100%; padding-top: env(safe-area-inset-top); padding-bottom: calc(0.5rem + env(safe-area-inset-bottom)); }
