/* ============================================================ KARUSELĖ */
.carousel{position:relative;}

.carousel__track{
  display:flex;gap:var(--gutter);
  overflow-x:auto;overscroll-behavior-x:contain;
  scroll-snap-type:x mandatory;
  scrollbar-width:none;-ms-overflow-style:none;
  padding-bottom:var(--s-1);
}
.carousel__track::-webkit-scrollbar{display:none;}
.carousel__track:focus-visible{outline:2px solid var(--accent-ctx);outline-offset:4px;}

.carousel__slide{
  flex:0 0 auto;scroll-snap-align:start;
  border:var(--border) solid var(--line);overflow:hidden;
}

/* --- Nuotraukų karuselė (projekto puslapis) --- */
.carousel--photos .carousel__slide{
  width:min(100%,880px);aspect-ratio:4/3;
}
@media (min-width:1024px){
  .carousel--photos .carousel__slide{width:min(72%,980px);aspect-ratio:16/10;}
}
.carousel--photos .carousel__slide img,
.carousel--photos .carousel__slide figure{width:100%;height:100%;margin:0;}

/* --- Kortelių karuselė ---
   Aukštis vienodas visoms, plotis parenkamas pagal NUOTRAUKOS orientaciją.
   Taip portretas negauna gulsčio kadro, o asimetriškas ritmas atsiranda
   iš pačių nuotraukų, ne iš dirbtinės nth-child taisyklės. */
.carousel--cards .carousel__slide{
  height:clamp(380px,58vh,600px);border:0;
  width:min(80vw,320px);
}
.carousel--cards .carousel__slide:has(.project--landscape){width:min(88vw,420px);}
@media (min-width:768px){
  .carousel--cards .carousel__slide{width:360px;}
  .carousel--cards .carousel__slide:has(.project--landscape){width:600px;}
}
.carousel--cards .carousel__slide > *{width:100%;height:100%;}

/* Atsarginis variantas naršyklėms be :has() palaikymo */
@supports not selector(:has(*)){
  @media (min-width:768px){
    .carousel--cards .carousel__slide:nth-child(odd){width:600px;}
    .carousel--cards .carousel__slide:nth-child(even){width:360px;}
  }
}

/* --- Valdikliai --- */
.carousel__bar{
  display:flex;align-items:center;gap:var(--s-6);
  margin-top:var(--s-6);
}
.carousel__progress{
  flex:1;height:1px;background:var(--line);position:relative;overflow:hidden;
}
.carousel__progress span{
  position:absolute;inset:0 auto 0 0;height:100%;width:20%;
  background:var(--accent-ctx);transform-origin:left;
  transition:transform var(--t-ui) var(--ease-out),width var(--t-ui) var(--ease-out);
}
.carousel__meta{display:flex;align-items:center;gap:var(--s-5);flex:none;}
.carousel__counter{
  font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.1em;
  color:var(--ink-faint);font-variant-numeric:tabular-nums;
}
.carousel__counter [data-carousel-current]{color:var(--ink);}
.carousel__sep{margin-inline:.4em;}
.carousel__nav{display:flex;gap:-1px;}
.carousel__btn{
  width:48px;height:48px;display:flex;align-items:center;justify-content:center;
  border:var(--border) solid var(--line-strong);color:var(--ink);
  transition:border-color var(--t-micro) var(--ease-ui),color var(--t-micro) var(--ease-ui),
             background var(--t-micro) var(--ease-ui);
}
.carousel__btn + .carousel__btn{margin-left:-1px;}
.carousel__btn:hover:not(:disabled){border-color:var(--accent-ctx);color:var(--accent-ctx);z-index:1;}
.carousel__btn:disabled{opacity:.3;cursor:default;}

@media (prefers-reduced-motion:reduce){
  .carousel__track{scroll-behavior:auto;}
}
