/* =============================================================
   Juliana Damasceno — Tema WordPress · LIGHT MODE
   Advocacia Criminal & Improbidade Administrativa
   ============================================================= */

/* --- Custom Properties --------------------------------------- */
:root {
    /* Acentos — imutáveis (1 vermelho de referência; demais tons são a mesma
       matiz/saturação, só variando luminosidade — ver assets/images/logo dourado+vermelho+branco) */
    --vermelho-jd:       #862625;
    --vermelho-jd-dark:  #6F201F;
    --vermelho-jd-grad:  #631C1B; /* stops escuros de gradiente (hero, cards) */
    --vermelho-jd-accent:#9C2C2B; /* realce pontual (selo de sucesso) */
    --vermelho-jd-black: #140606; /* quase-preto da mesma matiz (footer, fundos escuros) */
    --dourado-jd:        #D8A04C;
    --dourado-jd-claro:  #DCA450;
    --dourado-jd-escuro: #BC8C44;

    /* Fundos light */
    --bg-white:  #FFFFFF;
    --bg-off:    #FAFAF8;
    --bg-cream:  #F5F0E8;
    --bg-hero:   #862625;
    --bg-footer: #140606;

    /* Texto */
    --text-primary:   #0F0202;
    --text-secondary: #3D1B18;
    --text-muted:     #7A5A56;
    --text-light:     #FCFCFC;
    --text-gold:      #D8A04C;

    /* Bordas */
    --border-light:  rgba(134, 38, 37, 0.10);
    --border-accent: rgba(134, 38, 37, 0.30);
    --border-gold:   rgba(216, 160, 76, 0.40);

    /* Sombras (tom quente) */
    --shadow-sm: 0 1px 4px rgba(134, 38, 37, 0.08);
    --shadow-md: 0 4px 20px rgba(134, 38, 37, 0.12);
    --shadow-lg: 0 8px 40px rgba(134, 38, 37, 0.16);

    /* Tipografia */
    --font-heading: 'Montserrat', system-ui, sans-serif;
    --font-body:    'Inter', system-ui, sans-serif;

    /* Layout */
    --container-max: 1240px;
    --section-pad:   clamp(4rem, 8vw, 7rem);
    --radius:        2px;
    --radius-lg:     8px;

    /* Transições */
    --trans-fast: 0.18s ease;
    --trans-med:  0.3s ease;
    --trans-slow: 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

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

html {
    scroll-behavior: smooth;
    -webkit-text-size-adjust: 100%;
    scroll-padding-top: 90px;
    overflow-x: clip; /* mata rolagem horizontal sem quebrar o header sticky (clip não força overflow-y:auto) */
}

body {
    background-color: var(--bg-white);
    color: var(--text-primary);
    font-family: var(--font-body);
    font-size: 1rem;
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    overflow-x: clip;
    max-width: 100%;
}

img, video { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
ul, ol { list-style: none; }
button { cursor: pointer; border: none; background: none; font: inherit; }

::selection { background: var(--vermelho-jd); color: var(--text-light); }

/* --- Acessibilidade ------------------------------------------ */
.sr-only {
    position: absolute;
    width: 1px; height: 1px;
    padding: 0; margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap; border: 0;
}
.sr-only:focus {
    position: fixed; top: 1rem; left: 1rem;
    width: auto; height: auto;
    padding: 0.75rem 1.25rem; margin: 0; clip: auto;
    background: var(--vermelho-jd); color: var(--text-light);
    z-index: 10000; border-radius: var(--radius);
}

/* --- Container / Seções -------------------------------------- */
.jd-container {
    width: 100%;
    max-width: var(--container-max);
    margin-inline: auto;
    padding-inline: clamp(1.25rem, 4vw, 3rem);
}

.jd-section { padding-block: var(--section-pad); background: var(--bg-white); }
.jd-section--light { background: var(--bg-off); }
.jd-section--cream { background: var(--bg-cream); }
.jd-section--dark  { background: var(--bg-off); }

/* --- Tipografia ---------------------------------------------- */
.jd-heading-1 {
    font-family: var(--font-heading);
    font-size: clamp(2.5rem, 5vw, 4.5rem);
    font-weight: 700;
    line-height: 1.05;
    letter-spacing: -0.01em;
    color: var(--text-primary);
}
.jd-heading-2 {
    font-family: var(--font-heading);
    font-size: clamp(2rem, 3.5vw, 3rem);
    font-weight: 600;
    line-height: 1.12;
    color: var(--text-primary);
}
.jd-label {
    display: inline-block;
    font-family: var(--font-body);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--dourado-jd-escuro);
    margin-bottom: 1rem;
}
.jd-divider {
    width: 56px; height: 3px;
    background: var(--vermelho-jd);
    margin: 1.25rem 0 1.75rem;
    border-radius: 2px;
}
.text-center { text-align: center; }

/* --- Section header ------------------------------------------ */
.jd-section-header { max-width: 640px; margin-bottom: clamp(2.5rem, 5vw, 4rem); }
.jd-section-header.text-center { margin-inline: auto; }
.jd-section-header p { color: var(--text-muted); font-size: 1.0625rem; line-height: 1.75; }
/* cabeçalhos só com título (sem parágrafo) podem usar a largura toda — evita quebra em 2 linhas */
#docencia .jd-section-header,
#reconhecimentos .jd-section-header { max-width: none; }

/* --- Grids --------------------------------------------------- */
.jd-grid-3 {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: clamp(1.5rem, 3vw, 2.25rem);
}

/* --- Áreas: cards (3+2) à esquerda + imagem full-height direita (parallax) --- */
.jd-section.jd-areas-section {
    padding: 0;
    position: relative;
    overflow: hidden;
}
.jd-areas-wrap {
    display: grid;
    grid-template-columns: 65% 35%;
    align-items: stretch;
    min-height: 100vh;
}
.jd-areas-content {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding-block: clamp(4rem, 8vw, 7rem);
    padding-left: clamp(1.5rem, 4vw, 4.5rem);
    padding-right: clamp(2rem, 3.5vw, 3.5rem);
}

/* Cabeçalho com setas de navegação */
.jd-areas-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1.5rem;
}
.jd-areas-nav { display: flex; gap: 0.6rem; flex-shrink: 0; }
.jd-areas-nav__btn {
    width: 48px; height: 48px;
    display: grid; place-items: center;
    border-radius: 50%;
    border: 1px solid var(--border-accent);
    background: var(--bg-white);
    color: var(--vermelho-jd);
    cursor: pointer;
    transition: background var(--trans-fast), color var(--trans-fast),
                border-color var(--trans-fast), transform var(--trans-fast);
}
.jd-areas-nav__btn:hover:not(:disabled) {
    background: var(--vermelho-jd);
    color: #fff;
    border-color: var(--vermelho-jd);
    transform: translateY(-2px);
}
.jd-areas-nav__btn:disabled { opacity: 0.3; cursor: default; }

/* Carrossel */
.jd-areas-carousel { --gap: clamp(1rem, 1.6vw, 1.5rem); margin-top: clamp(2rem, 4vw, 3rem); }
/* padding vertical p/ a sombra (hover) e cantos dos cards não serem cortados pelo overflow */
.jd-areas-carousel__viewport { overflow: hidden; padding-top: 14px; padding-bottom: 40px; }
.jd-areas-carousel__track {
    display: flex;
    gap: var(--gap);
    transition: transform 0.65s cubic-bezier(0.22, 1, 0.36, 1);
    will-change: transform;
}
.jd-areas-carousel__slide {
    flex: 0 0 calc((100% - 1 * var(--gap)) / 2);
    min-width: 0;
}
.jd-card-servico--carousel { height: 100%; }

.jd-areas-carousel__dots {
    display: flex;
    gap: 0.5rem;
    margin-top: 0.5rem;
}
.jd-areas-carousel__dots button {
    width: 8px; height: 8px;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: var(--border-accent);
    cursor: pointer;
    transition: width var(--trans-fast), background var(--trans-fast), border-radius var(--trans-fast);
}
.jd-areas-carousel__dots button.is-active {
    width: 26px;
    border-radius: 6px;
    background: var(--vermelho-jd);
}

/* Imagem full-height à direita + overlays da paleta */
.jd-areas__media {
    margin: 0;
    position: relative;
    overflow: hidden;
    background: var(--vermelho-jd-black);
}
.jd-areas__media-img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    /* cover limpo, rente à esquerda, sem deslocamento interno */
    object-position: left center;
}
.jd-areas__media-img--mobile { display: none; }
/* barra dourada→vinho na borda esquerda da imagem */
.jd-areas__media::before {
    content: '';
    position: absolute;
    top: 0; bottom: 0; left: 0;
    width: 4px;
    z-index: 2;
    background: linear-gradient(to bottom, var(--dourado-jd), var(--vermelho-jd));
}
/* overlays vinho compondo a paleta (base + lateral) */
.jd-areas__media::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background:
        linear-gradient(to top, rgba(134, 38, 37, 0.62), rgba(134, 38, 37, 0.10) 42%, transparent 68%),
        linear-gradient(to right, rgba(134, 38, 37, 0.42), transparent 34%);
}

@media (max-width: 1024px) {
    .jd-areas-wrap { grid-template-columns: 1fr; min-height: 0; }
    .jd-areas__media { order: -1; height: 360px; }
    /* no mobile usa a foto MOBILE (banner) — cover sem o deslocamento do desktop */
    .jd-areas__media-img--desktop { display: none; }
    .jd-areas__media-img--mobile { display: block; transform: none; object-position: center 28%; }
    .jd-areas-content {
        padding-inline: clamp(1.25rem, 5vw, 3rem);
        padding-block: clamp(3rem, 8vw, 5rem);
    }
    .jd-areas-carousel__slide { flex-basis: calc((100% - 1 * var(--gap)) / 2); } /* 2 por vez */
}
@media (max-width: 600px) {
    .jd-areas-head { flex-direction: column; align-items: flex-start; }
    .jd-areas__media { height: 260px; }
    /* cards empilhados verticalmente — evita o corte do carrossel no mobile */
    .jd-areas-carousel__track { flex-direction: column; transform: none !important; gap: 1rem; }
    .jd-areas-carousel__slide { flex: 0 0 auto; width: 100%; }
    .jd-areas-carousel__viewport { padding-bottom: 4px; }
    .jd-areas-nav,
    .jd-areas-carousel__dots { display: none; }
}

/* --- Botões -------------------------------------------------- */
.btn-primary,
.btn-outline,
.btn-outline-dark,
.btn-outline-light,
.btn-gold {
    position: relative;
    overflow: hidden;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.6rem;
    font-family: var(--font-body);
    font-size: 0.9375rem;
    font-weight: 500;
    letter-spacing: 0.03em;
    padding: 0.875rem 2rem;
    border-radius: var(--radius);
    border: 2px solid transparent;
    transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
                box-shadow 0.35s ease, background var(--trans-med),
                color var(--trans-med), border-color var(--trans-med);
    cursor: pointer;
    text-align: center;
}
/* seta/ícone desliza levemente no hover */
.btn-primary svg, .btn-outline svg, .btn-outline-dark svg,
.btn-outline-light svg, .btn-gold svg {
    transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}
.btn-primary:hover svg, .btn-outline:hover svg, .btn-outline-dark:hover svg,
.btn-outline-light:hover svg, .btn-gold:hover svg { transform: translateX(4px); }
/* sheen discreto que cruza os botões preenchidos no hover */
.btn-primary::before, .btn-outline::before, .btn-outline-dark::before,
.btn-outline-light::before, .btn-outline--white::before, .btn-gold::before {
    content: '';
    position: absolute;
    top: 0; left: -130%;
    width: 55%; height: 100%;
    background: linear-gradient(110deg, transparent 0%, rgba(255, 255, 255, 0.28) 50%, transparent 100%);
    transform: skewX(-20deg);
    transition: left 0.6s ease;
    pointer-events: none;
}
.btn-primary:hover::before, .btn-outline:hover::before, .btn-outline-dark:hover::before,
.btn-outline-light:hover::before, .btn-outline--white:hover::before, .btn-gold:hover::before { left: 130%; }

/* Todos os botões coloridos = VINHO sólido (igual ao CTA "Contato" do menu) */
.btn-primary,
.btn-outline,
.btn-outline-dark,
.btn-outline-light,
.btn-outline--white,
.btn-gold {
    background: var(--vermelho-jd);
    color: var(--text-light);
    border-color: var(--vermelho-jd);
    font-weight: 500;
}
.btn-primary:hover,
.btn-outline:hover,
.btn-outline-dark:hover,
.btn-outline-light:hover,
.btn-outline--white:hover,
.btn-gold:hover {
    background: var(--vermelho-jd);
    color: var(--text-light);
    border-color: var(--vermelho-jd);
    transform: translateY(-3px);
    box-shadow: 0 14px 30px -10px rgba(134, 38, 37, 0.55);
}

/* Exceção: o CTA do drawer mobile fica DOURADO (contraste sobre o fundo vinho) */
.jd-mobile-nav__cta .btn-gold {
    background: var(--dourado-jd);
    color: var(--vermelho-jd);
    border-color: var(--dourado-jd);
    font-weight: 600;
}
.jd-mobile-nav__cta .btn-gold:hover {
    background: var(--dourado-jd-claro);
    color: var(--vermelho-jd);
    border-color: var(--dourado-jd-claro);
    box-shadow: 0 14px 30px -10px rgba(216, 160, 76, 0.55);
}

/* Exceção: CTA antes do rodapé tem FUNDO VINHO — WhatsApp dourado + Formulário com borda branca */
.jd-cta-section .btn-gold {
    background: var(--dourado-jd);
    color: var(--vermelho-jd);
    border-color: var(--dourado-jd);
    font-weight: 600;
}
.jd-cta-section .btn-gold:hover {
    background: var(--dourado-jd-claro);
    color: var(--vermelho-jd);
    border-color: var(--dourado-jd-claro);
    box-shadow: 0 14px 30px -10px rgba(216, 160, 76, 0.55);
}
.jd-cta-section .btn-outline,
.jd-cta-section .btn-outline--white {
    background: transparent;
    color: var(--text-light);
    border-color: rgba(252, 252, 252, 0.6);
}
.jd-cta-section .btn-outline:hover,
.jd-cta-section .btn-outline--white:hover {
    background: rgba(252, 252, 252, 0.14);
    color: var(--text-light);
    border-color: var(--text-light);
    box-shadow: none;
}

