/* =========================================================
   J&F Co. — Site Institucional
   Redesign "Curadoria da Serra" (plano do Violino 2026-08-16)
   Paleta neutra quente + tom de marca. Mobile-first.
   Breakpoints: 640 / 960 / 1200.
   ========================================================= */

:root {
    --fundo: #FBF9F6;
    /* off-white quente (base) */
    --superficie: #FFFFFF;
    /* cards */
    --areia: #F4EEE7;
    /* faixa unboxing / seções alternadas */
    --linha: #E7E0D8;
    /* bordas sutis */
    --tinta: #2A2320;
    /* texto principal (marrom-escuro quente) */
    --suave: #6E655C;
    /* texto secundário (taupe) */
    --marca: #A8455F;
    /* rosa-vinho — identidade mantida */
    --marca-esc: #8C3A4F;
    /* hover / links com melhor contraste */
    --blush: #E8D5D8;
    /* destaque suave (badges, hover) */
    --whats: #25D366;
    /* exceção — somente ícone/flutuante WhatsApp */
    --whats-esc: #1E8E3E;
    /* verde escuro p/ botão de texto (AA 4.5:1) */

    --fonte-titulo: 'Fraunces', Georgia, 'Times New Roman', serif;
    --fonte-corpo: 'Manrope', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;

    --container: 1120px;
    --pad: 24px;
    --raio: 16px;
    --sombra: 0 10px 30px rgba(42, 35, 32, .08);
}

*,
*::before,
*::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0
}

html {
    scroll-behavior: smooth;
    scroll-padding-top: 84px;
}

body {
    font-family: var(--fonte-corpo);
    font-size: 16px;
    line-height: 1.65;
    color: var(--tinta);
    background: var(--fundo);
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

img,
svg {
    max-width: 100%;
    display: block
}

a {
    color: var(--marca-esc)
}

a:hover {
    color: var(--marca)
}

.container {
    max-width: var(--container);
    margin: 0 auto;
    padding-left: var(--pad);
    padding-right: var(--pad)
}

section {
    padding: 72px 0
}

h1,
h2,
h3 {
    font-family: var(--fonte-titulo);
    font-weight: 500;
    letter-spacing: -.5px;
    line-height: 1.15;
    color: var(--tinta)
}

h2 {
    font-size: clamp(1.7rem, 3.4vw, 2.4rem);
    font-weight: 600;
    letter-spacing: -1px
}

h3 {
    font-size: 1.35rem;
    font-weight: 600
}

.eyebrow {
    font-family: var(--fonte-corpo);
    font-size: .78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 2px;
    color: var(--marca);
    margin-bottom: 14px;
}

/* ---------- acessibilidade: foco visível ---------- */
:focus-visible {
    outline: 3px solid var(--marca);
    outline-offset: 3px;
    border-radius: 4px
}

/* ---------- botões ---------- */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-height: 48px;
    padding: 12px 26px;
    border-radius: 999px;
    border: 1px solid transparent;
    font-family: var(--fonte-corpo);
    font-weight: 700;
    font-size: .95rem;
    text-decoration: none;
    cursor: pointer;
    text-align: center;
    transition: background-color .2s ease, color .2s ease, border-color .2s ease, transform .2s ease;
}

.btn svg {
    width: 20px;
    height: 20px;
    flex: none
}

.btn-whats {
    background: var(--marca);
    color: #fff
}

.btn-whats:hover {
    background: var(--marca-esc);
    color: #fff;
    transform: translateY(-1px)
}

.btn-whats--verde {
    background: var(--whats-esc);
    color: #fff
}

.btn-whats--verde:hover {
    background: #167a35;
    color: #fff;
    transform: translateY(-1px)
}

.btn-ghost {
    border-color: var(--linha);
    background: var(--superficie);
    color: var(--tinta)
}

.btn-ghost:hover {
    border-color: var(--marca);
    color: var(--marca);
    transform: translateY(-1px)
}

/* =========================================================
   Header / Nav (sticky)
   ========================================================= */
.site-header {
    position: sticky;
    top: 0;
    z-index: 50;
    background: rgba(251, 249, 246, .92);
    -webkit-backdrop-filter: blur(12px);
    backdrop-filter: blur(12px);
    border-bottom: 1px solid var(--linha);
}

