/* ============================
   Rio Alto — Gallery Styles
   (Uniform grid, no masonry)
   ============================ */

   :root {
    --gap: 24px;
    --radius: 12px;
    --card-bg: #fff;
    --card-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
    --chip-bg: #f2f4f7;
    --chip-active-bg: #ffcc00;
    --chip-color: #222;
    --chip-active-color: #000;
  }
  
  /* ---- Section wrapper ---- */
  .gallery {
    padding: 32px clamp(16px, 4vw, 48px);
  }
  
  /* ---- Controls ---- */
  .gallery-controls {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 0 0 16px;
  }
  
  .chips {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
  }
  
  .chip {
    background: var(--chip-bg);
    border: 0;
    padding: 0.5rem 1rem;
    border-radius: 999px;
    cursor: pointer;
    color: var(--chip-color);
    font-weight: 600;
    transition: background .18s ease, transform .18s ease;
  }
  
  .chip:hover { transform: translateY(-1px); }
  
  .chip.is-active {
    background: var(--chip-active-bg);
    color: var(--chip-active-color);
  }
  
  .chip:focus-visible {
    outline: 2px solid #ffcc00;
    outline-offset: 2px;
  }
  
  /* ---- Grid (uniform cards, no gaps) ---- */
  .gallery-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: var(--gap);
    align-items: start;
  }
  
  /* ---- Card ---- */
  .card {
    position: relative;
    background: var(--card-bg);
    border-radius: var(--radius);
    box-shadow: var(--card-shadow);
    overflow: hidden;
    cursor: pointer;
    transition: transform .18s ease, box-shadow .18s ease;
    isolation: isolate; /* keeps overlay effects contained */
  }
  
  .card:hover {
    transform: translateY(-3px);
    box-shadow: 0 12px 28px rgba(0,0,0,.12);
  }
  
  .card:focus-within { outline: 2px solid #6aa6ff; }
  
  /* ---- Media box: fixed ratio → no layout shift ---- */
  .card-media {
    position: relative;
    width: 100%;
    aspect-ratio: 4 / 3;   /* reserve space for the thumbnail */
    overflow: hidden;
    border-radius: inherit;
    background: #eee;      /* neutral while loading */
  }
  
  /* Fill the box */
  .card-media picture,
  .card-media img,
  .card-media video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
  }
  
  /* Fade-in when loaded */
  .card-media img { opacity: 0; transition: opacity .25s ease; }
  .card-media.is-loaded img { opacity: 1; }
  
  /* Skeleton shimmer while loading */
  .card-media::after {
    content: "";
    position: absolute; inset: 0;
    background:
      linear-gradient(90deg, #ececec 0%, #f6f6f6 50%, #ececec 100%);
    animation: sheen 1.2s linear infinite;
  }
  .card-media.is-loaded::after { display: none; }
  
  @keyframes sheen {
    0%   { transform: translateX(-100%); }
    100% { transform: translateX(100%);  }
  }
  
  /* ---- Caption overlay ---- */
  .card-figcaption {
    position: absolute;
    left: 0; right: 0; bottom: 0;
    padding: 10px 12px;
    color: #fff;
    font-weight: 600;
    font-size: .92rem;
    background: linear-gradient(180deg, rgba(0,0,0,0) 40%, rgba(0,0,0,.55) 100%);
    text-shadow: 0 1px 2px rgba(0,0,0,.35);
    pointer-events: none;
  }
  
  /* Limit runaway heights on very tall assets in case of video */
  .card img,
  .card video {
    max-height: 720px;
  }
  
  /* ---- Lightbox (kept from your version) ---- */
  .lightbox {
    position: fixed;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.75);
    z-index: 1200;
    padding: 20px;
  }
  
  .lightbox-content {
    max-width: 1200px;
    width: 100%;
    max-height: 90vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    position: relative;
  }
  
  .lightbox-media {
    width: 100%;
    height: calc(90vh - 120px);
    object-fit: contain;
    background: #000;
    border-radius: 8px;
  }
  
  .lightbox-caption {
    color: #fff;
    text-align: center;
    padding: 8px 12px;
    font-size: 1rem;
  }
  
  .lightbox-close,
  .lightbox-prev,
  .lightbox-next {
    position: absolute;
    top: 12px;
    background: rgba(0, 0, 0, 0.5);
    border: none;
    color: #fff;
    padding: 8px 10px;
    border-radius: 6px;
    cursor: pointer;
  }
  
  .lightbox-close { right: 12px; }
  .lightbox-prev  { left: 12px; top: 50%; transform: translateY(-50%); }
  .lightbox-next  { right: 12px; top: 50%; transform: translateY(-50%); }
  
  .lightbox-close:focus,
  .lightbox-prev:focus,
  .lightbox-next:focus {
    outline: 2px solid #6aa6ff;
  }
  
  /* ---- Responsive tweaks ---- */
  @media (min-width: 1200px) {
    .gallery { padding: 44px 72px; }
    .gallery-grid { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
  }
  
  @media (max-width: 720px) {
    .gallery { padding: 16px; }
    .gallery-grid { gap: 16px; }
    .card-figcaption { font-size: .84rem; }
    .card img, .card video { max-height: 360px; }
  }
  
  /* Optional dark mode polish */
  @media (prefers-color-scheme: dark) {
    :root { --card-bg: #0f172a; --card-shadow: 0 8px 28px rgba(0,0,0,.35); }
  }

  /* Video-specific UI: badge + play icon overlay */
  .card[data-type="video"] {
    /* make sure stacking context places badge above media */
    isolation: isolate;
  }
  
  /* Top-left pill badge that says VIDEO */
  .card[data-type="video"]::before {
    content: "VIDEO";
    position: absolute;
    top: 10px;
    left: 10px;
    z-index: 8;
    background: linear-gradient(135deg, rgba(214,163,0,1), rgba(193,39,45,1));
    color: #fff;
    font-weight: 800;
    font-size: 11px;
    padding: 6px 10px;
    border-radius: 999px;
    letter-spacing: 0.6px;
    box-shadow: 0 6px 18px rgba(0,0,0,0.18);
    pointer-events: none;
  }
  
  /* Centered circular play icon overlay on the thumbnail */
  .card[data-type="video"] .card-media::before {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background: rgba(0,0,0,0.56) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%23FFFFFF' d='M8 5v14l11-7z'/></svg>") no-repeat center/42%;
    z-index: 7;
    transition: transform .18s ease, background-color .18s ease, opacity .18s ease;
    box-shadow: 0 8px 24px rgba(0,0,0,0.35);
    pointer-events: none;
  }
  
  /* Slight enlarge on hover to emphasize interactivity */
  .card[data-type="video"]:hover .card-media::before {
    transform: translate(-50%, -50%) scale(1.08);
  }
  
  /* Reduce badge size on small screens */
  @media (max-width: 720px) {
    .card[data-type="video"]::before { font-size: 10px; padding: 5px 8px; }
    .card[data-type="video"] .card-media::before { width: 52px; height: 52px; background-size: 36%; }
  }
  
  /* Dark mode adjustments for badge */
  @media (prefers-color-scheme: dark) {
    .card[data-type="video"]::before { background: linear-gradient(135deg, rgba(214,163,0,0.95), rgba(193,39,45,0.95)); }
  }