@media (prefers-reduced-motion: reduce) {
    .btn-primary::before, .btn-outline::before, .btn-outline-dark::before,
    .btn-outline-light::before, .btn-outline--white::before, .btn-gold::before { display: none; }
    .btn-primary, .btn-outline, .btn-outline-dark, .btn-outline-light, .btn-outline--white, .btn-gold {
        transition: background 0.2s, color 0.2s, border-color 0.2s;
    }
}

/* ============================================================
   HEADER / NAV
   ============================================================ */
.jd-header {
    position: sticky;
    top: 0;
    z-index: 999;
    background: var(--bg-white);
    box-shadow: 0 1px 0 var(--border-light);
    transition: box-shadow var(--trans-med);
}
.jd-header.is-scrolled { box-shadow: var(--shadow-sm); }
.jd-header__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
    min-height: 76px;
    max-width: none;
    width: 100%;
    padding-inline: clamp(1.5rem, 4vw, 3.5rem);
}
.jd-header__logo { display: inline-flex; align-items: center; flex-shrink: 0; }
.jd-header__logo img { height: 52px; width: auto; }

.jd-nav { margin-left: auto; }
.jd-nav__list { display: flex; align-items: center; gap: clamp(0.85rem, 1.6vw, 1.5rem); }
.jd-nav__list a {
    display: inline-block;
    white-space: nowrap;
    font-family: var(--font-body);
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--text-primary);
    position: relative;
    z-index: 0;
    padding: 0.45rem 0.9rem;
    border-radius: 2px;
    overflow: hidden;
    transition: color 0.35s ease;
}
/* Background vinho que escorrega de cima no hover (impacto vindo de cima) */
.jd-nav__list a::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: -1;
    background: var(--vermelho-jd);
    transform: translateY(-101%);
    transition: transform 0.4s cubic-bezier(0.7, 0, 0.2, 1);
}
/* fina marca dourada na base do preenchimento */
.jd-nav__list a::after {
    content: '';
    position: absolute;
    left: 0; right: 0; bottom: 0;
    z-index: -1;
    height: 2px;
    background: var(--dourado-jd);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.4s ease 0.1s;
}
.jd-nav__list a:hover,
.jd-nav__list a.jd-nav--active { color: #fcfcfc; }
.jd-nav__list a:hover::before,
.jd-nav__list a.jd-nav--active::before { transform: translateY(0); }
.jd-nav__list a:hover::after,
.jd-nav__list a.jd-nav--active::after { transform: scaleX(1); }
@media (prefers-reduced-motion: reduce) {
    .jd-nav__list a::before,
    .jd-nav__list a::after { transition: transform 0.2s ease; }
}

/* "Contato" como CTA destacado — mesmo hover elegante dos botões da home
   (elevação + brilho vinho + sheen), em vez do preenchimento dourado. */
.jd-nav__list li.jd-nav__cta { margin-left: 0.5rem; }
.jd-nav__list li.jd-nav__cta a {
    background: var(--vermelho-jd);
    color: #fcfcfc;
    padding: 0.55rem 1.6rem;
    border-radius: 3px;
    font-weight: 600;
    transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
                box-shadow 0.35s ease, color 0.35s ease;
}
/* reaproveita o ::before como sheen discreto que cruza o botão */
.jd-nav__list li.jd-nav__cta a::before {
    inset: 0;
    z-index: 0;
    background: linear-gradient(110deg, transparent 0%, rgba(255, 255, 255, 0.28) 50%, transparent 100%);
    transform: translateX(-130%) skewX(-20deg);
    transition: transform 0.6s ease;
}
.jd-nav__list li.jd-nav__cta a::after { display: none; }
.jd-nav__list li.jd-nav__cta a:hover {
    color: #fcfcfc;
    transform: translateY(-3px);
    box-shadow: 0 14px 30px -10px rgba(134, 38, 37, 0.55);
}
.jd-nav__list li.jd-nav__cta a:hover::before { transform: translateX(130%) skewX(-20deg); }

.jd-header__cta {
    flex-shrink: 0;
    background: var(--vermelho-jd);
    color: var(--text-light);
    border: 2px solid var(--vermelho-jd);
    border-radius: var(--radius);
    padding: 0.625rem 1.5rem;
    font-size: 0.9rem;
    font-weight: 500;
    transition: background var(--trans-med), transform var(--trans-fast);
}
.jd-header__cta:hover { background: var(--vermelho-jd-dark); transform: translateY(-1px); }

/* Hamburger */
.jd-hamburger {
    display: none;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    width: 44px; height: 44px;
    flex-shrink: 0;
}
.jd-hamburger__line {
    display: block;
    width: 26px; height: 2px;
    background: var(--text-primary);
    margin-inline: auto;
    transition: transform var(--trans-med), opacity var(--trans-fast);
}
.jd-hamburger.is-active .jd-hamburger__line:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.jd-hamburger.is-active .jd-hamburger__line:nth-child(2) { opacity: 0; }
.jd-hamburger.is-active .jd-hamburger__line:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* Mobile nav — drawer lateral */
.jd-mobile-backdrop {
    position: fixed;
    inset: 0;
    z-index: 997;
    background: rgba(20, 3, 3, 0.5);
    -webkit-backdrop-filter: blur(2px);
    backdrop-filter: blur(2px);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.35s ease, visibility 0.35s ease;
}
.jd-mobile-backdrop[hidden] { display: block; }
.jd-mobile-backdrop.is-open { opacity: 1; visibility: visible; }

.jd-mobile-nav {
    position: fixed;
    top: 0; right: 0; bottom: 0;
    width: min(86vw, 360px);
    background: linear-gradient(160deg, var(--vermelho-jd-grad) 0%, var(--vermelho-jd-black) 100%);
    display: flex;
    flex-direction: column;
    padding: 0;
    transform: translateX(100%);
    transition: transform 0.42s cubic-bezier(0.22, 1, 0.36, 1);
    z-index: 998;
    overflow-y: auto;
    box-shadow: -24px 0 60px -24px rgba(0, 0, 0, 0.55);
}
.jd-mobile-nav.is-open { transform: translateX(0); }

.jd-mobile-nav__top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1.15rem 1.4rem;
    border-bottom: 1px solid rgba(216, 160, 76, 0.22);
}
.jd-mobile-nav__logo {
    width: 42px; height: 42px;
    display: block;
    background: linear-gradient(135deg, var(--dourado-jd-claro), var(--dourado-jd));
    -webkit-mask: url(../images/simbolo-jd-mark.webp) no-repeat center / contain;
            mask: url(../images/simbolo-jd-mark.webp) no-repeat center / contain;
}
.jd-mobile-nav__close {
    width: 42px; height: 42px;
    border-radius: 50%;
    border: 1px solid rgba(252, 252, 252, 0.25);
    background: rgba(252, 252, 252, 0.06);
    color: #fcfcfc;
    display: flex; align-items: center; justify-content: center;
    cursor: pointer;
    transition: background 0.2s, border-color 0.2s, transform 0.2s;
}
.jd-mobile-nav__close:hover { background: rgba(252, 252, 252, 0.14); border-color: var(--dourado-jd); transform: rotate(90deg); }
.jd-mobile-nav__close svg { width: 18px; height: 18px; }

.jd-mobile-nav__list { list-style: none; margin: 0; padding: 0.4rem 0; flex: 1 0 auto; }
.jd-mobile-nav__list li { margin: 0; }
.jd-mobile-nav__list a,
.jd-mobile-nav > a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-family: var(--font-heading);
    font-size: 1.12rem;
    font-weight: 500;
    color: #fcfcfc;
    text-decoration: none;
    padding: 0.95rem 1.4rem;
    border-bottom: 1px solid rgba(252, 252, 252, 0.07);
    transition: background 0.2s ease, color 0.2s ease, padding-left 0.25s ease;
}
.jd-mobile-nav__list a::after {
    content: '\203A';
    color: var(--dourado-jd);
    font-size: 1.35rem;
    line-height: 1;
    opacity: 0;
    transform: translateX(-6px);
    transition: opacity 0.2s ease, transform 0.2s ease;
}
.jd-mobile-nav__list a:hover,
.jd-mobile-nav__list a.jd-nav--active {
    background: rgba(216, 160, 76, 0.10);
    color: var(--dourado-jd-claro);
    padding-left: 1.75rem;
}
.jd-mobile-nav__list a:hover::after,
.jd-mobile-nav__list a.jd-nav--active::after { opacity: 1; transform: translateX(0); }
/* o item "Contato" (CTA) não precisa de destaque especial aqui */
.jd-mobile-nav__list li.jd-nav__cta a { background: none; }

.jd-mobile-nav__cta { padding: 1.2rem 1.4rem 0.6rem; }
.jd-mobile-nav__cta .btn-gold { width: 100%; }
.jd-mobile-nav__contact { display: flex; gap: 0.6rem; padding: 0.8rem 1.4rem 1.6rem; }
.jd-mobile-nav__contact a {
    flex: 1;
    display: flex; flex-direction: column; align-items: center; gap: 0.3rem;
    padding: 0.7rem 0.4rem;
    border-radius: 10px;
    border: 1px solid rgba(252, 252, 252, 0.18);
    color: rgba(252, 252, 252, 0.85);
    font-size: 0.72rem; font-weight: 500;
    text-decoration: none;
    transition: background 0.2s, border-color 0.2s, color 0.2s;
}
.jd-mobile-nav__contact a:hover { background: rgba(252, 252, 252, 0.08); border-color: var(--dourado-jd); color: var(--dourado-jd-claro); }
.jd-mobile-nav__contact svg { width: 18px; height: 18px; }

/* ============================================================
   HERO SPLIT (Home)
   ============================================================ */
.jd-hero {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    min-height: calc(100vh - 76px);
    overflow: hidden;
    background: var(--vermelho-jd-black);
}

/* Vídeo de fundo — 100% do hero, alinhado ao topo (não corta a cabeça),
   espelhado para a Dra. ficar à esquerda (texto fica à direita) */
.jd-hero__media { position: absolute; inset: 0; z-index: 1; overflow: hidden; }
.jd-hero__media video,
.jd-hero__media img {
    position: absolute;
    inset: 0;
    width: 100%; height: 100%;
    object-fit: cover;
    object-position: center top;
}
/* Overlay: escuro à direita (legibilidade) + vinho nas pontas inferiores (diagonal p/ o centro, centro limpo) */
.jd-hero__overlay {
    position: absolute;
    inset: 0;
    z-index: 2;
    pointer-events: none;
    background:
        /* legibilidade do texto à direita — escuro neutro, sutil */
        linear-gradient(to left,
            rgba(8, 2, 2, 0.62) 0%, rgba(8, 2, 2, 0.22) 36%, rgba(8, 2, 2, 0) 64%),
        /* ponta inferior ESQUERDA → vinho DENSO (cobre a marca d'água), ~20% maior e deslocado p/ a esquerda */
        radial-gradient(ellipse 72% 82% at -4% 100%,
            rgba(99, 28, 27, 0.99) 0%, rgba(99, 28, 27, 0.97) 16%,
            rgba(134, 38, 37, 0.55) 34%, rgba(134, 38, 37, 0.22) 48%, rgba(134, 38, 37, 0) 66%),
        /* ponta inferior DIREITA → cópia espelhada da esquerda */
        radial-gradient(ellipse 72% 82% at 104% 100%,
            rgba(99, 28, 27, 0.99) 0%, rgba(99, 28, 27, 0.97) 16%,
            rgba(134, 38, 37, 0.55) 34%, rgba(134, 38, 37, 0.22) 48%, rgba(134, 38, 37, 0) 66%);
}

/* Conteúdo à direita, sobre o vídeo */
.jd-hero__content {
    position: relative;
    z-index: 4;
    max-width: 640px;
    margin-left: auto;
    /* Alinha o bloco à direita do container de 1240px via MARGIN (não padding):
       padding-right grande esmagava a largura interna em telas largas (border-box)
       e quebrava o botão do CTA em várias linhas. */
    margin-right: max(calc((100vw - 1240px) / 2), clamp(1.5rem, 5vw, 4rem));
    text-align: right;
    padding-block: clamp(3rem, 6vw, 5rem);
    padding-right: 0;
    padding-left: 2rem;
}
.jd-hero__heading {
    font-family: var(--font-heading);
    font-size: clamp(2.7rem, 5vw, 4.7rem);   /* tamanho do "Criminal" (ênfase) */
    color: #fcfcfc;
    line-height: 1.0;
    margin: 0 0 0.6rem;
    text-shadow: 0 2px 30px rgba(0, 0, 0, 0.4);
}
/* "Advocacia" — menor e mais fina, contida na largura do "Criminal" */
.jd-hero__heading-top {
    display: block;
    font-size: 0.56em;
    font-weight: 300;
    letter-spacing: 0.01em;
    line-height: 1.1;
}
/* "Criminal" — ênfase: maior e mais gorda */
.jd-hero__heading em {
    display: block;
    font-style: italic;
    font-weight: 700;
    color: var(--dourado-jd);
    line-height: 1.0;
}
.jd-hero__sub {
    font-family: var(--font-heading);
    font-size: clamp(0.95rem, 1.6vw, 1.35rem);
    font-style: italic;
    font-weight: 500;
    white-space: nowrap;
    color: rgba(252, 252, 252, 0.85);
    margin-bottom: 2.25rem;
    text-shadow: 0 2px 20px rgba(0, 0, 0, 0.4);
}
.jd-hero__actions { display: flex; flex-wrap: wrap; gap: 1rem; justify-content: flex-end; }
/* CTA do hero nunca quebra o rótulo em várias linhas */
.jd-hero__actions .btn-gold { white-space: nowrap; flex: 0 0 auto; }