.nav {
    display: flex;
    align-items: center;
    gap: 18px;
    /* acomoda o logo (ate 88px) com respiro vertical */
    min-height: 104px;
    padding-block: 8px;
    position: relative
}

.logo {
    font-family: var(--fonte-titulo);
    font-weight: 600;
    font-size: 1.45rem;
    letter-spacing: -.5px;
    color: var(--tinta);
    text-decoration: none;
    margin-right: auto;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

.logo-img {
    width: auto;
    height: clamp(56px, 8vw, 88px);
    flex: none;
    object-fit: contain;
    background: transparent;
}

.logo span {
    color: var(--marca)
}

/* menu mobile (checkbox hack — funciona sem JS) */
.menu-toggle {
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
    pointer-events: none
}

.menu-burger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    cursor: pointer;
    border-radius: 12px;
    border: 1px solid var(--linha);
    background: var(--superficie);
}

.menu-burger svg {
    width: 22px;
    height: 22px;
    fill: var(--tinta)
}

.nav-primaria {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: var(--superficie);
    border-bottom: 1px solid var(--linha);
    max-height: 0;
    overflow: hidden;
    visibility: hidden;
    opacity: 0;
    padding: 0 var(--pad);
    box-shadow: 0 18px 30px rgba(42, 35, 32, .08);
    transition: max-height .25s ease, opacity .2s ease, padding .2s ease;
}

.nav-primaria a {
    color: var(--tinta);
    text-decoration: none;
    font-weight: 600;
    font-size: .98rem;
    padding: 12px 4px;
    border-bottom: 1px solid var(--linha);
    min-height: 46px;
    display: flex;
    align-items: center;
}

.nav-primaria a:last-child {
    border-bottom: 0
}

.nav-primaria a:hover {
    color: var(--marca)
}

.menu-toggle:checked~.nav-primaria {
    max-height: 340px;
    visibility: visible;
    opacity: 1;
    padding-top: 8px;
    padding-bottom: 12px;
}

/* CTA do header: oculto no mobile (botão flutuante cobre) */
.nav-cta {
    display: none
}

/* =========================================================
   Hero
   ========================================================= */
.hero {
    position: relative;
    overflow: hidden;
    padding: 0;
    background: var(--areia)
}

.hero-foto {
    position: absolute;
    inset: 0
}

.hero-foto img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center 30%
}

.hero::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    background: linear-gradient(to top, rgba(42, 35, 32, .66), rgba(42, 35, 32, .3) 45%, rgba(42, 35, 32, .36));
}

.hero-txt {
    position: relative;
    z-index: 2;
    color: #fff;
    max-width: 620px;
    padding: clamp(150px, 32vh, 240px) 0 clamp(48px, 7vw, 80px)
}

.hero-txt h1 {
    color: #fff;
    font-size: clamp(2.2rem, 6.5vw, 3.6rem);
    font-weight: 500;
    /* -.02em acompanha a escala do clamp; em px o texto comprimia
       demais nos tamanhos grandes e a 1a palavra saia torta */
    letter-spacing: -.02em;
    line-height: 1.12;
    /* trava o eixo optico da Fraunces (fonte variavel): sem isso o
       browser reajusta o desenho por tamanho e desalinha o baseline */
    font-optical-sizing: auto;
    text-wrap: balance;
}

.hero-txt h1 em {
    font-style: italic;
    color: #F3E2E6;
    /* italico da Fraunces tem avanco lateral maior — sem isso encosta
       na palavra seguinte */
    padding-right: .06em;
}

.hero-eyebrow {
    color: #F0CFD8
}

.hero-sub {
    margin-top: 18px;
    font-size: clamp(1.05rem, 2.2vw, 1.3rem);
    color: rgba(255, 255, 255, .96);
    max-width: 46ch
}

.hero-ctas {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    margin-top: 30px
}

.hero-legenda {
    margin-top: 36px;
    font-size: .86rem;
    color: rgba(255, 255, 255, .84);
    display: inline-flex;
    align-items: center;
    gap: 10px;
    max-width: 46ch;
}

.hero-legenda::before {
    content: "";
    width: 34px;
    height: 1px;
    background: rgba(255, 255, 255, .6);
    flex: none
}

