/* =========================================================
   FONTS
========================================================= */

@font-face {
    font-family: "PP Mori";
    src: url("assets/PP-Mori.woff2") format("woff2");
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "PP Mori";
    src: url("assets/PP-Mori.woff2") format("woff2");
    font-weight: 600;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "PP Editorial New";
    src: url("assets/PP-Editorial-New.woff2") format("woff2");
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

/* =========================================================
   RESET E TRAVA GLOBAL CONTRA SCROLL HORIZONTAL
========================================================= */

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html,
body {
    width: 100%;
    max-width: 100%;
    min-height: 100%;
    overflow-x: hidden !important;
    position: relative;
}

/* Efeito de deslizamento (scroll suave) para todo link que aponta
   para uma âncora/seção do próprio site (#clases, #horario, etc.).
   Links externos (WhatsApp) não são afetados — só muda o
   comportamento do scroll da própria página. A regra de
   prefers-reduced-motion mais abaixo já desliga isso para quem
   pediu menos movimento (scroll-behavior: auto !important). */
html {
    scroll-behavior: smooth;
}

body {
    background: #111;
    color: #fff;
    font-family: "PP Mori", Arial, sans-serif;
}

button {
    border: 0;
    background: transparent;
    font: inherit;
    color: inherit;
    cursor: pointer;
}

a {
    color: inherit;
    text-decoration: none;
}

/* =========================================================
   HERO
========================================================= */

.hero {
    position: relative;
    width: 100%;
    height: 100dvh; /* Altura dinâmica real para estabilizar o scroll no mobile */
    min-height: 500px;
    overflow: hidden;
    background: #82593f;
}

/* =========================================================
   HERO MEDIA
========================================================= */

.hero-media {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    z-index: 0;
    /* Isola o repaint do canvas WebGL (folhas/vento) do resto da
       página: o navegador não precisa reavaliar layout/pintura fora
       desta caixa a cada quadro da animação. Não muda nada visual. */
    contain: layout paint style;
}

.hero-image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
    transform: scale(1.0);
}

/* =========================================================
   HERO OVERLAY
========================================================= */

.hero-media::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 2;
    pointer-events: none;
    background:
        linear-gradient(
            180deg,
            rgba(0, 0, 0, 0.05) 0%,
            rgba(0, 0, 0, 0.10) 22%,
            rgba(0, 0, 0, 0.26) 40%,
            rgba(0, 0, 0, 0.26) 54%,
            rgba(0, 0, 0, 0.12) 68%,
            rgba(0, 0, 0, 0.03) 84%,
            rgba(0, 0, 0, 0.05) 100%
        );
}

/* =========================================================
   NAVBAR
========================================================= */

.navbar {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 61px;
    padding: 0 32px;
    display: flex;
    align-items: center;
    z-index: 50;
    color: #fff;
    /* Transparente sobre o hero; ganha fundo ao rolar (.is-scrolled). */
    background: transparent;
    transition: background .35s ease, box-shadow .35s ease, height .35s ease,
                -webkit-backdrop-filter .35s ease, backdrop-filter .35s ease;
}

/* Ao rolar para baixo: barra fixa com fundo escuro translúcido e
   desfoque, mantendo o texto branco legível sobre as seções claras. */
.navbar.is-scrolled {
    background: rgba(28, 18, 13, 0.72);
    -webkit-backdrop-filter: blur(14px) saturate(140%);
    backdrop-filter: blur(14px) saturate(140%);
    box-shadow: 0 10px 30px -18px rgba(0, 0, 0, 0.55);
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

/* =========================================================
   LOGO
========================================================= */

.navbar-logo {
    display: block;
    font-family: "PP Mori", Arial, sans-serif;
    font-size: 18px;
    font-weight: 600;
    line-height: 1;
    letter-spacing: -1px;
    color: #fff;
    white-space: nowrap;
    transition: opacity 0.25s ease, transform 0.35s ease;
}

.navbar-logo:hover {
    opacity: 0.65;
}

.navbar-logo img {
    /* ===== TAMANHO DA LOGO NO PC — mexa AQUI ===== */
    height: 84px;        /* cabe com folga na barra de 61px */
    width: auto;
    display: block;
    transition: height 0.35s ease;
}

/* =========================================================
   NAVIGATION LINKS
========================================================= */

.navbar-links {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    align-items: center;
    gap: 43px;
}

.navbar-links a {
    position: relative;
    display: block;
    font-family: "PP Mori", Arial, sans-serif;
    font-size: 9px;
    font-weight: 600;
    line-height: 1;
    letter-spacing: -0.01em;
    color: #fff;
    white-space: nowrap;
    transition: opacity 0.25s ease;
}

.navbar-links a:hover {
    opacity: 0.55;
}

.navbar-links a::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: -5px;
    width: 0;
    height: 1px;
    background: #fff;
    transition: width 0.3s ease;
}

.navbar-links a:hover::after {
    width: 100%;
}

/* =========================================================
   RIGHT NAVBAR PILL
========================================================= */

.navbar-actions {
    margin-left: auto;
    height: 46px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 17px;
    border-radius: 999px;
    background: transparent;
    color: #222;
}

/* Desktop: os ícones somem, o botão do WhatsApp assume o lugar */
.navbar-actions .nav-icon,
.navbar-actions .nav-divider {
    display: none;
}

.navbar-actions .navbar-cta {
    display: flex;
}

/* =========================================================
   NAV ICON
========================================================= */

.nav-icon {
    width: 22px;
    height: 28px;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #222;
}

.nav-icon svg {
    display: block;
    width: 17px;
    height: 20px;
}

.nav-divider {
    display: block;
    width: 1px;
    height: 19px;
    background: rgba(0, 0, 0, 0.25);
}

/* =========================================================
   NAVBAR · BOTÃO CONTACTO (desktop)
   Pill sólida e discreta: um tom só, borda fina, um único
   movimento no hover (leve subida + troca de cor). Sem
   gradiente, sem selo de ícone, sem efeitos empilhados.
========================================================= */

.navbar-cta {
    display: none;
    align-items: center;
    gap: 11px;
    height: 42px;
    padding: 0 7px 0 22px;
    border-radius: 999px;
    white-space: nowrap;
    background: rgba(48, 17, 0, 0.55);
    -webkit-backdrop-filter: blur(14px) saturate(140%);
    backdrop-filter: blur(14px) saturate(140%);
    border: 1px solid rgba(255, 255, 255, 0.16);
    box-shadow: 0 6px 16px -10px rgba(20, 8, 0, 0.5);
    transition: background-color .35s ease,
                border-color .35s ease,
                box-shadow .35s ease,
                transform .35s cubic-bezier(.16, 1, .3, 1);
}

.navbar-cta:hover {
    background: rgba(134, 100, 82, 0.6);
    border-color: rgba(255, 255, 255, 0.3);
    box-shadow: 0 10px 22px -10px rgba(20, 8, 0, 0.5);
    transform: translateY(-1px);
}

.navbar-cta:active {
    transform: translateY(0);
}

.navbar-cta-label {
    font-family: "PP Mori", Arial, sans-serif;
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: 0.09em;
    text-transform: uppercase;
    color: #fff;
}

.navbar-cta-whatsapp {
    flex-shrink: 0;
    width: 26px;
    height: 26px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.14);
    color: #fff;
    transition: transform .35s cubic-bezier(.16, 1, .3, 1),
                background-color .35s ease;
}

.navbar-cta-whatsapp svg {
    display: block;
    width: 13px;
    height: 13px;
}

.navbar-cta:hover .navbar-cta-whatsapp {
    background: rgba(255, 255, 255, 0.26);
    transform: scale(1.08);
}

/* Botão RESERVA da navbar — existe só no mobile (ver media query). */
.navbar-reserva-mobile {
    display: none;
}

/* =========================================================
   HERO CONTENT
========================================================= */

.hero-content {
    position: absolute;
    z-index: 5;
    top: 37%;
    left: 50%;
    width: min(1000px, calc(100% - 40px));
    transform: translate(-50%, -50%);
    text-align: center;
    color: #fff;
}

/* Halo suave atrás do texto (desktop): garante que o título e a
   descrição fiquem sempre legíveis sobre a imagem em movimento,
   sem escurecer o resto da foto. No mobile há uma versão própria
   mais adiante que sobrescreve estes valores. */
.hero-content::before {
    content: "";
    position: absolute;
    inset: -18% -12%;
    z-index: -1;
    pointer-events: none;
    background: radial-gradient(
        ellipse 66% 58% at 50% 48%,
        rgba(8, 6, 5, 0.34) 0%,
        rgba(8, 6, 5, 0.18) 48%,
        rgba(8, 6, 5, 0) 76%
    );
}

/* =========================================================
   HERO TITLE
========================================================= */

.hero-title {
    font-family: "PP Mori", Arial, sans-serif;
    font-size: clamp(48px, 5.42vw, 122px);
    font-weight: 600;
    line-height: 0.95;
    letter-spacing: -0.01em;
    text-wrap: balance;
    color: #fff;
    /* Sombra discreta: mantém o título legível mesmo quando passa
       por trás dele uma área clara da foto (cortina/espelho). */
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.26), 0 6px 26px rgba(0, 0, 0, 0.20);
}

.hero-title .serif {
    font-family: "PP Editorial New", Georgia, serif;
    font-weight: 400;
    font-style: italic;
    letter-spacing: -0.02em;
}

.hero-description {
    width: 100%;
    max-width: 26em;
    margin: 22px auto 0;
    font-family: "PP Mori", Arial, sans-serif;
    font-size: 13px;
    font-weight: 400;
    line-height: 1.3;
    letter-spacing: -0.01em;
    color: #fff;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.30), 0 2px 12px rgba(0, 0, 0, 0.22);
}

/* =========================================================
   EXPLORE ALL PRODUCTS
========================================================= */

.hero-cta {
    position: absolute;
    z-index: 20;
    left: 50%;
    bottom: 32px;
    transform: translateX(-50%);
    width: auto;
    max-width: calc(100% - 40px);
    height: 60px;
    padding: 0 8px 0 32px;
    display: inline-flex;
    align-items: center;
    gap: 22px;
    border-radius: 999px;
    color: #fff;
    background: rgba(48, 17, 0, 0.5);
    -webkit-backdrop-filter: blur(14px) saturate(140%);
    backdrop-filter: blur(14px) saturate(140%);
    border: 1px solid rgba(255, 255, 255, 0.22);
    box-shadow: 0 8px 24px -12px rgba(48, 17, 0, 0.5);
    overflow: hidden;
    isolation: isolate;
    transition: box-shadow .5s cubic-bezier(.16, 1, .3, 1),
                border-color .5s cubic-bezier(.16, 1, .3, 1);
}

/* Preenchimento em accent que sobe no hover (reveal editorial) */
.hero-cta::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    background: #866452;
    transform: translateY(101%);
    transition: transform .55s cubic-bezier(.16, 1, .3, 1);
}

.cta-label {
    position: relative;
    z-index: 1;
    color: #fff;
    font-family: "PP Mori", Arial, sans-serif;
    font-size: 13px;
    font-weight: 500;
    line-height: 1;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    text-decoration: none;
    white-space: nowrap;
    transition: letter-spacing .5s cubic-bezier(.16, 1, .3, 1);
}

.cta-arrow {
    position: relative;
    z-index: 1;
    flex-shrink: 0;
    width: 46px;
    height: 46px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: #f5f1ed;
    color: #4a3327;
    transition: transform .5s cubic-bezier(.16, 1, .3, 1),
                background-color .4s ease;
}

.cta-arrow svg {
    display: block;
    width: 17px;
    height: 17px;
}

.hero-cta:hover {
    border-color: rgba(255, 255, 255, 0.42);
    box-shadow: 0 16px 40px -12px rgba(48, 17, 0, 0.6);
}

.hero-cta:hover::before {
    transform: translateY(0);
}

.hero-cta:hover .cta-label {
    letter-spacing: 0.2em;
}

.hero-cta:hover .cta-arrow {
    transform: rotate(-45deg);
}

/* =========================================================
   DESKTOP
========================================================= */

@media (min-width: 900px) {
    .hero {
        min-height: 500px;
    }
    .navbar {
        height: 61px;
        padding: 0 32px;
    }
    .navbar-logo {
        font-size: 18px;
        margin-left: 127px; 
        transform: translateY(0);
    }
    .hero-content {
        top: 37%;
    }
    .hero-title {
        font-size: clamp(64px, 5.42vw, 122px);
    }
    .hero-description {
        margin-top: 24px;
    }
    .hero-cta {
        width: auto;
        max-width: calc(100% - 64px);
        height: 64px;
        bottom: 32px;
        padding: 0 8px 0 34px;
    }

    /* No desktop: mesma seta do mobile */
    .cta-arrow { display: flex; }
}

/* =========================================================
   TABLET / MOBILE
========================================================= */

@media (max-width: 899px) {
    .hero {
        height: 100svh;
        min-height: 560px;
    }
    /* ===== NAVBAR MOBILE · "pill" flutuante (logo · reserva · menu) ===== */
    .navbar {
        top: calc(env(safe-area-inset-top, 0px) + 11px);
        left: max(40px, env(safe-area-inset-left, 0px));
        right: max(40px, env(safe-area-inset-right, 0px));
        width: auto;
        height: 62px;
        padding: 0 16px 0 20px;
        gap: 10px;
        justify-content: space-between;
        border-radius: 27px;
        background: rgba(40, 25, 16, 0.52);
        -webkit-backdrop-filter: blur(18px) saturate(150%);
        backdrop-filter: blur(18px) saturate(150%);
        border: 1px solid rgba(255, 255, 255, 0.14);
        box-shadow:
            0 14px 36px -18px rgba(0, 0, 0, 0.65),
            inset 0 1px 0 rgba(255, 255, 255, 0.10);
    }

    /* A pill já tem fundo próprio; ao rolar só aprofunda um pouco o
       tom (sem borda inferior full-width, que quebraria o arredondado). */
    .navbar.is-scrolled {
        background: rgba(32, 20, 13, 0.72);
        border-color: rgba(255, 255, 255, 0.16);
        border-bottom: 1px solid rgba(255, 255, 255, 0.16);
        box-shadow:
            0 16px 40px -18px rgba(0, 0, 0, 0.7),
            inset 0 1px 0 rgba(255, 255, 255, 0.10);
    }

    /* Logo à esquerda (deixa de ser centralizada) */
    .navbar-logo {
        position: static;
        left: auto;
        transform: none;
        flex-shrink: 0;
        line-height: 0;
         margin-left: 0px;
    }
    .navbar-logo img {
        /* ===== TAMANHO DA LOGO NO MOBILE — mexa AQUI ===== */
        /* Precisa caber dentro da pill do navbar (62px de altura).
           82px estourava pra cima e pra baixo do balão — por isso
           a logo parecia "cortada"/quebrada no celular. */
        height: 76px;
        width: auto;
        display: block;
    }
    .navbar-links {
        display: none;
    }

    /* Botão RESERVA — centro da pill */
    .navbar-reserva-mobile {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 8px;
        min-width: 0;
        margin-left: auto;   /* empurra o botão para a direita */
        height: 41px;
        padding: 0 19px;
        border-radius: 999px;
        white-space: nowrap;
        color: #fff;
        background: linear-gradient(155deg, #b28a63 0%, #9a6d49 48%, #7c5338 100%);
        border: 1px solid rgba(255, 255, 255, 0.22);
        box-shadow:
            0 8px 18px -9px rgba(48, 22, 8, 0.7),
            inset 0 1px 0 rgba(255, 255, 255, 0.20);
        transition: transform .3s cubic-bezier(.16, 1, .3, 1),
                    box-shadow .3s ease;
    }
    .navbar-reserva-mobile:active {
        transform: translateY(1px);
        box-shadow: 0 5px 12px -8px rgba(48, 22, 8, 0.7),
                    inset 0 1px 0 rgba(255, 255, 255, 0.18);
    }
    .navbar-reserva-icon {
        flex-shrink: 0;
        width: 18px;
        height: 18px;
        display: flex;
        align-items: center;
        justify-content: center;
        color: #fbf4ec;
    }
    .navbar-reserva-icon svg {
        display: block;
        width: 18px;
        height: 18px;
    }
    .navbar-reserva-label {
        font-family: "PP Mori", Arial, sans-serif;
        font-size: 10.5px;
        font-weight: 600;
        line-height: 1;
        letter-spacing: 0.07em;
        text-transform: uppercase;
        color: #fff;
    }

    /* Menu hambúrguer à direita */
    .navbar-actions {
        width: auto;
        height: 38px;
        margin-left: 0;
        padding: 0 4px;
        background: transparent;
        gap: 0;
        flex-shrink: 0;
    }
    .navbar-actions .nav-icon:first-child {
        display: flex;
    }
    .navbar-actions .account-icon,
    .navbar-actions .nav-divider {
        display: none;
    }
    .navbar-actions .nav-icon svg {
        width: 23px;
        height: 27px;
        color: #fff;
    }
    .navbar-actions .navbar-cta {
        display: none;
    }
    /* Hambúrguer um pouco mais encorpado, como na imagem */
    .navbar-actions .nav-menu-bars {
        width: 23px;
        height: 15px;
    }
    .navbar-actions .nav-menu-bars span {
        height: 1.8px;
    }
    .hero-image {
        object-fit: cover;
        object-position: 12% center;
        transform: scale(1.0);
    }
    .hero-media::after {
        content: "";
        position: absolute;
        inset: 0;
        z-index: 2;
        pointer-events: none;
        background:
            linear-gradient(180deg, rgba(15, 10, 8, 0.22) 0%, rgba(15, 10, 8, 0.14) 20%, rgba(14, 9, 7, 0.18) 44%, rgba(12, 8, 6, 0.28) 60%, rgba(11, 7, 5, 0.24) 74%, rgba(9, 6, 4, 0.16) 86%, rgba(8, 5, 4, 0.22) 100%),
            linear-gradient(90deg, rgba(86, 48, 30, 0.10) 0%, rgba(50, 25, 18, 0.02) 42%, rgba(28, 16, 14, 0.05) 100%),
            radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 35%, rgba(0, 0, 0, 0.03) 60%, rgba(0, 0, 0, 0.12) 100%);
    }
    .hero-content {
        width: calc(100% - 32px);
        top: 42%;
        transform: translate(-50%, -50%);
    }

    /* Halo suave atrás do texto: neutraliza a luz branca ao lado
       do espelho sem escurecer o resto da foto (planta / ambiente
       roxo continuam com o contraste original). */
    .hero-content::before {
        content: "";
        position: absolute;
        inset: -14% -10%;
        z-index: -1;
        background: radial-gradient(
            ellipse 70% 65% at 50% 45%,
            rgba(10, 8, 7, 0.40) 0%,
            rgba(10, 8, 7, 0.22) 45%,
            rgba(10, 8, 7, 0) 75%
        );
        pointer-events: none;
    }

    .hero-title {
        font-size: clamp(38px, 10.5vw, 56px);
        line-height: 1.05;
        letter-spacing: -0.02em;
        text-shadow:
            0 1px 3px rgba(0, 0, 0, 0.35),
            0 10px 26px rgba(0, 0, 0, 0.22);
    }
    .hero-description {
        width: 100%;
        max-width: 22em;
        margin-top: 20px;
        font-size: 14px;
        line-height: 1.25;
        letter-spacing: -0.01em;
        text-shadow:
            0 1px 3px rgba(0, 0, 0, 0.35),
            0 10px 26px rgba(0, 0, 0, 0.22);
    }
    .hero-cta {
        width: auto;
        max-width: calc(100% - 32px);
        height: 54px;
        bottom: 175px;
        padding: 0 6px 0 24px;
        gap: 16px;
    }
    .cta-label {
        font-size: 11px;
        letter-spacing: 0.12em;
    }
    .cta-arrow {
        width: 42px;
        height: 42px;
    }
    .cta-arrow svg {
        width: 15px;
        height: 15px;
    }
}