/* Aviso de IA — discreto, com espaço para o botão flutuante de WhatsApp. */
.jd-hero__ai-notice {
    position: absolute;
    z-index: 4;
    right: clamp(5.25rem, calc(3vw + 4.25rem), 6.25rem);
    bottom: 0.65rem;
    max-width: calc(100% - 7.25rem);
    color: rgba(255, 255, 255, 0.8);
    opacity: 0.5;
    font-family: var(--font-body);
    font-size: 0.75rem;
    font-weight: 400;
    line-height: 1.4;
    text-align: right;
    text-shadow: 0 1px 4px rgba(0, 0, 0, 0.85);
}
@media (max-width: 600px) {
    .jd-hero__ai-notice {
        right: 5.25rem;
        bottom: 0.75rem;
        max-width: min(16rem, calc(100% - 6.25rem));
    }
}

/* Assinatura animada — rodapé centralizado */
.jd-hero__signature {
    position: absolute;
    z-index: 4;
    left: 0; right: 0;
    bottom: clamp(1.5rem, 4vh, 3rem);
    padding: 0 1.5rem;
    text-align: center;
    pointer-events: none;
}
.jd-hero__signature-name {
    display: block;
    font-family: var(--font-heading);
    font-size: clamp(1.1rem, 1.7vw, 1.55rem);
    font-weight: 500;
    letter-spacing: 0.05em;
    color: #fcfcfc;
    text-shadow: 0 2px 20px rgba(0, 0, 0, 0.45);
}
.jd-hero__signature-line {
    display: block;
    width: 60px; height: 2px;
    margin: 0.5rem auto;
    background: linear-gradient(90deg, transparent, var(--dourado-jd), transparent);
    transform-origin: center;
}
.jd-hero__signature-oab {
    display: block;
    font-family: var(--font-body);
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.3em;
    text-transform: uppercase;
    color: var(--dourado-jd);
    text-shadow: 0 1px 12px rgba(0, 0, 0, 0.5);
}
/* estado inicial (antes de revelar) */
.jd-hero__signature-name,
.jd-hero__signature-oab { opacity: 0; }
.jd-hero__signature-line { transform: scaleX(0); opacity: 0; }
/* reveal quando o hero entra em cena */
.jd-hero.is-visible .jd-hero__signature-name {
    animation: jd-sign-name 1.1s cubic-bezier(0.22, 1, 0.36, 1) 3.6s both;
}
.jd-hero.is-visible .jd-hero__signature-line {
    animation: jd-sign-line 0.9s cubic-bezier(0.22, 1, 0.36, 1) 4.15s both;
}
.jd-hero.is-visible .jd-hero__signature-oab {
    animation: jd-sign-oab 0.9s ease 4.4s both;
}
@keyframes jd-sign-name {
    0%   { opacity: 0; transform: translateY(18px); letter-spacing: 0.3em;  filter: blur(7px); }
    100% { opacity: 1; transform: translateY(0);    letter-spacing: 0.02em; filter: blur(0); }
}
@keyframes jd-sign-line {
    0%   { transform: scaleX(0); opacity: 0; }
    100% { transform: scaleX(1); opacity: 1; }
}
@keyframes jd-sign-oab {
    0%   { opacity: 0; transform: translateY(8px); letter-spacing: 0.12em; }
    100% { opacity: 1; transform: translateY(0);   letter-spacing: 0.28em; }
}
@media (prefers-reduced-motion: reduce) {
    .jd-hero__signature-name,
    .jd-hero__signature-oab { opacity: 1; }
    .jd-hero__signature-line { transform: scaleX(1); opacity: 1; }
    .jd-hero.is-visible .jd-hero__signature-name,
    .jd-hero.is-visible .jd-hero__signature-line,
    .jd-hero.is-visible .jd-hero__signature-oab { animation: none; }
}
/* Canvas de partículas — sobre o vídeo */
.jd-hero__particles {
    position: absolute;
    inset: 0;
    z-index: 3;
    pointer-events: none;
}

/* Botão de replay — surge ao fim do vídeo, canto superior esquerdo */
.jd-hero__replay {
    position: absolute;
    top: clamp(1rem, 2vw, 1.75rem);
    right: clamp(1rem, 2vw, 1.75rem);
    z-index: 5;
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    padding: 0;
    border-radius: 50%;
    /* glassmorphismo delicado */
    border: 1px solid rgba(255, 255, 255, 0.22);
    background: rgba(255, 255, 255, 0.08);
    -webkit-backdrop-filter: blur(12px) saturate(1.3);
    backdrop-filter: blur(12px) saturate(1.3);
    box-shadow: 0 4px 18px rgba(0, 0, 0, 0.18);
    color: rgba(252, 252, 252, 0.85);
    cursor: pointer;
    opacity: 0;
    transform: scale(0.85);
    pointer-events: none;
    transition:
        opacity 0.7s ease,
        transform 0.7s cubic-bezier(0.22, 1, 0.36, 1),
        background 0.25s ease,
        border-color 0.25s ease,
        color 0.25s ease;
}
.jd-hero__replay.is-visible {
    opacity: 1;
    transform: scale(1);
    pointer-events: auto;
}
.jd-hero__replay:hover,
.jd-hero__replay:focus-visible {
    background: rgba(255, 255, 255, 0.16);
    border-color: rgba(255, 255, 255, 0.4);
    color: #fff;
    transform: scale(1.06);
}
.jd-hero__replay svg { width: 19px; height: 19px; }

@media (prefers-reduced-motion: reduce) {
    .jd-hero__replay { transition: opacity 0.4s ease; transform: none; }
    .jd-hero__replay.is-visible { transform: none; }
}
/* Entrada dos headlines — entram da DIREITA p/ a esquerda, 5s após o vídeo (is-revealed via JS) */
[data-hero-animate] {
    opacity: 0;
    transform: translateX(70px);
}
.jd-hero.is-revealed [data-hero-animate] {
    opacity: 1;
    transform: none;
    transition: opacity 0.6s ease, transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
}
.jd-hero.is-revealed [data-hero-animate="heading"] { transition-delay: 0s; }
.jd-hero.is-revealed [data-hero-animate="sub"]     { transition-delay: 0.12s; }
.jd-hero.is-revealed [data-hero-animate="actions"] { transition-delay: 0.24s; }

/* ============================================================
   NÚMEROS DE AUTORIDADE
   ============================================================ */
.jd-numeros { background: var(--bg-cream); }
.jd-numeros .jd-container { max-width: 1560px; }
.jd-numeros__grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0;
    align-items: center;
}
.jd-numero-card {
    text-align: center;
    padding-inline: clamp(1rem, 4vw, 3.5rem);
    border-left: 1px solid var(--border-accent);
}
.jd-numero-card:first-child { border-left: none; }
.jd-numero-card__bar {
    width: 40px; height: 3px;
    background: var(--dourado-jd);
    margin: 0 auto 1.25rem;
}
.jd-numero-card__value {
    font-family: var(--font-heading);
    font-size: clamp(2rem, 2.9vw, 2.9rem);
    font-weight: 700;
    color: var(--vermelho-jd);
    line-height: 1.05;
    white-space: nowrap;
}
.jd-numero-card__label {
    font-size: 0.9375rem;
    color: var(--text-secondary);
    margin-top: 0.5rem;
    line-height: 1.4;
}
/* variante "Em números" do Escritório: sempre 1 linha só, largura variável de itens */
@media (min-width: 1025px) {
    .jd-numeros__grid--escritorio { grid-template-columns: repeat(var(--dest-cols, 4), 1fr); }
    .jd-numeros__grid--escritorio .jd-numero-card { padding-inline: clamp(0.5rem, 1.2vw, 1.25rem); }
    .jd-numeros__grid--escritorio .jd-numero-card__value { font-size: clamp(1.1rem, 1.6vw, 1.9rem); white-space: nowrap; }
    .jd-numeros__grid--escritorio .jd-numero-card__label { font-size: 0.8125rem; }
}
.jd-numeros__quote {
    max-width: 900px;
    margin: 0 auto clamp(3rem, 6vw, 4.5rem);
    padding-bottom: clamp(2.5rem, 5vw, 3.5rem);
    border-bottom: 1px solid var(--border-accent);
    text-align: center;
    font-family: var(--font-heading);
    font-weight: 500;
    font-style: italic;
    font-size: clamp(1.15rem, 2.1vw, 1.5rem);
    line-height: 1.55;
    color: var(--text-secondary);
}
.jd-numeros__quote-sign {
    display: block;
    margin-top: 1rem;
    font-family: var(--font-body);
    font-style: normal;
    font-weight: 700;
    letter-spacing: 0.08em;
    font-size: 0.9rem;
    color: var(--vermelho-jd);
}

/* ============================================================
   CARDS DE SERVIÇO (Áreas)
   ============================================================ */
.jd-card-servico {
    background: var(--bg-white);
    border: 1px solid var(--border-light);
    border-radius: var(--radius-lg);
    padding: 2.25rem 2rem;
    display: flex;
    flex-direction: column;
    transition: border-color var(--trans-med), box-shadow var(--trans-med), transform var(--trans-med);
}
.jd-card-servico:hover {
    border-color: var(--border-gold);
    box-shadow: 0 22px 46px -22px rgba(134, 38, 37, 0.30);
    transform: translateY(-5px);
}
/* Ícone em badge arredondado — preenche de vinho no hover */
.jd-card-servico__icon {
    width: 54px; height: 54px;
    display: grid;
    place-items: center;
    border-radius: 14px;
    background: var(--bg-cream);
    color: var(--dourado-jd-escuro);
    margin-bottom: 1.5rem;
    transition: background var(--trans-med), color var(--trans-med), transform var(--trans-med);
}
.jd-card-servico__icon svg { width: 26px; height: 26px; }
.jd-card-servico:hover .jd-card-servico__icon {
    background: var(--vermelho-jd);
    color: #fcfcfc;
    transform: translateY(-2px);
}
/* Título com traço dourado que cresce no hover */
.jd-card-servico__title {
    font-family: var(--font-heading);
    font-size: 1.45rem;
    font-weight: 600;
    color: var(--text-primary);
    line-height: 1.2;
    position: relative;
    padding-bottom: 0.85rem;
    margin-bottom: 0.85rem;
}
.jd-card-servico__title::after {
    content: '';
    position: absolute;
    left: 0; bottom: 0;
    width: 26px; height: 2px;
    background: var(--dourado-jd);
    transition: width var(--trans-med);
}
.jd-card-servico:hover .jd-card-servico__title::after { width: 52px; }
.jd-card-servico__desc { color: var(--text-secondary); font-size: 0.975rem; line-height: 1.7; flex-grow: 1; }
.jd-card-servico__link {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    margin-top: 1.5rem;
    color: var(--vermelho-jd);
    font-weight: 600;
    font-size: 0.9rem;
    transition: gap var(--trans-fast), color var(--trans-fast);
}
.jd-card-servico__link:hover { gap: 0.7rem; color: var(--dourado-jd-escuro); }

/* ============================================================
   SOBRE (split)
   ============================================================ */
.jd-sobre-split {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(2.5rem, 6vw, 5rem);
    align-items: center;
}
.jd-sobre__image-wrap { position: relative; align-self: start; }
.jd-sobre__image-wrap::before {
    content: '';
    position: absolute;
    top: -1.25rem; left: -1.25rem;
    width: 60%; height: 60%;
    border: 2px solid var(--border-accent);
    z-index: 0;
}
.jd-sobre__img {
    position: relative;
    z-index: 1;
    width: 100%;
    border-radius: var(--radius);
    box-shadow: var(--shadow-md);
    object-fit: cover;
}
.jd-sobre__img--natural {
    display: block;
    height: auto;
    aspect-ratio: auto;
    object-fit: contain;
}
/* Home: retrato inteiro com escala contida, sem alongar a seção. */
.jd-home-sobre { padding-block: clamp(2rem, 4vw, 3.5rem); }
.jd-home-sobre .jd-container { max-width: 1120px; }
.jd-home-sobre .jd-sobre-split {
    grid-template-columns: minmax(0, 370px) minmax(0, 1fr);
    gap: clamp(1.5rem, 4vw, 3rem);
}
.jd-home-sobre .jd-sobre__image-wrap { align-self: center; }
@media (max-width: 768px) {
    .jd-home-sobre .jd-sobre-split { grid-template-columns: 1fr; gap: 1.5rem; }
    .jd-home-sobre .jd-sobre__image-wrap {
        width: 100%;
        max-width: 320px;
        justify-self: center;
    }
}
.jd-sobre__bio { margin-bottom: 1.5rem; }
.jd-sobre__bio p { color: var(--text-secondary); margin-bottom: 1rem; }
.jd-sobre__bio em { color: var(--vermelho-jd); font-style: italic; }

.jd-credentials { margin-bottom: 2rem; display: grid; gap: 0.75rem; }
.jd-credentials__item {
    position: relative;
    padding-left: 1.75rem;
    color: var(--text-primary);
    font-size: 0.95rem;
    line-height: 1.5;
}
.jd-credentials__item::before {
    content: '';
    position: absolute;
    left: 0; top: 0.55em;
    width: 8px; height: 8px;
    background: var(--dourado-jd);
    border-radius: 50%;
}

/* prosa centrada da página O Escritório */
.jd-escritorio-prose { max-width: 860px; margin-inline: auto; }
/* com foto, a coluna abre — o texto corre ao redor dela */
.jd-escritorio-prose--wide { max-width: 1040px; }
.jd-escritorio__body { display: flow-root; }   /* contém o float sem cortar a moldura decorativa */
.jd-escritorio__float {
    float: left;
    width: min(430px, 44%);
    margin: 0.5rem 2.5rem 1.75rem 0;
}
.jd-escritorio__float .jd-sobre__img { aspect-ratio: 3 / 4; object-fit: cover; }
/* ponytail: sem hifenização automática — cliente não quer palavra quebrada com hífen */
.jd-escritorio-prose .jd-sobre__bio p { text-align: justify; hyphens: manual; }
/* chamada final → página da sócia fundadora (seção própria, depois da galeria) */
.jd-escritorio-cta-section { padding-bottom: clamp(3rem, 6vw, 5rem); }
.jd-escritorio-cta {
    clear: both;
    margin-top: clamp(2rem, 4vw, 3rem);
    padding-top: clamp(1.5rem, 3vw, 2rem);
    border-top: 1px solid var(--border-light);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.25rem 2rem;
    flex-wrap: wrap;
}
.jd-escritorio-cta__text {
    flex: 1 1 320px;
    color: var(--text-muted);
    font-size: 1.0625rem;
    line-height: 1.6;
    margin: 0;
}

