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

.has-text-justified { text-align: justify; hyphens: auto; }

.publication-title {
}

.publication-banner {
  max-height: parent;

}

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

.publication-header .hero-body {
}

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

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

.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 {
}

.author-name {
  margin-top: 0.5em;
  font-size: 1.1em;
  font-weight: bold;
}

/* phones */
@media (max-width: 480px) {
  .author-name { font-size: 0.9em; }
}
.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 {
  background: #f5f5f5;
  border-radius: 10px;
}

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

.interpolation-video-column {
}

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

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

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


/* === Qualitative rows: 3-up on desktop, 2-up tablet, 1-up phone === */
.qual-row{
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 1em;
  margin-bottom: 1.25em;
}
@media (max-width: 1024px){
  .qual-row{ grid-template-columns: 1fr 1fr; }
}
@media (max-width: 720px){
  .qual-row{ grid-template-columns: 1fr; }
}

/* Card look to match your site */
.qual-card{
  position: relative;
  background: #fff;
  border: 1px solid #bbb;
  border-radius: 10px;
  overflow: hidden;
  padding: 0; /* match .results-carousel .item */
}

/* Compare sliders (reuse from before) */
/* .compare{ --pos:50%; aspect-ratio: 3/2; background:#0a0a0a; }
.compare img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  user-select:none; pointer-events:none;
}
.compare .compare-top{
  clip-path: polygon(0 0, var(--pos) 0, var(--pos) 100%, 0 100%);
}
.compare .compare-slider{
  position:absolute; inset:0; width:100%; height:100%;
  -webkit-appearance:none; appearance:none; background:transparent;
  cursor: ew-resize; outline:none;
}
.compare .compare-slider::-webkit-slider-thumb{
  -webkit-appearance:none; width:2px; height:100%; background:transparent;
  box-shadow:
    calc(var(--pos) - 1px) 0 0 0 #fff,
    calc(var(--pos) - 1px) 0 0 6px rgba(0,0,0,.25);
  border:0;
}
.compare .compare-slider::-moz-range-thumb{
  width:2px; height:100%; background:#fff; border:0;
}
.compare .compare-labels{
  position:absolute; top:.5rem; left:.5rem; right:.5rem;
  display:flex; justify-content:space-between; font-size:.85rem;
  font-weight:600; color:#fff; text-shadow:0 1px 2px rgba(0,0,0,.6);
  pointer-events:none;
} */


.compare{
  --pos:50%;
  aspect-ratio: 3/2;
  background:#0a0a0a;
  position: relative;      /* establish stacking context */
  cursor: col-resize;
}

/* layer order */
.compare img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; user-select:none; pointer-events:none; z-index:1; }
.compare .compare-top{ clip-path: polygon(0 0, var(--pos) 0, var(--pos) 100%, 0 100%); z-index:2; }
.compare .compare-slider{ position:absolute; inset:0; width:100%; height:100%; -webkit-appearance:none; appearance:none; background:transparent; cursor:ew-resize; outline:none; z-index:5; }
.compare .compare-labels{ position:absolute; top:.5rem; left:.5rem; right:.5rem; display:flex; justify-content:space-between; font-size:.85rem; font-weight:600; color:#fff; text-shadow:0 1px 2px rgba(0,0,0,.6); pointer-events:none; z-index:6; }

/* white bar ABOVE images, BELOW slider */
.compare::after{
  content:"";
  position:absolute; top:0; bottom:0;
  left: var(--pos);
  transform: translateX(-1px);
  width:2px;
  background:#fff;
  box-shadow:0 0 6px rgba(0,0,0,.35);
  pointer-events:none;
  z-index:4;
}

/* hide native track visuals (optional) */
.compare .compare-slider::-webkit-slider-runnable-track{ background:transparent; }
.compare .compare-slider::-moz-range-track{ background:transparent; }

/* keep thumb invisible (or swap for a dot if you want) */
.compare .compare-slider::-webkit-slider-thumb{ -webkit-appearance:none; width:24px; height:24px; background:transparent; border:0; }
.compare .compare-slider::-moz-range-thumb{ width:24px; height:24px; background:transparent; border:0; }




/* Ground truth panel */
.gt-wrap{ aspect-ratio: 3/2; background:#0a0a0a; }
.gt-wrap img{ width:100%; height:100%; object-fit:cover; }

/* Corner badges */
.corner-badge{
  position:absolute; top:.5rem; left:.5rem;
  color:#fff; font-weight:600; font-size:.85rem;
  text-shadow:0 1px 2px rgba(0,0,0,.6);
  font-family: 'Google Sans', sans-serif;
}

/* Small captions under each row (optional) */
.qual-cap{ margin-top:.4rem; font-size:.95em; color:#555; }


#dataset-viewer .ds-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
}
#dataset-viewer .ds-card {
  background:#fff; border-radius:14px; overflow:hidden;
  box-shadow: rgba(0,0,0,.08) 0 8px 20px; margin:0;
}
#dataset-viewer .ds-card img { width:100%; height:auto; display:block; }
#dataset-viewer .ds-card figcaption { padding:.6rem .8rem; display:flex; align-items:center; justify-content:space-between; gap:.5rem; flex-wrap:wrap; }
#dataset-viewer .ds-controls { display:flex; gap:.25rem; }
#dataset-viewer .ds-btn { border:1px solid #cbd5e1; background:#fff; border-radius:8px; padding:.25rem .45rem; cursor:pointer; }
#dataset-viewer .ds-btn:hover { background:#f1f5f9; }
#dataset-viewer .ds-pill { background:#e2e8f0; border-radius:999px; padding:2px 8px; font-size:.8rem; }
#dataset-viewer .ds-figcaption { font-size:.8rem; font-weight:500; color:#111; }
/* controls styling (reuses Scenes Overview styles if you already have them) */
#dataset-viewer .so-controls { display:flex; gap:.35rem; align-items:center; }
#dataset-viewer .so-btn {
  border:1px solid #cbd5e1; background:#fff; border-radius:8px; padding:.25rem .55rem;
  line-height:1; cursor:pointer;
}
#dataset-viewer .so-btn--circle { width:36px; height:36px; border-radius:999px; display:grid; place-items:center; }
#dataset-viewer .so-btn--primary { background:#111; color:#fff; border-color:#111; }
#dataset-viewer .so-btn:hover { background:#f1f5f9; }
#dataset-viewer .so-btn--primary:hover { background:#000; }
#dataset-viewer .so-pill { background:#e2e8f0; border-radius:999px; padding:2px 10px; font-size:.85rem; }
/* Fix the sRGB light-label pill to a constant width (≈8 characters) */
#dataset-viewer #ds-ms-srgb-indicator,
#dataset-viewer #ds-rgb-srgb-indicator{
  display: inline-block;
  width: 9ch;           /* match your longest label length */
  white-space: nowrap;
  text-align: center;
  /* optional: steadier width with monospace */
  /* font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; */
}