/* =========================================================
   Quem somos
   ========================================================= */
.quem {
    background: var(--fundo)
}

.quem-grid {
    display: grid;
    gap: 32px
}

.quem-txt p {
    margin-top: 18px;
    color: var(--suave);
    font-size: 1.06rem;
    max-width: 60ch
}

.quem-txt strong {
    color: var(--tinta);
    font-weight: 700
}

.destaque {
    background: var(--superficie);
    border: 1px solid var(--linha);
    border-radius: var(--raio);
    padding: 36px 30px;
    box-shadow: var(--sombra);
    position: relative;
    overflow: hidden;
}

.destaque::before {
    content: "";
    position: absolute;
    inset: 0 0 auto 0;
    height: 4px;
    background: linear-gradient(90deg, var(--marca), var(--blush));
}

.destaque-num {
    font-family: var(--fonte-titulo);
    font-size: clamp(4rem, 10vw, 6rem);
    font-weight: 600;
    color: var(--marca);
    letter-spacing: -.03em;
    line-height: .95;
    font-variant-numeric: lining-nums tabular-nums;
    display: flex;
    align-items: baseline;
    gap: .04em;
}

/* o "%" fica menor que o numero — o 25 e' o que precisa saltar */
.destaque-num span {
    font-size: .52em;
    font-weight: 500;
}

/* :not(.destaque-num) — sem isso esta regra vence o .destaque-num (mesma
   especificidade, vem depois) e o numero de destaque saia em 1rem cinza */
.destaque p:not(.destaque-num) {
    margin-top: 16px;
    color: var(--suave);
    font-size: 1rem;
    max-width: 36ch
}

.destaque small {
    display: block;
    margin-top: 8px;
    color: var(--suave);
    font-size: .86rem
}

/* =========================================================
   Categorias
   ========================================================= */
.categorias {
    background: var(--superficie);
    border-top: 1px solid var(--linha);
    border-bottom: 1px solid var(--linha)
}

.cards {
    display: grid;
    gap: 24px;
    margin-top: 36px
}

.card {
    background: var(--superficie);
    border: 1px solid var(--linha);
    border-radius: var(--raio);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    transition: transform .2s ease, box-shadow .2s ease;
}

.card:hover {
    transform: translateY(-4px);
    box-shadow: var(--sombra)
}

.card img {
    width: 100%;
    aspect-ratio: 4/3;
    object-fit: cover
}

.card-body {
    padding: 24px 24px 26px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    flex: 1
}

.card-body h3 {
    font-size: 1.4rem
}

.card-body p {
    color: var(--suave);
    font-size: .98rem
}