@media (max-width: 768px) {
    .jd-escritorio__float { float: none; width: 100%; margin: 0 0 1.75rem; }
    .jd-escritorio-prose .jd-sobre__bio p { text-align: left; hyphens: manual; }
}

/* --- Sobre: coluna esquerda (foto + credenciais + idiomas + Lattes) --- */
.jd-sobre-split--top { align-items: start; }
/* a coluna esquerda é alta (foto + listas): a bio mostra mais texto antes do corte */
.jd-sobre__bio.is-clamped { max-height: 26rem; }
.jd-sobre__aside .jd-credentials { margin: 2.25rem 0 0; }
.jd-sobre__lattes { margin: 1.75rem 0 0; display: flex; align-items: center; gap: 0.75rem; }
.jd-sobre__insta {
    display: inline-flex; align-items: center; justify-content: center;
    flex-shrink: 0;
    width: 2.75rem; height: 2.75rem;
    border-radius: 50%;
    border: 1px solid var(--border-accent);
    color: var(--vermelho-jd);
    transition: background var(--trans-fast), color var(--trans-fast), border-color var(--trans-fast);
}
.jd-sobre__insta:hover { background: var(--vermelho-jd); border-color: var(--vermelho-jd); color: #fff; }

.jd-langs { margin-top: 2rem; }
.jd-langs__label {
    display: block;
    font-family: var(--font-heading);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--dourado-jd-escuro);
    margin-bottom: 0.9rem;
}
.jd-langs__list {
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem;
}
.jd-lang {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.5rem 0.85rem 0.5rem 0.6rem;
    background: var(--bg-white);
    border: 1px solid var(--border-light);
    border-radius: 999px;
    transition: border-color var(--trans-fast), transform var(--trans-fast), box-shadow var(--trans-fast);
}
.jd-lang:hover {
    border-color: var(--dourado-jd);
    transform: translateY(-2px);
    box-shadow: 0 10px 22px -14px rgba(134, 38, 37, 0.45);
}
.jd-lang__flag {
    flex: 0 0 auto;
    width: 27px; height: 18px;
    border-radius: 3px;
    overflow: hidden;
    box-shadow: 0 0 0 1px rgba(15, 2, 2, 0.12);
    line-height: 0;
}
.jd-lang__flag svg { width: 100%; height: 100%; display: block; }
.jd-lang__text { display: flex; flex-direction: column; line-height: 1.15; }
.jd-lang__name { font-size: 0.875rem; font-weight: 600; color: var(--text-secondary); }
.jd-lang__level { font-size: 0.75rem; color: var(--text-muted); }

@media (max-width: 768px) {
    .jd-sobre-split--top { grid-template-columns: 1fr; }
}

/* ============================================================
   CARDS DE ARTIGO
   ============================================================ */
.jd-card-artigo {
    background: var(--bg-white);
    border: 1px solid var(--border-light);
    border-radius: var(--radius-lg);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    transition: box-shadow var(--trans-med), transform var(--trans-med);
}
.jd-card-artigo:hover { box-shadow: var(--shadow-md); transform: translateY(-3px); }
.jd-card-artigo__img-wrap { aspect-ratio: 16 / 10; overflow: hidden; background: var(--bg-cream); }
.jd-card-artigo__img { width: 100%; height: 100%; object-fit: cover; transition: transform var(--trans-slow); }
.jd-card-artigo:hover .jd-card-artigo__img { transform: scale(1.05); }
.jd-card-artigo__img-placeholder {
    width: 100%; height: 100%;
    display: flex; align-items: center; justify-content: center;
    color: var(--border-accent);
}
.jd-card-artigo__img-placeholder svg { width: 56px; height: 56px; }
.jd-card-artigo__body { padding: 1.75rem; display: flex; flex-direction: column; flex-grow: 1; }
.jd-card-artigo__cat {
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--vermelho-jd);
    margin-bottom: 0.5rem;
}
.jd-card-artigo__date { font-size: 0.8125rem; color: var(--text-muted); margin-bottom: 0.5rem; }
.jd-card-artigo__title {
    font-family: var(--font-heading);
    font-size: 1.35rem;
    font-weight: 600;
    line-height: 1.25;
    margin-bottom: 0.75rem;
}
.jd-card-artigo__title a { color: var(--text-primary); transition: color var(--trans-fast); }
.jd-card-artigo__title a:hover { color: var(--vermelho-jd); }
.jd-card-artigo__excerpt { color: var(--text-muted); font-size: 0.95rem; flex-grow: 1; }
.jd-card-artigo__link {
    display: inline-flex; align-items: center; gap: 0.4rem;
    margin-top: 1.25rem;
    color: var(--vermelho-jd); font-weight: 600; font-size: 0.9rem;
    transition: gap var(--trans-fast);
}
.jd-card-artigo__link:hover { gap: 0.7rem; }

/* ============================================================
   FAIXA CTA (vinho)
   ============================================================ */
.jd-cta-section {
    background: var(--bg-hero);
    padding-block: clamp(4rem, 7vw, 6rem);
    text-align: center;
    position: relative;
    overflow: hidden;
}
.jd-cta-section .jd-label { color: rgba(252, 252, 252, 0.7); }
.jd-cta-section .jd-heading-2 { color: var(--text-light); margin-bottom: 1rem; }
.jd-cta-section__sub {
    color: rgba(252, 252, 252, 0.78);
    max-width: 620px;
    margin: 0 auto 2.5rem;
    font-size: 1.0625rem;
}
.jd-cta-section__actions { display: flex; flex-wrap: wrap; gap: 1rem; justify-content: center; }

/* ============================================================
   PAGE HERO (internas)
   ============================================================ */
.jd-page-hero {
    background:
        radial-gradient(125% 150% at 88% 50%, rgba(216, 160, 76, 0.18) 0%, rgba(216, 160, 76, 0) 44%),
        radial-gradient(120% 130% at 0% 0%, rgba(0, 0, 0, 0.28) 0%, rgba(0, 0, 0, 0) 55%),
        linear-gradient(118deg, var(--vermelho-jd-grad) 0%, var(--vermelho-jd) 52%, var(--vermelho-jd-grad) 100%);
    padding: clamp(5.5rem, 9vw, 8rem) 0 clamp(3rem, 6vw, 5rem);
    position: relative;
    overflow: hidden;
}
/* marca d'água: SÍMBOLO oficial, chapado branco translúcido (via mask) */
.jd-page-hero::before {
    content: '';
    position: absolute;
    right: clamp(calc(-2.5rem + 200px), calc(-1vw + 200px), 200px); top: 50%;
    width: clamp(154px, 20.5vw, 307px);
    aspect-ratio: 631 / 515;
    transform: translateY(-50%);
    background: rgba(255, 255, 255, 0.2);
    -webkit-mask: url(../images/simbolo-jd-mark.webp) no-repeat center / contain;
            mask: url(../images/simbolo-jd-mark.webp) no-repeat center / contain;
    pointer-events: none;
    z-index: 0;
}
.jd-page-hero__particles { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
.jd-page-hero .jd-container { position: relative; z-index: 1; }
.jd-page-hero .jd-label { color: var(--dourado-jd-claro); }
.jd-page-hero h1 { color: var(--text-light); font-size: clamp(2.5rem, 4.4vw, 4rem); }
/* no mobile, reduz um pouco o título do cabeçalho interno p/ caber em 1 linha */
@media (max-width: 768px) {
    .jd-page-hero::before { display: none; }
    .jd-page-hero h1 { font-size: clamp(1.9rem, 7.4vw, 2.2rem); line-height: 1.12; }
    /* só na página Sobre o nome é longo (Dra. Juliana Damasceno) → 2pt a menos */
    .jd-page-sobre .jd-page-hero h1 { font-size: clamp(1.65rem, 6.5vw, 1.95rem); }
}
.jd-page-hero__subtitle {
    color: rgba(252, 252, 252, 0.78);
    font-size: 1.0625rem;
    margin-top: 1rem;
    max-width: 860px;
    /* quando quebrar mesmo assim, distribui as linhas em vez de deixar
       uma palavra órfã na última (viúva) */
    text-wrap: pretty;
}

/* ============================================================
   FORMAÇÃO (grid de cards)
   ============================================================ */
.jd-formacao-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: clamp(1.25rem, 2.5vw, 1.75rem);
}
.jd-formacao-card {
    background: var(--bg-white);
    border: 1px solid var(--border-light);
    border-top: 3px solid var(--vermelho-jd);
    border-radius: var(--radius);
    padding: 1.75rem 1.5rem;
    transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1),
                box-shadow 0.3s ease, border-top-color 0.3s ease;
}
.jd-formacao-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 18px 36px -18px rgba(134, 38, 37, 0.4);
    border-top-color: var(--dourado-jd);
}
.jd-formacao-card__level {
    font-size: 0.75rem; font-weight: 600;
    text-transform: uppercase; letter-spacing: 0.1em;
    color: var(--vermelho-jd); margin-bottom: 0.5rem;
}
.jd-formacao-card__title {
    font-family: var(--font-heading);
    font-size: 1.2rem; font-weight: 600;
    color: var(--text-primary); line-height: 1.3; margin-bottom: 0.5rem;
    transition: color 0.3s ease;
}
.jd-formacao-card:hover .jd-formacao-card__title { color: var(--vermelho-jd); }
.jd-formacao-card__inst { font-size: 0.9rem; color: var(--text-muted); margin-bottom: 0.5rem; }
.jd-formacao-card__year { font-size: 0.85rem; font-weight: 600; color: var(--dourado-jd-escuro); }

/* ============================================================
   DOCÊNCIA
   ============================================================ */
.jd-docencia__featured {
    display: flex;
    align-items: center;
    gap: clamp(1.25rem, 3vw, 2rem);
    background: var(--bg-white);
    border: 1px solid var(--border-light);
    border-left: 4px solid var(--vermelho-jd);
    border-radius: var(--radius-lg);
    padding: clamp(1.5rem, 3vw, 2.25rem) clamp(1.75rem, 3.5vw, 2.75rem);
    margin-bottom: 2.5rem;
    box-shadow: 0 14px 34px -22px rgba(15, 2, 2, 0.35);
    transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.3s ease;
}
.jd-docencia__featured:hover {
    transform: translateY(-3px);
    box-shadow: 0 24px 48px -26px rgba(134, 38, 37, 0.45);
}
.jd-docencia__featured-icon {
    flex-shrink: 0;
    width: clamp(56px, 7vw, 72px);
    height: clamp(56px, 7vw, 72px);
    display: grid; place-items: center;
    border-radius: 16px;
    background: linear-gradient(140deg, var(--vermelho-jd), var(--vermelho-jd-grad));
    color: var(--dourado-jd-claro);
    box-shadow: 0 10px 22px -12px rgba(134, 38, 37, 0.6);
}
.jd-docencia__featured-icon svg { width: 46%; height: 46%; }
.jd-docencia__featured-body { min-width: 0; }
.jd-docencia__featured .jd-label { color: var(--dourado-jd-escuro); margin-bottom: 0.35rem; }
.jd-docencia__featured-title {
    font-family: var(--font-heading);
    font-size: clamp(1.35rem, 2.6vw, 2rem);
    font-weight: 700; line-height: 1.2;
    color: var(--vermelho-jd);
}
.jd-docencia__featured-sub { color: var(--text-muted); font-size: 1.0625rem; margin-top: 0.3rem; }
.jd-docencia__list-title {
    font-family: var(--font-body);
    font-size: 0.95rem; font-weight: 600;
    color: var(--text-secondary); margin-bottom: 1.25rem;
}
.jd-chips { display: flex; flex-wrap: wrap; gap: 0.75rem; }
.jd-chip {
    background: var(--bg-cream);
    border: 1px solid var(--border-gold);
    border-radius: 999px;
    padding: 0.5rem 1.1rem;
    font-size: 0.875rem;
    color: var(--text-secondary);
    transition: transform 0.2s ease, background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
.jd-chip:hover {
    transform: translateY(-2px);
    background: var(--vermelho-jd);
    border-color: var(--vermelho-jd);
    color: var(--text-light);
}

/* ============================================================
   TIMELINE
   ============================================================ */
.jd-timeline { position: relative; max-width: 1100px; margin-inline: auto; padding-block: 1rem; }
.jd-timeline::before {
    content: '';
    position: absolute;
    left: 50%; top: 0; bottom: 0;
    width: 2px;
    background: var(--border-accent);
    transform: translateX(-50%);
}
.jd-timeline__item { position: relative; width: 50%; padding: 0 2.5rem 2.5rem; }
.jd-timeline__item:nth-child(odd) { left: 0; text-align: right; }
.jd-timeline__item:nth-child(even) { left: 50%; text-align: left; }
.jd-timeline__dot {
    position: absolute;
    top: 0.35rem;
    width: 16px; height: 16px;
    background: var(--dourado-jd);
    border: 3px solid var(--bg-off);
    border-radius: 50%;
    box-shadow: 0 0 0 2px var(--border-gold);
    z-index: 1;
}
.jd-timeline__item:nth-child(odd) .jd-timeline__dot { right: -8px; }
.jd-timeline__item:nth-child(even) .jd-timeline__dot { left: -8px; }
.jd-timeline__card {
    display: inline-flex;
    align-items: center;
    gap: 1.25rem;
    max-width: 100%;
    text-align: left;
    background: var(--bg-white);
    border: 1px solid var(--border-light);
    border-radius: var(--radius-lg);
    padding: 1.25rem 1.5rem;
    box-shadow: var(--shadow-sm);
    transition: box-shadow var(--trans-med), transform var(--trans-med);
}
.jd-timeline__item:hover .jd-timeline__card { box-shadow: var(--shadow-md); transform: translateY(-2px); }
.jd-timeline__item:nth-child(odd) .jd-timeline__card { border-right: 3px solid var(--dourado-jd); flex-direction: row-reverse; }
.jd-timeline__item:nth-child(even) .jd-timeline__card { border-left: 3px solid var(--dourado-jd); }
.jd-timeline__photo {
    flex: 0 0 auto;
    position: relative;
    z-index: 2;
    display: block;
    width: 99px; height: 99px;
    border-radius: 50%;
    overflow: hidden;
    border: 3px solid var(--bg-white);
    box-shadow: var(--shadow-sm);
}
.jd-timeline__photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* metade da foto pra fora do card, encavalando a borda dourada */
.jd-timeline__item:nth-child(even) .jd-timeline__photo { margin-left: calc(-1.5rem - 3px - 49.5px); }
.jd-timeline__item:nth-child(odd)  .jd-timeline__photo { margin-right: calc(-1.5rem - 3px - 49.5px); }
.jd-timeline__body { min-width: 0; }
.jd-timeline__year {
    display: inline-block;
    font-family: var(--font-heading);
    font-size: 1.375rem; font-weight: 700;
    color: var(--vermelho-jd);
    margin-bottom: 0.35rem;
}
.jd-timeline__title {
    font-family: var(--font-heading);
    font-size: 1.15rem; font-weight: 600;
    color: var(--text-primary); margin: 0 0 0.5rem;
}
.jd-timeline__desc { color: var(--text-muted); font-size: 0.9375rem; margin: 0; }

/* ============================================================
   RECONHECIMENTOS
   ============================================================ */
.jd-recon-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: clamp(1.25rem, 3vw, 2rem);
}
.jd-recon-card {
    background: var(--bg-white);
    border: 1px solid var(--border-light);
    border-radius: var(--radius);
    padding: clamp(1.4rem, 2.4vw, 1.75rem);
    display: flex;
    gap: 1.15rem;
    align-items: center;
    transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1),
                box-shadow 0.3s ease, border-color 0.3s ease;
}
.jd-recon-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 18px 36px -18px rgba(134, 38, 37, 0.35);
    border-color: var(--dourado-jd);
}
.jd-recon-card__icon {
    flex-shrink: 0;
    width: 48px; height: 48px;
    display: grid; place-items: center;
    border-radius: 12px;
    background: linear-gradient(135deg, rgba(216, 160, 76, 0.18), rgba(134, 38, 37, 0.07));
    border: 1px solid var(--border-gold);
    color: var(--vermelho-jd);
    transition: transform 0.3s ease;
}
.jd-recon-card:hover .jd-recon-card__icon { transform: scale(1.08); }
.jd-recon-card__icon svg { width: 22px; height: 22px; }
.jd-recon-card__text { color: var(--text-secondary); font-size: 0.975rem; line-height: 1.55; }
.jd-recon-card__text strong { color: var(--vermelho-jd); font-weight: 600; }
/* na home, a seção Reconhecimentos ganha fundo creme p/ separar da seção Sobre acima */
.jd-home #reconhecimentos { background: var(--bg-cream); }

