/**
 * Reveal Button Widget Styles
 * Botão com efeito de texto deslizante no hover
 * Baseado nas especificações exatas do Figma: 200ms + Slow curve
 */

/* ==========================================
   UTILITÁRIOS E RESET
   ========================================== */
.elementor-widget-reveal-button {
    margin-bottom: 0;
}

.reveal-button-wrapper * {
    box-sizing: border-box;
}

.reveal-button a {
    color: inherit;
    text-decoration: none;
}

.reveal-button svg {
    vertical-align: middle;
    fill: currentColor;
}

/* ==========================================
   CONTAINER DO BOTÃO
   ========================================== */
.reveal-button-wrapper {
    display: inline-block;
}

/* ==========================================
   BOTÃO BASE
   font-size e padding são sobrescritos pelo
   clamp gerado via PHP quando ativado.
   font-weight: 500 = DM Sans Medium.
   ========================================== */
.reveal-button {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 16px 18px;
    font-size: 14px;
    font-weight: 500;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    text-decoration: none;
    cursor: pointer;
    border: none;
    background-color: #000000;
    color: #ffffff;
    overflow: hidden;
    border-radius: 0;
}

/* ==========================================
   TIPOS DE BOTÃO
   ========================================== */
.reveal-button-primary {
    background-color: #000000;
    color: #ffffff;
}

.reveal-button-secondary {
    background-color: #6c757d;
    color: #ffffff;
}

.reveal-button-outline {
    background-color: transparent;
    border: 2px solid #000000;
    color: #000000;
}

/* ==========================================
   WRAPPER DO CONTEÚDO COM OVERFLOW
   ========================================== */
.reveal-button-content-wrapper {
    overflow: hidden;
    height: 1.2em;
    position: relative;
}

/* ==========================================
   CONTAINER DO CONTEÚDO DESLIZANTE
   ANIMAÇÃO EXATA DO FIGMA: 200ms + Slow (ease-out suave)
   ========================================== */
.reveal-button-content {
    display: flex;
    flex-direction: column;
    transition: transform 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

/* ==========================================
   TEXTO INDIVIDUAL
   ========================================== */
.reveal-button-text {
    display: flex;
    align-items: center;
    justify-content: center;
    white-space: nowrap;
    line-height: 1.2em;
    height: 1.2em;
}

/* ==========================================
   EFEITO HOVER — DESLIZA O CONTEÚDO PARA CIMA
   ========================================== */
.reveal-button:hover .reveal-button-content {
    transform: translateY(-1.2em);
}

/* ==========================================
   ÍCONES
   ========================================== */
.reveal-button-icon {
    display: inline-flex;
    align-items: center;
    width: 1em;
    height: 1em;
}

.reveal-button-icon svg,
.reveal-button-icon i {
    width: 100%;
    height: 100%;
    fill: currentColor;
    color: inherit;
}

.reveal-button-icon-left {
    margin-right: 8px;
}

.reveal-button-icon-right {
    margin-left: 8px;
}

/* ==========================================
   ESTADOS DE FOCO
   ========================================== */
.reveal-button:focus {
    outline: none;
}

.reveal-button:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 2px;
}

/* ==========================================
   SUPORTE RTL
   ========================================== */
.rtl .reveal-button-icon-left {
    margin-left: 8px;
    margin-right: 0;
}

.rtl .reveal-button-icon-right {
    margin-right: 8px;
    margin-left: 0;
}

/* ==========================================
   CONTROLES DE POSIÇÃO — DESKTOP (padrão, sem media query)
   ========================================== */
.reveal-button-align-left .reveal-button-wrapper {
    display: flex;
    justify-content: flex-start;
}

.reveal-button-align-center .reveal-button-wrapper {
    display: flex;
    justify-content: center;
}

.reveal-button-align-right .reveal-button-wrapper {
    display: flex;
    justify-content: flex-end;
}

.reveal-button-align-stretch .reveal-button-wrapper {
    display: flex;
}

.reveal-button-align-stretch .reveal-button {
    width: 100%;
}

/* ==========================================
   CONTROLES DE POSIÇÃO — WIDESCREEN (min-width: 2400px)
   ========================================== */
@media (min-width: 2400px) {
    .reveal-button-align-widescreen-left .reveal-button-wrapper {
        display: flex;
        justify-content: flex-start;
    }

    .reveal-button-align-widescreen-center .reveal-button-wrapper {
        display: flex;
        justify-content: center;
    }

    .reveal-button-align-widescreen-right .reveal-button-wrapper {
        display: flex;
        justify-content: flex-end;
    }

    .reveal-button-align-widescreen-stretch .reveal-button-wrapper {
        display: flex;
    }

    .reveal-button-align-widescreen-stretch .reveal-button {
        width: 100%;
    }
}

/* ==========================================
   CONTROLES DE POSIÇÃO — NOTEBOOK EXTRA (max-width: 1440px)
   ========================================== */