/* Keep numeric pills from jumping when digits change (optional) */
#dataset-viewer #ds-ms-indicator,
#dataset-viewer #ds-rgb-indicator{
  display: inline-block;
  width: 7ch;           /* adjust as you like */
  white-space: nowrap;
  text-align: center;
  font-variant-numeric: tabular-nums;
}

/* Ensure the controls don’t shrink and force a wrap */
#dataset-viewer .ds-controls { flex: 0 0 auto; }

/* dark-room stage */
#dataset-viewer .ds-darkroom-stage{
  position: relative;
  background: #000;                 /* dark room */
  aspect-ratio: 1080 / 736;         /* adjust if your images differ */
  overflow: visible;                 /* let glow spill out */
  --glow: #fff;                      /* updated from JS per frame */
}

/* center the image; fade between A/B; apply glow only when "is-lit" */
#dataset-viewer .ds-darkroom-img{
  position:absolute; inset:0; margin:auto;
  max-width: 80%; max-height: 75%;  /* keeps some black border around */
  width:auto; height:auto;           /* preserve native ratio */
  border-radius:12px;
  opacity:0; transition: opacity 700ms ease;
}
#dataset-viewer .ds-darkroom-img.is-active{ opacity:1; }
#dataset-viewer .ds-darkroom-img.is-lit{
  filter:
    drop-shadow(0 0 34px var(--glow))
    drop-shadow(0 0 110px var(--glow));
}

@media (prefers-reduced-motion: reduce){
  #dataset-viewer .ds-darkroom-img{ transition:none; }
}

@media (max-width: 900px) { #dataset-viewer .ds-grid { grid-template-columns: 1fr; } }

#scenes-overview .so-stage{
  position: relative;
  aspect-ratio: 993 / 643;
  overflow: visible;                 /* allow shadow to show outside */
}

/* center image; let it scale to fit */
#scenes-overview .so-img{
  position: absolute; inset: 0;      /* center via auto margins */
  margin: auto;
  max-width: 95%;
  max-height: 95%;
  width: auto; height: auto;         /* keep natural ratio */
  opacity: 0;
  transition: opacity 1800ms ease;   /* nice slow fade */
  border-radius: 12px;               /* optional rounded corners */
}

/* only the visible frame gets the shadow */
#scenes-overview .so-img.is-active{
  opacity: 1;
  /* box-shadow: 0 18px 36px rgba(0,0,0,.35), 0 6px 12px rgba(0,0,0,.25); */
}

#scenes-overview .so-img.is-active{ opacity: 1; }

@media (prefers-reduced-motion: reduce){
  #scenes-overview .so-img{ transition: none; }
}

@media (max-width: 900px) {
  #scenes-overview .so-img{
  padding-top: 1%;
  max-width: 100%;
  max-height: 100%;  }
}