/* ============================================================
   ATUAÇÃO — pilares, instâncias, lista de crimes
   ============================================================ */
.jd-areas-pilares .jd-container {
    display: flex;
    flex-direction: column;
    gap: clamp(2.5rem, 5vw, 4.5rem);
}
.jd-pilar {
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
    gap: clamp(1.75rem, 4vw, 3.5rem);
    align-items: center;
}
.jd-pilar--rev .jd-pilar__media { order: 2; }
.jd-pilar__media {
    border-radius: var(--radius-lg);
    overflow: hidden;
    box-shadow: var(--shadow-md);
}
.jd-pilar__media img {
    display: block;
    width: 100%;
    aspect-ratio: 3 / 2;
    object-fit: cover;
    transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}
.jd-pilar:hover .jd-pilar__media img { transform: scale(1.04); }
.jd-pilar__icon {
    width: 56px; height: 56px;
    color: var(--vermelho-jd);
    border: 2px solid var(--border-gold);
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    margin-bottom: 1.1rem;
}
.jd-pilar__icon svg { width: 28px; height: 28px; }
.jd-pilar__title {
    font-family: var(--font-heading);
    font-size: clamp(1.4rem, 2.6vw, 1.9rem); font-weight: 600;
    color: var(--vermelho-jd); margin-bottom: 0.75rem;
}
.jd-pilar__text { color: var(--text-secondary); font-size: 1rem; line-height: 1.75; }
.jd-pilar__text p + p { margin-top: 0.75rem; }

/* --- Texto longo: recorte por altura + "Ler texto completo" -----
   A classe .is-clamped é aplicada pelo JS só quando o texto estoura
   o limite — sem JS, o texto aparece inteiro (progressive enhancement). */
.is-clamped {
    position: relative;
    max-height: 19rem;
    overflow: hidden;
}
.is-clamped::after {
    content: '';
    position: absolute;
    left: 0; right: 0; bottom: 0;
    height: 7rem;
    pointer-events: none;
    background: linear-gradient(to bottom, rgba(255, 255, 255, 0), var(--bg-white) 88%);
}
.jd-readmore {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 1.1rem;
    padding: 0.55rem 0;
    font-family: var(--font-heading);
    font-size: 0.9375rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    color: var(--vermelho-jd);
    border-bottom: 1px solid var(--border-gold);
    transition: color var(--trans-fast), border-color var(--trans-fast), gap var(--trans-fast);
}
.jd-readmore:hover { color: var(--dourado-jd-escuro); border-color: var(--dourado-jd); gap: 0.85rem; }
.jd-readmore:focus-visible { outline: 2px solid var(--dourado-jd); outline-offset: 4px; }
/* display:inline-flex venceria o [hidden] do navegador — sem isto, o botão
   continua visível nos textos curtos que não precisam de "ler mais". */
.jd-readmore[hidden] { display: none; }

/* --- Off-canvas de leitura (texto completo) --------------------- */
.jd-drawer-backdrop {
    position: fixed;
    inset: 0;
    z-index: 1200;
    background: rgba(15, 2, 2, 0.55);
    backdrop-filter: blur(2px);
    opacity: 0;
    transition: opacity var(--trans-med);
}
.jd-drawer-backdrop.is-open { opacity: 1; }
.jd-drawer {
    position: fixed;
    top: 0; right: 0; bottom: 0;
    z-index: 1201;
    width: min(750px, 94vw);
    display: flex;
    flex-direction: column;
    background: var(--bg-white);
    box-shadow: -18px 0 60px -30px rgba(15, 2, 2, 0.65);
    transform: translateX(100%);
    transition: transform 0.38s cubic-bezier(0.22, 1, 0.36, 1);
}
.jd-drawer.is-open { transform: translateX(0); }
/* filete dourado→vinho na borda esquerda (mesma assinatura da seção Áreas) */
.jd-drawer::before {
    content: '';
    position: absolute;
    top: 0; bottom: 0; left: 0;
    width: 4px;
    background: linear-gradient(to bottom, var(--dourado-jd), var(--vermelho-jd));
}
.jd-drawer__head {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    padding: clamp(1.5rem, 3vw, 2.25rem) clamp(1.5rem, 3vw, 2.5rem) 1.1rem;
    border-bottom: 1px solid var(--border-light);
    background: var(--bg-off);
}
.jd-drawer__title {
    flex: 1 1 auto;
    font-family: var(--font-heading);
    font-size: clamp(1.25rem, 2.2vw, 1.6rem);
    font-weight: 600;
    line-height: 1.25;
    color: var(--vermelho-jd);
}
.jd-drawer__close {
    flex: 0 0 auto;
    width: 40px; height: 40px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    border: 1px solid var(--border-light);
    color: var(--text-secondary);
    background: var(--bg-white);
    transition: all var(--trans-fast);
}
.jd-drawer__close:hover { background: var(--vermelho-jd); border-color: var(--vermelho-jd); color: var(--text-light); }
.jd-drawer__close:focus-visible { outline: 2px solid var(--dourado-jd); outline-offset: 2px; }
.jd-drawer__close svg { width: 18px; height: 18px; }
.jd-drawer__body {
    flex: 1 1 auto;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: clamp(1.5rem, 3vw, 2.25rem) clamp(1.5rem, 3vw, 2.5rem) clamp(2.5rem, 5vw, 3.5rem);
    color: var(--text-secondary);
    font-size: 1.0625rem;
    line-height: 1.8;
}
.jd-drawer__body p + p { margin-top: 1rem; }
.jd-drawer__body::-webkit-scrollbar { width: 8px; }
.jd-drawer__body::-webkit-scrollbar-thumb { background: var(--border-accent); border-radius: 8px; }

@media (prefers-reduced-motion: reduce) {
    .jd-drawer, .jd-drawer-backdrop { transition: none; }
}
@media (max-width: 768px) {
    .jd-pilar { grid-template-columns: 1fr; gap: 1.5rem; }
    .jd-pilar__media,
    .jd-pilar--rev .jd-pilar__media { order: -1; }
}

.jd-instancias {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0.5rem 1rem;
}
.jd-instancias__item {
    font-family: var(--font-heading);
    font-size: 1.1rem; font-weight: 600;
    color: var(--vermelho-jd);
    background: var(--bg-white);
    border: 1px solid var(--border-gold);
    border-radius: var(--radius);
    padding: 0.6rem 1.25rem;
}
.jd-instancias__sep { color: var(--dourado-jd); font-weight: 700; }

.jd-crimes-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 0.75rem 2.5rem;
}
.jd-crimes-grid li {
    position: relative;
    padding-left: 1.5rem;
    color: var(--text-secondary);
    font-size: 0.975rem;
    line-height: 1.6;
    border-bottom: 1px solid var(--border-light);
    padding-bottom: 0.6rem;
    transition: color 0.3s ease, padding-left 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}
.jd-crimes-grid li::before {
    content: '';
    position: absolute;
    left: 0; top: 0.6em;
    width: 7px; height: 7px;
    background: var(--dourado-jd);
    border-radius: 50%;
    transition: width 0.35s cubic-bezier(0.22, 1, 0.36, 1), height 0.3s ease, border-radius 0.3s ease, background 0.3s ease;
}
/* hover "wave": régua dourada→vinho escorre da esquerda + marcador vira dash */
.jd-crimes-grid li::after {
    content: '';
    position: absolute;
    left: 0; right: 0; bottom: -1px;
    height: 2px;
    background: linear-gradient(90deg, var(--dourado-jd), var(--vermelho-jd));
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}
.jd-crimes-grid li:hover { color: var(--vermelho-jd); padding-left: 1.9rem; }
.jd-crimes-grid li:hover::before { width: 16px; height: 3px; border-radius: 3px; background: var(--vermelho-jd); }
.jd-crimes-grid li:hover::after { transform: scaleX(1); }

/* Sancionadores: texto + foto */
.jd-sanc-split {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(2rem, 5vw, 4rem);
    align-items: center;
}
.jd-sanc-split--solo { grid-template-columns: 1fr; max-width: 760px; }
.jd-sanc__content .jd-divider { margin: 1rem 0 1.25rem; }
.jd-sanc__text { color: var(--text-muted); font-size: 1.0625rem; line-height: 1.75; }
.jd-sanc__media {
    border-radius: var(--radius-lg);
    overflow: hidden;
    box-shadow: var(--shadow-md);
}
.jd-sanc__media img {
    display: block;
    width: 100%;
    aspect-ratio: 3 / 2;
    object-fit: cover;
    transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}
.jd-sanc__media:hover img { transform: scale(1.04); }
@media (max-width: 768px) {
    .jd-sanc-split { grid-template-columns: 1fr; gap: 1.75rem; }
    .jd-sanc__media { order: -1; }
}

/* ============================================================
   PARCEIROS
   ============================================================ */
.jd-parceiros-list {
    display: flex;
    flex-direction: column;
    gap: clamp(1.5rem, 3vw, 2.5rem);
    max-width: 980px;
    margin-inline: auto;
}
.jd-parceiro {
    display: grid;
    grid-template-columns: minmax(180px, 0.9fr) 2fr;
    background: var(--bg-white);
    border: 1px solid var(--border-light);
    border-radius: var(--radius-lg);
    overflow: hidden;
    box-shadow: var(--shadow-sm);
    transition: box-shadow var(--trans-med), transform var(--trans-med);
}
.jd-parceiro:hover { box-shadow: var(--shadow-md); transform: translateY(-3px); }

/* Zebra: itens pares (2º, 4º…) com a foto à direita — só no desktop */
@media (min-width: 641px) {
    .jd-parceiro:nth-child(even) { grid-template-columns: 2fr minmax(180px, 0.9fr); }
    .jd-parceiro:nth-child(even) .jd-parceiro__body      { grid-column: 1; grid-row: 1; }
    .jd-parceiro:nth-child(even) .jd-parceiro__photo-col { grid-column: 2; grid-row: 1; }
}

/* Coluna da foto — estica com o card (altura mandada pelo texto ao lado).
   ponytail: sem aspect-ratio no desktop; o stretch do grid faz a foto ir de ponta a ponta.
   min-height só p/ bio curta não achatar o retrato. */