/* =========================================================
   SMALL PHONES
========================================================= */

@media (max-width: 390px) {
    .navbar {
        left: 14px;
        right: 14px;
        padding: 0 12px 0 15px;
    }
    .navbar-logo { font-size: 27px; }
    .navbar-logo img { height: 36px; }
    .navbar-reserva-mobile { height: 38px; padding: 0 13px; gap: 7px; }
    .navbar-reserva-label { font-size: 10px; letter-spacing: 0.06em; }
    .navbar-reserva-icon,
    .navbar-reserva-icon svg { width: 16px; height: 16px; }
    .hero-content { top: 41%; }
    .hero-title { font-size: 42px; }
    .hero-cta {
        width: auto;
        max-width: calc(100% - 32px);
        height: 54px;
        bottom: 170px;
        padding: 0 6px 0 22px;
        gap: 14px;
    }
    .cta-label { font-size: 11px; }
    .cta-arrow { width: 42px; height: 42px; }
}

/* =========================================================
   VERY SMALL PHONES
========================================================= */

@media (max-width: 350px) {
    .navbar {
        left: 12px;
        right: 12px;
        padding: 0 10px 0 12px;
    }
    .navbar-logo { font-size: 25px; }
    .navbar-logo img { height: 33px; }
    .navbar-reserva-mobile { height: 36px; padding: 0 11px; gap: 6px; }
    .navbar-reserva-label { font-size: 9.5px; letter-spacing: 0.04em; }
    .navbar-actions { padding: 0 2px; }
    .hero-title { font-size: 38px; }
    .hero-cta {
        width: auto;
        max-width: calc(100% - 24px);
        height: 50px;
        padding: 0 6px 0 18px;
        gap: 12px;
        bottom: 160px;
    }
    .cta-label { font-size: 11px; }
    .cta-arrow { width: 40px; height: 40px; }
}

/* =========================================================
   SHORT VIEWPORTS
========================================================= */

/* Antes eram @media (max-height: ...), mas isso recalcula toda
   vez que a barra de endereço do celular aparece/some ao rolar a
   página, fazendo o texto "pular" de tamanho. Agora essas classes
   são fixadas uma única vez via JS (viewport-lock.js), com base na
   largura da tela, que não muda quando a barra de endereço some. */

html.vh-short .hero-title { font-size: clamp(36px, 4.5vw, 56px); }
html.vh-short .hero-description { margin-top: 18px; }
html.vh-short .hero-cta { height: 52px; bottom: 165px; }
html.vh-short .cta-arrow { width: 40px; height: 40px; }

html.vh-very-short .hero-content { top: 39%; }
html.vh-very-short .hero-title { font-size: clamp(32px, 4vw, 46px); }
html.vh-very-short .hero-description {
    margin-top: 12px;
    line-height: 1.15;
}
html.vh-very-short .hero-cta { height: 48px; bottom: 150px; }
html.vh-very-short .cta-arrow { width: 38px; height: 38px; }

/* =========================================================
   REDUCED MOTION
========================================================= */

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation: none !important;
        transition: none !important;
        scroll-behavior: auto !important;
    }
}

/* =========================================================
   BOTÃO + FAIXA DE SELOS
========================================================= */

.hero-cta {
    width: auto;
    height: 60px;
    bottom: 128px;
}

.hero-features {
    position: absolute;
    z-index: 20;
    left: 50%;
    bottom: 42px;
    transform: translateX(-50%);
    width: min(980px, calc(100% - 40px));
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 24px;
    color: #fff;
}

.feature {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
}

.feature-icon svg {
    display: block;
    width: 34px;
    height: 34px;
    flex-shrink: 0;
    color: #fff;
}

.feature-title {
    font-size: 12px;
    font-weight: 600;
    line-height: 1;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: #fff;
    margin-bottom: 5px;
}

.feature-desc {
    font-size: 12px;
    font-weight: 400;
    line-height: 1.3;
    letter-spacing: -0.01em;
    color: rgba(255, 255, 255, 0.8);
    max-width: 22ch;
}

.feature-divider {
    flex-shrink: 0;
    width: 1px;
    height: 46px;
    background: rgba(255, 255, 255, 0.3);
}

/* =========================================================
   DESKTOP — SELOS
========================================================= */

@media (min-width: 900px) {
    .hero-cta { bottom: 132px; }
    .hero-features { bottom: 44px; }
}

/* =========================================================
   TABLET / MOBILE — SELOS
========================================================= */

@media (max-width: 899px) {
    .hero-cta { bottom: 175px; }
    .hero-features {
        flex-direction: column;
        align-items: flex-start;
        justify-content: flex-start;
        gap: 12px;
        bottom: 22px;
        width: calc(100% - 32px);
        padding: 0 4px;
    }
    .feature {
        flex: none;
        width: 100%;
        justify-content: flex-start;
        gap: 12px;
    }
    .feature-icon svg {
        width: 28px;
        height: 28px;
    }
    .feature-title {
        font-size: 11px;
        margin-bottom: 2px;
    }
    .feature-desc {
        font-size: 11px;
        line-height: 1.2;
        max-width: none;
        opacity: 0.85;
    }
    .feature-divider { display: none; }
}

/* =========================================================
   LEGIBILIDADE DO TEXTO SOBRE A FOTO
========================================================= */

@media (max-width: 899px) {
    .hero-title,
    .hero-description {
        text-shadow:
            0 2px 20px rgba(0, 0, 0, 0.50),
            0 0 8px rgba(0, 0, 0, 0.25);
    }
}

@media (min-width: 900px) {
    .hero-title,
    .hero-description {
        text-shadow:
            0 1px 10px rgba(0, 0, 0, 0.30),
            0 0 2px rgba(0, 0, 0, 0.18);
    }
}

/* =========================================================
   SECTION · FILOSOFÍA / ABOUT US
   Refinada para ficar muito mais fiel ao Calmlyss original
========================================================= */

.filosofia {
  --filo-bg: #f9f6f3;
  --filo-text: #6b584e;
  --filo-deep: #301100;
  --filo-accent: #866452;
  --filo-accent-soft: #c78460;
  --filo-line: #d9d7d3;
  --filo-white: rgba(255,255,255,.8);
  position: relative;
  overflow: hidden;
  background: var(--filo-bg);
  color: var(--filo-text);
  padding: clamp(80px, 8vw, 132px) 32px clamp(80px, 8vw, 128px);
}

.filo-inner {
  width: min(100%, 960px);
  margin: 0 auto;
}

.filo-heading-block {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
  text-align: center;
}

.filo-eyebrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-bottom: 22px;
  padding: 11px 18px;
  border-radius: 999px;
  background: var(--filo-white);
  backdrop-filter: blur(10px);
  box-shadow: 0 6px 16px -8px rgba(48, 17, 0, .2);
}

.filo-pointer {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--filo-accent-soft);
}

.filo-label {
  font-family: "PP Mori", Arial, sans-serif;
  font-size: 12px;
  font-weight: 500;
  line-height: 1;
  letter-spacing: -.04em;
  color: var(--filo-text);
}

.filo-title-wrap { width: 100%; }

.filo-title {
  width: 100%;
  max-width: 850px;
  margin: 0 auto;
  font-family: "PP Mori", Arial, sans-serif;
  font-size: clamp(58px, 6.2vw, 96px);
  font-weight: 400;
  line-height: .98;
  letter-spacing: -.055em;
  color: var(--filo-text);
  text-align: center;
}

.filo-title-ht {
  font-family: "PP Editorial New", Georgia, serif;
  font-style: italic;
  font-weight: 400;
  letter-spacing: -.05em;
}

.filo-summary-wrap {
  width: 100%;
  max-width: 570px;
  margin: 28px auto 0;
}

.filo-summary {
  margin: 0;
  font-family: "PP Mori", Arial, sans-serif;
  font-size: 16px;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: -.04em;
  color: var(--filo-text);
  text-align: center;
}

/* =========================================================
   TRÊS IMAGENS — composição fiel à referência
========================================================= */

.filo-images {
  position: relative;
  width: min(100%, 900px);
  height: 470px;
  margin: 62px auto 72px;
  isolation: isolate;
}

.filo-image-single {
  position: absolute;
  overflow: hidden;
  background: #eee8e3;
  border-radius: 20px;
  box-shadow:
    0 30px 60px -24px rgba(48, 17, 0, .32),
    0 12px 26px -12px rgba(48, 17, 0, .2);
  transform-origin: center center;
  will-change: transform;
}

.filo-image-single img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .8s cubic-bezier(.16,1,.3,1);
}

.filo-image-single:hover img { transform: scale(1.035); }

/* Esquerda: maior, mais baixa e inclinada para a esquerda.
   --dx/--dy/--rot são preenchidos via JS (distância até o centro
   e rotação final) e --p é o progresso de scroll (0 → 1), também
   via JS. Com --p em 0 o card fica exatamente sobreposto ao
   central, sem rotação; em --p 1 ele está na posição final abaixo. */
.filo-image-single.is-1,
.filo-image-single.is-3 {
  transform:
    translate(
      calc((1 - var(--p, 1)) * var(--dx, 0px)),
      calc((1 - var(--p, 1)) * var(--dy, 0px))
    )
    rotate(calc(var(--p, 1) * var(--rot, 0deg)));
  opacity: var(--p, 1);
  transition: transform .05s linear, opacity .05s linear;
}

.filo-image-single.is-1 {
  left: 54px;
  top: 64px;
  z-index: 1;
  width: 330px;
  height: 370px;
  --rot: -9deg;
}

.filo-image-single.is-1 img {
  object-position: 34% center;
}

/* Centro: reto, à frente de tudo e mais alto — a "capa" da composição */
.filo-image-single.is-2 {
  left: 50%;
  top: 0;
  z-index: 3;
  width: 300px;
  height: 420px;
  transform: translateX(-50%);
}

.filo-image-single.is-2 img {
  object-position: center;
}

/* Direita: espelho da esquerda, inclinada para a direita */
.filo-image-single.is-3 {
  right: 54px;
  top: 64px;
  z-index: 2;
  width: 330px;
  height: 370px;
  --rot: 9deg;
}

.filo-image-single.is-3 img {
  object-position: 68% center;
}

/* Etiquetas no topo, como na referência */
.filo-image-label {
  position: absolute;
  top: 18px;
  left: 18px;
  bottom: auto;
  z-index: 5;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 9px 13px;
  border-radius: 10px;
  background: rgba(255,252,252,.93);
  backdrop-filter: blur(10px);
  box-shadow: 0 6px 16px -8px rgba(48, 17, 0, .25);
  color: var(--filo-text);
  font-family: "PP Mori", Arial, sans-serif;
  font-size: 10px;
  font-weight: 500;
  line-height: 1;
  letter-spacing: -.03em;
}

.filo-image-dot {
  width: 6px;
  height: 6px;
  flex: 0 0 6px;
  border-radius: 50%;
  background: var(--filo-accent-soft);
}
.filo-image-dot.is-2 { background: var(--filo-accent); }
.filo-image-dot.is-3 { background: var(--filo-text); }

/* O card is-3 fica atrás do card central (z-index menor) e a
   sobreposição entre os dois acontece justamente do lado esquerdo
   dele — onde a etiqueta nascia por padrão, ficando parcialmente
   escondida atrás do card do meio ("Principiante" cortado). Como
   is-3 é o espelho do is-1, a sobreposição do lado direito dele é
   livre: só mover a etiqueta para lá. */
.filo-image-single.is-3 .filo-image-label {
  left: auto;
  right: 18px;
}

/* =========================================================
   ESTATÍSTICAS
========================================================= */

.filo-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  width: 100%;
  border-top: 1px solid var(--filo-line);
  border-bottom: 1px solid var(--filo-line);
}

.filo-stat {
  min-height: 280px;
  padding: 38px 30px 40px;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  border-right: 1px solid var(--filo-line);
}

.filo-stat.last { border-right: 0; }

.filo-stat-number {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  margin-bottom: 24px;
  font-family: "PP Editorial New", Georgia, serif;
  font-size: clamp(68px, 7vw, 100px);
  font-style: italic;
  font-weight: 400;
  line-height: .8;
  letter-spacing: -.07em;
  color: var(--filo-text);
}

.filo-stat-number > span:last-child {
  margin-top: 4px;
  margin-left: 3px;
  font-family: "PP Mori", Arial, sans-serif;
  font-size: 17px;
  font-style: normal;
  font-weight: 500;
  line-height: 1;
  letter-spacing: -.04em;
}

.filo-stat-text {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
}

.filo-stat h3 {
  max-width: 230px;
  margin: 0;
  font-family: "PP Mori", Arial, sans-serif;
  font-size: 21px;
  font-weight: 400;
  line-height: 1.05;
  letter-spacing: -.055em;
  color: var(--filo-text);
}

.filo-stat h3 span {
  font-family: "PP Editorial New", Georgia, serif;
  font-style: italic;
  font-weight: 400;
  letter-spacing: -.05em;
}

.filo-stat p {
  max-width: 230px;
  margin: 13px auto 0;
  font-family: "PP Mori", Arial, sans-serif;
  font-size: 12px;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: -.035em;
  color: var(--filo-text);
}

/* =========================================================
   BOTÃO
========================================================= */

.filo-cta-wrap {
  display: flex;
  justify-content: center;
  margin-top: 42px;
}

.filo-cta {
  min-width: 210px;
  height: 56px;
  padding: 0 8px 0 22px;
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  border-radius: 999px;
  background: var(--filo-accent);
  color: #fff;
  text-decoration: none;
  font-family: "PP Mori", Arial, sans-serif;
  font-size: 12px;
  font-weight: 500;
  line-height: 1;
  letter-spacing: -.02em;
  transition: transform .45s cubic-bezier(.16,1,.3,1), background .35s ease;
}

.filo-cta:hover {
  transform: translateY(-3px);
  background: #765745;
}

.filo-cta-arrow {
  width: 42px;
  height: 42px;
  flex: 0 0 42px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: rgba(255,255,255,.16);
  transition: transform .45s cubic-bezier(.16,1,.3,1);
}

.filo-cta:hover .filo-cta-arrow { transform: rotate(-45deg); }
.filo-cta-arrow svg { width: 18px; height: 18px; }

/* =========================================================
   ANIMAÇÃO
========================================================= */

.filo-armed [data-reveal] {
  opacity: 0;
  transform: translateY(30px);
}

.filo-armed.is-in [data-reveal] {
  animation: filoReveal .9s cubic-bezier(.16,1,.3,1) var(--d,0ms) both;
}

@keyframes filoReveal {
  to { opacity: 1; transform: translateY(0); }
}

/* =========================================================
   TABLET
========================================================= */

@media (max-width: 900px) {
  .filosofia { padding-left: 24px; padding-right: 24px; }
  .filo-images { height: 410px; width: min(100%, 720px); }
  .filo-image-single.is-1 { left: 22px; top: 58px; width: 270px; height: 320px; --rot: -7deg; }
  .filo-image-single.is-2 { left: 50%; top: 0; width: 260px; height: 370px; transform: translateX(-50%); }
  .filo-image-single.is-3 { right: 22px; top: 58px; width: 270px; height: 320px; --rot: 7deg; }
}

/* =========================================================
   MOBILE
========================================================= */

@media (max-width: 640px) {
  .filosofia {
    padding: 70px 20px 74px;
  }

  .filo-eyebrow { margin-bottom: 18px; }
  .filo-label { font-size: 11px; }

  .filo-title {
    max-width: 100%;
    font-size: clamp(46px, 14vw, 72px);
    line-height: .96;
    letter-spacing: -.06em;
  }

  .filo-title br { display: none; }
  .filo-title-ht { display: block; }

  .filo-summary-wrap {
    max-width: 340px;
    margin-top: 24px;
  }

  .filo-summary {
    font-size: 14px;
    line-height: 1.45;
  }

  .filo-images {
    width: 100%;
    max-width: 430px;
    height: 340px;
    margin: 48px auto 54px;
  }

  .filo-image-single {
    border-radius: 14px;
  }

  .filo-image-single.is-1 {
    left: 4px;
    top: 58px;
    width: 165px;
    height: 225px;
    --rot: -6deg;
  }

  .filo-image-single.is-2 {
    left: 50%;
    top: 0;
    width: 180px;
    height: 270px;
    transform: translateX(-50%);
  }

  .filo-image-single.is-3 {
    right: 4px;
    top: 58px;
    width: 165px;
    height: 225px;
    --rot: 6deg;
  }

  .filo-image-label {
    top: 10px;
    left: 10px;
    padding: 7px 9px;
    gap: 6px;
    font-size: 9px;
  }

  .filo-image-single.is-3 .filo-image-label {
    left: auto;
    right: 10px;
  }

  .filo-image-dot { width: 5px; height: 5px; }

  .filo-stats { grid-template-columns: 1fr; }

  .filo-stat {
    min-height: auto;
    padding: 36px 20px 38px;
    border-right: 0;
    border-bottom: 1px solid var(--filo-line);
  }

  .filo-stat.last { border-bottom: 0; }

  .filo-stat-number {
    margin-bottom: 22px;
    font-size: 82px;
  }

  .filo-stat h3 {
    max-width: 280px;
    font-size: 23px;
  }

  .filo-stat p {
    max-width: 280px;
    font-size: 13px;
  }

  .filo-cta-wrap { margin-top: 34px; }
}

@media (prefers-reduced-motion: reduce) {
  .filo-armed [data-reveal] { opacity: 1; transform: none; animation: none; }
  .filo-image-single img,
  .filo-cta,
  .filo-cta-arrow { transition: none; }
  .filo-image-single.is-1,
  .filo-image-single.is-3 {
    --p: 1;
    transform: rotate(var(--rot, 0deg)) !important;
    opacity: 1 !important;
    transition: none;
  }
}

/* =========================================================
   MENU MOBILE · ÍCONE HAMBÚRGUER + OVERLAY
   ---------------------------------------------------------
   Substitui a antiga sacola. O ícone e o overlay só existem
   fora do desktop (<= 899px) — no desktop o botão continua
   escondido (como antes) e a .navbar-links assume a navegação.
========================================================= */

/* --- Ícone hambúrguer (3 traços finos, no tom do site) --- */
.nav-menu-bars {
    position: relative;
    display: block;
    width: 22px;
    height: 13px;
}

