/* Fan-shaped wheel: all photographs share a circular path below the stage. */
.projects { overflow: hidden; }
.projects .project-gallery {
  --slide-height: clamp(250px, 38svh, 350px);
  --slide-width: calc(var(--slide-height) * .94);
  height: calc(var(--slide-height) + 70px);
  width: 100%; perspective: none;
  touch-action: pan-y; isolation: isolate;
}
.orbit-card, .orbit-card.gallery-frame {
  position: absolute; left: 50%; top: 8px;
  width: var(--slide-width); height: var(--slide-height);
  margin: 0; padding: 0; border: 1px solid #ffffffa0; border-radius: 15px;
  overflow: hidden; background: #dbe2da; color: #fff;
  cursor: zoom-in; text-align: left;
  transform: translateX(-50%); transform-origin: center;
  box-shadow: 0 12px 28px #143c3d1a;
  will-change: transform; -webkit-user-select: none; user-select: none;
}
.orbit-card .project-slide, .orbit-card .project-slide.active {
  opacity: 1; width: 100%; height: 100%; object-fit: cover;
  transform: scale(1); transition: none; pointer-events: none;
}
.orbit-card .gallery-label { opacity: 0; transition: opacity .4s ease; }
.orbit-card.gallery-frame .gallery-label { opacity: 1; }
.orbit-card:focus-visible { outline-offset: 3px; }
.projects .gallery-footer {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 0; width: 100%; margin: -24px auto 0; position: relative; z-index: 81;
}
.gallery-current {
  display: grid; place-items: center; flex-shrink: 0;
  width: 48px; height: 48px; padding: 0; border-radius: 50%;
  border: 1px solid #527d7d3d; color: #064c5a;
  background: linear-gradient(135deg, #ffffff88, #d1e9e333), #064c5a0f;
  -webkit-backdrop-filter: blur(16px) saturate(1.18);
  backdrop-filter: blur(16px) saturate(1.18);
  box-shadow: 0 5px 18px #001c2a16, inset 0 1px 0 #ffffff99;
  font-size: 13px; font-weight: 500; font-variant-numeric: tabular-nums;
  transition: background .25s, border-color .25s;
}
.projects .gallery-dots {
  display: flex; align-items: flex-start; justify-content: center;
  width: min(100%, 348px); min-height: 47px; height: 47px;
  padding: 2px 8px 0; gap: 0;
}
.projects .gallery-dot, .projects .gallery-dot.active {
  width: 27px; height: 27px; padding: 0; background: transparent;
  flex: 0 1 28px; min-width: 22px;
  border: 0; border-radius: 50%; position: relative;
  transform: translateY(var(--dot-offset));
}
.projects .gallery-dot::after {
  width: 6px; height: 6px; border-radius: 50%; background: #a4bdb5;
  transition: transform .3s, background .3s;
}
.projects .gallery-dot.active::after {
  width: 6px; height: 6px; border-radius: 50%; background: #064c5a;
  transform: translate(-50%, -50%) scale(1.5);
}
.gallery-hint {
  font-size: 9px; line-height: 1.4; color: #627b78; text-align: center;
  letter-spacing: .2px; margin: 0; min-height: 13px;
}
.project-lightbox { background: rgba(3, 31, 36, .78); backdrop-filter: blur(4px); }
.project-lightbox::backdrop { background: transparent; backdrop-filter: none; }
@media (max-width: 1050px) and (min-width: 761px) {
  .projects .project-gallery { --slide-height: clamp(230px, 35svh, 310px); }
}
@media (max-width: 760px) {
  .projects .project-gallery {
    --slide-width: min(66vw, 340px); --slide-height: calc(var(--slide-width) * 1.08);
    height: calc(var(--slide-height) + 60px);
  }
  .orbit-card, .orbit-card.gallery-frame { border-radius: 12px; }
  .projects .gallery-footer { margin-top: -18px; width: 100%; }
  .gallery-current { width: 44px; height: 44px; font-size: 12px; }
  .projects .gallery-dot, .projects .gallery-dot.active { width: 28px; height: 28px; }
  .gallery-hint { font-size: 8px; }
}
@media (prefers-reduced-motion: reduce) {
  .orbit-card { will-change: auto; }
  .orbit-card .gallery-label, .projects .gallery-dot::after { transition: none; }
}