.jd-parceiro__photo-col {
    position: relative;
    min-height: 420px;
    background: var(--bg-cream);
    overflow: hidden;
}
.jd-parceiro__photo {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center top;
}
.jd-parceiro__photo-col::after {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: linear-gradient(to top, rgba(134, 38, 37, 0.28), transparent 45%);
}
.jd-parceiro__placeholder {
    position: absolute;
    inset: 0;
    display: flex; align-items: center; justify-content: center;
    background: var(--vermelho-jd);
    color: var(--branco-jd, #fcfcfc);
    font-family: var(--font-heading);
    font-size: clamp(3rem, 6vw, 4.5rem);
    font-weight: 700;
}

/* Corpo de texto — à direita */
.jd-parceiro__body {
    padding: clamp(1.75rem, 3vw, 2.75rem);
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.jd-parceiro__name {
    font-family: var(--font-heading);
    font-size: clamp(1.5rem, 2.4vw, 1.9rem);
    font-weight: 600;
    color: var(--vermelho-jd);
    line-height: 1.15;
    margin-bottom: 0.4rem;
}
.jd-parceiro__role {
    color: var(--dourado-jd-escuro);
    font-size: 0.875rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    margin-bottom: 0.35rem;
}
.jd-parceiro__oab { color: var(--text-muted); font-size: 0.9rem; font-weight: 500; }
.jd-parceiro__rule {
    display: block;
    width: 48px; height: 2px;
    background: var(--dourado-jd);
    margin: 1.1rem 0;
}
.jd-parceiro__bio { color: var(--text-secondary); font-size: 0.95rem; line-height: 1.75; text-align: justify; text-justify: inter-word; hyphens: none; }
.jd-parceiro__bio p { margin-bottom: 0.85rem; }
.jd-parceiro__bio p:last-child { margin-bottom: 0; }
.jd-parceiro__links {
    display: flex;
    flex-wrap: wrap;
    gap: 1.25rem;
    margin-top: 1.5rem;
}
.jd-parceiro__link {
    display: inline-flex; align-items: center; gap: 0.45rem;
    color: var(--vermelho-jd);
    font-weight: 600; font-size: 0.875rem;
    transition: color var(--trans-fast);
}
.jd-parceiro__link:hover { color: var(--dourado-jd-escuro); }
.jd-parceiro__link--lattes {
    background: var(--vermelho-jd);
    color: var(--text-light);
    padding: 0.6rem 1.1rem;
    border-radius: 999px;
    transition: background var(--trans-fast), transform var(--trans-fast);
}
.jd-parceiro__link--lattes:hover { background: var(--vermelho-jd-dark); color: var(--text-light); transform: translateY(-2px); }

@media (max-width: 640px) {
    .jd-parceiro { grid-template-columns: 1fr; }
    /* empilhado: aí sim a foto precisa de proporção própria */
    .jd-parceiro__photo-col { aspect-ratio: 3 / 4; min-height: 0; }
}

/* ============================================================
   CONTATO
   ============================================================ */
.jd-contato-layout {
    display: grid;
    grid-template-columns: 60fr 40fr;
    gap: clamp(2rem, 5vw, 4rem);
    align-items: start;
}
.jd-contato__form-wrap {
    background: var(--bg-white);
    border: 1px solid var(--border-light);
    border-radius: var(--radius-lg);
    padding: clamp(1.75rem, 3vw, 2.5rem);
    box-shadow: var(--shadow-sm);
}
.jd-contato__info-title {
    font-family: var(--font-heading);
    font-size: 1.6rem; font-weight: 600;
    color: var(--vermelho-jd); margin-bottom: 1.75rem;
}
.jd-contato__channel { display: flex; gap: 1rem; align-items: flex-start; margin-bottom: 1.5rem; }
.jd-contato__channel-icon {
    flex-shrink: 0;
    width: 44px; height: 44px;
    border-radius: 50%;
    background: var(--bg-cream);
    color: var(--vermelho-jd);
    display: flex; align-items: center; justify-content: center;
}
.jd-contato__channel-icon svg { width: 20px; height: 20px; }
.jd-contato__channel-label {
    font-size: 0.75rem; font-weight: 600;
    text-transform: uppercase; letter-spacing: 0.1em;
    color: var(--text-muted); margin-bottom: 0.2rem;
}
.jd-contato__channel-value { color: var(--text-primary); font-weight: 500; transition: color var(--trans-fast); }
a.jd-contato__channel-value:hover { color: var(--vermelho-jd); }
.jd-contato__map { margin-top: 2rem; }
.jd-contato__map iframe {
    width: 100%; height: 280px;
    border: 0; border-radius: var(--radius);
    filter: grayscale(0.2);
}
.jd-contato__socials { display: flex; gap: 0.75rem; margin-top: 1.5rem; }
.jd-contato__social-link {
    display: inline-flex; align-items: center; gap: 0.4rem;
    color: var(--text-secondary); font-size: 0.875rem;
    transition: color var(--trans-fast);
}
.jd-contato__social-link svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.5; }
.jd-contato__social-link:hover { color: var(--vermelho-jd); }
.jd-contato__confidencial {
    margin-top: 2.5rem;
    padding: 1.25rem 1.5rem;
    background: var(--bg-cream);
    border-left: 3px solid var(--dourado-jd);
    border-radius: var(--radius);
    font-size: 0.875rem;
    color: var(--text-muted);
    line-height: 1.6;
}

/* Botão "Como chegar" — bloco visível abaixo do endereço */
.jd-contato__como-chegar {
    display: flex;
    width: fit-content;
    align-items: center;
    gap: 0.5rem;
    margin-top: 1.1rem;
    padding: 0.7rem 1.4rem;
    background: var(--vermelho-jd);
    color: #fcfcfc;
    border-radius: 2px;
    font-weight: 600;
    font-size: 0.875rem;
    box-shadow: var(--shadow-sm);
    transition: background var(--trans-fast), transform var(--trans-fast), box-shadow var(--trans-fast);
}
.jd-contato__como-chegar:hover {
    background: var(--vermelho-jd-dark);
    color: #fcfcfc;
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
}
.jd-contato__como-chegar svg { transition: transform var(--trans-fast); }
.jd-contato__como-chegar:hover svg { transform: translateY(3px); }

/* Mapa estilizado full-width (tons do site) */
.jd-contato-map-full {
    width: 100%;
    scroll-margin-top: 86px;
    border-top: 3px solid var(--dourado-jd);
    background: var(--bg-hero);
}
.jd-contato-map-full__inner { position: relative; }
.jd-contato-map-full__consent {
    min-height: clamp(360px, 48vh, 540px);
    padding: 6rem 1.5rem 2rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 1rem;
    background: var(--bg-cream);
    color: var(--text-secondary);
    text-align: center;
}
.jd-contato-map-full__consent[hidden], .jd-contato-map-full__frame[hidden] { display: none; }
.jd-contato-map-full__frame {
    display: block;
    width: 100%;
    height: clamp(360px, 48vh, 540px);
    border: 0;
    /* tinta o mapa nos tons quentes/vinho da marca */
    filter: grayscale(0.25) sepia(0.5) saturate(1.7) hue-rotate(-12deg) contrast(0.93) brightness(0.95);
}
/* leve overlay vinho nas bordas, sem bloquear interação */
.jd-contato-map-full__inner::after {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    box-shadow: inset 0 0 90px rgba(134, 38, 37, 0.35);
}
.jd-contato-map-full__routes {
    position: absolute;
    z-index: 2;
    right: clamp(1rem, 4vw, 2rem);
    top: clamp(1rem, 4vw, 1.5rem);
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.6rem;
}
.jd-contato-map-full__route {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.7rem 1.3rem;
    background: var(--vermelho-jd);
    color: #fcfcfc;
    border-radius: 2px;
    font-family: var(--font-body);
    font-size: 0.85rem;
    font-weight: 600;
    box-shadow: 0 10px 28px rgba(0, 0, 0, 0.28);
    transition: background var(--trans-fast), transform var(--trans-fast);
}
.jd-contato-map-full__route:hover { background: var(--vermelho-jd-dark); transform: translateY(-2px); }
.jd-contato-map-full__route--waze { background: var(--dourado-jd-escuro); color: var(--vermelho-jd-black); }
.jd-contato-map-full__route--waze:hover { background: var(--dourado-jd); }

/* --- Formulário ---------------------------------------------- */
.jd-form__row { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; }
.jd-form__group { margin-bottom: 1.25rem; display: flex; flex-direction: column; }
.jd-form__label {
    font-size: 0.8125rem; font-weight: 600;
    color: var(--text-secondary); margin-bottom: 0.5rem;
}
.jd-form__input,
.jd-form__select,
.jd-form__textarea {
    width: 100%;
    padding: 0.8rem 1rem;
    background: var(--bg-off);
    border: 1px solid var(--border-light);
    border-radius: var(--radius);
    font-family: var(--font-body);
    font-size: 0.95rem;
    color: var(--text-primary);
    transition: border-color var(--trans-fast), background var(--trans-fast);
}
.jd-form__input::placeholder,
.jd-form__textarea::placeholder { color: var(--text-muted); opacity: 0.7; }
.jd-form__input:focus,
.jd-form__select:focus,
.jd-form__textarea:focus {
    outline: none;
    border-color: var(--vermelho-jd);
    background: var(--bg-white);
}
.jd-form__textarea { resize: vertical; min-height: 130px; }
.jd-form__check { display: flex; gap: 0.6rem; align-items: flex-start; margin-bottom: 1.5rem; }
.jd-form__check input { margin-top: 0.3rem; accent-color: var(--vermelho-jd); }
.jd-form__check label { font-size: 0.85rem; color: var(--text-muted); line-height: 1.5; }
.jd-form { position: relative; }
.jd-form__submit { width: 100%; }
.jd-form__submit.is-loading { opacity: 0.6; pointer-events: none; }
.jd-form__feedback { margin-bottom: 1rem; font-size: 0.9rem; }
.jd-form__feedback.is-success { color: #1a7d3c; }
.jd-form__feedback.is-error { color: var(--vermelho-jd); }

/* ---- Overlay de envio: preloader → selo de protocolo ---- */
.jd-form__overlay {
    position: absolute;
    inset: -0.5rem;
    z-index: 6;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1.15rem;
    text-align: center;
    padding: 2rem;
    background: rgba(252, 251, 248, 0.9);
    backdrop-filter: blur(7px) saturate(1.1);
    -webkit-backdrop-filter: blur(7px) saturate(1.1);
    border-radius: var(--radius-lg);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.4s ease, visibility 0.4s ease;
}
.jd-form__overlay.is-active { opacity: 1; visibility: visible; }
.jd-form__overlay-title {
    font-family: var(--font-heading);
    font-size: clamp(1.2rem, 2.4vw, 1.5rem);
    font-weight: 700; color: var(--vermelho-jd);
    margin: 0; line-height: 1.25;
}
.jd-form__overlay-sub { color: var(--text-muted); font-size: 0.975rem; margin: 0; max-width: 380px; line-height: 1.5; }

.jd-seal { position: relative; width: 88px; height: 88px; display: grid; place-items: center; }
/* preloader: anel girando */
.jd-seal__spinner {
    width: 64px; height: 64px; border-radius: 50%;
    border: 4px solid rgba(134, 38, 37, 0.14);
    border-top-color: var(--dourado-jd);
    animation: jd-spin 0.8s linear infinite;
}
@keyframes jd-spin { to { transform: rotate(360deg); } }
/* sucesso: selo que "carimba" com check desenhado */
.jd-seal__stamp {
    display: none;
    width: 88px; height: 88px; border-radius: 50%;
    background: radial-gradient(circle at 32% 28%, var(--vermelho-jd-accent) 0%, var(--vermelho-jd-grad) 100%);
    border: 2px solid var(--dourado-jd);
    box-shadow: 0 14px 32px -12px rgba(134, 38, 37, 0.65),
                inset 0 0 0 6px rgba(216, 160, 76, 0.18);
    place-items: center;
}
.jd-seal__stamp svg { width: 48px; height: 48px; }
.jd-seal__stamp path {
    fill: none;
    stroke: var(--dourado-jd-claro);
    stroke-width: 5.5;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-dasharray: 56;
    stroke-dashoffset: 56;
}
.jd-form__overlay.is-success .jd-seal__spinner { display: none; }
.jd-form__overlay.is-success .jd-seal__stamp {
    display: grid;
    animation: jd-stamp 0.55s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
}
.jd-form__overlay.is-success .jd-seal__stamp path { animation: jd-draw 0.45s ease 0.35s forwards; }
@keyframes jd-stamp {
    0%   { opacity: 0; transform: scale(1.35) rotate(-10deg); }
    55%  { opacity: 1; transform: scale(0.93) rotate(3deg); }
    100% { opacity: 1; transform: scale(1) rotate(0); }
}
@keyframes jd-draw { to { stroke-dashoffset: 0; } }
@media (prefers-reduced-motion: reduce) {
    .jd-seal__spinner { animation-duration: 1.4s; }
    .jd-form__overlay.is-success .jd-seal__stamp { animation: none; opacity: 1; transform: none; }
    .jd-form__overlay.is-success .jd-seal__stamp path { animation: none; stroke-dashoffset: 0; }
}

/* ============================================================
   SINGLE POST
   ============================================================ */
.jd-single { padding-block: clamp(3rem, 6vw, 5rem); background: var(--bg-white); }
.jd-single__container { max-width: 760px; margin-inline: auto; }
.jd-single__layout {
    max-width: var(--container-max);
    margin-inline: auto;
    display: grid;
    grid-template-columns: minmax(0, 720px) 280px;
    gap: clamp(2rem, 4vw, 3.5rem);
    align-items: start;
}
.jd-breadcrumb { font-size: 0.85rem; color: var(--text-muted); margin-bottom: 1.5rem; }
.jd-breadcrumb a { color: var(--vermelho-jd); }
.jd-breadcrumb a:hover { text-decoration: underline; }
.jd-breadcrumb__sep { margin-inline: 0.5rem; color: var(--border-accent); }
.jd-single__cover { width: 100%; border-radius: var(--radius-lg); margin-bottom: 1.75rem; box-shadow: var(--shadow-sm); }
.jd-single__meta { font-size: 0.875rem; color: var(--text-muted); margin-bottom: 0.75rem; }
.jd-single__title {
    font-family: var(--font-heading);
    font-size: clamp(2rem, 4vw, 3rem);
    font-weight: 700; line-height: 1.1;
    color: var(--text-primary); margin-bottom: 2rem;
}
.jd-single__content { color: var(--text-secondary); font-size: 1.0625rem; line-height: 1.8; }
.jd-single__content > * + * { margin-top: 1.25rem; }
.jd-single__content h2, .jd-single__content h3 {
    font-family: var(--font-heading); color: var(--text-primary);
    margin-top: 2rem; line-height: 1.2;
}
.jd-single__content h2 { font-size: 1.85rem; font-weight: 600; }
.jd-single__content h3 { font-size: 1.45rem; font-weight: 600; }
.jd-single__content a { color: var(--vermelho-jd); text-decoration: underline; }
.jd-single__content blockquote {
    border-left: 3px solid var(--dourado-jd);
    padding-left: 1.5rem;
    font-family: var(--font-heading);
    font-style: italic; font-size: 1.25rem;
    color: var(--text-primary);
}
.jd-single__content ul, .jd-single__content ol { padding-left: 1.5rem; }
.jd-single__content ul { list-style: disc; }
.jd-single__content ol { list-style: decimal; }
.jd-single__tags { margin-top: 2.5rem; display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; }
.jd-single__tags-label { font-size: 0.85rem; color: var(--text-muted); }
.jd-tag {
    font-size: 0.8rem;
    background: var(--bg-cream);
    color: var(--text-secondary);
    padding: 0.3rem 0.85rem;
    border-radius: 999px;
    transition: background var(--trans-fast), color var(--trans-fast);
}
.jd-tag:hover { background: var(--vermelho-jd); color: var(--text-light); }
.jd-back-link { display: inline-flex; align-items: center; gap: 0.4rem; margin-top: 2.5rem; color: var(--vermelho-jd); font-weight: 600; }

/* Sidebar single */
.jd-single__sidebar { position: sticky; top: 100px; display: grid; gap: 1.5rem; }
.jd-widget {
    background: var(--bg-off);
    border: 1px solid var(--border-light);
    border-radius: var(--radius-lg);
    padding: 1.5rem;
}
.jd-widget__title {
    font-family: var(--font-heading);
    font-size: 1.2rem; font-weight: 600;
    color: var(--vermelho-jd); margin-bottom: 1rem;
}
.jd-widget__list li + li { margin-top: 0.5rem; }
.jd-widget__list a { color: var(--text-secondary); font-size: 0.95rem; transition: color var(--trans-fast); }
.jd-widget__list a:hover { color: var(--vermelho-jd); }
.jd-widget--cta {
    background: linear-gradient(155deg, var(--vermelho-jd) 0%, var(--vermelho-jd-dark) 100%);
    border-color: var(--vermelho-jd);
    text-align: center;
}
.jd-widget--cta__icon {
    display: inline-flex; align-items: center; justify-content: center;
    width: 44px; height: 44px;
    margin-bottom: 0.85rem;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.14);
    color: var(--dourado-jd-claro);
}
.jd-widget--cta .jd-widget__title { color: var(--text-light); margin-bottom: 0.5rem; }
.jd-widget--cta p { color: rgba(252,252,252,0.82); font-size: 0.925rem; line-height: 1.55; margin-bottom: 1.5rem; }
/* botões coloridos viram vinho sólido por padrão — aqui o fundo já é vinho, precisa do contraste dourado */
.jd-widget--cta .btn-gold {
    display: flex; width: 100%;
    background: var(--dourado-jd);
    color: var(--vermelho-jd);
    border-color: var(--dourado-jd);
    font-weight: 600;
}
.jd-widget--cta .btn-gold:hover {
    background: var(--dourado-jd-claro);
    color: var(--vermelho-jd);
    border-color: var(--dourado-jd-claro);
    box-shadow: 0 14px 30px -10px rgba(216, 160, 76, 0.55);
}

/* ============================================================
   ARCHIVE / BLOG
   ============================================================ */
.jd-archive-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: clamp(1.5rem, 3vw, 2.25rem);
}
.jd-filtros { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-bottom: 2.5rem; }
.jd-pub-filtros { justify-content: center; margin-top: calc(-1 * var(--section-pad) + 1.5rem); }
.jd-filtro {
    -webkit-appearance: none; appearance: none;
    background: transparent;
    font-family: inherit;
    cursor: pointer;
    font-size: 0.875rem; font-weight: 500;
    padding: 0.5rem 1.25rem;
    border-radius: 999px;
    border: 1px solid var(--border-accent);
    color: var(--vermelho-jd);
    transition: background var(--trans-fast), color var(--trans-fast);
}
.jd-filtro:hover { background: var(--bg-cream); }
.jd-filtro.is-active { background: var(--vermelho-jd); color: var(--text-light); border-color: var(--vermelho-jd); }
.jd-pagination { margin-top: 3rem; }
.jd-pagination .page-numbers {
    display: flex; flex-wrap: wrap; gap: 0.5rem; justify-content: center;
    align-items: center; padding: 0;
}
.jd-pagination .page-numbers li a,
.jd-pagination .page-numbers li span {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 42px; height: 42px;
    border: 1px solid var(--border-accent);
    border-radius: var(--radius);
    color: var(--vermelho-jd); font-weight: 500;
    transition: background var(--trans-fast), color var(--trans-fast);
}
.jd-pagination .page-numbers li span.current,
.jd-pagination .page-numbers li a:hover { background: var(--vermelho-jd); color: var(--text-light); }