@media (max-width: 1440px) {
    .reveal-button-align-notebook_extra-left .reveal-button-wrapper {
        display: flex;
        justify-content: flex-start;
    }

    .reveal-button-align-notebook_extra-center .reveal-button-wrapper {
        display: flex;
        justify-content: center;
    }

    .reveal-button-align-notebook_extra-right .reveal-button-wrapper {
        display: flex;
        justify-content: flex-end;
    }

    .reveal-button-align-notebook_extra-stretch .reveal-button-wrapper {
        display: flex;
    }

    .reveal-button-align-notebook_extra-stretch .reveal-button {
        width: 100%;
    }
}

/* ==========================================
   CONTROLES DE POSIÇÃO — NOTEBOOK (max-width: 1366px)
   ========================================== */
@media (max-width: 1366px) {
    .reveal-button-align-laptop-left .reveal-button-wrapper {
        display: flex;
        justify-content: flex-start;
    }

    .reveal-button-align-laptop-center .reveal-button-wrapper {
        display: flex;
        justify-content: center;
    }

    .reveal-button-align-laptop-right .reveal-button-wrapper {
        display: flex;
        justify-content: flex-end;
    }

    .reveal-button-align-laptop-stretch .reveal-button-wrapper {
        display: flex;
    }

    .reveal-button-align-laptop-stretch .reveal-button {
        width: 100%;
    }
}

/* ==========================================
   CONTROLES DE POSIÇÃO — TABLET EXTRA (max-width: 1200px)
   ========================================== */
@media (max-width: 1200px) {
    .reveal-button-align-tablet_extra-left .reveal-button-wrapper {
        display: flex;
        justify-content: flex-start;
    }

    .reveal-button-align-tablet_extra-center .reveal-button-wrapper {
        display: flex;
        justify-content: center;
    }

    .reveal-button-align-tablet_extra-right .reveal-button-wrapper {
        display: flex;
        justify-content: flex-end;
    }

    .reveal-button-align-tablet_extra-stretch .reveal-button-wrapper {
        display: flex;
    }

    .reveal-button-align-tablet_extra-stretch .reveal-button {
        width: 100%;
    }
}

/* ==========================================
   CONTROLES DE POSIÇÃO — TABLET (max-width: 1024px)
   ========================================== */
@media (max-width: 1024px) {
    .reveal-button-align-tablet-left .reveal-button-wrapper {
        display: flex;
        justify-content: flex-start;
    }

    .reveal-button-align-tablet-center .reveal-button-wrapper {
        display: flex;
        justify-content: center;
    }

    .reveal-button-align-tablet-right .reveal-button-wrapper {
        display: flex;
        justify-content: flex-end;
    }

    .reveal-button-align-tablet-stretch .reveal-button-wrapper {
        display: flex;
    }

    .reveal-button-align-tablet-stretch .reveal-button {
        width: 100%;
    }
}

/* ==========================================
   CONTROLES DE POSIÇÃO — MOBILE EXTRA (max-width: 430px)
   ========================================== */
@media (max-width: 430px) {
    .reveal-button-align-mobile_large-left .reveal-button-wrapper {
        display: flex;
        justify-content: flex-start;
    }

    .reveal-button-align-mobile_large-center .reveal-button-wrapper {
        display: flex;
        justify-content: center;
    }

    .reveal-button-align-mobile_large-right .reveal-button-wrapper {
        display: flex;
        justify-content: flex-end;
    }

    .reveal-button-align-mobile_large-stretch .reveal-button-wrapper {
        display: flex;
    }

    .reveal-button-align-mobile_large-stretch .reveal-button {
        width: 100%;
    }
}

/* ==========================================
   CONTROLES DE POSIÇÃO — MOBILE 360 (max-width: 360px)
   ========================================== */
@media (max-width: 360px) {
    .reveal-button-align-mobile-left .reveal-button-wrapper {
        display: flex;
        justify-content: flex-start;
    }

    .reveal-button-align-mobile-center .reveal-button-wrapper {
        display: flex;
        justify-content: center;
    }

    .reveal-button-align-mobile-right .reveal-button-wrapper {
        display: flex;
        justify-content: flex-end;
    }

    .reveal-button-align-mobile-stretch .reveal-button-wrapper {
        display: flex;
    }

    .reveal-button-align-mobile-stretch .reveal-button {
        width: 100%;
    }
}

/* ==========================================
   MODO ESCURO (ELEMENTOR EDITOR)
   ========================================== */
.elementor-editor-dark-mode .reveal-button-outline {
    border-color: rgba(255, 255, 255, 0.3);
    color: rgba(255, 255, 255, 0.8);
}

/* ==========================================
   ACESSIBILIDADE
   ========================================== */
@media (prefers-reduced-motion: reduce) {
    .reveal-button-content {
        transition: none;
    }
}