.card-link {
    margin-top: auto;
    padding-top: 14px;
    min-height: 44px;
    font-weight: 700;
    font-size: .95rem;
    color: var(--marca-esc);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.card-link:hover {
    color: var(--marca)
}

.card-link svg {
    width: 18px;
    height: 18px;
    flex: none;
    transition: transform .2s ease
}

.card:hover .card-link svg {
    transform: translateX(4px)
}

/* =========================================================
   Experiência de entrega (unboxing)
   ========================================================= */
.entrega {
    background: var(--areia)
}

.entrega-in {
    display: grid;
    gap: 32px;
    align-items: center
}

.entrega-foto {
    border-radius: var(--raio);
    overflow: hidden;
    box-shadow: var(--sombra)
}

.entrega-foto img {
    width: 100%;
    height: 100%;
    object-fit: cover
}

.entrega-txt h2 {
    margin-bottom: 8px
}

.entrega-txt>p {
    margin-top: 16px;
    color: var(--suave);
    font-size: 1.05rem;
    max-width: 56ch
}

.passo-list {
    margin-top: 28px;
    list-style: none;
    display: grid;
    gap: 18px
}

.passo {
    display: flex;
    gap: 14px;
    align-items: flex-start
}

.passo-num {
    flex: none;
    width: 36px;
    height: 36px;
    border-radius: 999px;
    background: var(--blush);
    color: var(--marca-esc);
    font-weight: 700;
    font-size: .9rem;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-top: 2px;
}

.passo b {
    display: block;
    color: var(--tinta);
    font-weight: 700
}

.passo span {
    color: var(--suave);
    font-size: .96rem
}

/* =========================================================
   Onde nos encontrar
   ========================================================= */
.onde {
    background: var(--superficie);
    border-top: 1px solid var(--linha)
}

.canais {
    display: grid;
    gap: 16px;
    margin-top: 36px
}

.canal {
    display: flex;
    align-items: center;
    gap: 16px;
    background: var(--superficie);
    border: 1px solid var(--linha);
    border-radius: var(--raio);
    padding: 18px 20px;
    text-decoration: none;
    color: var(--tinta);
    min-height: 64px;
    transition: border-color .2s ease, transform .2s ease, box-shadow .2s ease;
}

.canal:hover {
    border-color: var(--marca);
    transform: translateY(-2px);
    box-shadow: var(--sombra);
    color: var(--tinta)
}

.canal-icone {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    background: #fff;
    box-shadow: inset 0 0 0 1px rgba(28, 23, 20, .08);
    display: flex;
    align-items: center;
    justify-content: center;
    flex: none;
}

/* logos oficiais trazem as proprias cores — nao sobrescrever com fill global */
.canal-icone svg {
    width: 26px;
    height: 26px;
}

/* TikTok: o glifo principal usa currentColor (preto da marca) */
.canal-icone .ico-tiktok {
    color: #010101;
}

.canal b {
    font-weight: 700;
    display: block
}

.canal small {
    color: var(--suave);
    font-size: .85rem
}

.canal .seta {
    margin-left: auto;
    color: var(--suave);
    width: 20px;
    height: 20px;
    flex: none
}

/* =========================================================
   Contato + QR Code
   ========================================================= */
.contato {
    background: var(--areia)
}

.contato-in {
    display: grid;
    gap: 36px;
    align-items: center
}

.qr-card {
    background: var(--superficie);
    border: 1px solid var(--linha);
    border-radius: 20px;
    padding: 30px;
    text-align: center;
    box-shadow: var(--sombra);
    max-width: 340px;
    margin: 0 auto;
}

.qr-card img {
    width: 100%;
    height: auto;
    border-radius: 10px
}

.qr-legenda {
    margin-top: 18px;
    font-weight: 700;
    color: var(--tinta)
}

.qr-sub {
    margin-top: 4px;
    color: var(--suave);
    font-size: .88rem
}

.contato-txt h2 {
    margin-bottom: 10px
}

.contato-txt>p {
    color: var(--suave);
    font-size: 1.05rem;
    max-width: 52ch
}

.contato-lista {
    margin-top: 28px;
    display: grid;
    gap: 18px
}

.contato-item {
    display: flex;
    gap: 14px;
    align-items: flex-start
}

.contato-item svg {
    width: 22px;
    height: 22px;
    color: var(--marca);
    flex: none;
    margin-top: 3px
}

.contato-item b {
    display: block;
    font-weight: 700;
    color: var(--tinta)
}

.contato-item span {
    color: var(--suave);
    font-size: .98rem;
    word-break: break-word
}

.contato-item a {
    color: var(--marca-esc);
    text-decoration: none;
    font-size: .98rem;
    word-break: break-word;
    display: inline-flex;
    align-items: center;
    min-height: 44px
}

.contato-item a:hover {
    text-decoration: underline;
    color: var(--marca)
}

.contato-ctas {
    margin-top: 30px;
    display: flex;
    flex-wrap: wrap;
    gap: 14px
}

/* =========================================================
   Rodapé
   ========================================================= */
.site-footer {
    background: var(--tinta);
    color: #EDE7E0;
    padding: 56px 0 0
}

.footer-grid {
    display: grid;
    gap: 36px
}

.footer-brand .logo {
    color: #fff;
    margin: 0
}

.footer-brand p {
    margin-top: 14px;
    color: #BFB6AC;
    font-size: .92rem;
    max-width: 40ch
}

.footer-col h4 {
    font-family: var(--fonte-corpo);
    font-size: .78rem;
    text-transform: uppercase;
    letter-spacing: 1.6px;
    color: #fff;
    font-weight: 700;
    margin-bottom: 16px;
}

.footer-col ul {
    list-style: none;
    display: grid;
    gap: 4px
}

.footer-col a {
    color: #CFC7BE;
    text-decoration: none;
    font-size: .94rem;
    min-height: 44px;
    display: inline-flex;
    align-items: center
}

.footer-col a:hover {
    color: #fff
}

.footer-col li {
    color: #CFC7BE;
    font-size: .94rem;
    display: flex;
    align-items: center;
    min-height: 32px
}

.footer-base {
    margin-top: 44px;
    padding: 22px 0;
    border-top: 1px solid rgba(255, 255, 255, .14);
    font-size: .82rem;
    color: #A99F95;
}

.footer-base .container {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 26px;
    justify-content: space-between
}

/* =========================================================
   Botão flutuante WhatsApp (mobile)
   ========================================================= */
.fab-whats {
    position: fixed;
    right: 20px;
    bottom: 20px;
    z-index: 60;
    width: 58px;
    height: 58px;
    border-radius: 999px;
    background: var(--whats);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 12px 26px rgba(37, 211, 102, .45);
    transition: transform .2s ease, background-color .2s ease;
}

.fab-whats svg {
    width: 30px;
    height: 30px;
    fill: #fff
}

.fab-whats:hover {
    transform: scale(1.06);
    background: #1FB959;
    color: #fff
}

/* =========================================================
   Media queries (mobile-first)
   ========================================================= */
@media (min-width:640px) {
    :root {
        --pad: 32px
    }

    .cards {
        grid-template-columns: repeat(2, 1fr)
    }

    .card:last-child {
        grid-column: 1 / -1
    }

    .canais {
        grid-template-columns: repeat(2, 1fr)
    }

    .footer-grid {
        grid-template-columns: repeat(2, 1fr)
    }
}

@media (min-width:960px) {
    :root {
        --pad: 40px
    }

    /* nav desktop */
    .nav-primaria {
        position: static;
        /* sem display:flex o flex-direction e' ignorado e os links
           empilhavam na vertical, inflando o header para ~177px */
        display: flex;
        align-items: center;
        flex-direction: row;
        gap: 30px;
        max-height: none;
        overflow: visible;
        visibility: visible;
        opacity: 1;
        padding: 0;
        box-shadow: none;
        border-bottom: 0;
        background: transparent;
    }

    .nav-primaria a {
        padding: 8px 2px;
        border-bottom: 0;
        min-height: 44px
    }

    .menu-toggle,
    .menu-burger {
        display: none
    }

    .nav-cta {
        display: inline-flex
    }

    /* hero dividido */
    .hero {
        padding: 88px 0
    }

    .hero-in {
        display: grid;
        grid-template-columns: 1.05fr .95fr;
        align-items: center;
        gap: 56px
    }

    .hero::before {
        display: none
    }

    .hero-foto {
        position: static;
        inset: auto
    }

    .hero-foto img {
        height: clamp(420px, 52vh, 560px);
        border-radius: var(--raio);
        object-position: center 30%
    }

    .hero-txt {
        color: var(--tinta);
        padding: 0
    }

    .hero-txt h1 {
        color: var(--tinta)
    }

    .hero-txt h1 em {
        color: var(--marca)
    }

    .hero-eyebrow {
        color: var(--marca)
    }

    .hero-sub {
        color: var(--suave)
    }

    .hero-legenda {
        color: var(--suave)
    }

    .hero-legenda::before {
        background: var(--marca)
    }

    section {
        padding: 112px 0
    }

    .quem-grid {
        grid-template-columns: 1.15fr .85fr;
        align-items: start;
        gap: 64px
    }

    .cards {
        grid-template-columns: repeat(3, 1fr);
        gap: 28px
    }

    .card:last-child {
        grid-column: auto
    }

    .entrega-in {
        grid-template-columns: .95fr 1.05fr;
        gap: 64px
    }

    .contato-in {
        grid-template-columns: .9fr 1.1fr;
        gap: 64px
    }

    .footer-grid {
        grid-template-columns: 1.3fr .8fr .8fr 1fr
    }

    /* flutuante só no mobile */
    .fab-whats {
        display: none
    }
}

@media (min-width:1200px) {
    :root {
        --pad: 40px
    }
}

/* ---------- prefers-reduced-motion ---------- */
@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto
    }

    *,
    *::before,
    *::after {
        transition: none !important;
        animation: none !important
    }

    .card:hover,
    .canal:hover,
    .btn:hover {
        transform: none
    }
}
