/*
    Família thumbnails/stacked - adaptado do componente "Carousel Stacked" do
    21st.dev (React/Framer Motion) pra CSS puro. Três variantes, mesmo
    desenho de card nas três (bloco abaixo "Card (compartilhado)"):

    - scroll_stacked.blade.php: baralho empilhado, um card ativo no centro,
      os outros posicionados via CSS custom properties (--stacked-x/y/
      rotate/scale/opacity/z) que o JS (stacked.js) recalcula a cada frame
      do arraste ou do snap final. Sem JS as custom properties simplesmente
      não existem e os cards ficam sobrepostos no centro (fallback razoável,
      não quebra).
    - scroll.blade.php: mesmo card, lado a lado, scroll horizontal (setas
      reaproveitando o mecanismo genérico de public/js/components/thumbnails.js,
      mesma classe .cms-handle já usada pelas famílias reveal/standard).
    - list_col3.blade.php / list_col4.blade.php: mesmo card, grade estática
      Bootstrap (col-md-4 / col-md-3), sem JS nenhum.
*/

/* ==================== Card (compartilhado pelas 3 variantes) ==================== */
.cms-card-stacked {
    display: block;
    position: relative;
    overflow: hidden;
    border-radius: 16px;
    background: #e9e9e9;
    text-decoration: none;
    outline-offset: -3px;
}

.cms-card-stacked-media {
    position: absolute;
    inset: 0;
}

.cms-card-stacked-img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.7s ease;
}

.cms-card-stacked:hover .cms-card-stacked-img {
    transform: scale(1.1);
}

.cms-card-stacked-placeholder {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #e9e9e9;
    color: #bbb;
    font-size: 40px;
}

.cms-card-stacked-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.2) 55%, transparent);
    pointer-events: none;
}

/* Variante galeria (thumbnails/stacked/includes/carrossel.blade.php, ainda
   não usada em nenhuma tela - ver comentário no próprio arquivo) - foto
   única vira mini carrossel (galerias/img_carrossel_load_min.blade.php).
   Sem link único envolvendo tudo (o carrossel tem botões próprios), então
   aqui é um <a class="...-cover-link"> vazio por baixo do conteúdo + título
   com seu próprio link - mesmo padrão de thumbnails_standard.css. */
.cms-card-stacked-cover-link {
    position: absolute;
    inset: 0;
    z-index: 1;
    display: block;
}

.cms-card-gallery-type .banner,
.cms-card-gallery-type .carousel,
.cms-card-gallery-type .carousel-inner,
.cms-card-gallery-type .carousel-item,
.cms-card-gallery-type .carousel-item img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    margin: 0;
    padding: 0;
}

.cms-card-stacked-badge {
    position: absolute;
    top: 14px;
    right: 14px;
    z-index: 2;
    padding: 4px 12px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.95);
    backdrop-filter: blur(6px);
    color: #111;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    white-space: nowrap;
}

.cms-card-stacked-content {
    position: absolute;
    z-index: 2;
    left: 15px;
    right: 15px;
    bottom: 30px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    color: #fff;
    text-align: left;
    padding: 60px 30px 15px 15px;
}

.cms-card-stacked-titulo {
    margin: 0;
    font-size: 16px;
    font-weight: 700;
    line-height: 1.2;
    text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
}

.cms-card-stacked-descricao {
    display: none;
    margin: 0;
    font-size: 12px;
    font-style: italic;
    color: rgba(255, 255, 255, 0.75);
    line-height: 1.35;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}

.cms-card-stacked .cms-thumb-valor-preco {
    align-self: flex-start;
    margin-bottom: 2px;
    padding: 4px 10px;
    border-radius: 4px;
    background: rgba(255, 255, 255, 0.15);
    color: #fff;
    font-size: 12px;
    font-weight: 700;
    width: fit-content;
}

@media (min-width: 640px) {
    .cms-card-stacked-titulo {font-size: 16px;}
    .cms-card-stacked-descricao { display: -webkit-box; }
}

@media (prefers-reduced-motion: reduce) {
    .cms-card-stacked-img { transition: none; }
}

/* ==================== Variante: scroll_stacked (baralho) ==================== */
.cms-thumbnails-stacked-content {
    padding: 60px 0;
}

.cms-thumbnails-stacked-deck {
    position: relative;
    width: 100%;
    height: 320px;
    margin: 0 auto;
    overflow: hidden;
    cursor: grab;
    touch-action: pan-y;
    user-select: none;
}

.cms-thumbnails-stacked-deck:active,
.cms-thumbnails-stacked-deck.arrastando {
    cursor: grabbing;
}

.cms-thumbnails-stacked-deck .cms-card-stacked {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 176px;
    height: 224px;
    margin: -112px 0 0 -88px;
    transform: translateX(var(--stacked-x, 0px)) translateY(var(--stacked-y, 0px)) rotate(var(--stacked-rotate, 0deg)) scale(var(--stacked-scale, 1));
    opacity: var(--stacked-opacity, 1);
    z-index: var(--stacked-z, 1);
    transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.5s ease;
}

.cms-thumbnails-stacked-deck.arrastando .cms-card-stacked {
    transition: none;
}

@media (min-width: 640px) {
    .cms-thumbnails-stacked-deck { height: 460px; }

    .cms-thumbnails-stacked-deck .cms-card-stacked {
        width: 224px;
        height: 320px;
        margin: -160px 0 0 -112px;
    }
}

@media (min-width: 1024px) {
    .cms-thumbnails-stacked-deck { height: 520px; }

    .cms-thumbnails-stacked-deck .cms-card-stacked {
        width: 256px;
        height: 384px;
        margin: -192px 0 0 -128px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cms-thumbnails-stacked-deck .cms-card-stacked {
        transition: none;
    }
}

/* ==================== Variante: scroll (lado a lado) ==================== */
.cms-thumbnails-stacked-scroll-content {
    padding: 60px 0;
}

.cms-thumbnails-stacked-scroll-content .container {
    position: relative;
}

.cms-content-scroll-stacked {
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
}

.cms-content-scroll-stacked::-webkit-scrollbar {
    display: none;
}

.cms-scroll-horizontal-stacked {
    display: flex !important;
    flex-wrap: nowrap !important;
    padding: 0 15px;
}

.cms-scroll-horizontal-stacked .cms-card-stacked {
    flex: 0 0 auto;
    width: 176px;
    height: 224px;
    margin: 0 15px;
}

@media (min-width: 640px) {
    .cms-scroll-horizontal-stacked .cms-card-stacked { width: 224px; height: 320px; }
}

@media (min-width: 1024px) {
    .cms-scroll-horizontal-stacked .cms-card-stacked { width: 256px; height: 384px; }
}

.cms-thumbnails-stacked-scroll-content .cms-handle {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 10;
}

.cms-thumbnails-stacked-scroll-content .handleNext { right: 0; }
.cms-thumbnails-stacked-scroll-content .handlePrev { left: 0; }

/* ==================== Variante: list_col3 / list_col4 (grade) ==================== */
.cms-thumbnails-stacked-list-content {
    padding: 60px 0;
}

.cms-thumbnails-stacked-list {
    row-gap: 30px;
}

.cms-thumbnails-stacked-list .cms-card-stacked {
    width: 100%;
    aspect-ratio: 2 / 3;
}