/* ============================================================
   FOOTER
   ============================================================ */
.jd-footer { background: var(--bg-footer); color: rgba(252, 252, 252, 0.7); padding-top: clamp(3.5rem, 6vw, 5rem); }
.jd-footer__grid {
    display: grid;
    grid-template-columns: 1.4fr 1fr 1.2fr;
    gap: clamp(2rem, 5vw, 4rem);
    padding-bottom: 3rem;
}
.jd-footer__logo { display: inline-block; margin-bottom: 1.25rem; }
.jd-footer__logo img { height: 48px; width: auto; filter: brightness(0) invert(1); opacity: 0.95; }
.jd-footer__tagline { font-size: 0.95rem; line-height: 1.7; max-width: 320px; }
.jd-footer__socials { display: flex; gap: 0.75rem; margin-top: 1.5rem; }
.jd-footer__social {
    width: 38px; height: 38px;
    border: 1px solid rgba(252, 252, 252, 0.25);
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    transition: background var(--trans-fast), border-color var(--trans-fast);
}
.jd-footer__social svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.6; }
.jd-icon-lattes { display: block; border-radius: 50%; filter: brightness(0) invert(1); }
.jd-footer__social--lattes img { width: 20px; height: 20px; }
.jd-footer__social:hover { background: var(--vermelho-jd); border-color: var(--vermelho-jd); color: var(--text-light); }
.jd-footer__col-title {
    font-family: var(--font-heading);
    font-size: 1.25rem; font-weight: 600;
    color: var(--text-light); margin-bottom: 1.25rem;
}
.jd-footer__nav li + li { margin-top: 0.6rem; }
.jd-footer__nav a { font-size: 0.95rem; transition: color var(--trans-fast); }
.jd-footer__nav a:hover { color: var(--dourado-jd-claro); }
.jd-footer__contact-list li { display: flex; gap: 0.75rem; align-items: flex-start; margin-bottom: 1rem; font-size: 0.925rem; }
.jd-footer__contact-list svg { flex-shrink: 0; width: 18px; height: 18px; fill: none; stroke: var(--dourado-jd); stroke-width: 1.6; margin-top: 0.2rem; }
.jd-footer__contact-list a { transition: color var(--trans-fast); }
.jd-footer__contact-list a:hover { color: var(--dourado-jd-claro); }
.jd-footer__bottom { background: #0F0202; padding-block: 1.5rem; }
.jd-footer__bottom-inner { display: flex; flex-direction: column; gap: 0.6rem; }
.jd-footer__copy, .jd-footer__oab { font-size: 0.8rem; color: rgba(252, 252, 252, 0.5); }
.jd-footer__ai-notice { margin: 0; font-size: 0.75rem; line-height: 1.5; color: rgba(252, 252, 252, 0.5); }
.jd-footer__credit { font-size: 0.8125rem; }
.jd-footer__credit a, .jd-footer__credit strong { color: var(--text-light); font-weight: 600; }
.jd-footer__credit a { text-decoration: none; }
.jd-footer__credit a:hover { text-decoration: underline; }
.jd-footer__vibe {
    font-weight: 700;
    background: linear-gradient(90deg, var(--vermelho-jd-accent) 0%, #E38B87 25%, var(--vermelho-jd-accent) 50%, #E38B87 75%, var(--vermelho-jd-accent) 100%);
    background-size: 300% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    animation: jd-vibe-gradient 6s linear infinite;
}
@keyframes jd-vibe-gradient {
    0%   { background-position: 0% 50%; }
    100% { background-position: 300% 50%; }
}
@media (prefers-reduced-motion: reduce) {
    .jd-footer__vibe { animation: none; }
}
.jd-footer__copy a { color: rgba(252, 252, 252, 0.7); text-decoration: underline; }
/* linha abaixo do copyright: links legais à esquerda, crédito do dev à direita */
.jd-footer__bottom-row { display: flex; flex-wrap: wrap; gap: 0.5rem 1.5rem; justify-content: space-between; align-items: center; }
.jd-footer__legal, .jd-footer__oab { margin: 0; }
@media (max-width: 860px) {
    .jd-footer__grid { grid-template-columns: 1fr 1fr; }
    .jd-footer__col:first-child { grid-column: 1 / -1; }
}
@media (max-width: 560px) {
    .jd-footer__grid { grid-template-columns: 1fr; gap: 2.25rem; padding-bottom: 1.5rem; }
    .jd-footer__tagline { max-width: none; }
    .jd-footer__bottom { padding-bottom: 80px; }
    .jd-footer__bottom-inner { align-items: center; text-align: center; }
    .jd-footer__bottom-row { flex-direction: column; align-items: center; text-align: center; }
    .jd-footer__legal { justify-content: center; }
}

/* --- WhatsApp FAB -------------------------------------------- */
.jd-whatsapp-fab {
    position: fixed;
    right: clamp(1rem, 3vw, 2rem);
    bottom: clamp(1rem, 3vw, 2rem);
    width: 58px; height: 58px;
    background: #25D366;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    box-shadow: 0 6px 20px rgba(37, 211, 102, 0.4);
    z-index: 9999;
    transition: transform var(--trans-fast);
}
.jd-whatsapp-fab svg { width: 30px; height: 30px; fill: #FFFFFF; }
.jd-whatsapp-fab:hover { transform: scale(1.08); }
/* o drawer mobile cobre o FAB do WhatsApp quando aberto */
.jd-menu-open .jd-whatsapp-fab { opacity: 0; visibility: hidden; pointer-events: none; }

/* Atalho flutuante para o painel WordPress (somente admin) */
.jd-admin-fab {
    position: fixed;
    left: clamp(1rem, 3vw, 2rem);
    bottom: clamp(1rem, 3vw, 2rem);
    width: 46px; height: 46px;
    border-radius: 50%;
    background: #ffffff;
    color: #1d2327;
    display: flex; align-items: center; justify-content: center;
    box-shadow: 0 6px 20px -6px rgba(0, 0, 0, 0.45);
    border: 1px solid #e2ddd4;
    z-index: 9998;
    transition: transform 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
}
.jd-admin-fab:hover { transform: translateY(-2px) scale(1.06); color: var(--vermelho-jd); box-shadow: 0 10px 26px -8px rgba(0, 0, 0, 0.5); }
.jd-admin-fab svg { width: 26px; height: 26px; }
.jd-menu-open .jd-admin-fab { opacity: 0; visibility: hidden; pointer-events: none; }

/* ============================================================
   SCROLL REVEAL
   ============================================================ */
.jd-reveal { opacity: 0; transform: translateY(28px); transition: opacity 0.7s ease, transform 0.7s cubic-bezier(0.22, 1, 0.36, 1); }
.jd-reveal.is-visible { opacity: 1; transform: none; }
.jd-reveal--left { transform: translateX(-28px); }
.jd-reveal--right { transform: translateX(28px); }
.jd-reveal--left.is-visible,
.jd-reveal--right.is-visible { transform: none; }

@media (prefers-reduced-motion: reduce) {
    .jd-reveal, [data-hero-animate] { opacity: 1 !important; transform: none !important; transition: none !important; }
    html { scroll-behavior: auto; }
}

/* ============================================================
   RESPONSIVO
   ============================================================ */
@media (max-width: 1024px) {
    .jd-grid-3 { grid-template-columns: repeat(2, 1fr); }
    .jd-numeros__grid { grid-template-columns: repeat(2, 1fr); gap: 2.75rem 0; }
    .jd-numeros .jd-numero-card { border-left: none; }
    .jd-numeros .jd-numero-card:nth-child(even) { border-left: 1px solid var(--border-accent); }
    .jd-archive-grid { grid-template-columns: repeat(2, 1fr); }
    .jd-formacao-grid { grid-template-columns: repeat(2, 1fr); }
    .jd-single__layout { grid-template-columns: 1fr; }
    .jd-single__sidebar { position: static; }
}

@media (max-width: 900px) {
    .jd-nav, .jd-header__cta { display: none; }
    .jd-hamburger { display: flex; }
    /* logo largo (banner) não pode empurrar o hambúrguer pra fora da tela */
    .jd-header__logo img { height: auto; max-width: min(230px, 52vw); }
}

@media (max-width: 768px) {
    /* Hero full-width no mobile — overlay mais forte p/ legibilidade (direita) */
    .jd-hero { min-height: 88vh; }
    .jd-hero__overlay {
        background:
            linear-gradient(to left, rgba(8,2,2,0.8) 0%, rgba(8,2,2,0.5) 55%, rgba(8,2,2,0.25) 100%),
            radial-gradient(ellipse 70% 55% at 0% 100%, rgba(134, 38, 37,0.55) 0%, rgba(134, 38, 37,0) 60%),
            radial-gradient(ellipse 70% 55% at 100% 100%, rgba(134, 38, 37,0.55) 0%, rgba(134, 38, 37,0) 60%);
    }
    .jd-hero__content { padding-left: 1.5rem; }
    .jd-hero__signature { bottom: clamp(4rem, 10vh, 5.5rem); }
    .jd-hero__signature-name { font-size: 1.2rem; }

    .jd-grid-3,
    .jd-archive-grid,
    .jd-formacao-grid,
    .jd-recon-grid { grid-template-columns: 1fr; }

    .jd-sobre-split { grid-template-columns: 1fr; }
    .jd-sobre__image-wrap { order: -1; max-width: 460px; }
    .jd-sobre__image-wrap::before { display: none; }

    .jd-contato-layout { grid-template-columns: 1fr; }
    .jd-form__row { grid-template-columns: 1fr; gap: 0; }

    .jd-crimes-grid { grid-template-columns: 1fr; }

    /* Timeline left-aligned no mobile */
    .jd-timeline::before { left: 7px; }
    .jd-timeline__item,
    .jd-timeline__item:nth-child(odd),
    .jd-timeline__item:nth-child(even) {
        width: 100%; left: 0;
        text-align: left;
        padding: 0 0 2rem 2.25rem;
    }
    .jd-timeline__item:nth-child(odd) .jd-timeline__dot,
    .jd-timeline__item:nth-child(even) .jd-timeline__dot { left: 0; right: auto; }
    .jd-timeline__item:nth-child(odd) .jd-timeline__card { flex-direction: row; border-right: none; border-left: 3px solid var(--dourado-jd); }
    .jd-timeline__item:nth-child(odd) .jd-timeline__photo { margin-right: 0; margin-left: calc(-1.5rem - 3px - 49.5px); }
}

.jd-artigos__more { display: none; }
@media (max-width: 600px) {
    .jd-numeros__grid { grid-template-columns: 1fr; gap: 2rem; }
    .jd-numeros .jd-numero-card,
    .jd-numeros .jd-numero-card:nth-child(even) { border-left: none; }
    .jd-hero__actions .btn-primary,
    .jd-hero__actions .btn-outline-dark { width: 100%; }
    /* Publicações: botão "Ver todos" vai para o fim da lista, centralizado */
    .jd-artigos__btn-top { display: none; }
    .jd-artigos__more { display: flex; justify-content: center; margin-top: 2.5rem; }
}

/* ============================================================
   PÁGINA PUBLICAÇÕES — lista de livros/artigos
   ============================================================ */
.jd-pub-list {
    display: grid;
    gap: clamp(1rem, 2vw, 1.5rem);
    max-width: 980px;
    margin-inline: auto;
}
.jd-pub-card {
    display: grid;
    grid-template-columns: 132px 1fr;
    gap: clamp(1.25rem, 3vw, 2rem);
    align-items: center;
    padding: clamp(1.1rem, 2.2vw, 1.6rem);
    background: var(--bg-white);
    border: 1px solid var(--border-light);
    border-radius: var(--radius-lg);
    color: inherit;
    transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1),
                box-shadow 0.3s ease, border-color 0.3s ease;
}
.jd-pub-card--link:hover {
    transform: translateY(-3px);
    border-color: var(--dourado-jd);
    box-shadow: 0 18px 40px -22px rgba(134, 38, 37, 0.45);
}
.jd-pub-card--link:focus-visible { outline: 2px solid var(--dourado-jd); outline-offset: 3px; }
.jd-pub-card__media {
    aspect-ratio: 3 / 4;
    border-radius: var(--radius);
    overflow: hidden;
    background: linear-gradient(150deg, rgba(216, 160, 76, 0.14), rgba(134, 38, 37, 0.08));
    border: 1px solid var(--border-gold);
    display: grid;
    place-items: center;
}
.jd-pub-card__media img { width: 100%; height: 100%; object-fit: cover; }
.jd-pub-card__media--cover { padding: 0.3rem; background: var(--bg-cream); }
.jd-pub-card__media--cover .jd-pub-card__cover { object-fit: contain; }
.jd-pub-card__zoom { position: relative; cursor: zoom-in; }
.jd-pub-card__zoom:focus-visible { outline: 3px solid var(--dourado-jd); outline-offset: 3px; }
.jd-pub-card__zoom-icon {
    position: absolute;
    right: 0.35rem;
    bottom: 0.35rem;
    display: grid;
    place-items: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--vermelho-jd);
    color: var(--text-light);
    box-shadow: var(--shadow-sm);
    pointer-events: none;
}
.jd-pub-card__zoom:hover .jd-pub-card__zoom-icon { background: var(--vermelho-jd-dark); }
.jd-pub-card__placeholder { color: var(--vermelho-jd); opacity: 0.55; }
.jd-pub-card__placeholder svg { width: 34px; height: 34px; }
.jd-pub-card__title {
    font-family: var(--font-heading);
    font-size: clamp(1.05rem, 1.9vw, 1.3rem);
    font-weight: 600;
    line-height: 1.35;
    color: var(--vermelho-jd);
    margin-bottom: 0.5rem;
}
.jd-pub-card__text { color: var(--text-secondary); font-size: 0.975rem; line-height: 1.6; }
.jd-pub-card__link {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    margin-top: 0.9rem;
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--dourado-jd-escuro);
}
.jd-pub-card--link:hover .jd-pub-card__link { color: var(--vermelho-jd); }