.nav-menu-bars span {
    position: absolute;
    left: 0;
    width: 100%;
    height: 1.4px;
    border-radius: 2px;
    background: currentColor;
    transition:
        transform .38s cubic-bezier(.16, 1, .3, 1),
        opacity .2s ease;
}

.nav-menu-bars span:nth-child(1) { top: 0; }
.nav-menu-bars span:nth-child(2) { top: 50%; transform: translateY(-50%); }
.nav-menu-bars span:nth-child(3) { bottom: 0; }

/* Aberto → os traços cruzam e formam um "X" */
body.menu-open .nav-menu-bars span:nth-child(1) {
    top: 50%;
    transform: translateY(-50%) rotate(45deg);
}
body.menu-open .nav-menu-bars span:nth-child(2) {
    opacity: 0;
    transform: translateY(-50%) scaleX(.4);
}
body.menu-open .nav-menu-bars span:nth-child(3) {
    top: 50%;
    bottom: auto;
    transform: translateY(-50%) rotate(-45deg);
}

/* Overlay escondido por padrão — só ganha vida no mobile */
.mobile-menu { display: none; }

@media (max-width: 899px) {

    /* O botão herda o branco da navbar mobile */
    .navbar-actions .nav-menu-toggle { color: #fff; }

    /* Mantém o botão (agora "X") clicável por cima do overlay */
    body.menu-open .navbar { z-index: 70; }

    /* Trava o scroll do fundo enquanto o menu está aberto */
    body.menu-open { overflow: hidden; }

    .mobile-menu {
        display: block;
        position: fixed;
        inset: 0;
        z-index: 60;
        padding: 96px 30px 40px;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        background:
            radial-gradient(120% 80% at 82% -8%, rgba(181, 118, 79, .22) 0%, rgba(181, 118, 79, 0) 55%),
            linear-gradient(165deg, #2a1a12 0%, #1c1310 55%, #140f0d 100%);
        opacity: 0;
        visibility: hidden;
        pointer-events: none;
        transition: opacity .45s ease, visibility .45s ease;
    }

    body.menu-open .mobile-menu {
        opacity: 1;
        visibility: visible;
        pointer-events: auto;
    }

    .mobile-menu-inner {
        min-height: 100%;
        max-width: 480px;
        margin: 0 auto;
        display: flex;
        flex-direction: column;
        justify-content: center;
    }

    /* Eyebrow — ecoa o rótulo "Filosofía" da seção about */
    .mobile-menu-eyebrow {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        margin-bottom: 32px;
        font-family: "PP Mori", Arial, sans-serif;
        font-size: 12px;
        font-weight: 500;
        letter-spacing: .02em;
        text-transform: uppercase;
        color: rgba(245, 241, 237, .6);
    }
    .mobile-menu-dot {
        width: 7px;
        height: 7px;
        border-radius: 50%;
        background: #c78460;
    }

    .mobile-menu-list {
        list-style: none;
        margin: 0;
        padding: 0;
        border-top: 1px solid rgba(245, 241, 237, .12);
    }
    .mobile-menu-list li {
        border-bottom: 1px solid rgba(245, 241, 237, .12);
    }
    .mobile-menu-list a {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 20px 2px;
        font-family: "PP Mori", Arial, sans-serif;
        font-size: clamp(30px, 9vw, 40px);
        font-weight: 500;
        line-height: 1;
        letter-spacing: -.02em;
        color: #f5f1ed;
        transition:
            color .3s ease,
            padding-left .35s cubic-bezier(.16, 1, .3, 1);
    }
    .mobile-menu-list a::after {
        content: "→";
        font-size: .5em;
        opacity: 0;
        transform: translateX(-6px);
        transition:
            opacity .3s ease,
            transform .35s cubic-bezier(.16, 1, .3, 1);
    }
    .mobile-menu-list a:hover,
    .mobile-menu-list a:active,
    .mobile-menu-list a:focus-visible {
        color: #c78460;
        padding-left: 10px;
    }
    .mobile-menu-list a:hover::after,
    .mobile-menu-list a:focus-visible::after {
        opacity: 1;
        transform: translateX(0);
    }

    /* Assinatura — a frase do hero, em serifa itálica e com contenção */
    .mobile-menu-tagline {
        margin: 40px 0 0;
        font-family: "PP Editorial New", Georgia, serif;
        font-style: italic;
        font-size: 17px;
        line-height: 1.35;
        letter-spacing: -.02em;
        color: rgba(245, 241, 237, .5);
    }
    .mobile-menu-tagline span { color: rgba(245, 241, 237, .78); }

    /* Entrada escalonada dos itens ao abrir */
    .mobile-menu-eyebrow,
    .mobile-menu-list li,
    .mobile-menu-tagline {
        opacity: 0;
        transform: translateY(16px);
        transition:
            opacity .5s ease,
            transform .55s cubic-bezier(.16, 1, .3, 1);
    }
    body.menu-open .mobile-menu-eyebrow,
    body.menu-open .mobile-menu-list li,
    body.menu-open .mobile-menu-tagline {
        opacity: 1;
        transform: none;
    }
    body.menu-open .mobile-menu-eyebrow          { transition-delay: .10s; }
    body.menu-open .mobile-menu-list li:nth-child(1) { transition-delay: .16s; }
    body.menu-open .mobile-menu-list li:nth-child(2) { transition-delay: .22s; }
    body.menu-open .mobile-menu-list li:nth-child(3) { transition-delay: .28s; }
    body.menu-open .mobile-menu-list li:nth-child(4) { transition-delay: .34s; }
    body.menu-open .mobile-menu-tagline          { transition-delay: .42s; }
}

/* =========================================================
   SECTION CLASES
   ---------------------------------------------------------
   Movida do <style> embutido no index.html para cá.
   Paleta alinhada à Filosofía (mesmo #f9f6f3 de fundo).
   content-visibility:auto = render mais barato quando a
   section está fora da tela, sem afetar as animações.
========================================================= */
.clases{
  /* Paleta alinhada ao style.css (mesma da section Filosofía) */
  --clases-bg:#f9f6f3;           /* fundo — igual à section de cima */
  --clases-ink:#301100;          /* títulos (filo-deep) */
  --clases-body:#6b584e;         /* texto corrido (filo-text) */
  --clases-accent:#866452;       /* destaque / eyebrow (filo-accent) */
  --clases-accent-soft:#c78460;  /* serif itálico (filo-accent-soft) */
  --clases-line:#d9d7d3;         /* bordas (filo-line) */
  --clases-pill:#ffffff;         /* fundo do eyebrow */
  --clases-white:#ffffff;

  --clases-font:"Montserrat", system-ui, sans-serif;
  --clases-serif:"Playfair Display", Georgia, serif;

  width:100%;
  font-family:var(--clases-font);
  color:var(--clases-body);
  background:var(--clases-bg);
  padding:6rem 0;
  content-visibility:auto;
  contain-intrinsic-size:auto 900px;
}
.clases *{box-sizing:border-box;}
.clases img{display:block;max-width:100%;}
.clases a{text-decoration:none;color:inherit;}

.clases-inner{
  width:100%;
  max-width:72rem;
  margin-inline:auto;
  padding-inline:1.75rem;
  display:flex;
  flex-direction:column;
  gap:3rem;
}

/* ---- Heading ---- */
.clases-heading{
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:2.5rem;
  flex-wrap:wrap;
}
.clases-heading-left{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:1.15rem;
  max-width:42rem;
}

.clases-eyebrow{
  display:inline-flex;
  align-items:center;
  gap:.55rem;
  padding:.4rem .85rem;
  border:1px solid var(--clases-line);
  border-radius:100rem;
  background:var(--clases-pill);
}
.clases-pointer{
  width:.45rem;height:.45rem;border-radius:50%;
  background:var(--clases-accent);flex:none;
}
.clases-label{
  font-size:.8rem;
  font-weight:600;
  letter-spacing:.02em;
  text-transform:uppercase;
  color:var(--clases-accent);
  line-height:1;
}

.clases-title{
  font-family:var(--clases-font);
  font-size:clamp(2rem, 4vw, 3rem);
  line-height:1.15;
  font-weight:600;
  color:var(--clases-ink);
  letter-spacing:-.01em;
  margin:0;
}
.clases-title em{
  font-family:var(--clases-serif);
  font-style:italic;
  font-weight:400;
  color:var(--clases-accent-soft);
}

.clases-summary{
  font-size:1.05rem;
  line-height:1.5;
  color:var(--clases-body);
  max-width:24rem;
  margin:0;
}

/* ---- Características ---- */
.clases-tags{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:.85rem 2rem;
}
.clases-tag{display:flex;align-items:center;gap:.55rem;}
.clases-tag svg{width:22px;height:22px;flex:none;}
.clases-tag span{
  font-size:.98rem;font-weight:500;color:var(--clases-ink);
}

/* ---- Slider ---- */
.clases-content{display:flex;flex-direction:column;gap:2.25rem;}
.clases-slider{position:relative;}
.clases-track{
  display:flex;
  gap:1.4rem;
  overflow-x:auto;
  scroll-snap-type:x mandatory;
  scroll-behavior:smooth;
  padding-bottom:.5rem;
  scrollbar-width:none;
}
.clases-track::-webkit-scrollbar{display:none;}

.clases-card{
  flex:0 0 clamp(270px, 31%, 350px);
  scroll-snap-align:start;
  display:flex;
  flex-direction:column;
  gap:1.15rem;
}
.clases-card-img{
  position:relative;
  display:block;
  border-radius:1rem;
  overflow:hidden;
  aspect-ratio:4/3;
}
.clases-card-img img{
  width:100%;height:100%;object-fit:cover;
  transition:transform .55s ease;
}
.clases-card:hover .clases-card-img img{transform:scale(1.04);}

.clases-card-info{
  position:absolute;top:1rem;left:1rem;right:1rem;
  display:flex;justify-content:space-between;align-items:center;gap:.5rem;
}
.clases-badge{
  display:inline-flex;align-items:center;gap:.4rem;
  background:var(--clases-white);
  padding:.35rem .7rem;border-radius:100rem;
}
.clases-dot{width:.5rem;height:.5rem;border-radius:50%;background:var(--clases-accent);flex:none;}
.clases-badge span{font-size:.8rem;font-weight:600;color:var(--clases-ink);line-height:1;}

.clases-card-body{display:flex;flex-direction:column;gap:.4rem;}
.clases-card-title{
  font-size:1.3rem;font-weight:600;color:var(--clases-ink);
  line-height:1.15;margin:0;
}
.clases-card-desc{font-size:.98rem;color:var(--clases-body);line-height:1.45;margin:0;}

/* ---- Setas ---- */
.clases-nav{display:flex;gap:.7rem;margin-top:1.4rem;}
.clases-arrow{
  width:3rem;height:3rem;border-radius:50%;
  border:1px solid var(--clases-line);
  background:var(--clases-white);
  color:var(--clases-ink);
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  transition:background .3s ease,color .3s ease,border-color .3s ease;
}
.clases-arrow:hover{
  background:var(--clases-accent);
  border-color:var(--clases-accent);
  color:var(--clases-white);
}

/* ---- CTA ---- */
.clases-cta-wrap{display:flex;}
.clases-cta{
  display:inline-flex;align-items:center;gap:.6rem;
  background:var(--clases-accent);
  color:var(--clases-white);
  padding:.9rem 1.5rem;border-radius:100rem;
  font-weight:600;font-size:.95rem;
  transition:opacity .3s ease;
}
.clases-cta,
.clases-cta span{color:var(--clases-white);}
.clases-cta:hover{opacity:.9;}
.clases-cta svg{width:18px;height:18px;stroke:var(--clases-white);}

@media (max-width:768px){
  .clases{padding:4rem 0;}
  .clases-heading{align-items:flex-start;}
  .clases-card{flex:0 0 82%;}
  .clases-nav{display:none;}
}

/* =========================================================
   REVEAL GENÉRICO (reutilizável)
   ---------------------------------------------------------
   Qualquer section com [data-reveal-section] recebe a entrada
   suave nos seus filhos [data-reveal]. O estado inicial só é
   aplicado depois que o JS adiciona .reveal-armed, então sem
   JS (ou sem IntersectionObserver) nada fica escondido.
   O atraso escalonado vem do --d já definido no HTML.
========================================================= */
[data-reveal-section].reveal-armed [data-reveal] {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity .7s cubic-bezier(.16, 1, .3, 1),
              transform .7s cubic-bezier(.16, 1, .3, 1);
  transition-delay: var(--d, 0ms);
}
[data-reveal-section].reveal-armed.is-in [data-reveal] {
  opacity: 1;
  transform: none;
}
@media (prefers-reduced-motion: reduce) {
  [data-reveal-section].reveal-armed [data-reveal] {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

/* =========================================================
   INTRO · logo + frase em cascata, painel único sai revelando
   o hero
   ---------------------------------------------------------
   Camada em tela cheia no load, na cor de marca (mesmo tom
   escuro do rodapé/horario: #301100). A logo revela, depois a
   frase, o traço de costura e a localização — então o painel
   inteiro sobe, revelando o hero por baixo. O conteúdo real já
   está no HTML por baixo (não afeta SEO). Respeita
   prefers-reduced-motion e trava o scroll.
========================================================= */
body.intro-active { overflow: hidden; }

.intro {
  position: fixed;
  inset: 0;
  z-index: 2147483647;
  display: flex;
  align-items: center;
  justify-content: center;
  background: radial-gradient(120% 85% at 50% 42%, #3a1600 0%, #200b00 100%);
  transform: translateY(0);
  transition: transform .9s cubic-bezier(.76, 0, .24, 1);
  will-change: transform;
}

/* saída (o JS adiciona .is-done) */
.intro.is-done { transform: translateY(-100%); }

.intro-panel {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 0 8vw;
}

.intro-logo-mark {
  width: min(46vw, 210px);
  height: auto;
  opacity: 0;
  transform: translateY(6px) scale(.985);
  filter: drop-shadow(0 0 30px rgba(199, 132, 96, .18));
  animation: introMarkIn 1.1s cubic-bezier(.22, .61, .36, 1) .15s forwards;
}

.intro-tagline {
  margin-top: 1.9rem;
  font-family: "PP Editorial New", Georgia, serif;
  font-style: italic;
  font-weight: 400;
  font-size: clamp(1.3rem, 3.4vw, 1.9rem);
  line-height: 1.36;
  color: #f9f2ea;
  opacity: 0;
  transform: translateY(8px);
  animation: introFadeUp .9s ease-out 1.05s forwards;
}

.intro-stitch {
  display: block;
  margin: 1.5rem auto 0;
  width: 52px;
  height: 9px;
  opacity: 0;
  animation: introFadeIn .8s ease-out 1.8s forwards;
}
.intro-stitch path {
  fill: none;
  stroke: #c78460;
  stroke-width: 1;
  stroke-dasharray: 64;
  stroke-dashoffset: 64;
  animation: introDraw 1s ease-out 1.9s forwards;
}
.intro-stitch circle { fill: #c78460; }

.intro-location {
  margin-top: 1.3rem;
  font-family: "Montserrat", sans-serif;
  font-weight: 500;
  font-size: .74rem;
  letter-spacing: .1em;
  color: rgba(255, 255, 255, .6);
  opacity: 0;
  transform: translateY(6px);
  animation: introFadeUp .9s ease-out 2.05s forwards;
}

@keyframes introMarkIn { to { opacity: 1; transform: translateY(0) scale(1); } }
@keyframes introFadeUp { to { opacity: 1; transform: translateY(0); } }
@keyframes introFadeIn { to { opacity: 1; } }
@keyframes introDraw { to { stroke-dashoffset: 0; } }

@media (prefers-reduced-motion: reduce) {
  .intro,
  .intro-logo-mark, .intro-tagline, .intro-stitch, .intro-stitch path, .intro-location {
    transition: none !important;
    animation: none !important;
  }
  .intro-logo-mark, .intro-tagline, .intro-location, .intro-stitch { opacity: 1; transform: none; }
  .intro-stitch path { stroke-dashoffset: 0; }
}

/* =========================================================
   SECTION · HORARIO (fiel ao "Schedule" do template)
   Fundo escuro com imagem; abas de días; painel escuro com
   lista de clases (número, título, resumen, duración, precio,
   botón) e divisores tracejados.
========================================================= */
.horario{
  --hz-deep:#301100;
  --hz-primary:#866452;
  --hz-accent:#c78460;
  --hz-line:rgba(255,255,255,.18);
  --hz-white:#ffffff;
  --hz-white-8:rgba(255,255,255,.78);
  --hz-font:"Montserrat", system-ui, sans-serif;
  --hz-serif:"Playfair Display", Georgia, serif;

  position:relative;
  font-family:var(--hz-font);
  color:var(--hz-white);
  letter-spacing:-.02em;
  background-color:var(--hz-deep);
  background-image:
    linear-gradient(rgba(38,17,5,.88), rgba(20,10,4,.82)),
    url("assets/background.webp");
  background-size:cover;
  background-position:center;
  background-attachment:fixed;
}
.horario *{box-sizing:border-box;}
.horario a{text-decoration:none;color:inherit;}

.horario-inner{ width:100%; max-width:64rem; margin-inline:auto; padding:5.5rem 1.75rem; }

/* Encabezado */
.horario-head{ display:flex; flex-direction:column; align-items:center; text-align:center; gap:1.1rem; margin-bottom:2.5rem; }
.horario-eyebrow{ display:inline-flex; align-items:center; gap:.5rem; padding:.4rem .9rem; border-radius:100rem; background:#f7f3ef; }
.horario-eyebrow .dot{ width:.4rem; height:.4rem; border-radius:50%; background:var(--hz-primary); }
.horario-eyebrow span{ font-size:.72rem; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--hz-primary); }
.horario-title{ font-size:clamp(2rem,4.6vw,3rem); line-height:1.14; font-weight:600; color:var(--hz-white); max-width:34rem; }
.horario-title em{ display:block; font-family:var(--hz-serif); font-style:italic; font-weight:400; color:#f2ede8; font-size:1.04em; }
.horario-sum{ max-width:32rem; color:var(--hz-white-8); line-height:1.5; font-size:.95rem; }

/* Tabs */
.horario-tabs{ display:flex; flex-wrap:wrap; justify-content:center; gap:.4rem; width:max-content; max-width:100%; margin:0 auto 2rem; padding:.35rem; border-radius:100rem; background:rgba(38,20,10,.45); border:1px solid rgba(255,255,255,.12); -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px); }
.horario-tab{ padding:.5rem 1.05rem; border-radius:100rem; border:1px solid transparent; background:transparent; color:var(--hz-white-8); font:inherit; font-size:.88rem; font-weight:500; cursor:pointer; transition:background .3s ease,color .3s ease; }
.horario-tab:hover{ color:var(--hz-white); }
.horario-tab.is-active{ background:var(--hz-white); color:var(--hz-deep); }

/* Painel escuro arredondado com a lista */
.horario-panel{
  background:rgba(28,13,5,.55);
  -webkit-backdrop-filter:blur(6px);
  backdrop-filter:blur(6px);
  border:1px solid rgba(255,255,255,.08);
  border-radius:20px;
  padding:.25rem 2rem;
}

.horario-list{ display:flex; flex-direction:column; }
.horario-row{ display:flex; align-items:center; justify-content:space-between; gap:1.5rem; padding:1.5rem 0; border-bottom:1px dashed var(--hz-line); }
.horario-row:last-child{ border-bottom:0; }

.horario-left{ display:flex; align-items:center; gap:1.5rem; min-width:0; flex:1; }
.horario-num{ font-size:.82rem; color:var(--hz-accent); font-weight:600; width:1.6rem; flex:none; }
.horario-row-title{ font-size:clamp(1.1rem,2.2vw,1.4rem); font-weight:600; line-height:1.1; color:var(--hz-white); }
.horario-row-title em{ font-family:var(--hz-serif); font-style:italic; font-weight:400; font-size:.72em; color:var(--hz-white-8); margin-left:.4rem; }

.horario-right{ display:flex; align-items:center; gap:1.5rem; flex:none; }
.horario-sum-row{ width:13rem; color:var(--hz-white-8); font-size:.9rem; line-height:1.35; }
.horario-dur{ width:4.5rem; text-align:right; color:var(--hz-white); font-size:.9rem; }
.horario-val{ width:3.5rem; text-align:right; color:var(--hz-accent); font-weight:600; font-size:.95rem; }

/* Botão único de reserva, embaixo do painel — mesmo vidro fosco
   usado no CONTACTO da navbar e no RESERVA TU CLASE do hero. */
.horario-cta-wrap{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.85rem; margin-top:2.25rem; }
.horario-cta{
  display:inline-flex;
  align-items:center;
  gap:11px;
  height:52px;
  padding:0 9px 0 28px;
  border-radius:999px;
  white-space:nowrap;
  background:rgba(48,17,0,.55);
  -webkit-backdrop-filter:blur(14px) saturate(140%);
  backdrop-filter:blur(14px) saturate(140%);
  border:1px solid rgba(255,255,255,.16);
  box-shadow:0 8px 22px -12px rgba(20,8,0,.55);
  transition:background-color .35s ease, border-color .35s ease, box-shadow .35s ease, transform .35s cubic-bezier(.16,1,.3,1);
}
.horario-cta:hover{
  background:rgba(134,100,82,.6);
  border-color:rgba(255,255,255,.3);
  box-shadow:0 12px 26px -12px rgba(20,8,0,.55);
  transform:translateY(-1px);
}
.horario-cta:active{ transform:translateY(0); }
.horario-cta-label{
  font-family:"PP Mori", Arial, sans-serif;
  font-size:.92rem;
  font-weight:600;
  letter-spacing:.02em;
  color:#fff;
}
.horario-cta-whatsapp{
  flex-shrink:0;
  width:34px;
  height:34px;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:50%;
  background:rgba(255,255,255,.14);
  color:#fff;
  transition:transform .35s cubic-bezier(.16,1,.3,1), background-color .35s ease;
}
.horario-cta-whatsapp svg{ display:block; width:17px; height:17px; }
.horario-cta:hover .horario-cta-whatsapp{ background:rgba(255,255,255,.26); transform:scale(1.08); }

@media (max-width:900px){
  .horario-sum-row{ display:none; }
}
@media (max-width:600px){
  .horario-inner{ padding:3.5rem 1.1rem; }
  .horario-panel{ padding:.5rem 1.1rem; }

  .horario-head{ gap:.85rem; margin-bottom:2rem; }
  .horario-title{ font-size:clamp(1.6rem,7.5vw,2.1rem); max-width:100%; }
  .horario-sum{ font-size:.85rem; max-width:100%; }

  .horario-tabs{
    width:100%;
    max-width:100%;
    justify-content:flex-start;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
  }
  .horario-tabs::-webkit-scrollbar{ display:none; }
  .horario-tab{ flex:none; padding:.45rem .9rem; font-size:.82rem; }

  .horario-row{ flex-direction:column; align-items:flex-start; gap:.6rem; padding:1.25rem 0; }
  .horario-left{ width:100%; gap:.75rem; }
  .horario-row-title{ font-size:1.05rem; }

  .horario-right{
    width:100%;
    flex-wrap:wrap;
    row-gap:.5rem;
    column-gap:1rem;
    justify-content:flex-start;
  }
  .horario-sum-row{
    display:block;
    flex-basis:100%;
    width:auto;
    font-size:.82rem;
    margin:0;
  }
  .horario-dur,.horario-val{ width:auto; text-align:left; font-size:.85rem; }
  .horario-val{ margin-left:.25rem; }

  .horario-cta-wrap{ margin-top:1.75rem; }
  .horario-cta{ height:48px; padding:0 8px 0 22px; gap:9px; }
  .horario-cta-label{ font-size:.85rem; }
  .horario-cta-whatsapp{ width:30px; height:30px; }
  .horario-cta-whatsapp svg{ width:15px; height:15px; }
}

@media (max-width:380px){
  .horario-title{ font-size:1.45rem; }
  .horario-eyebrow span{ font-size:.66rem; }
  .horario-panel{ padding:.5rem .85rem; }
}

/* =========================================================
   SECTION · GALERÍA   (fiel ao layout Calmlyss)
   ---------------------------------------------------------
   Paleta/tipografia alinhadas às sections Filosofía/Clases
   (#f9f6f3, Montserrat + Playfair). Reproduz:
   · o título revelado letra a letra (title-reveal);
   · o grid assimétrico exato (bloco grande + verticais + faixas
     largas), montado sem gaps num grid 4×4.
   O reveal aproveita o sistema existente ([data-reveal-section]
   / .reveal-armed / .is-in no script.js) — sem JS novo.
   Cole no fim do style.css.
========================================================= */
.galeria{
  --gal-bg:#f9f6f3;
  --gal-ink:#301100;
  --gal-body:#6b584e;
  --gal-accent:#866452;
  --gal-accent-soft:#c78460;
  --gal-line:#d9d7d3;
  --gal-pill:#ffffff;

  --gal-font:"Montserrat", system-ui, sans-serif;
  --gal-serif:"Playfair Display", Georgia, serif;

  width:100%;
  font-family:var(--gal-font);
  color:var(--gal-body);
  background:var(--gal-bg);
  padding:6rem 0;
  content-visibility:auto;
  contain-intrinsic-size:auto 900px;
}
.galeria *{box-sizing:border-box;}
.galeria img{display:block;max-width:100%;}

.galeria-inner{
  width:100%;
  max-width:72rem;
  margin-inline:auto;
  padding-inline:1.75rem;
  display:flex;
  flex-direction:column;
  gap:3rem;
}

/* ---- Encabezado ---- */
.galeria-heading{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:1.15rem;
  max-width:44rem;
}
.galeria-eyebrow{
  display:inline-flex;
  align-items:center;
  gap:.55rem;
  padding:.4rem .85rem;
  border:1px solid var(--gal-line);
  border-radius:100rem;
  background:var(--gal-pill);
}
.galeria-pointer{
  width:.45rem;height:.45rem;border-radius:50%;
  background:var(--gal-accent);flex:none;
}
.galeria-label{
  font-size:.8rem;
  font-weight:600;
  letter-spacing:.02em;
  text-transform:uppercase;
  color:var(--gal-accent);
  line-height:1;
}

/* ---- Título con revelado por carácter ---- */
.galeria-title{
  font-family:var(--gal-font);
  font-size:clamp(2rem, 4.6vw, 3rem);
  line-height:1.15;
  font-weight:600;
  color:var(--gal-ink);
  letter-spacing:-.01em;
  margin:0;
}
.galeria-title .galeria-title-ht{
  font-family:var(--gal-serif);
  font-style:italic;
  font-weight:400;
  color:var(--gal-accent-soft);
}
.galeria-title .char{
  display:inline-block;
  will-change:transform, opacity;
}
.galeria-title .char-space{
  display:inline-block;
  width:.28em;
}
/* Mantém cada palavra inteira: as letras (inline-block) não quebram
   no meio da palavra; a linha só pode quebrar nos espaços. */
.galeria-title .galeria-word{ white-space:nowrap; }
/* Estado inicial (solo cuando el sistema de reveal está activo) */
.galeria.reveal-armed .galeria-title .char{
  opacity:0;
  transform:translateY(.7em);
}
/* Entrada escalonada al aparecer la sección */
.galeria.reveal-armed.is-in .galeria-title .char{
  opacity:1;
  transform:none;
  transition:opacity .5s ease,
             transform .6s cubic-bezier(.22,.61,.36,1);
  transition-delay:calc(var(--i) * 26ms + 140ms);
}

.galeria-summary{
  font-size:1.05rem;
  line-height:1.5;
  color:var(--gal-body);
  max-width:30rem;
  margin:0;
}

/* ---- Mosaico: grid 5×3 igual ao site original ----
   Linha 1: [1x1] [1x1] [larga 3x1]
   Linha 2: [1x1] [larga 2x1] [alta 1x2] [alta 1x2]
   Linha 3: [larga 2x1] [1x1]  (colunas 4 e 5 seguem as altas da linha 2)
========================================================= */
.galeria-grid{
  display:grid;
  grid-template-columns:repeat(5, 1fr);
  grid-auto-rows:clamp(140px, 16.5vw, 210px);
  gap:clamp(.6rem, .9vw, 1rem);
  /* Sangra até a borda da janela em qualquer largura de tela,
     independente do max-width/padding do .galeria-inner. */
  width:100vw;
  margin-inline:calc(50% - 50vw);
}
.galeria-cell{
  position:relative;
  margin:0;
  overflow:hidden;
  border-radius:1rem;
  background:var(--gal-line);
}
.galeria-cell img{
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform .55s ease;
}
.galeria-cell:hover img{ transform:scale(1.05); }

.galeria-cell.g1{ grid-column:1;          grid-row:1; }
.galeria-cell.g2{ grid-column:2;          grid-row:1; }
.galeria-cell.g3{ grid-column:3 / span 3; grid-row:1; }
.galeria-cell.g4{ grid-column:1;          grid-row:2; }
.galeria-cell.g5{ grid-column:2 / span 2; grid-row:2; }
.galeria-cell.g6{ grid-column:4;          grid-row:2 / span 2; }
.galeria-cell.g7{ grid-column:5;          grid-row:2 / span 2; }
.galeria-cell.g8{ grid-column:1 / span 2; grid-row:3; }
.galeria-cell.g9{ grid-column:3;          grid-row:3; }

/* ---- Tablet ---- */
@media (max-width:900px){
  .galeria{ padding:4.5rem 0; }
  .galeria-grid{ grid-auto-rows:clamp(108px, 19vw, 168px); }
}

/* ---- Mobile: mesmo mosaico 5 colunas do desktop, sangrando
   até a borda da tela (o texto continua com respiro lateral) ---- */
@media (max-width:600px){
  .galeria-inner{ padding-inline:1.25rem; gap:1.75rem; }
  .galeria-grid{
    grid-auto-rows:clamp(64px, 21vw, 100px);
    gap:.5rem;
  }
  .galeria-cell{ border-radius:.6rem; }
}

/* ---- Respeta prefers-reduced-motion ---- */
@media (prefers-reduced-motion: reduce){
  .galeria-title .char{
    opacity:1 !important;
    transform:none !important;
    transition:none !important;
  }
  .galeria-cell img{ transition:none; }
  .galeria-cell:hover img{ transform:none; }
}

/* =========================================================
   SECCIÓN TESTIMONIOS
   ---------------------------------------------------------
   Fiel a la sección original (Webflow "Calmlyss"): mismas
   variables de diseño (colores, tipografía, spacers, radius),
   mismas clases y mismos valores. Todo queda encapsulado
   dentro de .section_testimonial para no chocar con el resto
   del sitio (que usa sus propias variables --gal-*, etc.).

   El carrusel del original depende de la runtime de Webflow
   (Splide interno). Aquí se reproduce el mismo look con CSS
   normal (flex + transform) y el comportamiento se conecta en
   testimonial.js — funcionalmente idéntico, sin dependencias.
========================================================= */

.section_testimonial{
  /* ---- Tokens exactos del original ---- */
  --_colors---white-color: white;
  --_colors---text-color-1: #6b584e;
  --_colors---deep-color: #301100;
  --_colors---bg-color: #f9f6f3;
  --_colors---text-color-2: #c78460;
  --_colors---primary-color: #866452;
  --_colors---strock-color: #d9d7d3;
  --_colors---white-color-0-8: #fffc;

  --_typography---font-family--main-font-family: Geist, sans-serif;
  --_typography---font-family--style-font-family: "Instrument Serif", sans-serif;
  --_typography---text-sizes--body-1: 1rem;
  --_typography---text-sizes--body-2: .875rem;
  --_typography---text-sizes--body-3: .75rem;
  --_typography---text-sizes--body-4: .625rem;
  --_typography---text-sizes--h2: 3rem;
  --_typography---text-sizes--h4: 2rem;
  --_typography---line-hights--line-hight-xl: 1.5;
  --_typography---line-hights--line-hight-main: 1.2;
  --_typography---line-hights--line-hight-xsm: 1;
  --_typography---text-weight--normal: 400;
  --_typography---text-weight--medium: 500;
  --_typography---text-weight--semi-bold: 600;
  --_typography---letter-spacings--letter-spacing: -.04em;

  --spacers--size-zero: 0rem;
  --spacers--100: 100%;
  --spacers--spacer-tiny: .5rem;
  --spacers--spacer-xxsm: 1rem;
  --spacers--spacer-xsm: 1.25rem;
  --spacers--spacer-sm: 1.5rem;
  --spacers--spacer-lg: 2.5rem;
  --spacers--spacer-main: 2rem;
  --spacers--spacer-xl: 3rem;
  --spacers--spacer-xxl: 4rem;
  --spacers--spacer-xxxl: 5rem;

  --radius-sizes--radius-large: 100rem;
  --radius-sizes--radius-main: 1rem;
  --radius-sizes--radius-full: var(--spacers--100);

  --container-sizes--container-small: 60rem;

  background-color: var(--_colors---bg-color);
  font-family: var(--_typography---font-family--main-font-family);
  color: var(--_colors---text-color-1);
  font-size: var(--_typography---text-sizes--body-1);
  line-height: var(--_typography---line-hights--line-hight-xl);
  font-weight: var(--_typography---text-weight--normal);
  letter-spacing: var(--_typography---letter-spacings--letter-spacing);
}
.section_testimonial *{ box-sizing: border-box; }

/* ---- Layout base (container / gap) ---- */
.section_testimonial .section-gap{
  padding-top: var(--spacers--spacer-xxxl);
  padding-bottom: var(--spacers--spacer-xxxl);
}
.section_testimonial .w-layout-blockcontainer{
  max-width: 940px;
  margin-left: auto;
  margin-right: auto;
  display: block;
}
.section_testimonial .container-small{
  max-width: var(--container-sizes--container-small);
}

/* ---- Encabezado ---- */
.section_testimonial .section-heading-block{
  margin-bottom: var(--spacers--spacer-xxl);
  flex-flow: column;
  justify-content: flex-start;
  align-items: center;
  display: flex;
}
.section_testimonial .section-heading-block.bottom-gap-md{
  margin-bottom: var(--spacers--spacer-xl);
}
.section_testimonial .section-subtitle-block{
  padding: .5rem var(--spacers--spacer-xxsm) .4rem;
  gap: var(--spacers--spacer-tiny);
  border-radius: var(--radius-sizes--radius-large);
  background-color: var(--_colors---white-color);
  justify-content: flex-start;
  align-items: center;
  display: flex;
}
.section_testimonial .subtitle-pointer{
  border-radius: var(--radius-sizes--radius-full);
  background-color: var(--_colors---deep-color);
  width: .375rem;
  height: .375rem;
  flex: none;
}
.section_testimonial .subtitle-text{
  color: var(--_colors---deep-color);
  font-size: var(--_typography---text-sizes--body-3);
  font-weight: var(--_typography---text-weight--medium);
  text-transform: uppercase;
  margin: 0;
}
.section_testimonial .subtitle-text.text-color-deep{ color: var(--_colors---deep-color); }

.section_testimonial .section-title-block{
  max-width: 25rem;
  margin-top: var(--spacers--spacer-xxsm);
  flex-flow: column;
  justify-content: flex-start;
  align-items: flex-start;
}
.section_testimonial .section-title-block.max-width-40rem{ max-width: 35rem; position: relative; }

.section_testimonial .testimonial-title{
  color: var(--_colors---deep-color);
  font-size: var(--_typography---text-sizes--h2);
  line-height: var(--_typography---line-hights--line-hight-main);
  font-weight: var(--_typography---text-weight--normal);
  text-align: center;
  margin: 0;
}
.section_testimonial .testimonial-title-ht{
  font-family: var(--_typography---font-family--style-font-family);
  color: var(--_colors---primary-color);
  font-style: italic;
  white-space: nowrap; /* impede que a palavra quebre entre as letras (spans) */
  display: inline-block;
}
.section_testimonial .testimonial-title .char{
  display: inline-block;
  will-change: transform, opacity;
}
.section_testimonial .testimonial-title .char-space{
  display: inline-block;
  width: .28em;
}
/* Estado inicial — sólo cuando el reveal genérico está armado */
[data-reveal-section].section_testimonial.reveal-armed .testimonial-title .char{
  opacity: 0;
  transform: translateY(.7em);
}
[data-reveal-section].section_testimonial.reveal-armed.is-in .testimonial-title .char{
  opacity: 1;
  transform: none;
  transition: opacity .5s ease,
              transform .6s cubic-bezier(.22,.61,.36,1);
  transition-delay: calc(var(--i) * 26ms + 140ms);
}

.section_testimonial .section-summary-block{
  max-width: 35rem;
  margin-top: var(--spacers--spacer-xsm);
}
.section_testimonial .section-summary-block.max-width-25rem{ max-width: 25rem; }
.section_testimonial .text-size-large{
  font-size: var(--_typography---text-sizes--body-1);
  margin-bottom: 0;
}
.section_testimonial .text-align-center{ text-align: center; }

/* ---- Bloque del carrusel ---- */
.section_testimonial .testimonial-content-block{
  padding-top: var(--spacers--spacer-xl);
  border: 1px #8664529e;
  border-top-style: dashed;
}

.section_testimonial .testimonial-slider-block{
  position: relative;
  background-color: transparent;
  height: auto;
}

.section_testimonial .testimonial-slider-mask{
  overflow: hidden;
  position: relative;
}
.section_testimonial .testimonial-slider-track{
  display: flex;
  transition: transform .5s cubic-bezier(.22,.61,.36,1);
}
.section_testimonial .testimonial-slide-block{
  flex: 0 0 100%;
  width: 100%;
}

.section_testimonial .testimonial-slide-inner-block{
  gap: var(--spacers--spacer-xl);
  display: flex;
}
.section_testimonial .testimonial-slide-image-block{
  flex: none;
}
.section_testimonial .testimonial-slide-image{
  border-radius: var(--radius-sizes--radius-main);
  object-fit: cover;
  width: 18rem;
  height: 22.5rem;
  display: block;
}
.section_testimonial .testimonial-slide-content-block{
  max-width: 43.75rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.section_testimonial .testimonial-slide-text{
  font-size: var(--_typography---text-sizes--h4);
  letter-spacing: var(--spacers--size-zero);
  color: var(--_colors---deep-color);
  font-weight: var(--_typography---text-weight--normal);
}
.section_testimonial .testimonial-slide-client-block{
  margin-top: var(--spacers--spacer-lg);
  gap: .25rem;
  flex-flow: column;
  display: flex;
}
.section_testimonial .testimonial-client-name{
  color: var(--_colors---deep-color);
  font-size: var(--_typography---text-sizes--body-1);
  font-weight: var(--_typography---text-weight--semi-bold);
}
.section_testimonial .testimonial-client-designation{
  font-size: var(--_typography---text-sizes--body-2);
  margin: 0;
}

/* ---- Flechas ---- */
.section_testimonial .testimonial-slider-arrow{
  border-radius: var(--radius-sizes--radius-full);
  background-color: var(--_colors---bg-color);
  width: 2.5rem;
  height: 2.5rem;
  color: var(--_colors---deep-color);
  border: 1px solid #6b584e4d;
  justify-content: center;
  align-items: center;
  transition: background-color .4s, color .4s;
  display: flex;
  position: absolute;
  inset: auto 0% 0% auto;
  cursor: pointer;
}
.section_testimonial .testimonial-slider-arrow:hover{
  background-color: var(--_colors---deep-color);
  color: var(--_colors---white-color);
}
.section_testimonial .testimonial-slider-arrow.left{ right: 3.5rem; }
.section_testimonial .testimonial-slider-icon{ display: flex; }

/* ---- Paginación por puntos (oculta, igual que el original) ---- */
.section_testimonial .display-none{ display: none; }
.section_testimonial .w-slider-dot{
  cursor: pointer;
  background-color: #fff6;
  width: 1em;
  height: 1em;
  margin: 0 3px .5em;
  display: inline-block;
  transition: background-color .1s, color .1s;
}
.section_testimonial .w-slider-dot.w-active{ background-color: #fff; }

/* ---- Responsive ---- */
@media (max-width: 900px){
  .section_testimonial .testimonial-title{ font-size: 2.25rem; }
  .section_testimonial .testimonial-slide-text{ font-size: 1.375rem; }
}
@media (max-width: 600px){
  .section_testimonial .section-gap{ padding-top: var(--spacers--spacer-xxl); padding-bottom: var(--spacers--spacer-xxl); }
  .section_testimonial .w-layout-blockcontainer{ padding-inline: 1rem; }
  .section_testimonial .testimonial-title{ font-size: 2rem; }
  .section_testimonial .section-summary-block{ font-size: .95rem; }

  /* Imagem alta à esquerda, esticada para acompanhar a altura do texto
     (mesmo comportamento do desktop: a coluna de texto "veste" a
     coluna da imagem), + texto à direita alinhado ao topo. */
  .section_testimonial .testimonial-slide-inner-block{
    gap: 1.25rem;
    align-items: stretch;
  }
  .section_testimonial .testimonial-slide-image-block{
    flex: 0 0 5.5rem;
    width: 5.5rem;
  }
  .section_testimonial .testimonial-slide-image{
    width: 100%;
    height: 100%;
    min-height: 14rem;
    border-radius: .75rem;
    object-fit: cover;
  }
  .section_testimonial .testimonial-slide-content-block{
    flex: 1 1 auto;
    min-width: 0;
    justify-content: flex-start;
  }
  .section_testimonial .testimonial-slide-text{ font-size: 1.625rem; line-height: 1.3; }
  .section_testimonial .testimonial-slide-client-block{ margin-top: var(--spacers--spacer-lg); }
  .section_testimonial .testimonial-client-name{ font-size: 1.0625rem; }
  .section_testimonial .testimonial-client-designation{ font-size: .9375rem; }

  /* Reserva espaço abaixo do card para as setas, sem sobrepor o texto */
  .section_testimonial .testimonial-slider-block{ padding-bottom: 2.5rem; }
  .section_testimonial .testimonial-slider-arrow{ width: 2.25rem; height: 2.25rem; }
  .section_testimonial .testimonial-slider-arrow.left{ right: 3rem; }
}

/* ---- Respeta prefers-reduced-motion ---- */
@media (prefers-reduced-motion: reduce){
  .section_testimonial .testimonial-title .char{
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  .section_testimonial .testimonial-slider-track{ transition: none; }
}

/* =========================================================
   SECCIÓN BENEFICIOS — "Beneficios de cada práctica"
   ---------------------------------------------------------
   Fiel a la maqueta de referencia (Webflow "Calmlyss"),
   adaptada a los servicios de Norma'l Pilates & Barré:
   un resumen breve de lo que aporta cada clase.
   · Fila superior: 2 tarjetas horizontales (imagen izq. + texto).
   · Fila inferior: 3 tarjetas verticales (imagen arriba).
   Reutiliza el sistema de reveal del sitio
   ([data-reveal-section] / .reveal-armed / .is-in). Sin JS nuevo.
========================================================= */
.section_blog{
  --_colors---white-color: white;
  --_colors---text-color-1: #6b584e;
  --_colors---deep-color: #301100;
  --_colors---bg-color: #f9f6f3;
  --_colors---text-color-2: #c78460;
  --_colors---primary-color: #866452;
  --_colors---strock-color: #e7e1da;
  --_colors---white-color-0-8: #fffc;

  --_typography---font-family--main-font-family: "PP Mori", Arial, sans-serif;
  --_typography---font-family--style-font-family: "PP Editorial New", Georgia, serif;
  --_typography---text-sizes--body-1: 1rem;
  --_typography---text-sizes--body-2: .875rem;
  --_typography---text-sizes--body-3: .75rem;
  --_typography---text-sizes--h1: 4rem;
  --_typography---text-sizes--h2: 3rem;
  --_typography---text-sizes--h4: 2rem;
  --_typography---text-sizes--h6: 1.375rem;
  --_typography---line-hights--line-hight-xl: 1.5;
  --_typography---line-hights--line-hight-lg: 1.3;
  --_typography---line-hights--line-hight-main: 1.2;
  --_typography---line-hights--line-hight-sm: 1.05;
  --_typography---text-weight--normal: 400;
  --_typography---text-weight--medium: 500;
  --_typography---text-weight--semi-bold: 600;
  --_typography---letter-spacings--letter-spacing: -.04em;

  --spacers--spacer-tiny: .5rem;
  --spacers--spacer-xxxsm: .75rem;
  --spacers--spacer-xxsm: 1rem;
  --spacers--spacer-xsm: 1.25rem;
  --spacers--spacer-sm: 1.5rem;
  --spacers--spacer-main: 2rem;
  --spacers--spacer-lg: 2.5rem;
  --spacers--spacer-xl: 3rem;
  --spacers--spacer-xxl: 4rem;
  --spacers--spacer-xxxl: 5rem;

  --radius-sizes--radius-sm: .625rem;
  --radius-sizes--radius-md: .875rem;
  --radius-sizes--radius-main: 1.25rem;
  --radius-sizes--radius-large: 100rem;
  --radius-sizes--radius-full: 100%;

  --container-sizes--container-small: 60rem;

  /* Fundo igualado ao da section de cima (.clases / "Nuestras clases"),
     que usa #f9f6f3. Antes esta section usava --_colors---white-color
     (branco puro), criando uma quebra visual entre as duas seções. */
  background-color: var(--_colors---bg-color);
  font-family: var(--_typography---font-family--main-font-family);
  color: var(--_colors---text-color-1);
  font-size: var(--_typography---text-sizes--body-1);
  line-height: var(--_typography---line-hights--line-hight-xl);
  font-weight: var(--_typography---text-weight--normal);
  letter-spacing: var(--_typography---letter-spacings--letter-spacing);

  /* position:relative habilita os degradês de transição (::before/::after)
     definidos logo abaixo — eles ficam "grudados" nesta section. */
  position: relative;
}
.section_blog *{ box-sizing: border-box; }

/* =========================================================
   DEGRADÊ NAS BORDAS — dissolve a linha divisória entre esta
   section ("Nuestras clases" / "Beneficios de cada práctica")
   e as seções vizinhas (acima e abaixo).
   ---------------------------------------------------------
   Cada pseudo-elemento fica "a cavalo" da borda: metade sobre
   a section vizinha, metade sobre esta. Como fica dentro da
   área de padding (section-gap tem 5rem de padding-top/bottom),
   nunca cobre texto, cards ou botões — só a faixa vazia entre
   as seções. pointer-events:none garante que não atrapalha
   cliques/scroll.
========================================================= */
.section_blog::before,
.section_blog::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  height:140px;
  pointer-events:none;
  z-index:1;
}
.section_blog::before{
  top:-70px;
  /* funde com a cor da section de cima (hoje já é a mesma #f9f6f3;
     se a section de cima mudar de cor no futuro, o degradê já
     assume a transição automaticamente). */
  background:linear-gradient(to bottom, transparent, var(--_colors---bg-color));
}
.section_blog::after{
  bottom:-70px;
  /* funde com o fundo da section de baixo (hoje branco/padrão). */
  background:linear-gradient(to bottom, var(--_colors---bg-color), transparent);
}
.section_blog img{ display: block; max-width: 100%; }
.section_blog a{ text-decoration: none; color: inherit; }

/* ---- Layout base ---- */
.section_blog .section-gap{
  padding-top: var(--spacers--spacer-xxxl);
  padding-bottom: var(--spacers--spacer-xxxl);
}
.section_blog .w-layout-blockcontainer{
  max-width: 940px;
  margin-left: auto;
  margin-right: auto;
  display: block;
}
.section_blog .container-small{ max-width: var(--container-sizes--container-small); }
.section_blog .blog-wrapper{ display: flex; flex-direction: column; }

/* ---- Encabezado (título a dos líneas, centrado) ---- */
.section_blog .section-heading-block{
  margin-bottom: var(--spacers--spacer-xxl);
  flex-flow: column;
  align-items: center;
  display: flex;
  text-align: center;
}
.section_blog .section-subtitle-block{
  padding: .5rem var(--spacers--spacer-xxsm) .4rem;
  gap: var(--spacers--spacer-tiny);
  border-radius: var(--radius-sizes--radius-large);
  background-color: var(--_colors---white-color);
  border: 1px solid var(--_colors---strock-color);
  align-items: center;
  display: flex;
}
.section_blog .subtitle-pointer{
  border-radius: var(--radius-sizes--radius-full);
  background-color: var(--_colors---deep-color);
  width: .375rem;
  height: .375rem;
  flex: none;
}
.section_blog .subtitle-text{
  color: var(--_colors---deep-color);
  font-size: var(--_typography---text-sizes--body-3);
  font-weight: var(--_typography---text-weight--medium);
  text-transform: uppercase;
  letter-spacing: .02em;
  margin: 0;
}
.section_blog .subtitle-accent{ color: var(--_colors---text-color-2); }

.section_blog .section-title-block{
  max-width: 40rem;
  margin-top: var(--spacers--spacer-sm);
}
.section_blog .blog-title{
  color: var(--_colors---deep-color);
  font-size: var(--_typography---text-sizes--h1);
  line-height: var(--_typography---line-hights--line-hight-sm);
  font-weight: var(--_typography---text-weight--normal);
  text-align: center;
  margin: 0;
}
.section_blog .blog-title-ht{
  display: block;
  font-family: var(--_typography---font-family--style-font-family);
  color: var(--_colors---primary-color);
  font-style: italic;
  white-space: nowrap;
}
.section_blog .blog-title .char{ display: inline-block; will-change: transform, opacity; }
.section_blog .blog-title .char-space{ display: inline-block; width: .28em; }

[data-reveal-section].section_blog.reveal-armed .blog-title .char{
  opacity: 0;
  transform: translateY(.7em);
}
[data-reveal-section].section_blog.reveal-armed.is-in .blog-title .char{
  opacity: 1;
  transform: none;
  transition: opacity .5s ease,
              transform .6s cubic-bezier(.22,.61,.36,1);
  transition-delay: calc(var(--i) * 24ms + 140ms);
}

/* ---- Rejilla ---- */
.section_blog .blog-content-block{
  display: flex;
  flex-direction: column;
  gap: var(--spacers--spacer-sm);
}
.section_blog .blog-collection-list{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--spacers--spacer-sm);
  list-style: none;
  margin: 0;
  padding: 0;
}
.section_blog .blog-collection-list.is-2{ grid-template-columns: repeat(3, 1fr); }

/* ---- Tarjeta base ---- */
.section_blog .blog-item-card-block{
  background-color: var(--_colors---bg-color);
  border-radius: var(--radius-sizes--radius-main);
  padding: var(--spacers--spacer-xxxsm);
  display: flex;
  flex-direction: column;
  gap: var(--spacers--spacer-xsm);
  height: 100%;
  transition: transform .4s cubic-bezier(.22,1,.36,1),
              box-shadow .4s ease;
}
.section_blog .blog-item-card-block:hover{
  transform: translateY(-3px);
  box-shadow: 0 20px 44px -28px rgba(48,17,0,.35);
}
.section_blog .blog-item-image-block{
  position: relative;
  display: block;
  border-radius: var(--radius-sizes--radius-md);
  overflow: hidden;
  aspect-ratio: 16 / 10;
}
.section_blog .blog-item-image{
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .6s cubic-bezier(.22,1,.36,1);
}
.section_blog .blog-item-card-block:hover .blog-item-image{ transform: scale(1.04); }

/* Badge sobre la imagen */
.section_blog .blog-item-category-block{
  position: absolute;
  top: var(--spacers--spacer-xxxsm);
  left: var(--spacers--spacer-xxxsm);
  display: inline-flex;
  align-items: center;
  gap: var(--spacers--spacer-tiny);
  padding: .35rem var(--spacers--spacer-xxxsm);
  background-color: var(--_colors---white-color);
  border-radius: var(--radius-sizes--radius-large);
  box-shadow: 0 6px 16px -10px rgba(48,17,0,.4);
}
.section_blog .blog-item-category-dot{
  width: .4rem;
  height: .4rem;
  border-radius: var(--radius-sizes--radius-full);
  background-color: var(--_colors---text-color-2);
}
.section_blog .blog-item-category-text{
  font-size: var(--_typography---text-sizes--body-3);
  font-weight: var(--_typography---text-weight--medium);
  line-height: 1;
  color: var(--_colors---deep-color);
  margin: 0;
}

/* Contenido */
.section_blog .blog-item-content-block{
  display: flex;
  flex-direction: column;
  gap: var(--spacers--spacer-xxxsm);
  padding: var(--spacers--spacer-tiny) var(--spacers--spacer-tiny) var(--spacers--spacer-xxxsm);
  flex: 1;
}
.section_blog .blog-item-title{
  font-size: var(--_typography---text-sizes--h6);
  line-height: var(--_typography---line-hights--line-hight-lg);
  font-weight: var(--_typography---text-weight--medium);
  color: var(--_colors---deep-color);
  margin: 0;
  transition: color .3s ease;
}
.section_blog .blog-item-title-block:hover .blog-item-title{ color: var(--_colors---primary-color); }
.section_blog .blog-item-summary-block p{
  font-size: var(--_typography---text-sizes--body-2);
  line-height: var(--_typography---line-hights--line-hight-xl);
  color: var(--_colors---text-color-1);
  margin: 0;
}

/* Chip de duración (repurpose del "read time") */
.section_blog .blog-read-time-block{
  display: inline-flex;
  align-items: center;
  gap: var(--spacers--spacer-tiny);
  align-self: flex-start;
  margin-top: auto;
  padding: .35rem .6rem;
  background-color: var(--_colors---white-color);
  border-radius: var(--radius-sizes--radius-sm);
}
.section_blog .blog-read-time-icon{ display: flex; }
.section_blog .blog-read-time-text{
  font-size: var(--_typography---text-sizes--body-3);
  font-weight: var(--_typography---text-weight--medium);
  color: var(--_colors---primary-color);
  line-height: 1;
  margin: 0;
}

/* ---- Variante horizontal (fila superior) ---- */
.section_blog .blog-item-card-block.is-feature{
  flex-direction: row;
  align-items: stretch;
  gap: var(--spacers--spacer-sm);
}
.section_blog .blog-item-card-block.is-feature .blog-item-image-block{
  flex: 0 0 45%;
  aspect-ratio: auto;
  min-height: 100%;
  align-self: stretch;
}
.section_blog .blog-item-card-block.is-feature .blog-item-content-block{
  flex: 1;
  justify-content: center;
  padding-right: var(--spacers--spacer-xxsm);
}

/* ---- Botón (reconstruido: centralização por flexbox, sem hack de margin) ---- */
.section_blog .blog-cta-block{
  display: flex;
  justify-content: center;
  margin-top: var(--spacers--spacer-xl);
  /* Fica acima do degradê decorativo .section_blog::after (z-index:1),
     que em telas mobile pode invadir a base do botão quando o padding
     inferior da seção (64px) fica menor que a faixa opaca do degradê
     (70px). Sem isso, a ponta de baixo da cápsula ficava encoberta. */
  position: relative;
  z-index: 2;
}
.section_blog .blog-cta{
  display: inline-flex;
  align-items: center;
  gap: var(--spacers--spacer-xxsm);
  background-color: var(--_colors---deep-color);
  color: var(--_colors---white-color);
  border-radius: var(--radius-sizes--radius-large);
  padding: var(--spacers--spacer-xxxsm) var(--spacers--spacer-sm);
  /* Sem overflow:hidden aqui de propósito: o pill tem border-radius e,
     junto de overflow:hidden dentro de uma seção com transforms (reveal),
     o Chrome/Android às vezes "corta" reto a borda de baixo do botão.
     O texto e o ícone deslizantes já são recortados pelas suas próprias
     máscaras internas (.blog-cta-label / .blog-cta-icon), então o clip
     no nível do botão é dispensável. */
  transition: background-color .35s ease;
}
.section_blog .blog-cta:hover{ background-color: var(--_colors---primary-color); }

/* .blog-cta-label é flex + align-items:center: centraliza o texto pela
   caixa real do elemento (não pela métrica de line-height da fonte),
   que é o que causava o desalinhamento visual do botão antigo. */
.section_blog .blog-cta-label{
  position: relative;
  overflow: hidden;
  height: 1.4rem;
  display: flex;
  align-items: center;
}
.section_blog .blog-cta-text{
  display: flex;
  align-items: center;
  height: 100%;
  color: var(--_colors---white-color);
  font-size: var(--_typography---text-sizes--body-2);
  font-weight: var(--_typography---text-weight--medium);
  line-height: 1;
  margin: 0;
  transition: transform .4s cubic-bezier(.22,1,.36,1);
}
.section_blog .blog-cta-text.is-2{ position: absolute; top: 0; left: 0; transform: translateY(110%); }
@media (hover: hover) and (pointer: fine){
  .section_blog .blog-cta:hover .blog-cta-text.is-1{ transform: translateY(-110%); }
  .section_blog .blog-cta:hover .blog-cta-text.is-2{ transform: translateY(0); }
}
.section_blog .blog-cta-icon{
  position: relative;
  width: 1.125rem;
  height: 1.125rem;
  overflow: hidden;
  color: var(--_colors---white-color);
  display: flex;
  align-items: center;
  justify-content: center;
}
.section_blog .blog-cta-icon-inner{
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform .4s cubic-bezier(.22,1,.36,1);
}
.section_blog .blog-cta-icon-inner.is-2{ transform: translate(-110%, 110%); }
@media (hover: hover) and (pointer: fine){
  .section_blog .blog-cta:hover .blog-cta-icon-inner.is-1{ transform: translate(110%, -110%); }
  .section_blog .blog-cta:hover .blog-cta-icon-inner.is-2{ transform: translate(0, 0); }
}

/* ---- Responsive ---- */
@media (max-width: 991px){
  .section_blog{ --_typography---text-sizes--h1: 3rem; }
  .section_blog .blog-collection-list,
  .section_blog .blog-collection-list.is-2{ grid-template-columns: repeat(2, 1fr); }
  .section_blog .blog-collection-list.is-2 .blog-collection-item:last-child{ grid-column: 1 / -1; }
}
@media (max-width: 767px){
  .section_blog{ --_typography---text-sizes--h1: 2.25rem; }
  .section_blog .section-gap{
    padding-top: var(--spacers--spacer-xxl);
    padding-bottom: var(--spacers--spacer-xxl);
  }
  .section_blog .blog-collection-list,
  .section_blog .blog-collection-list.is-2{ grid-template-columns: 1fr; }
  .section_blog .blog-collection-list.is-2 .blog-collection-item:last-child{ grid-column: auto; }
  /* La tarjeta horizontal se apila en móvil */
  .section_blog .blog-item-card-block.is-feature{ flex-direction: column; align-items: stretch; }
  .section_blog .blog-item-card-block.is-feature .blog-item-image-block{
    flex: none;
    aspect-ratio: 16 / 10;
    min-height: 0;
  }
}

/* =========================================================
   BENEFICIOS — CARRUSEL SOLO EN MÓVIL (<=767px)
   ---------------------------------------------------------
   En escritorio/tablet el riel es display:contents, así que
   las dos filas (2 + 3 tarjetas) se ven EXACTAMENTE igual que
   antes. En móvil pasa a carrusel horizontal con scroll-snap:
   una tarjeta a la vez, en formato horizontal (imagen a la
   izquierda) y flechas circulares debajo — fiel a la maqueta.
========================================================= */

/* Base: el riel no afecta el layout fuera de móvil y las
   flechas quedan ocultas (no tocan escritorio/tablet). */
.section_blog .blog-carousel-track{ display: contents; }
.section_blog .blog-carousel-nav{ display: none; }

@media (max-width: 767px){
  /* Riel -> pista deslizante horizontal, una tarjeta por vista. */
  .section_blog .blog-carousel-track{
    display: flex;
    gap: var(--spacers--spacer-sm);
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    -ms-overflow-style: none;
  }
  .section_blog .blog-carousel-track::-webkit-scrollbar{ display: none; }

  /* Aplana los envoltorios: las 5 tarjetas quedan como hijas
     directas del riel, sin tocar el HTML de cada fila. */
  .section_blog .blog-collection-block,
  .section_blog .blog-collection-list,
  .section_blog .blog-collection-list.is-2{ display: contents; }

  /* Cada tarjeta ocupa el ancho visible y "engancha". */
  .section_blog .blog-collection-item{
    flex: 0 0 100%;
    min-width: 0;
    scroll-snap-align: start;
  }

  /* TODAS las tarjetas en horizontal (imagen a la izquierda),
     como la foto: anula el apilado previo de las .is-feature. */
  .section_blog .blog-item-card-block,
  .section_blog .blog-item-card-block.is-feature{
    flex-direction: row;
    align-items: stretch;
    gap: var(--spacers--spacer-xsm);
    height: 100%;
  }
  .section_blog .blog-item-card-block .blog-item-image-block,
  .section_blog .blog-item-card-block.is-feature .blog-item-image-block{
    flex: 0 0 40%;
    aspect-ratio: 3 / 4;
    min-height: 100%;
    align-self: stretch;
  }
  .section_blog .blog-item-card-block .blog-item-content-block,
  .section_blog .blog-item-card-block.is-feature .blog-item-content-block{
    flex: 1;
    justify-content: center;
    padding-right: var(--spacers--spacer-tiny);
  }

  /* Alturas parejas entre slides: evita saltos al deslizar. */
  .section_blog .blog-item-title{
    display: -webkit-box;
    -webkit-line-clamp: 3;
    line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .section_blog .blog-item-summary-block p{
    display: -webkit-box;
    -webkit-line-clamp: 4;
    line-clamp: 4;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }

  /* Flechas circulares (fiel a la referencia). */
  .section_blog .blog-carousel-nav{
    display: flex;
    justify-content: center;
    align-items: center;
    gap: var(--spacers--spacer-xsm);
    margin-top: var(--spacers--spacer-sm);
  }
  .section_blog .blog-carousel-arrow{
    width: 3rem;
    height: 3rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border-radius: var(--radius-sizes--radius-full);
    border: 1px solid var(--_colors---strock-color);
    background-color: transparent;
    color: var(--_colors---deep-color);
    cursor: pointer;
    -webkit-appearance: none;
    appearance: none;
    transition: background-color .3s ease, border-color .3s ease,
                color .3s ease, opacity .3s ease, transform .3s ease;
  }
  .section_blog .blog-carousel-arrow:hover{
    background-color: var(--_colors---deep-color);
    border-color: var(--_colors---deep-color);
    color: var(--_colors---white-color);
  }
  .section_blog .blog-carousel-arrow:active{ transform: scale(.94); }
  .section_blog .blog-carousel-arrow[disabled]{
    opacity: .4;
    cursor: default;
    pointer-events: none;
  }
}

@media (prefers-reduced-motion: reduce){
  .section_blog .blog-carousel-track{ scroll-behavior: auto; }
  .section_blog .blog-carousel-arrow{ transition: none; }
}
@media (prefers-reduced-motion: reduce){
  .section_blog .blog-item-card-block,
  .section_blog .blog-item-image,
  .section_blog .blog-cta,
  .section_blog .blog-cta-text,
  .section_blog .blog-cta-icon-inner{ transition: none; }
}

/* =========================================================
   SECCIÓN PRECIOS
   ---------------------------------------------------------
   Fiel a la sección original (Webflow "Calmlyss"): mismos
   tokens exactos (colores, tipografía, spacers, radius),
   mismo background-image y overflow:clip del original.
   Encapsulada en .section_pricing para no chocar con el
   resto del sitio. Reutiliza el reveal genérico
   ([data-reveal-section] / .reveal-armed / .is-in).
========================================================= */

.section_pricing{
  /* ---- Tokens exactos del original ---- */
  text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;

  --_colors---white-color: white;
  --_colors---text-color-1: #6b584e;
  --_colors---deep-color: #301100;
  --_colors---bg-color: #f9f6f3;
  --_colors---text-color-2: #c78460;
  --_colors---primary-color: #866452;
  --_colors---strock-color: #d9d7d3;
  --_colors---white-color-0-8: #fffc;

  --_typography---font-family--main-font-family: Geist, sans-serif;
  --_typography---font-family--style-font-family: "Instrument Serif", sans-serif;
  --_typography---text-sizes--body-1: 1rem;
  --_typography---text-sizes--body-2: .875rem;
  --_typography---text-sizes--body-3: .75rem;
  --_typography---text-sizes--body-4: .625rem;
  --_typography---text-sizes--h1: 4rem;
  --_typography---text-sizes--h2: 3rem;
  --_typography---text-sizes--h3: 2.375rem;
  --_typography---text-sizes--h4: 2rem;
  --_typography---text-sizes--h5: 1.5rem;
  --_typography---text-sizes--h6: 1.375rem;
  --_typography---line-hights--line-hight-xl: 1.5;
  --_typography---line-hights--line-hight-main: 1.2;
  --_typography---line-hights--line-hight-lg: 1.3;
  --_typography---line-hights--line-hight-sm: 1.1;
  --_typography---line-hights--line-hight-xsm: 1;
  --_typography---text-weight--light: 300;
  --_typography---text-weight--normal: 400;
  --_typography---text-weight--medium: 500;
  --_typography---text-weight--semi-bold: 600;
  --_typography---text-weight--bold: 700;
  --_typography---letter-spacings--letter-spacing: -.04em;

  --spacers--size-zero: 0rem;
  --spacers--100: 100%;
  --spacers--spacer-tiny: .5rem;
  --spacers--spacer-xxxsm: .75rem;
  --spacers--spacer-xxsm: 1rem;
  --spacers--spacer-xsm: 1.25rem;
  --spacers--spacer-sm: 1.5rem;
  --spacers--spacer-main: 2rem;
  --spacers--spacer-lg: 2.5rem;
  --spacers--spacer-xl: 3rem;
  --spacers--spacer-xxl: 4rem;
  --spacers--spacer-xxxl: 5rem;

  --radius-sizes--radius-sm: .5rem;
  --radius-sizes--radius-main: 1rem;
  --radius-sizes--radius-large: 100rem;
  --radius-sizes--radius-full: var(--spacers--100);

  --container-sizes--container-main: 60rem;
  --container-sizes--container-small: 60rem;
  --container-sizes--container-fluid: var(--spacers--100);

  box-sizing: border-box;
  display: block;
  /* Antes dependia do CDN de preview da Webflow (link expirava e
     derrubava o desenho, revelando o fundo escuro do body por trás).
     Agora usa o arquivo local salvo em assets/pricing-bg.svg — não
     depende mais de nenhum servidor externo. */
  background-color: var(--_colors---bg-color);
  background-image: url("assets/pricing-bg.svg");
  background-size: cover;
  background-position: 50% center;
  overflow: clip;

  font-family: var(--_typography---font-family--main-font-family);
  color: var(--_colors---text-color-1);
  font-size: var(--_typography---text-sizes--body-1);
  line-height: var(--_typography---line-hights--line-hight-xl);
  font-weight: var(--_typography---text-weight--normal);
  letter-spacing: var(--_typography---letter-spacings--letter-spacing);
}
.section_pricing *{ box-sizing: border-box; }
.section_pricing a{ text-decoration: none; color: inherit; }

/* ---- Layout base (container / gap) ---- */
.section_pricing .section-gap{
  padding-top: var(--spacers--spacer-xxxl);
  padding-bottom: var(--spacers--spacer-xxxl);
}
.section_pricing .w-layout-blockcontainer{
  max-width: 940px;
  margin-left: auto;
  margin-right: auto;
  display: block;
}
.section_pricing .container-small{ max-width: var(--container-sizes--container-small); }

/* ---- Encabezado ---- */
.section_pricing .section-heading-block{
  margin-bottom: var(--spacers--spacer-xxl);
  flex-flow: column;
  justify-content: flex-start;
  align-items: center;
  display: flex;
  text-align: center;
}
.section_pricing .section-heading-block.bottom-gap-md{ margin-bottom: var(--spacers--spacer-xl); }
.section_pricing .section-subtitle-block{
  padding: .5rem var(--spacers--spacer-xxsm) .4rem;
  gap: var(--spacers--spacer-tiny);
  border-radius: var(--radius-sizes--radius-large);
  background-color: var(--_colors---white-color);
  justify-content: flex-start;
  align-items: center;
  display: flex;
}
.section_pricing .subtitle-pointer{
  border-radius: var(--radius-sizes--radius-full);
  background-color: var(--_colors---deep-color);
  width: .375rem;
  height: .375rem;
  flex: none;
}
.section_pricing .subtitle-text{
  color: var(--_colors---deep-color);
  font-size: var(--_typography---text-sizes--body-3);
  font-weight: var(--_typography---text-weight--medium);
  text-transform: uppercase;
  margin: 0;
}
.section_pricing .subtitle-text.text-color-deep{ color: var(--_colors---deep-color); }

.section_pricing .section-title-block{
  max-width: 25rem;
  margin-top: var(--spacers--spacer-xxsm);
  flex-flow: column;
  justify-content: flex-start;
  align-items: center;
}
.section_pricing .section-title-block.max-width-40rem{ max-width: 35rem; }

.section_pricing .pricing-title{
  color: var(--_colors---deep-color);
  font-size: var(--_typography---text-sizes--h2);
  line-height: var(--_typography---line-hights--line-hight-main);
  font-weight: var(--_typography---text-weight--normal);
  text-align: center;
  margin: 0;
}
.section_pricing .pricing-title-ht{
  font-family: var(--_typography---font-family--style-font-family);
  color: var(--_colors---primary-color);
  font-style: italic;
}

.section_pricing .section-summary-block{ max-width: 35rem; margin-top: var(--spacers--spacer-xsm); }
.section_pricing .section-summary-block.max-width-25rem{ max-width: 25rem; }
.section_pricing .text-size-large{ font-size: var(--_typography---text-sizes--body-1); margin-bottom: 0; }
.section_pricing .text-align-center{ text-align: center; }

/* ---- Grid de tarjetas ---- */
.section_pricing .pricing-content-block{
  padding-top: var(--spacers--spacer-xl);
  border: 1px #8664529e;
  border-top-style: dashed;
}
.section_pricing .pricing-list{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--spacers--spacer-sm);
  align-items: stretch;
}

/* ---- Tarjeta base ---- */
.section_pricing .pricing-card-block{
  position: relative;
  background-color: var(--_colors---white-color);
  border: 1px solid var(--_colors---strock-color);
  border-radius: var(--radius-sizes--radius-main);
  padding: var(--spacers--spacer-main);
  display: flex;
  flex-direction: column;
  gap: var(--spacers--spacer-sm);
  height: 100%;
  transition: transform .4s cubic-bezier(.22,1,.36,1),
              box-shadow .4s ease,
              border-color .4s ease;
}
.section_pricing .pricing-card-block:hover{
  transform: translateY(-4px);
  box-shadow: 0 24px 48px -30px rgba(48,17,0,.35);
}

/* ---- Card destacada ---- */
.section_pricing .pricing-card-block.is-featured{
  background-color: var(--_colors---deep-color);
  border-color: var(--_colors---deep-color);
  color: var(--_colors---white-color-0-8);
}
.section_pricing .pricing-card-block.is-featured .pricing-plan-name,
.section_pricing .pricing-card-block.is-featured .pricing-price{
  color: var(--_colors---white-color);
}
.section_pricing .pricing-card-block.is-featured .pricing-plan-summary,
.section_pricing .pricing-card-block.is-featured .pricing-price-period,
.section_pricing .pricing-card-block.is-featured .pricing-feature-text{
  color: var(--_colors---white-color-0-8);
}
.section_pricing .pricing-card-block.is-featured .pricing-divider{ background-color: #fff2; }
.section_pricing .pricing-card-block.is-featured .pricing-feature-icon{
  background-color: var(--_colors---text-color-2);
  color: var(--_colors---deep-color);
}

.section_pricing .pricing-badge-popular{
  position: absolute;
  top: var(--spacers--spacer-main);
  right: var(--spacers--spacer-main);
  background-color: var(--_colors---text-color-2);
  color: var(--_colors---deep-color);
  font-size: var(--_typography---text-sizes--body-4);
  font-weight: var(--_typography---text-weight--semi-bold);
  text-transform: uppercase;
  letter-spacing: .02em;
  padding: .3rem var(--spacers--spacer-tiny);
  border-radius: var(--radius-sizes--radius-large);
}

/* ---- Conteúdo da tarjeta ---- */
.section_pricing .pricing-card-top{ display: flex; flex-direction: column; gap: var(--spacers--spacer-tiny); }
.section_pricing .pricing-plan-name{
  color: var(--_colors---deep-color);
  font-size: var(--_typography---text-sizes--h5);
  font-weight: var(--_typography---text-weight--medium);
  margin: 0;
}
.section_pricing .pricing-plan-summary{
  font-size: var(--_typography---text-sizes--body-2);
  line-height: var(--_typography---line-hights--line-hight-xl);
  margin: 0;
}
.section_pricing .pricing-price-wrapper{
  display: flex;
  align-items: baseline;
  gap: .25rem;
  margin-top: var(--spacers--spacer-xxsm);
}
.section_pricing .pricing-price-currency{
  font-size: var(--_typography---text-sizes--h5);
  font-weight: var(--_typography---text-weight--medium);
  color: var(--_colors---deep-color);
}
.section_pricing .pricing-price{
  font-size: var(--_typography---text-sizes--h1);
  line-height: var(--_typography---line-hights--line-hight-xsm);
  font-weight: var(--_typography---text-weight--normal);
  color: var(--_colors---deep-color);
  margin: 0;
}
.section_pricing .pricing-price-period{
  font-size: var(--_typography---text-sizes--body-2);
  color: var(--_colors---text-color-1);
}

.section_pricing .pricing-divider{
  height: 1px;
  background-color: var(--_colors---strock-color);
  border: none;
}

.section_pricing .pricing-feature-list{
  display: flex;
  flex-direction: column;
  gap: var(--spacers--spacer-xxxsm);
  list-style: none;
  margin: 0;
  padding: 0;
  flex: 1;
}
.section_pricing .pricing-feature-item{
  display: flex;
  align-items: flex-start;
  gap: var(--spacers--spacer-tiny);
}
.section_pricing .pricing-feature-icon{
  flex: none;
  width: 1.25rem;
  height: 1.25rem;
  border-radius: var(--radius-sizes--radius-full);
  background-color: var(--_colors---bg-color);
  color: var(--_colors---primary-color);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: .1rem;
}
.section_pricing .pricing-feature-text{
  font-size: var(--_typography---text-sizes--body-2);
  line-height: var(--_typography---line-hights--line-hight-lg);
  margin: 0;
}

/* ---- Botão ---- */
.section_pricing .pricing-cta-button{
  display: flex;
  justify-content: center;
  align-items: center;
  margin-top: auto;
  padding: var(--spacers--spacer-xxxsm) var(--spacers--spacer-sm);
  border-radius: var(--radius-sizes--radius-large);
  background-color: var(--_colors---bg-color);
  transition: background-color .35s ease, color .35s ease;
}
.section_pricing .pricing-cta-text{
  color: var(--_colors---deep-color);
  font-size: var(--_typography---text-sizes--body-2);
  font-weight: var(--_typography---text-weight--medium);
}
.section_pricing .pricing-cta-button:hover{ background-color: var(--_colors---deep-color); }
.section_pricing .pricing-cta-button:hover .pricing-cta-text{ color: var(--_colors---white-color); }

.section_pricing .pricing-cta-button.is-primary{ background-color: var(--_colors---white-color); }
.section_pricing .pricing-cta-button.is-primary .pricing-cta-text{ color: var(--_colors---deep-color); }
.section_pricing .pricing-cta-button.is-primary:hover{ background-color: var(--_colors---text-color-2); }
.section_pricing .pricing-cta-button.is-primary:hover .pricing-cta-text{ color: var(--_colors---deep-color); }

/* ---- Responsivo ---- */
@media (max-width: 991px){
  .section_pricing{ --_typography---text-sizes--h1: 3rem; }
  .section_pricing .pricing-list{ grid-template-columns: 1fr 1fr; }
  .section_pricing .pricing-list .pricing-card-block:last-child{ grid-column: 1 / -1; }
}
@media (max-width: 767px){
  .section_pricing{ --_typography---text-sizes--h1: 2.5rem; }
  .section_pricing .section-gap{
    padding-top: var(--spacers--spacer-xxl);
    padding-bottom: var(--spacers--spacer-xxl);
  }
  .section_pricing .w-layout-blockcontainer{ padding-inline: 1rem; }
  .section_pricing .pricing-title{ font-size: 2.25rem; }
  .section_pricing .pricing-list,
  .section_pricing .pricing-list .pricing-card-block:last-child{ grid-template-columns: 1fr; grid-column: auto; }
}

/* ---- Respeta prefers-reduced-motion ---- */
@media (prefers-reduced-motion: reduce){
  .section_pricing .pricing-card-block,
  .section_pricing .pricing-cta-button,
  .section_pricing .pricing-cta-text{ transition: none; }
}

/* ---- Tarifario completo (lista de todos los paquetes) ---- */
.section_pricing .pricing-tables{
  margin-top: var(--spacers--spacer-sm);
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--spacers--spacer-sm);
  align-items: start;
}
.section_pricing .pricing-tables-col{
  display: flex;
  flex-direction: column;
  gap: var(--spacers--spacer-sm);
}
.section_pricing .pricing-table-group{
  background-color: var(--_colors---white-color);
  border: 1px solid var(--_colors---strock-color);
  border-radius: var(--radius-sizes--radius-main);
  padding: var(--spacers--spacer-main);
}
.section_pricing .pricing-table-title{
  color: var(--_colors---deep-color);
  font-size: var(--_typography---text-sizes--h6);
  font-weight: var(--_typography---text-weight--medium);
  margin: 0 0 var(--spacers--spacer-xxsm);
}
.section_pricing .pricing-rows{
  list-style: none;
  margin: 0;
  padding: 0;
}
.section_pricing .pricing-row{
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--spacers--spacer-xxsm);
  padding: var(--spacers--spacer-xxxsm) 0;
  border-bottom: 1px dashed #8664524d;
}
.section_pricing .pricing-row:last-child{ border-bottom: none; padding-bottom: 0; }
.section_pricing .pricing-row:first-child{ padding-top: 0; }
.section_pricing .pricing-row-info{
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.section_pricing .pricing-row-name{
  color: var(--_colors---deep-color);
  font-size: var(--_typography---text-sizes--body-1);
  font-weight: var(--_typography---text-weight--medium);
  line-height: var(--_typography---line-hights--line-hight-sm);
}
.section_pricing .pricing-row-note{
  font-size: var(--_typography---text-sizes--body-3);
  color: var(--_colors---text-color-1);
  margin-top: .15rem;
}
.section_pricing .pricing-row-price{
  flex: none;
  color: var(--_colors---deep-color);
  font-size: var(--_typography---text-sizes--body-1);
  font-weight: var(--_typography---text-weight--semi-bold);
  white-space: nowrap;
}

/* ---- Promos ---- */
.section_pricing .pricing-promos{
  margin-top: var(--spacers--spacer-sm);
  background-color: var(--_colors---deep-color);
  color: var(--_colors---white-color-0-8);
  border-radius: var(--radius-sizes--radius-main);
  padding: var(--spacers--spacer-main);
}
.section_pricing .pricing-promos-head{
  display: flex;
  align-items: center;
  gap: var(--spacers--spacer-xxsm);
  margin-bottom: var(--spacers--spacer-xsm);
}
.section_pricing .pricing-promos-title{
  color: var(--_colors---white-color);
  font-size: var(--_typography---text-sizes--h6);
  font-weight: var(--_typography---text-weight--medium);
  margin: 0;
}
.section_pricing .pricing-promos-tag{
  font-size: var(--_typography---text-sizes--body-3);
  text-transform: uppercase;
  letter-spacing: .02em;
  color: var(--_colors---text-color-2);
  font-weight: var(--_typography---text-weight--semi-bold);
}
.section_pricing .pricing-promos-grid{
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--spacers--spacer-sm);
}
.section_pricing .pricing-promo-name{
  display: block;
  color: var(--_colors---white-color);
  font-weight: var(--_typography---text-weight--semi-bold);
  margin-bottom: .15rem;
}
.section_pricing .pricing-promo-desc{
  display: block;
  font-size: var(--_typography---text-sizes--body-2);
  line-height: var(--_typography---line-hights--line-hight-lg);
  color: var(--_colors---white-color-0-8);
}
.section_pricing .pricing-promos-note{
  margin: var(--spacers--spacer-sm) 0 0;
  font-size: var(--_typography---text-sizes--body-3);
  color: var(--_colors---white-color-0-8);
}

/* ---- Nota final ---- */
.section_pricing .pricing-note{
  margin: var(--spacers--spacer-sm) 0 0;
  text-align: center;
  font-size: var(--_typography---text-sizes--body-3);
  color: var(--_colors---text-color-1);
}

/* ---- Responsivo del tarifario/promos ---- */
@media (max-width: 767px){
  .section_pricing .pricing-tables,
  .section_pricing .pricing-promos-grid{ grid-template-columns: 1fr; }
}

/* =========================================================
   SECCIÓN CTA / NEWSLETTER
   ---------------------------------------------------------
   Fiel a la maqueta de referencia (Webflow "Calmlyss"): card
   con foto de fondo + overlay oscuro, cantos redondeados,
   flotando con "gutter" sobre el bg-color de la página —
   igual al recorte enviado (badge blanco, título en dos
   estilos de fuente, input translúcido + botón blanco
   separados). Reutiliza el reveal genérico del sitio
   ([data-reveal-section] / [data-reveal] / .char).
========================================================= */

.section_cta{
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;

  --_colors---white-color: white;
  --_colors---text-color-1: #6b584e;
  --_colors---deep-color: #301100;
  --_colors---bg-color: #f9f6f3;
  --_colors---text-color-2: #c78460;
  --_colors---primary-color: #866452;
  --_colors---strock-color: #d9d7d3;
  --_colors---white-color-0-8: #fffc;

  --_typography---font-family--main-font-family: Geist, sans-serif;
  --_typography---font-family--style-font-family: "Instrument Serif", sans-serif;
  --_typography---text-sizes--body-1: 1rem;
  --_typography---text-sizes--body-2: .875rem;
  --_typography---text-sizes--body-3: .75rem;
  --_typography---text-sizes--body-4: .625rem;
  --_typography---text-sizes--h1: 4rem;
  --_typography---text-sizes--h2: 3rem;
  --_typography---text-sizes--h3: 2.375rem;
  --_typography---text-sizes--h4: 2rem;
  --_typography---text-sizes--h5: 1.5rem;
  --_typography---text-sizes--h6: 1.375rem;
  --_typography---line-hights--line-hight-xl: 1.5;
  --_typography---line-hights--line-hight-main: 1.2;
  --_typography---line-hights--line-hight-lg: 1.3;
  --_typography---line-hights--line-hight-sm: 1.1;
  --_typography---line-hights--line-hight-xsm: 1;
  --_typography---text-weight--light: 300;
  --_typography---text-weight--normal: 400;
  --_typography---text-weight--medium: 500;
  --_typography---text-weight--semi-bold: 600;
  --_typography---text-weight--bold: 700;
  --_typography---letter-spacings--letter-spacing: -.04em;

  --spacers--size-zero: 0rem;
  --spacers--100: 100%;
  --spacers--spacer-tiny: .5rem;
  --spacers--spacer-xxxsm: .75rem;
  --spacers--spacer-xxsm: 1rem;
  --spacers--spacer-xsm: 1.25rem;
  --spacers--spacer-sm: 1.5rem;
  --spacers--spacer-main: 2rem;
  --spacers--spacer-lg: 2.5rem;
  --spacers--spacer-xl: 3rem;
  --spacers--spacer-xxl: 4rem;
  --spacers--spacer-xxxl: 5rem;

  --radius-sizes--radius-sm: .5rem;
  --radius-sizes--radius-main: 1rem;
  --radius-sizes--radius-large: 100rem;
  --radius-sizes--radius-full: var(--spacers--100);

  --container-sizes--container-main: 78rem;
  --container-sizes--container-small: 60rem;
  --container-sizes--container-fluid: var(--spacers--100);

  box-sizing: border-box;
  display: block;
  background-color: var(--_colors---bg-color);

  font-family: var(--_typography---font-family--main-font-family);
  color: var(--_colors---text-color-1);
  font-size: var(--_typography---text-sizes--body-1);
  line-height: var(--_typography---line-hights--line-hight-xl);
  font-weight: var(--_typography---text-weight--normal);
  letter-spacing: var(--_typography---letter-spacings--letter-spacing);
}
.section_cta *{ box-sizing: border-box; }

/* ---- Layout base ---- */
.section_cta .section-gap{
  padding-top: var(--spacers--spacer-xxxl);
  padding-bottom: var(--spacers--spacer-xxxl);
}
.section_cta .w-layout-blockcontainer{
  max-width: 1222px;
  margin-left: auto;
  margin-right: auto;
  display: block;
}
.section_cta .container-main{ max-width: var(--container-sizes--container-main); }

/* ---- Card (foto + overlay) ----
   Troque a imagem por uma foto real do estúdio:
   background-image: url("assets/newsletter-bg.webp");
   Enquanto não tiver, usa um degradê nos tons da marca. */
.section_cta .cta-card{
  position: relative;
  border-radius: 1.75rem;
  overflow: clip;
  padding: var(--spacers--spacer-xxxl) var(--spacers--spacer-main);
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  min-height: 26rem;
  justify-content: center;

  background-image:
    linear-gradient(180deg, rgba(48,17,0,.55) 0%, rgba(48,17,0,.35) 45%, rgba(48,17,0,.6) 100%),
    url("assets/img.webp"),
    linear-gradient(135deg, #866452 0%, #4a2a17 55%, #301100 100%);
  background-size: cover;
  background-position: center;
}
.section_cta .cta-content-block{
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
}

/* ---- Encabezado ---- */
.section_cta .section-heading-block{
  flex-flow: column;
  justify-content: flex-start;
  align-items: center;
  display: flex;
  text-align: center;
}
.section_cta .section-heading-block.bottom-gap-sm{ margin-bottom: 0; }
.section_cta .section-heading-block.padding-none{ padding: 0; }

.section_cta .section-subtitle-block{
  padding: .5rem var(--spacers--spacer-xxsm) .4rem;
  gap: var(--spacers--spacer-tiny);
  border-radius: var(--radius-sizes--radius-large);
  background-color: var(--_colors---white-color);
  justify-content: flex-start;
  align-items: center;
  display: flex;
}
.section_cta .subtitle-pointer{
  border-radius: var(--radius-sizes--radius-full);
  background-color: var(--_colors---text-color-2);
  width: .375rem;
  height: .375rem;
  flex: none;
}
.section_cta .subtitle-text{
  color: var(--_colors---deep-color);
  font-size: var(--_typography---text-sizes--body-3);
  font-weight: var(--_typography---text-weight--medium);
  text-transform: uppercase;
  margin: 0;
}
.section_cta .subtitle-text.text-color-deep{ color: var(--_colors---deep-color); }

.section_cta .section-title-block{
  max-width: 25rem;
  margin-top: var(--spacers--spacer-xxsm);
  flex-flow: column;
  justify-content: flex-start;
  align-items: center;
}
.section_cta .section-title-block.max-width-40rem{ max-width: 40rem; }

.section_cta .cta-title{
  color: var(--_colors---deep-color);
  font-size: var(--_typography---text-sizes--h2);
  line-height: var(--_typography---line-hights--line-hight-main);
  font-weight: var(--_typography---text-weight--normal);
  text-align: center;
  margin: 0;
}
.section_cta .cta-title.text-color-white{ color: var(--_colors---white-color); }
.section_cta .cta-title-ht{
  font-family: var(--_typography---font-family--style-font-family);
  color: var(--_colors---white-color);
  font-style: italic;
  white-space: nowrap;
  display: inline-block;
}
.section_cta .cta-title .char{ display: inline-block; will-change: transform, opacity; }
.section_cta .cta-title .char-space{ display: inline-block; width: .28em; }

[data-reveal-section].section_cta.reveal-armed .cta-title .char{
  opacity: 0;
  transform: translateY(.7em);
}
[data-reveal-section].section_cta.reveal-armed.is-in .cta-title .char{
  opacity: 1;
  transform: none;
  transition: opacity .5s ease,
              transform .6s cubic-bezier(.22,.61,.36,1);
  transition-delay: calc(var(--i) * 26ms + 140ms);
}

.section_cta .section-summary-block{ max-width: 30rem; margin-top: var(--spacers--spacer-xsm); }
.section_cta .section-summary-block.max-width-30rem{ max-width: 30rem; }
.section_cta .text-size-large{ font-size: var(--_typography---text-sizes--body-1); margin-bottom: 0; }
.section_cta .text-align-center{ text-align: center; }
.section_cta .text-color-white{ color: var(--_colors---white-color); }

/* ---- Formulário (input e botão como pills separados, lado a lado) ---- */
.section_cta .cta-form-block{ width: 100%; max-width: 28rem; margin-top: var(--spacers--spacer-lg); position: relative; z-index: 1; }
.section_cta .cta-form{ width: 100%; }
.section_cta .cta-form-inner{ width: 100%; }
.section_cta .cta-form-content{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--spacers--spacer-tiny);
}
.section_cta .cta-form-text-field{
  flex: 1;
  min-width: 0;
  border: 1px solid #ffffff33;
  outline: none;
  background-color: #ffffff26;
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  border-radius: var(--radius-sizes--radius-large);
  padding: .8rem var(--spacers--spacer-xxsm);
  font-family: inherit;
  font-size: var(--_typography---text-sizes--body-2);
  color: var(--_colors---white-color);
}
.section_cta .cta-form-text-field::placeholder{ color: var(--_colors---white-color-0-8); }
.section_cta .cta-form-button{
  flex: none;
  border: none;
  cursor: pointer;
  background-color: var(--_colors---white-color);
  color: var(--_colors---deep-color);
  font-family: inherit;
  font-size: var(--_typography---text-sizes--body-2);
  font-weight: var(--_typography---text-weight--medium);
  padding: .8rem var(--spacers--spacer-sm);
  border-radius: var(--radius-sizes--radius-large);
  transition: background-color .35s ease;
}
.section_cta .cta-form-button:hover{ background-color: var(--_colors---text-color-2); color: var(--_colors---white-color); }

/* Botão único de WhatsApp (substitui o formulário de e-mail) */
.section_cta .cta-wa-button{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .6rem;
  padding: 1rem var(--spacers--spacer-lg);
  border-radius: var(--radius-sizes--radius-large);
  background-color: #25d366;
  color: #ffffff;
  font-family: inherit;
  font-size: var(--_typography---text-sizes--body-1);
  font-weight: var(--_typography---text-weight--semi-bold);
  text-decoration: none;
  box-shadow: 0 10px 24px rgba(37,211,102,.28);
  transition: background-color .35s ease, transform .1s ease, box-shadow .35s ease;
}
.section_cta .cta-wa-button:hover{ background-color: #1fb959; box-shadow: 0 12px 28px rgba(37,211,102,.36); }
.section_cta .cta-wa-button:active{ transform: translateY(1px); }
.section_cta .cta-wa-icon{ display: inline-flex; }
@media (max-width: 767px){
  .section_cta .cta-wa-button{ width: 100%; }
}

.section_cta .success-message,
.section_cta .cta-form-fail{
  position: relative;
  z-index: 1;
  margin-top: var(--spacers--spacer-xxsm);
  padding: var(--spacers--spacer-tiny) var(--spacers--spacer-xxsm);
  border-radius: var(--radius-sizes--radius-sm);
  font-size: var(--_typography---text-sizes--body-2);
  text-align: center;
}
.section_cta .success-message{ background-color: var(--_colors---white-color); color: var(--_colors---deep-color); }
.section_cta .cta-form-fail{ background-color: #ffffff26; color: var(--_colors---white-color); }
.section_cta .success-message[hidden],
.section_cta .cta-form-fail[hidden]{ display: none; }

/* ---- Responsivo ---- */
@media (max-width: 767px){
  .section_cta{ --_typography---text-sizes--h2: 2.25rem; }
  .section_cta .w-layout-blockcontainer{ padding-inline: 1rem; }
  .section_cta .section-gap{
    padding-top: var(--spacers--spacer-xxl);
    padding-bottom: var(--spacers--spacer-xxl);
  }
  .section_cta .cta-card{ border-radius: 1.25rem; padding: var(--spacers--spacer-xxl) var(--spacers--spacer-sm); min-height: 22rem; }
  .section_cta .cta-form-content{ flex-direction: column; align-items: stretch; gap: var(--spacers--spacer-tiny); }
  .section_cta .cta-form-button{ width: 100%; }
}

/* ---- Respeta prefers-reduced-motion ---- */
@media (prefers-reduced-motion: reduce){
  .section_cta .cta-title .char{
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  .section_cta .cta-form-button{ transition: none; }
}

/* =========================================================
   DESEMPENHO (mobile): o navegador PULA a renderização das
   seções pesadas enquanto elas estão fora da tela, e só as
   desenha quando chegam perto da viewport. Nada é removido —
   o visual é idêntico; só reduz o custo de rolagem. O
   contain-intrinsic-size reserva a altura aproximada para a
   barra de rolagem não "pular".
   (Clases e Galería já usavam isto; aqui estendemos ao resto.)
========================================================= */
.section_testimonial{ content-visibility:auto; contain-intrinsic-size:auto 1100px; }
.section_blog{ content-visibility:auto; contain-intrinsic-size:auto 1100px; }
.section_cta{ content-visibility:auto; contain-intrinsic-size:auto 700px; }


/* =========================================================
   FOOTER NORMA'L
   Visual integrado ao restante do site
========================================================= */

.norma-footer {
    --footer-bg: #241811; /* espresso dessaturado — antes era #301100 (saturação ~100%, lia como "queimado") */
    --footer-text: #f9f6f3;
    --footer-muted: rgba(249, 246, 243, 0.56);
    --footer-line: rgba(249, 246, 243, 0.18);
    --footer-accent: #f3dcd8;
    --footer-green: #9fb08a;

    position: relative;
    width: 100%;
    overflow: hidden;

    background: var(--footer-bg);
    color: var(--footer-text);
}

.norma-footer-inner {
    width: min(100%, 1500px);
    margin: 0 auto;
    padding: 0 clamp(20px, 4vw, 70px);
}


/* =========================================================
   TOPO
========================================================= */

.norma-footer-top {
    display: flex;
    align-items: center;
    justify-content: space-between;

    padding: 24px 0;

    border-bottom: 1px solid var(--footer-line);
}

.norma-footer-kicker {
    font-family: "PP Mori", Arial, sans-serif;
    font-size: 10px;
    font-weight: 500;

    text-transform: uppercase;
    letter-spacing: 0.13em;

    color: var(--footer-muted);
}


/* =========================================================
   BOTÃO
========================================================= */

.norma-footer-whatsapp {
    position: relative;

    height: 48px;
    padding: 0 7px 0 20px;

    display: inline-flex;
    align-items: center;
    gap: 18px;

    overflow: hidden;

    border: 1px solid rgba(255, 255, 255, 0.22);
    border-radius: 999px;

    isolation: isolate;

    transition:
        border-color .45s cubic-bezier(.16, 1, .3, 1),
        color .45s cubic-bezier(.16, 1, .3, 1);
}

.norma-footer-whatsapp::before {
    content: "";

    position: absolute;
    inset: 0;
    z-index: -1;

    background: var(--footer-accent);

    transform: translateY(105%);

    transition:
        transform .55s cubic-bezier(.16, 1, .3, 1);
}

.norma-footer-whatsapp:hover {
    color: var(--footer-bg);
    border-color: var(--footer-accent);
}

.norma-footer-whatsapp:hover::before {
    transform: translateY(0);
}

.norma-footer-whatsapp > span:first-child {
    font-family: "PP Mori", Arial, sans-serif;
    font-size: 10px;
    font-weight: 600;

    text-transform: uppercase;
    letter-spacing: 0.11em;
}

.norma-footer-arrow {
    width: 34px;
    height: 34px;

    display: flex;
    align-items: center;
    justify-content: center;

    border-radius: 50%;

    background: var(--footer-text);
    color: var(--footer-bg);

    font-size: 16px;

    transition:
        transform .5s cubic-bezier(.16, 1, .3, 1),
        background .4s ease;
}

.norma-footer-whatsapp:hover .norma-footer-arrow {
    transform: rotate(-45deg);
    background: var(--footer-bg);
    color: var(--footer-text);
}


/* =========================================================
   FRASE PRINCIPAL
========================================================= */

.norma-footer-hero {
    padding:
        clamp(80px, 10vw, 150px)
        0
        clamp(70px, 9vw, 130px);
}

.norma-footer-hero h2 {
    max-width: 1100px;

    font-family: "PP Mori", Arial, sans-serif;
    font-size: clamp(52px, 7.5vw, 130px);
    font-weight: 400;

    line-height: 0.9;
    letter-spacing: -0.055em;

    color: var(--footer-text);
}

.norma-footer-hero h2 span {
    display: block;
}

.norma-footer-hero h2 em {
    display: block;

    margin-left: clamp(35px, 12vw, 180px);

    font-family: "PP Editorial New", Georgia, serif;
    font-weight: 400;
    font-style: italic;

    color: var(--footer-accent);
}


/* =========================================================
   CONTEÚDO
========================================================= */

.norma-footer-content {
    display: grid;
    grid-template-columns: minmax(0, 1.55fr) minmax(280px, .75fr);
    gap: clamp(35px, 7vw, 100px);

    padding-bottom: clamp(70px, 8vw, 120px);
}


/* =========================================================
   MAPA
========================================================= */

.norma-footer-map-head {
    display: flex;
    align-items: center;
    justify-content: space-between;

    margin-bottom: 18px;
}

.norma-footer-map-head > span {
    font-family: "PP Mori", Arial, sans-serif;
    font-size: 10px;
    font-weight: 500;

    text-transform: uppercase;
    letter-spacing: 0.13em;

    color: var(--footer-muted);
}

.norma-footer-map-head a {
    font-family: "PP Mori", Arial, sans-serif;
    font-size: 11px;

    color: var(--footer-text);

    transition:
        color .3s ease,
        transform .4s cubic-bezier(.16, 1, .3, 1);
}

.norma-footer-map-head a:hover {
    color: var(--footer-accent);
    transform: translateX(4px);
}


.norma-map-frame {
    position: relative;

    height: clamp(280px, 33vw, 460px);

    overflow: hidden;

    background: #5a3626;
}

.norma-map-frame iframe {
    width: 100%;
    height: 100%;

    display: block;

    border: 0;

    filter:
        grayscale(1)
        sepia(.25)
        contrast(.95)
        brightness(.68);

    transform: scale(1.02);

    transition:
        transform 1.2s cubic-bezier(.16, 1, .3, 1),
        filter .7s ease;
}

.norma-map-frame:hover iframe {
    transform: scale(1.07);

    filter:
        grayscale(.85)
        sepia(.35)
        contrast(1)
        brightness(.76);
}

.norma-map-overlay {
    position: absolute;
    inset: 0;

    pointer-events: none;

    background:
        linear-gradient(
            135deg,
            rgba(48, 17, 0, .3),
            transparent 55%
        );
}


/* =========================================================
   INFORMAÇÕES
========================================================= */

.norma-footer-info {
    display: flex;
    flex-direction: column;
    justify-content: space-between;

    min-height: 100%;
}

.norma-footer-label {
    display: block;

    margin-bottom: 22px;

    font-family: "PP Mori", Arial, sans-serif;
    font-size: 10px;
    font-weight: 500;

    text-transform: uppercase;
    letter-spacing: .13em;

    color: var(--footer-muted);
}

.norma-footer-address p {
    font-family: "PP Editorial New", Georgia, serif;
    font-size: clamp(25px, 2.3vw, 38px);
    font-weight: 400;

    line-height: 1.08;
    letter-spacing: -.04em;
}


/* =========================================================
   REDES
========================================================= */

.norma-footer-socials {
    margin-top: 80px;
}

.norma-social-list {
    border-top: 1px solid var(--footer-line);
}

.norma-social-list a {
    position: relative;

    display: flex;
    align-items: center;
    justify-content: space-between;

    padding: 15px 2px;

    overflow: hidden;

    border-bottom: 1px solid var(--footer-line);

    transition:
        padding .5s cubic-bezier(.16, 1, .3, 1),
        color .4s ease;
}

.norma-social-list a::before {
    content: "";

    position: absolute;
    left: 0;
    bottom: 0;

    width: 100%;
    height: 0;

    background: var(--footer-accent);

    z-index: 0;

    transition:
        height .5s cubic-bezier(.16, 1, .3, 1);
}

.norma-social-list a > * {
    position: relative;
    z-index: 1;
}

.norma-social-list a span {
    font-family: "PP Mori", Arial, sans-serif;
    font-size: 16px;
    font-weight: 400;

    letter-spacing: -.03em;

    transition:
        transform .5s cubic-bezier(.16, 1, .3, 1);
}

.norma-social-list a i {
    font-family: "PP Mori", Arial, sans-serif;
    font-style: normal;
    font-size: 18px;

    transition:
        transform .5s cubic-bezier(.16, 1, .3, 1);
}

.norma-social-list a:hover {
    padding-left: 14px;
    padding-right: 14px;

    color: var(--footer-bg);
}

.norma-social-list a:hover::before {
    height: 100%;
}

.norma-social-list a:hover span {
    transform: translateX(5px);
}

.norma-social-list a:hover i {
    transform: rotate(45deg);
}


/* =========================================================
   LOGO
========================================================= */

.norma-footer-logo {
    padding-top: 35px;

    border-top: 1px solid var(--footer-line);

    font-family: "PP Editorial New", Georgia, serif;
    font-size: clamp(90px, 19vw, 320px);
    font-weight: 400;

    line-height: .72;
    letter-spacing: -.09em;

    text-align: center;

    color: rgba(249, 246, 243, .08);

    user-select: none;

    transition:
        color .6s ease,
        letter-spacing 1s cubic-bezier(.16, 1, .3, 1);
}

.norma-footer-logo:hover {
    color: rgba(249, 246, 243, .14);
    letter-spacing: -.075em;
}


/* =========================================================
   BASE
========================================================= */

.norma-footer-bottom {
    display: flex;
    align-items: center;
    justify-content: space-between;

    padding: 30px 0;
}

.norma-footer-bottom p,
.norma-footer-bottom a {
    font-family: "PP Mori", Arial, sans-serif;
    font-size: 9px;
    font-weight: 500;

    text-transform: uppercase;
    letter-spacing: .11em;

    color: var(--footer-muted);
}

.norma-footer-bottom a {
    display: inline-flex;
    align-items: center;
    gap: 9px;

    transition: color .3s ease;
}

.norma-footer-bottom a span {
    font-size: 15px;

    transition:
        transform .4s cubic-bezier(.16, 1, .3, 1);
}

.norma-footer-bottom a:hover {
    color: var(--footer-text);
}

.norma-footer-bottom a:hover span {
    transform: translateY(-4px);
}


/* =========================================================
   MOBILE
========================================================= */

@media (max-width: 800px) {

    .norma-footer-hero {
        padding: 85px 0 75px;
    }

    .norma-footer-hero h2 {
        font-size: clamp(50px, 14vw, 78px);
        line-height: .92;
    }

    .norma-footer-hero h2 em {
        margin-left: 9vw;
    }

    .norma-footer-content {
        grid-template-columns: 1fr;
        gap: 55px;
    }

    .norma-footer-info {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 30px;
    }

    .norma-footer-socials {
        margin-top: 0;
    }

    .norma-footer-address p {
        font-size: 27px;
    }

}


@media (max-width: 600px) {

    .norma-footer-top {
        padding: 18px 0;
    }

    .norma-footer-kicker {
        max-width: 130px;
        font-size: 8px;
        line-height: 1.5;
    }

    .norma-footer-whatsapp {
        height: 44px;
        padding-left: 15px;
        gap: 12px;
    }

    .norma-footer-whatsapp > span:first-child {
        font-size: 9px;
    }

    .norma-footer-arrow {
        width: 30px;
        height: 30px;
    }

    .norma-footer-info {
        grid-template-columns: 1fr;
        gap: 55px;
    }

    .norma-map-frame {
        height: 280px;
    }

    .norma-footer-address p {
        font-size: 30px;
    }

    .norma-social-list a {
        padding-top: 17px;
        padding-bottom: 17px;
    }

    .norma-footer-logo {
        padding-top: 30px;
        font-size: clamp(85px, 22vw, 150px);
        line-height: .75;
    }

    .norma-footer-bottom {
        gap: 25px;
        align-items: flex-end;
    }

    .norma-footer-bottom p {
        max-width: 180px;
        line-height: 1.5;
    }

}


@media (prefers-reduced-motion: reduce) {

    .norma-footer *,
    .norma-footer *::before {
        transition: none !important;
    }

}

/* =========================================================
   BOTÓN FLOTANTE DE WHATSAPP
   ---------------------------------------------------------
   Fijo en la esquina inferior derecha, por encima de todo el
   contenido (pero por debajo del overlay del menú mobile en
   z-index — nunca compiten porque el menú cubre la pantalla
   entera). Paleta tomada del sitio: fondo crema, tinta marrón
   oscuro, acentos terracota; el verde queda solo en el botón,
   que es el color universalmente reconocible de WhatsApp.
========================================================= */

.wa-float {
  --wa-green: #25d366;
  --wa-green-dark: #1fb959;
  --wa-ink: #301100;
  --wa-body: #6b584e;
  --wa-cream: #f9f6f3;
  --wa-line: #e7e1da;
  --wa-font: "Montserrat", system-ui, sans-serif;
  --wa-serif: "Playfair Display", Georgia, serif;

  position: fixed;
  right: 22px;
  bottom: 22px;
  right: max(22px, env(safe-area-inset-right));
  bottom: max(22px, env(safe-area-inset-bottom));
  z-index: 999;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 9px;
  font-family: var(--wa-font);
}

/* ---------- Botón circular ---------- */

.wa-float-btn {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 62px;
  height: 62px;
  border-radius: 50%;
  background: linear-gradient(155deg, var(--wa-green) 0%, var(--wa-green-dark) 100%);
  color: #fff;
  box-shadow:
    0 10px 24px rgba(48, 17, 0, .28),
    0 2px 6px rgba(48, 17, 0, .18);
  text-decoration: none;
  flex: 0 0 auto;
  transition: transform .3s cubic-bezier(.34, 1.56, .64, 1), box-shadow .3s ease;
}

.wa-float-btn svg {
  width: 30px;
  height: 30px;
  position: relative;
  z-index: 2;
}

.wa-float-btn:hover,
.wa-float-btn:focus-visible {
  transform: translateY(-3px) scale(1.05);
  box-shadow:
    0 16px 30px rgba(48, 17, 0, .32),
    0 4px 10px rgba(48, 17, 0, .2);
}

.wa-float-btn:active {
  transform: translateY(-1px) scale(.97);
}

.wa-float-btn:focus-visible {
  outline: 2px solid #fff;
  outline-offset: 3px;
}

/* Anillos de pulso — llaman la atención sin ser agresivos */
.wa-float-btn::before,
.wa-float-btn::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: var(--wa-green);
  opacity: 0;
  z-index: 1;
  animation: wa-pulse 2.8s ease-out infinite;
  pointer-events: none;
}

.wa-float-btn::after {
  animation-delay: 1.4s;
}

@keyframes wa-pulse {
  0% { transform: scale(1); opacity: .55; }
  70% { transform: scale(1.9); opacity: 0; }
  100% { transform: scale(1.9); opacity: 0; }
}

/* Pequeño indicador "en línea" — refuerza confianza */
.wa-float-dot {
  position: absolute;
  top: 2px;
  right: 2px;
  width: 13px;
  height: 13px;
  border-radius: 50%;
  background: #3fdc6a;
  border: 2.5px solid var(--wa-cream);
  z-index: 3;
}

/* ---------- Globo de texto ---------- */

.wa-float-bubble {
  position: relative;
  max-width: 248px;
  padding: 14px 34px 14px 16px;
  margin-bottom: 0;
  background: #fff;
  color: var(--wa-ink);
  border-radius: 16px;
  box-shadow:
    0 14px 34px rgba(48, 17, 0, .18),
    0 2px 8px rgba(48, 17, 0, .1);
  border: 1px solid var(--wa-line);

  opacity: 0;
  transform: translateY(10px) scale(.94);
  transform-origin: bottom right;
  pointer-events: none;
  transition: opacity .35s ease, transform .35s cubic-bezier(.34, 1.56, .64, 1);
}

.wa-float.is-bubble-visible .wa-float-bubble {
  opacity: 1;
  transform: translateY(0) scale(1);
  pointer-events: auto;
}

/* "rabinho" do balão apontando para o botão */
.wa-float-bubble::after {
  content: "";
  position: absolute;
  right: 24px;
  bottom: -7px;
  width: 14px;
  height: 14px;
  background: #fff;
  border-right: 1px solid var(--wa-line);
  border-bottom: 1px solid var(--wa-line);
  transform: rotate(45deg);
  border-radius: 0 0 3px 0;
}

.wa-float-bubble-eyebrow {
  display: block;
  font-family: var(--wa-serif);
  font-style: italic;
  font-size: 15px;
  color: var(--wa-green-dark);
  line-height: 1.2;
  margin-bottom: 3px;
}

.wa-float-bubble-text {
  display: block;
  font-size: 13px;
  line-height: 1.45;
  color: var(--wa-body);
}

.wa-float-close {
  position: absolute;
  top: 8px;
  right: 8px;
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
  background: transparent;
  color: var(--wa-body);
  opacity: .6;
  cursor: pointer;
  border-radius: 50%;
  transition: opacity .2s ease, background .2s ease;
}

.wa-float-close:hover {
  opacity: 1;
  background: var(--wa-cream);
}

.wa-float-close svg {
  width: 11px;
  height: 11px;
}

/* ---------- Responsivo ---------- */

@media (max-width: 480px) {

  .wa-float {
    right: 16px;
    bottom: 16px;
    right: max(16px, env(safe-area-inset-right));
    bottom: max(16px, env(safe-area-inset-bottom));
  }

  .wa-float-btn {
    width: 56px;
    height: 56px;
  }

  .wa-float-btn svg {
    width: 27px;
    height: 27px;
  }

  .wa-float-bubble {
    max-width: 200px;
    padding: 12px 30px 12px 14px;
  }

  .wa-float-bubble-eyebrow { font-size: 14px; }
  .wa-float-bubble-text { font-size: 12.5px; }
}

@media (prefers-reduced-motion: reduce) {

  .wa-float-btn,
  .wa-float-bubble {
    transition: opacity .25s ease !important;
  }

  .wa-float-btn::before,
  .wa-float-btn::after {
    animation: none !important;
    display: none !important;
  }

  .wa-float-bubble {
    transform: none !important;
  }
}


/* =========================================================
   RESEÑAS DE GOOGLE — CTA
   ---------------------------------------------------------
   Franja simple entre testimonios y beneficios. Usa la misma
   paleta base del sitio (crema/marrón/terracota) para no
   introducir un estilo nuevo — solo un convite discreto.
========================================================= */

.google-reviews {
  --gr-bg: #f9f6f3;
  --gr-ink: #301100;
  --gr-body: #6b584e;
  --gr-accent: #866452;
  --gr-accent-soft: #c78460;
  --gr-line: #e7e1da;
  --gr-star: #e0a733;

  background: var(--gr-bg);
  padding: clamp(50px, 8vw, 90px) 24px;
  text-align: center;
  font-family: "Montserrat", system-ui, sans-serif;
}

.google-reviews-inner {
  max-width: 560px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.google-reviews-stars {
  display: flex;
  gap: 6px;
  color: var(--gr-star);
  margin-bottom: 18px;
}

.google-reviews-stars svg {
  width: 20px;
  height: 20px;
}

.google-reviews-eyebrow {
  font-size: .8rem;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--gr-accent);
  margin: 0 0 10px;
}

.google-reviews-title {
  font-family: "Montserrat", system-ui, sans-serif;
  font-weight: 600;
  font-size: clamp(1.6rem, 3.2vw, 2.2rem);
  color: var(--gr-ink);
  margin: 0 0 14px;
  line-height: 1.2;
}

.google-reviews-title span {
  font-family: "Playfair Display", Georgia, serif;
  font-style: italic;
  font-weight: 400;
  color: var(--gr-accent-soft);
}

.google-reviews-text {
  font-size: .98rem;
  line-height: 1.6;
  color: var(--gr-body);
  max-width: 430px;
  margin: 0 0 32px;
}

.google-reviews-btn {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  background: #fff;
  color: var(--gr-ink);
  border: 1px solid var(--gr-line);
  padding: .95rem 1.75rem;
  border-radius: 100rem;
  font-weight: 600;
  font-size: .95rem;
  text-decoration: none;
  box-shadow: 0 8px 22px rgba(48, 17, 0, .08);
  transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}

.google-reviews-btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 28px rgba(48, 17, 0, .14);
  border-color: var(--gr-accent-soft);
}

.google-reviews-btn:active {
  transform: translateY(0);
}

.google-reviews-g {
  width: 22px;
  height: 22px;
  flex: 0 0 auto;
}

@media (max-width: 480px) {
  .google-reviews-btn {
    padding: .85rem 1.4rem;
    font-size: .88rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .google-reviews-btn { transition: none !important; }
}