/* SynthVision Hero 3D — estilos do bloco.
   Tudo escopado em .sv-hero3d para não vazar no tema.
   Tokens do site quando existirem (--svx-*), senão fallback próprio. */

.sv-hero3d {
    --sv-hero3d-bg: #07070a;
    --sv-hero3d-fg: var(--svx-text, #f2f2f4);
    --sv-hero3d-mut: var(--svx-muted-hi, #9a9aa6);
    --sv-hero3d-ln: rgba(255, 255, 255, 0.09);
    --sv-hero3d-accent: #ff4d1c;
    --sv-hero3d-display: var(--svx-font-display, 'Unbounded', system-ui, sans-serif);
    --sv-hero3d-body: var(--svx-font-body, Inter, system-ui, sans-serif);
    --sv-hero3d-mono: var(--svx-font-mono, 'JetBrains Mono', ui-monospace, monospace);
    --sv-hero3d-h: 100vh;

    position: relative;
    display: block;
    height: var(--sv-hero3d-h);
    min-height: 680px;
    width: 100%;
    overflow: hidden;
    /* Halo âmbar atrás da cena (v3) — a base escura continua no último stop. */
    background: radial-gradient(ellipse 70% 80% at 80% -5%, #4d3322 0%, #1c1511 38%, var(--sv-hero3d-bg) 75%);
    color: var(--sv-hero3d-fg);
    font-family: var(--sv-hero3d-body);
    isolation: isolate;
}

/* Grain + vinheta sobre a cena e sob o texto (mesmo z-index 3 da v3:
   o conteúdo fica em 5, o dock em 6 e a caixa delimitadora em 4). */
.sv-hero3d::before,
.sv-hero3d::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 3;
    pointer-events: none;
}

.sv-hero3d::before {
    opacity: 0.09;
    mix-blend-mode: overlay;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

.sv-hero3d::after {
    background: radial-gradient(ellipse 85% 85% at 62% 42%, transparent 45%, rgba(0, 0, 0, 0.6) 100%);
}

/* ── Cena ─────────────────────────────────────────────────── */
.sv-hero3d__canvas {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    touch-action: pan-y;
}

/* ── Coluna de texto ──────────────────────────────────────── */
.sv-hero3d__content {
    position: relative;
    z-index: 5;
    box-sizing: border-box;
    max-width: var(--svx-max-w, 1200px);
    margin: 0 auto;
    padding: 150px 3vw 0;
    pointer-events: none;
}

.sv-hero3d__content > * {
    pointer-events: auto;
}

.sv-hero3d__kicker {
    font: 500 11px/1.6 var(--sv-hero3d-mono);
    letter-spacing: 0.2em;
    color: var(--sv-hero3d-accent);
}

.sv-hero3d__content h1 {
    font: 800 clamp(28px, 4.2vw, 60px)/1.1 var(--sv-hero3d-display);
    margin: 22px 0 24px;
    max-width: 11.5em;
    letter-spacing: -0.01em;
    color: var(--sv-hero3d-fg);
}

.sv-hero3d__lead {
    max-width: 30em;
    margin: 0;
    color: #c4c4cc;
    font-size: clamp(15px, 1.3vw, 18px);
}

.sv-hero3d__quote {
    border-left: 2px solid var(--sv-hero3d-accent);
    padding-left: 14px;
    font: 600 15px/1.5 var(--sv-hero3d-display);
    margin: 26px 0;
}

.sv-hero3d__btns {
    display: flex;
    gap: 14px;
    flex-wrap: wrap;
}

.sv-hero3d__btn {
    font: 500 15px/1 var(--sv-hero3d-body);
    padding: 16px 26px;
    border-radius: 6px;
    border: 1px solid var(--sv-hero3d-ln);
    color: var(--sv-hero3d-fg);
    background: rgba(16, 16, 21, 0.9);
    text-decoration: none;
    transition: border-color 0.25s, transform 0.25s;
}

.sv-hero3d__btn:hover {
    border-color: var(--sv-hero3d-accent);
    transform: translateY(-1px);
}

.sv-hero3d__btn--primary {
    background: var(--sv-hero3d-accent);
    border-color: var(--sv-hero3d-accent);
    color: #fff;
    box-shadow: 0 8px 28px color-mix(in srgb, var(--sv-hero3d-accent) 32%, transparent);
}

/* ── Stats ────────────────────────────────────────────────── */
.sv-hero3d__stats {
    display: grid;
    grid-template-columns: repeat(4, auto);
    margin-top: 44px;
    max-width: 620px;
    border-top: 1px solid var(--sv-hero3d-ln);
}

.sv-hero3d__stats > div {
    padding: 20px 18px 0 0;
    margin-right: 18px;
    border-right: 1px solid var(--sv-hero3d-ln);
}

.sv-hero3d__stats > div:last-child {
    border-right: 0;
}

.sv-hero3d__stats b {
    font: 800 18px/1.3 var(--sv-hero3d-display);
    display: block;
}

.sv-hero3d__stats small {
    font: 400 10px/1.7 var(--sv-hero3d-mono);
    color: var(--sv-hero3d-mut);
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

/* ── Caixa delimitadora (anotação 3D → DOM) ───────────────── */
.sv-hero3d__bbox {
    position: absolute;
    z-index: 4;
    border: 2px solid #888;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.4s, border-color 0.4s;
}

.sv-hero3d--nobox .sv-hero3d__bbox {
    display: none;
}

.sv-hero3d__bbox em {
    position: absolute;
    left: -2px;
    bottom: 100%;
    margin-bottom: 2px;
    padding: 6px 10px;
    background: #888;
    color: #0a0a0a;
    font: 500 11px/1.4 var(--sv-hero3d-mono);
    white-space: nowrap;
    transition: background 0.4s;
    font-style: normal;
}

.sv-hero3d__bbox em b {
    display: block;
    font-size: 13px;
}

/* ── Dock: legenda + passos ───────────────────────────────── */
.sv-hero3d__dock {
    position: absolute;
    z-index: 6;
    right: max(3vw, 24px);
    bottom: max(4vh, 24px);
    width: min(420px, calc(100% - 48px));
}

.sv-hero3d__cap {
    font: 500 14px/1.5 var(--sv-hero3d-body);
    margin: 0 0 4px;
    color: var(--sv-hero3d-fg);
}

.sv-hero3d__cap2 {
    color: var(--sv-hero3d-mut);
    font-size: 12.5px;
    margin: 0 0 14px;
    max-width: 34em;
    min-height: 3.2em;
}

.sv-hero3d__chips {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 6px;
}

.sv-hero3d__chip {
    font: 500 12px/1.3 var(--sv-hero3d-mono);
    color: var(--sv-hero3d-mut);
    background: rgba(16, 16, 21, 0.85);
    border: 1px solid var(--sv-hero3d-ln);
    padding: 10px 6px;
    border-radius: 6px;
    cursor: pointer;
    text-align: center;
    transition: color 0.2s, border-color 0.2s;
}

.sv-hero3d__chip:hover {
    color: var(--sv-hero3d-fg);
}

.sv-hero3d__chip:focus-visible {
    outline: 2px solid var(--sv-hero3d-accent);
    outline-offset: 2px;
}

.sv-hero3d__chip.is-on {
    color: #fff;
    border-color: var(--sv-hero3d-accent);
}

.sv-hero3d__hint {
    font: 400 11px/1.5 var(--sv-hero3d-mono);
    color: var(--sv-hero3d-mut);
    margin: 10px 0 0;
}

/* ── Sem WebGL: esconde a cena e explica ──────────────────── */
.sv-hero3d--no-webgl .sv-hero3d__canvas,
.sv-hero3d--no-webgl .sv-hero3d__bbox,
.sv-hero3d--no-webgl .sv-hero3d__chips,
.sv-hero3d--no-webgl .sv-hero3d__hint {
    display: none;
}

.sv-hero3d__fallback {
    position: absolute;
    z-index: 6;
    left: max(3vw, 24px);
    right: max(3vw, 24px);
    bottom: max(4vh, 24px);
    max-width: 420px;
    margin: 0;
    color: var(--sv-hero3d-mut);
    font-size: 13px;
}

.sv-hero3d__fallback[hidden] {
    display: none;
}

.sv-hero3d__fallback span {
    display: block;
    margin-top: 2px;
    font-size: 12px;
}

/* ── Mobile ───────────────────────────────────────────────── */
@media (max-width: 800px) {
    .sv-hero3d {
        min-height: 760px;
        height: auto;
    }

    .sv-hero3d__canvas {
        height: 100%;
    }

    /* A coluna de texto é o único fluxo do bloco: reserva o rodapé do dock
       (legenda + passos) para os CTAs nunca ficarem embaixo dos chips. */
    .sv-hero3d__content {
        padding: 110px 24px 190px;
    }

    /* Scrim curto no topo: o modelo passa atrás do texto e sem isso o h1
       perde contraste nos passos coloridos (anotação). */
    .sv-hero3d__content::before {
        content: '';
        position: absolute;
        top: 0;
        left: -24px;
        right: -24px;
        bottom: 34%;
        z-index: -1;
        background: linear-gradient(180deg, rgba(7, 7, 10, 0.94) 0%, rgba(7, 7, 10, 0.78) 60%, rgba(7, 7, 10, 0) 100%);
        pointer-events: none;
    }

    .sv-hero3d__content h1 {
        font-size: 27px;
    }

    .sv-hero3d__lead {
        font-size: 15px;
    }

    .sv-hero3d__stats,
    .sv-hero3d__cap2 {
        display: none;
    }

    .sv-hero3d__dock {
        left: 24px;
        right: 24px;
        width: auto;
        bottom: 24px;
    }

    /* 4 colunas (como a referência): 1 linha de chips mantém o dock baixo. */
    .sv-hero3d__chip {
        font-size: 10.5px;
        padding: 9px 4px;
    }

    .sv-hero3d__hint {
        margin-top: 8px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .sv-hero3d__btn,
    .sv-hero3d__bbox,
    .sv-hero3d__chip {
        transition: none;
    }
}

/* ═══════════════════════════════════════════════════════════════
   FULL-BLEED — o bloco nasce dono da largura toda.

   O tema monta .entry-content como coluna constrained (900px com
   margin auto !important) dentro de main com padding inline de 80px:
   o bloco, como filho direto, ficava preso nos 900px. O canvas-hero
   escapava por regras equivalentes no sv-global.css; agora o escape
   é DO PRÓPRIO bloco (css só carrega quando o bloco existe na página).
   Espelha, em valores, o que produção já fazia no canvas (PT e EN).
   ═══════════════════════════════════════════════════════════════ */
main:has(> .entry-content > .sv-hero3d) {
    padding: 0 !important;
}

main:has(> .entry-content > .sv-hero3d) > .entry-content {
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
}

/* 100vw − barra de rolagem (--svx-sbw, medida pelo plugin global-css):
   largura exata da viewport, sem overflow horizontal. !important + a
   especificidade do :has vencem a regra constrained do tema
   (max-width: 900px + margin auto !important) em qualquer ordem de
   impressão da cascata.

   margin-top/padding-top = FOLGA DA BARRA (--svx-nav-gap, 12px):
   o sv-global.css desce a página inteira com `body { padding-top }`
   para a pílula flutuar 12px do topo. Com o hero chapado (#0A0A0F) esse
   vão era invisível; com a cena 3D + halo âmbar ele vira uma faixa de
   12px acima do hero (medido: y=1..11 = body, hero top=12). O hero SOBE
   a folga (margin-top negativo) e devolve o mesmo espaço em padding-top:
   fundo, grão, vinheta e o canvas (inset:0 = caixa de padding) cobrem o
   vão, e o conteúdo interno fica na MESMA altura — a distância da
   pílula ao texto não muda (medido: kicker/h1 idênticos antes e depois). */
main:has(> .entry-content > .sv-hero3d) > .entry-content > .sv-hero3d {
    width: calc(100vw - var(--svx-sbw, 0px)) !important;
    max-width: none !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    margin-top: calc(-1 * var(--svx-nav-gap, 0px)) !important;
    padding-top: var(--svx-nav-gap, 0px) !important;
}