/* selo do arquivo + botão de download */
.jd-pub-card__media--file { aspect-ratio: 3 / 4; }
.jd-pub-card__media--file .jd-pub-card__placeholder {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.35rem;
    opacity: 0.7;
}
.jd-pub-card__ext {
    font-family: var(--font-heading);
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.08em;
}
.jd-pub-card__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.6rem 1.25rem;
    margin-top: 0.9rem;
}
.jd-pub-card__actions .jd-pub-card__link { margin-top: 0; }
.jd-pub-card__download {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.55rem 1rem;
    border-radius: var(--radius);
    background: var(--vermelho-jd);
    color: var(--text-light);
    font-size: 0.875rem;
    font-weight: 600;
    transition: background var(--trans-fast), transform var(--trans-fast);
}
.jd-pub-card__download:hover { background: var(--vermelho-jd-dark); transform: translateY(-1px); }
.jd-pub-card__download:focus-visible { outline: 2px solid var(--dourado-jd); outline-offset: 2px; }
.jd-pub-card__size { font-weight: 500; opacity: 0.8; }

@media (max-width: 600px) {
    .jd-pub-card { grid-template-columns: 92px 1fr; gap: 1rem; }
}

/* grupos por categoria + card compacto (sem capa) */
.jd-pub-group + .jd-pub-group { margin-top: clamp(2.5rem, 5vw, 4rem); }
.jd-pub-group__title {
    max-width: 980px;
    margin: 0 auto clamp(1.25rem, 2.5vw, 1.75rem);
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--border-gold);
    font-family: var(--font-heading);
    font-size: 0.8125rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--dourado-jd-escuro);
}
.jd-pub-card--compact { grid-template-columns: 1fr; padding: clamp(0.9rem, 1.8vw, 1.15rem) clamp(1rem, 2vw, 1.4rem); }
.jd-pub-card--compact .jd-pub-card__title { font-size: 1.0rem; margin-bottom: 0.25rem; }
.jd-pub-card--compact .jd-pub-card__text { font-size: 0.9rem; color: var(--text-muted); }

/* ============================================================
   GALERIA (carrossel 3-por-vez) + LIGHTBOX
   ============================================================ */
/* A galeria vem logo depois do texto: o respiro das duas seções somava ~220px. */
.jd-gal-section { padding-top: clamp(1.5rem, 3vw, 2.5rem); }
.jd-section:has(+ .jd-gal-section) { padding-bottom: clamp(2rem, 4vw, 3rem); }
.jd-gal-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: clamp(1.25rem, 2.5vw, 1.75rem);
}
.jd-gal { --gap: clamp(0.75rem, 1.6vw, 1.25rem); }
.jd-gal__viewport { overflow: hidden; }
.jd-gal__track {
    display: flex;
    gap: var(--gap);
    transition: transform 0.55s cubic-bezier(0.22, 1, 0.36, 1);
    will-change: transform;
}
.jd-gal__slide { flex: 0 0 calc((100% - var(--gap) * 2) / 3); }
.jd-gal__item {
    position: relative;
    display: block;
    border-radius: var(--radius-lg);
    overflow: hidden;
    border: 1px solid var(--border-light);
    background: var(--bg-off);
}
.jd-gal__item img {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}
.jd-gal__item:hover img { transform: scale(1.05); }
.jd-gal__item:focus-visible { outline: 2px solid var(--dourado-jd); outline-offset: 3px; }
.jd-gal__zoom {
    position: absolute;
    inset: auto 0.75rem 0.75rem auto;
    width: 38px; height: 38px;
    display: grid; place-items: center;
    border-radius: 50%;
    background: rgba(134, 38, 37, 0.88);
    color: var(--text-light);
    opacity: 0;
    transform: translateY(6px);
    transition: opacity var(--trans-fast), transform var(--trans-fast);
}
.jd-gal__zoom svg { width: 18px; height: 18px; }
.jd-gal__item:hover .jd-gal__zoom,
.jd-gal__item:focus-visible .jd-gal__zoom { opacity: 1; transform: translateY(0); }
.jd-gal__dots { display: flex; justify-content: center; gap: 0.45rem; margin-top: 1.25rem; }
.jd-gal__dots button {
    width: 8px; height: 8px;
    border-radius: 50%;
    background: var(--border-accent);
    transition: all var(--trans-fast);
}
.jd-gal__dots button.is-active { width: 24px; border-radius: 999px; background: var(--vermelho-jd); }

@media (max-width: 900px) { .jd-gal__slide { flex-basis: calc((100% - var(--gap)) / 2); } }
@media (max-width: 600px) { .jd-gal__slide { flex-basis: 100%; } }

/* --- Lightbox --- */
.jd-lightbox {
    position: fixed;
    inset: 0;
    z-index: 1300;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: clamp(0.5rem, 2vw, 1.5rem);
    padding: clamp(1rem, 4vw, 3rem);
    background: rgba(10, 2, 2, 0.92);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.25s ease;
}
/* [hidden] do JS não vence display:flex sozinho — precisa declarar aqui (mesma pegadinha do .jd-readmore) */
.jd-lightbox[hidden] { display: none; }
.jd-lightbox.is-open { opacity: 1; pointer-events: auto; }
.jd-lightbox__figure { max-width: min(1100px, 92vw); max-height: 86vh; margin: 0; text-align: center; }
.jd-lightbox__figure img {
    max-width: 100%;
    max-height: 78vh;
    width: auto;
    border-radius: var(--radius-lg);
    box-shadow: 0 30px 70px -30px rgba(0, 0, 0, 0.9);
}
.jd-lightbox__figure figcaption {
    margin-top: 0.9rem;
    color: rgba(252, 252, 252, 0.75);
    font-size: 0.9375rem;
}
.jd-lightbox__close,
.jd-lightbox__nav {
    flex: 0 0 auto;
    display: grid;
    place-items: center;
    width: 44px; height: 44px;
    border-radius: 50%;
    border: 1px solid rgba(252, 252, 252, 0.28);
    background: rgba(255, 255, 255, 0.08);
    color: var(--text-light);
    transition: background var(--trans-fast), border-color var(--trans-fast);
}
.jd-lightbox__close { position: absolute; top: clamp(1rem, 3vw, 2rem); right: clamp(1rem, 3vw, 2rem); }
.jd-lightbox__close:hover,
.jd-lightbox__nav:hover { background: var(--vermelho-jd); border-color: var(--vermelho-jd); }
.jd-lightbox__close svg, .jd-lightbox__nav svg { width: 20px; height: 20px; }

@media (prefers-reduced-motion: reduce) {
    .jd-gal__track, .jd-lightbox { transition: none; }
}

/* ============================================================
   LGPD — barra de consentimento
   ============================================================ */
.jd-consent {
    position: fixed;
    left: 50%;
    bottom: clamp(0.75rem, 2vw, 1.5rem);
    z-index: 10020;
    width: min(880px, calc(100% - 2rem));
    max-height: calc(100dvh - 2rem);
    overflow-y: auto;
    transform: translate(-50%, 1.5rem);
    opacity: 0;
    transition: opacity 0.3s ease, transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}
.jd-consent.is-visible { opacity: 1; transform: translate(-50%, 0); }
.jd-consent[hidden] { display: none; }
.jd-consent-open .jd-whatsapp-fab, .jd-consent-open .jd-admin-fab { visibility: hidden; pointer-events: none; }
.jd-consent__inner {
    display: flex;
    align-items: center;
    gap: clamp(1rem, 3vw, 2rem);
    flex-wrap: wrap;
    padding: clamp(1rem, 2.2vw, 1.4rem) clamp(1.1rem, 2.5vw, 1.75rem);
    background: var(--bg-white);
    border: 1px solid var(--border-light);
    border-radius: var(--radius-lg);
    box-shadow: 0 24px 60px -28px rgba(15, 2, 2, 0.45);
}
.jd-consent__body { flex: 1 1 340px; }
.jd-consent__title {
    font-family: var(--font-heading);
    font-size: 1rem;
    font-weight: 600;
    color: var(--vermelho-jd);
    margin-bottom: 0.3rem;
}
.jd-consent__text {
    font-size: 0.875rem;
    line-height: 1.55;
    color: var(--text-secondary);
    margin: 0;
}
.jd-consent__links { margin-top: 0.5rem; font-size: 0.8125rem; display: flex; gap: 0.5rem; flex-wrap: wrap; }
.jd-consent__links a { color: var(--vermelho-jd); text-decoration: underline; text-underline-offset: 2px; }
.jd-consent__actions { display: flex; gap: 0.6rem; flex: 0 0 auto; flex-wrap: wrap; }
.jd-consent__btn {
    font-family: var(--font-body);
    font-size: 0.875rem;
    font-weight: 600;
    padding: 0.6rem 1.4rem;
    border-radius: var(--radius);
    cursor: pointer;
    border: 1px solid transparent;
    transition: background var(--trans-fast), color var(--trans-fast), border-color var(--trans-fast);
}
.jd-consent__btn--solid { background: var(--vermelho-jd); color: var(--text-light); }
.jd-consent__btn--solid:hover { background: var(--vermelho-jd-dark); }
.jd-consent__btn--ghost { background: transparent; color: var(--text-secondary); border-color: var(--border-light); }
.jd-consent__btn--ghost:hover { border-color: var(--vermelho-jd); color: var(--vermelho-jd); }
.jd-consent__btn:focus-visible { outline: 2px solid var(--vermelho-jd); outline-offset: 2px; }

/* rodapé: linha de links legais */
.jd-footer__legal { display: flex; gap: 1rem; flex-wrap: wrap; font-size: 0.8125rem; }
.jd-footer__legal a, .jd-footer__legal button { color: var(--text-light); opacity: 0.75; }
.jd-footer__legal button { font: inherit; padding: 0; text-align: inherit; }
.jd-footer__legal a:hover, .jd-footer__legal button:hover { opacity: 1; color: var(--dourado-jd); }
.jd-footer__legal button:focus-visible { outline: 2px solid var(--dourado-jd); outline-offset: 4px; }

@media (max-width: 640px) {
    .jd-consent__actions { width: 100%; }
    .jd-consent__btn { flex: 1 1 auto; }
}
@media (prefers-reduced-motion: reduce) {
    .jd-consent { transition: none; }
}
