/* ==========================================================================
   OnNexx Fibra — Main stylesheet
   Tema escuro premium · azul + laranja neon · glass · smoke gradient
   ========================================================================== */

:root {
    --bg-0: #05070f;
    --bg-1: #0a0d1a;
    --bg-2: #0f1424;
    --bg-3: #141a2e;
    --surface: rgba(20, 26, 46, 0.55);
    --surface-strong: rgba(20, 26, 46, 0.85);
    --border: rgba(255, 255, 255, 0.08);
    --border-strong: rgba(255, 255, 255, 0.14);

    --text: #eef2ff;
    --text-dim: #a7afc7;
    --text-mute: #6b7390;

    --brand-blue: #2563ff;
    --brand-blue-2: #5b8dff;
    --brand-orange: #ff6b00;
    --brand-orange-2: #ff9a3c;
    --brand-pink: #ff2e63;
    --brand-purple: #7a2dff;

    --glow-orange: 0 0 24px rgba(255, 107, 0, .55), 0 0 80px rgba(255, 107, 0, .22);
    --glow-blue:   0 0 24px rgba(37, 99, 255, .55), 0 0 80px rgba(37, 99, 255, .22);

    --shadow-lg: 0 30px 60px -20px rgba(0,0,0,.6), 0 10px 20px -10px rgba(0,0,0,.4);
    --shadow-md: 0 10px 30px -10px rgba(0,0,0,.5);

    --radius-sm: 10px;
    --radius: 16px;
    --radius-lg: 22px;

    --container: 1280px;
    --nav-h: 76px;

    --ease: cubic-bezier(.22, 1, .36, 1);

    /* =========================================================
       Z-INDEX LAYER SYSTEM — fonte única de verdade de camadas
       ========================================================= */
    --z-bg: 0;              /* efeitos visuais de fundo (bg-smoke, grid) */
    --z-deco: 1;            /* decorativos dentro de seções (particles, speed-ring) */
    --z-content: 10;        /* conteúdo padrão das seções (main, footer) */
    --z-hero-inner: 15;     /* texto do hero acima dos decorativos locais */
    --z-nav-mobile: 900;    /* drawer do menu mobile */
    --z-header: 1000;       /* header/sidebar sempre visíveis */
    --z-float: 1100;        /* botões flutuantes (whatsapp) */
    --z-modal: 1500;        /* reserva para modais futuros */
    --z-toast: 1900;        /* reserva para toasts futuros */
}

/* ==== Reset ==== */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html {
    scroll-behavior: smooth;
    -webkit-text-size-adjust: 100%;
    overflow-x: hidden;
    /* Pinta o <html> com a cor de fundo do site — evita "branco" do browser
       aparecer durante overscroll bounce (iOS/Android). Não bloqueia o scroll. */
    background: var(--bg-0);
}

/* Brand do drawer mobile: escondido por padrão (só aparece no media query mobile) */
.site-nav__brand { display: none; }
body {
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background: var(--bg-0);
    color: var(--text);
    line-height: 1.6;
    min-height: 100vh;
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}
img, svg { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button { font: inherit; background: none; border: 0; color: inherit; cursor: pointer; }
ul { list-style: none; }
::selection { background: var(--brand-orange); color: #fff; }

.container { width: 100%; max-width: var(--container); margin: 0 auto; padding: 0 24px; }

/* ==== Background effects ==== */
.bg-effects {
    position: fixed; inset: 0; z-index: var(--z-bg); pointer-events: none; overflow: hidden;
    background:
        radial-gradient(1200px 700px at 85% -10%, rgba(37, 99, 255, .22), transparent 60%),
        radial-gradient(900px 500px at -10% 30%, rgba(122, 45, 255, .15), transparent 60%),
        linear-gradient(180deg, var(--bg-0) 0%, var(--bg-1) 100%);
}
.bg-grid {
    position: absolute; inset: 0;
    background-image:
        linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px);
    background-size: 60px 60px;
    mask-image: radial-gradient(ellipse 70% 60% at 50% 40%, #000 30%, transparent 80%);
}
.bg-smoke {
    position: absolute; width: 680px; height: 680px; border-radius: 50%;
    filter: blur(120px); opacity: .55; will-change: transform;
    animation: drift 22s ease-in-out infinite alternate;
}
.bg-smoke--1 { background: radial-gradient(circle, #ff6b00 0%, transparent 60%); top: -10%; left: -10%; }
.bg-smoke--2 { background: radial-gradient(circle, #7a2dff 0%, transparent 60%); bottom: -15%; right: -8%; animation-delay: -7s; }
.bg-smoke--3 { background: radial-gradient(circle, #ff2e63 0%, transparent 60%); top: 40%; left: 40%; opacity: .35; animation-delay: -14s; }
@keyframes drift {
    0%   { transform: translate3d(0,0,0) scale(1); }
    100% { transform: translate3d(40px, -30px, 0) scale(1.15); }
}

/* ==== Layout wrappers (stay above bg) ==== */
.site-main, .site-footer { position: relative; z-index: var(--z-content); isolation: isolate; }

/* ==== Header — sticky: acompanha o scroll, fica visível enquanto a página rola ==== */
.site-header {
    position: sticky;
    top: 0;
    z-index: var(--z-header);
    height: var(--nav-h);
    background: rgba(5, 7, 15, .85);
    backdrop-filter: blur(16px) saturate(150%);
    -webkit-backdrop-filter: blur(16px) saturate(150%);
    border-bottom: 1px solid transparent;
    transition: background .25s var(--ease), border-color .25s var(--ease), box-shadow .25s var(--ease);
}
.site-header.is-scrolled {
    background: rgba(5, 7, 15, .94);
    border-bottom-color: rgba(255, 255, 255, .08);
    box-shadow: 0 8px 24px -10px rgba(0, 0, 0, .55);
}
.site-header.is-scrolled {
    background: rgba(5, 7, 15, .85);
    border-bottom-color: var(--border);
}
.site-header__inner {
    display: flex; align-items: center; justify-content: space-between;
    height: 100%;
}
.brand {
    display: inline-flex; align-items: center; gap: 10px;
    position: relative;
    padding: 4px 0;
    background: transparent;
    box-shadow: none;
    transition: transform .3s var(--ease);
    isolation: isolate;
}
.brand:hover {
    transform: translateY(-1px);
}
/* Fumaça laranja neon atrás do logo (header).
   2 camadas: blob radial laranja-vermelho + blob secundário rosa-amarelo.
   Animação lenta de drift+pulse pra dar sensação de fumaça/glow vivo. */
.brand::before,
.brand::after {
    content: '';
    position: absolute;
    z-index: -1;
    pointer-events: none;
    border-radius: 50%;
    filter: blur(28px);
    opacity: .7;
    will-change: transform, opacity;
}
.brand::before {
    inset: -18px -28px;
    background: radial-gradient(circle at 30% 50%, rgba(255, 107, 0, .85), rgba(255, 70, 30, .35) 45%, transparent 70%);
    animation: brandSmoke1 7s ease-in-out infinite;
}
.brand::after {
    inset: -10px -16px;
    background: radial-gradient(circle at 70% 50%, rgba(255, 180, 60, .65), rgba(255, 46, 99, .25) 50%, transparent 75%);
    animation: brandSmoke2 9s ease-in-out infinite reverse;
    opacity: .5;
}
@keyframes brandSmoke1 {
    0%, 100% { transform: translate(0, 0) scale(1);    opacity: .55; }
    50%      { transform: translate(6px, -3px) scale(1.08); opacity: .8; }
}
@keyframes brandSmoke2 {
    0%, 100% { transform: translate(0, 0) scale(1);    opacity: .35; }
    50%      { transform: translate(-5px, 3px) scale(1.12); opacity: .65; }
}
@media (prefers-reduced-motion: reduce) {
    .brand::before, .brand::after { animation: none; }
}
/* No drawer mobile (.site-nav__brand) e no footer, NÃO aplicar a fumaça */
.site-footer .brand::before,
.site-footer .brand::after,
.site-nav__brand::before,
.site-nav__brand::after { display: none; }
.brand__logo {
    display: block;
    height: 38px; width: auto;
    max-width: 100%;
    transition: transform .3s var(--ease);
}
.brand:hover .brand__logo { transform: scale(1.02); }
.brand__logo--lg { height: 44px; }
/* Footer: logo direto no fundo escuro do site (sem wrap branco — agora o logo
   já é a versão branca com alpha real, dispensa qualquer container) */
.site-footer .brand {
    padding: 0;
    background: transparent;
    border: 0;
    box-shadow: none;
    transition: transform .2s var(--ease);
}
.site-footer .brand:hover {
    transform: translateY(-2px);
    box-shadow: none;
}
.site-footer .brand__logo {
    filter: drop-shadow(0 4px 14px rgba(255, 107, 0, .18));
}
.brand__mark {
    display: inline-grid; place-items: center;
    width: 40px; height: 40px;
    border-radius: 12px;
    background: linear-gradient(135deg, rgba(255,107,0,.15), rgba(37,99,255,.15));
    border: 1px solid var(--border);
    box-shadow: inset 0 0 20px rgba(255,107,0,.08);
}
.brand__text {
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 700; font-size: 1.25rem; letter-spacing: -.01em;
}
.brand__text-accent {
    background: linear-gradient(90deg, var(--brand-orange), var(--brand-pink));
    -webkit-background-clip: text; background-clip: text; color: transparent;
}

.site-nav { display: flex; align-items: center; gap: 28px; }
.site-nav > ul { display: flex; gap: 28px; }
.site-nav > ul a {
    position: relative;
    font-weight: 500; font-size: .95rem;
    color: var(--text-dim);
    transition: color .2s var(--ease), letter-spacing .25s var(--ease);
    padding: 6px 0;
}
.site-nav > ul a:hover, .site-nav > ul a.is-active { color: var(--text); }
/* Underline animado: cresce de 0 → 100% ao hover */
.site-nav > ul a::after {
    content: ''; position: absolute; left: 0; right: 0; bottom: -2px;
    height: 2px;
    background: linear-gradient(90deg, var(--brand-orange), var(--brand-pink));
    border-radius: 2px;
    transform: scaleX(0);
    transform-origin: center;
    transition: transform .3s var(--ease);
}
.site-nav > ul a:hover::after { transform: scaleX(.6); }
.site-nav > ul a.is-active::after {
    transform: scaleX(1);
    box-shadow: var(--glow-orange);
}

/* Ícones e brand do drawer mobile NÃO aparecem no desktop.
   Os SVGs no markup servem só pra versão mobile (≤720px). */
.site-nav .nav-ic { display: none; }
.site-nav > ul .nav-link--accent { background: none; border: 0; }   /* destaque é só no drawer */

.nav-toggle {
    display: none;
    width: 42px; height: 42px;
    border: 1px solid var(--border);
    border-radius: 10px;
    flex-direction: column; justify-content: center; align-items: center; gap: 4px;
    background: var(--surface);
}
.nav-toggle span {
    display: block; width: 20px; height: 2px; background: var(--text); border-radius: 2px;
    transition: transform .25s var(--ease), opacity .2s var(--ease);
}
.nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

/* ==== Buttons ==== */
.btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 10px;
    padding: 14px 26px;
    border-radius: 999px;
    font-weight: 600; font-size: 1rem;
    line-height: 1;
    flex-shrink: 0;
    transition: transform .25s var(--ease), box-shadow .3s var(--ease), background .3s var(--ease);
    border: 1px solid transparent;
    white-space: nowrap;
}
.btn svg { flex-shrink: 0; }
.btn--sm { padding: 10px 18px; font-size: .9rem; }
.nav-cta { padding: 10px 18px 10px 14px; font-size: .88rem; }
.btn--primary {
    background: linear-gradient(135deg, var(--brand-orange), var(--brand-pink));
    color: #fff;
    box-shadow: 0 10px 30px -5px rgba(255,107,0,.45), inset 0 1px 0 rgba(255,255,255,.25);
}
.btn--primary:hover {
    transform: translateY(-2px);
    box-shadow: 0 15px 40px -5px rgba(255,107,0,.65), var(--glow-orange);
}
.btn--ghost {
    background: rgba(255,255,255,.04);
    border-color: var(--border-strong);
    color: var(--text);
    backdrop-filter: blur(10px);
}
.btn--ghost:hover { background: rgba(255,255,255,.08); transform: translateY(-2px); }
.btn--blue {
    background: linear-gradient(135deg, var(--brand-blue), var(--brand-purple));
    color: #fff;
    box-shadow: 0 10px 30px -5px rgba(37,99,255,.45);
}
.btn--blue:hover { transform: translateY(-2px); box-shadow: var(--glow-blue); }

/* ==== HERO ==== */
.hero {
    position: relative;
    padding: 120px 0 100px;
    overflow: hidden;
}

/* Video background — tratamento premium pra manter texto legível */
.hero__video {
    position: absolute; inset: 0;
    overflow: hidden;
    z-index: var(--z-bg);
    pointer-events: none;
    /* fallback enquanto o vídeo não carrega: poster em dark gradient */
    background: #0a0d1a;
}
.hero__video-el {
    position: absolute;
    top: 50%; left: 50%;
    min-width: 100%; min-height: 100%;
    width: auto; height: auto;
    transform: translate(-50%, -50%);
    object-fit: cover;
    opacity: 0;
    transition: opacity .9s var(--ease);
    /* Dessaturação leve pra não competir com a marca, mas preserva a luz do vídeo */
    filter: saturate(.95) contrast(1.05) brightness(.85);
}
.hero__video-el.is-ready { opacity: 1; }

/* Overlay sutil — só o suficiente pra manter o título legível e dar fade pro rodapé */
.hero__video-overlay {
    position: absolute; inset: 0;
    background:
        radial-gradient(900px 500px at 50% 40%, rgba(10,13,26,0), rgba(10,13,26,.25) 80%),
        linear-gradient(180deg, rgba(5,7,15,.2) 0%, rgba(5,7,15,.35) 60%, rgba(5,7,15,.75) 100%);
}

/* Quando há vídeo, reduz opacidade das partículas canvas pra não ficar overkill */
.hero--video #particles { opacity: .35; }
.hero--video .speed-ring { opacity: .25; }

/* Respeita prefers-reduced-motion: esconde vídeo */
@media (prefers-reduced-motion: reduce) {
    .hero__video-el { display: none; }
}
.hero__inner { position: relative; z-index: var(--z-hero-inner); text-align: center; max-width: 900px; margin: 0 auto; }

/* hero__cols/hero__text mantidos como wrappers transparentes (texto centralizado) */
.hero__cols { display: block; }
.hero__text { text-align: center; }
.hero__badge {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 8px 16px;
    border-radius: 999px;
    background: var(--surface);
    border: 1px solid var(--border-strong);
    font-size: .85rem; color: var(--text-dim);
    backdrop-filter: blur(10px);
    margin-bottom: 28px;
}
.hero__badge-status { display: inline-flex; align-items: center; }
.hero__badge-sep { opacity: .5; margin: 0 6px; }
.hero__clock {
    font-variant-numeric: tabular-nums;
    letter-spacing: .03em;
    font-weight: 600;
    color: var(--brand-orange-2);
    text-align: left;
    text-shadow: 0 0 8px rgba(255, 107, 0, .35);
}
.hero__badge .dot {
    width: 8px; height: 8px; border-radius: 50%;
    background: #26e06b; box-shadow: 0 0 10px #26e06b;
    animation: pulse 1.8s ease-in-out infinite;
}
@keyframes pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50%      { opacity: .6; transform: scale(1.3); }
}

.hero__title {
    font-family: 'Space Grotesk', sans-serif;
    font-size: clamp(2.25rem, 5.2vw, 4.2rem);
    font-weight: 700;
    line-height: 1.05;
    letter-spacing: -.025em;
    margin-bottom: 24px;
}
.hero__title .accent {
    background: linear-gradient(90deg, var(--brand-orange) 0%, var(--brand-orange-2) 50%, var(--brand-pink) 100%);
    -webkit-background-clip: text; background-clip: text; color: transparent;
    filter: drop-shadow(0 0 24px rgba(255,107,0,.25));
}

.hero__subtitle {
    font-size: clamp(1rem, 1.6vw, 1.2rem);
    color: var(--text-dim);
    max-width: 720px; margin: 0 auto 40px;
    line-height: 1.65;
}

.hero__actions {
    display: flex; gap: 16px; justify-content: center; flex-wrap: wrap;
    margin-bottom: 60px;
}

.hero__stats {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px;
    margin-top: 60px;
    padding: 28px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    backdrop-filter: blur(20px);
    box-shadow: var(--shadow-lg);
}
.hero__stat .num {
    font-family: 'Space Grotesk', sans-serif;
    font-size: clamp(1.6rem, 2.5vw, 2.25rem);
    font-weight: 700;
    background: linear-gradient(90deg, var(--brand-orange), var(--brand-orange-2));
    -webkit-background-clip: text; background-clip: text; color: transparent;
}
.hero__stat .label { color: var(--text-dim); font-size: .88rem; margin-top: 4px; }

/* Speed gauge / hero visual */
.hero__visual {
    position: absolute; inset: 0; z-index: var(--z-deco); pointer-events: none;
    display: grid; place-items: center;
    opacity: .7;
}
.speed-ring {
    width: min(720px, 85vw); height: min(720px, 85vw);
    border-radius: 50%;
    background: conic-gradient(from 210deg, rgba(255,107,0,.2), rgba(37,99,255,.15), transparent 75%);
    filter: blur(40px);
    animation: rotate 22s linear infinite;
}
@keyframes rotate { to { transform: rotate(360deg); } }

/* Particles canvas */
#particles {
    position: absolute; inset: 0; z-index: var(--z-deco); pointer-events: none;
}

/* ==== Section primitives ==== */
.section { padding: 100px 0; position: relative; }
.section--compact { padding: 70px 0; }
.section__head { text-align: center; max-width: 720px; margin: 0 auto 60px; }
.section__eyebrow {
    display: inline-block;
    font-size: .8rem; font-weight: 600;
    letter-spacing: .15em; text-transform: uppercase;
    color: var(--brand-orange-2);
    margin-bottom: 14px;
}
.section__title {
    font-family: 'Space Grotesk', sans-serif;
    font-size: clamp(1.75rem, 3.5vw, 2.75rem);
    font-weight: 700; line-height: 1.15; letter-spacing: -.02em;
    margin-bottom: 14px;
}
.section__subtitle { color: var(--text-dim); font-size: 1.05rem; }

/* ==== Cards / features ==== */
/* Section "Por que OnNexx?" — ambient glow no fundo */
.section--features {
    position: relative;
    overflow: hidden;
}
.section--features::before {
    content: '';
    position: absolute;
    top: 10%; left: 50%;
    width: 800px; height: 600px;
    transform: translateX(-50%);
    background: radial-gradient(ellipse at center, rgba(255,107,0,.08) 0%, transparent 60%);
    pointer-events: none;
    z-index: 0;
}
.section--features > .container { position: relative; z-index: 1; }

.features {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 22px;
    /* Conta os filhos pra ordenar a animação de entrada via CSS counter */
    counter-reset: feature;
}
.feature {
    padding: 32px;
    border-radius: var(--radius);
    background: var(--surface);
    border: 1px solid var(--border);
    backdrop-filter: blur(14px);
    transition: transform .3s var(--ease), border-color .3s var(--ease), box-shadow .3s var(--ease);
}
.feature:hover {
    transform: translateY(-6px);
    border-color: rgba(255,107,0,.35);
    box-shadow: 0 20px 50px -15px rgba(255,107,0,.2);
}
.feature__icon {
    width: 56px; height: 56px;
    border-radius: 14px;
    display: grid; place-items: center;
    background: linear-gradient(135deg, rgba(255,107,0,.18), rgba(255,46,99,.12));
    border: 1px solid rgba(255,107,0,.25);
    color: var(--brand-orange-2);
    margin-bottom: 20px;
    box-shadow: inset 0 0 20px rgba(255,107,0,.1);
}

/* ----- variante com imagem real (cards "Por que OnNexx?") -----
   Stack visual:
   1. Card: glass com gradient angular + glow interno laranja sutil
   2. Borda: dupla camada (glow externo + linha sólida) que ganha vida no hover
   3. Mídia: imagem 1:1 com vignette duplo + gradient radial laranja
   4. Body: numeração eyebrow + título grande + descrição confortável
   5. Hover: translateY mais marcado + glow expandido + saturate na foto */
.feature--media {
    --feature-accent: 255, 107, 0;        /* RGB do laranja, fácil ajustar opacity */
    counter-increment: feature;
    position: relative;
    padding: 0;
    overflow: hidden;
    display: flex; flex-direction: column;
    border-radius: 18px;
    border: 1px solid rgba(255,255,255,.06);
    background:
        radial-gradient(120% 60% at 50% -10%, rgba(var(--feature-accent),.12), transparent 60%),
        linear-gradient(180deg, rgba(20,26,46,.65) 0%, rgba(10,13,26,.95) 100%);
    backdrop-filter: blur(14px);
    box-shadow:
        0 1px 0 rgba(255,255,255,.04) inset,
        0 18px 40px -25px rgba(0,0,0,.55);
    transition:
        transform .35s var(--ease),
        border-color .35s var(--ease),
        box-shadow .35s var(--ease);
}
/* Glow externo sutil (drop-shadow no card) */
.feature--media::after {
    content: '';
    position: absolute; inset: -1px;
    border-radius: inherit;
    pointer-events: none;
    background: linear-gradient(135deg, rgba(var(--feature-accent),.0), rgba(var(--feature-accent),.18));
    opacity: 0;
    transition: opacity .4s var(--ease);
    -webkit-mask: linear-gradient(#000, #000) content-box, linear-gradient(#000, #000);
    -webkit-mask-composite: xor;
            mask-composite: exclude;
    padding: 1px;
}
.feature--media:hover {
    transform: translateY(-8px);
    border-color: rgba(var(--feature-accent), .42);
    box-shadow:
        0 1px 0 rgba(255,255,255,.05) inset,
        0 36px 70px -28px rgba(var(--feature-accent), .35),
        0 18px 40px -25px rgba(0,0,0,.65);
}
.feature--media:hover::after { opacity: 1; }

/* ----- Mídia 1:1 com vignette mais elegante ----- */
.feature__media {
    position: relative;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    background: #0a0d1a;
}
/* Vignette duplo: vertical (escurece embaixo p/ texto respirar) + radial sutil */
.feature__media::after {
    content: '';
    position: absolute; inset: 0;
    background:
        radial-gradient(120% 80% at 50% 0%, transparent 55%, rgba(10,13,26,.55) 100%),
        linear-gradient(180deg, rgba(10,13,26,0) 50%, rgba(10,13,26,.85) 100%);
    pointer-events: none;
    z-index: 1;
    transition: opacity .4s var(--ease);
}
/* Glow laranja leve no canto superior — sempre visível, intensifica no hover */
.feature__media::before {
    content: '';
    position: absolute; inset: 0;
    background: radial-gradient(60% 50% at 28% 18%, rgba(var(--feature-accent),.22), transparent 60%);
    opacity: .55;
    transition: opacity .45s var(--ease);
    pointer-events: none; z-index: 2;
    mix-blend-mode: screen;
}
.feature__media img {
    width: 100%; height: 100%;
    object-fit: cover;
    display: block;
    cursor: zoom-in;
    filter: saturate(.95) brightness(.92) contrast(1.04);
    transition: filter .45s var(--ease);
}
.feature--media:hover .feature__media img {
    filter: saturate(1.08) brightness(1.0) contrast(1.06);
}
.feature--media:hover .feature__media::before { opacity: 1; }

/* Vídeo dentro do card (MP4 do mascote no card "+6 anos"): cobre o slot 1:1
   sem zoom-in cursor, mantém vignette + glow. Respeita reduced-motion. */
.feature__media--video { overflow: hidden; }
.feature__video {
    width: 100%; height: 100%;
    object-fit: cover;
    display: block;
    background: #0a0d1a;
    /* Mesmo tratamento de cor da img pra ficar coerente */
    filter: saturate(.95) brightness(.92) contrast(1.04);
    transition: filter .45s var(--ease);
}
.feature--media:hover .feature__video {
    filter: saturate(1.08) brightness(1.0) contrast(1.06);
}
@media (prefers-reduced-motion: reduce) {
    .feature__video { animation: none; }
}

/* Hint visual de "clique pra ampliar" no canto da imagem (só no hover) */
.feature__media .feature__zoom-hint {
    position: absolute; top: 12px; right: 12px;
    width: 34px; height: 34px;
    display: grid; place-items: center;
    border-radius: 50%;
    background: rgba(10, 13, 26, .65);
    backdrop-filter: blur(6px);
    color: #fff;
    opacity: 0;
    transform: translateY(-6px) scale(.9);
    transition: opacity .25s var(--ease), transform .3s var(--ease);
    z-index: 3;
    pointer-events: none;
}
.feature--media:hover .feature__zoom-hint {
    opacity: 1;
    transform: translateY(0) scale(1);
}

/* ----- Badge: logo da marca "perfurando" a borda imagem→texto -----
   É irmão de .feature__media e .feature__body no flex column. Margin-top
   negativo de metade da altura (-28px) faz ele sobrepor a transição entre
   imagem e body. z-index alto pra ficar acima do gradient/vignette. */
.feature__badge {
    position: relative;
    z-index: 4;
    width: 56px; height: 56px;
    margin: -28px 0 0 24px;   /* sobe metade do tamanho + alinha com padding lateral */
    border-radius: 50%;
    display: grid; place-items: center;
    background: linear-gradient(135deg, #1a223d, #0f1424);
    border: 2px solid rgba(var(--feature-accent), .55);
    box-shadow:
        0 12px 28px -8px rgba(var(--feature-accent), .45),
        0 0 0 4px rgba(10, 13, 26, .9),    /* "halo" escuro pra destacar do gradient da imagem */
        inset 0 1px 0 rgba(255, 255, 255, .08);
    overflow: hidden;
    flex-shrink: 0;
    transition: transform .35s var(--ease), border-color .35s var(--ease), box-shadow .35s var(--ease);
}
.feature__badge img {
    width: 36px; height: 36px;
    object-fit: contain;
    display: block;
    filter: drop-shadow(0 1px 2px rgba(0, 0, 0, .4));
}
/* Hover anima o badge: cresce levemente + glow mais intenso */
.feature--media:hover .feature__badge {
    transform: scale(1.08) rotate(-4deg);
    border-color: rgba(var(--feature-accent), .9);
    box-shadow:
        0 16px 36px -8px rgba(var(--feature-accent), .65),
        0 0 0 4px rgba(10, 13, 26, .9),
        inset 0 1px 0 rgba(255, 255, 255, .12);
}

/* ----- Body do card: tipografia mais expressiva + numeração ----- */
.feature__body {
    padding: 36px 24px 26px;   /* +14px no top pra respirar do badge */
    flex: 1;
    display: flex; flex-direction: column;
    gap: 10px;
    position: relative;
    z-index: 2;
}
/* Eyebrow numérico — "01" "02" "03"… gerado via CSS counter */
.feature__body::before {
    content: counter(feature, decimal-leading-zero);
    display: inline-block;
    font-family: 'Space Grotesk', sans-serif;
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .14em;
    color: var(--brand-orange-2);
    text-transform: uppercase;
    /* Linha decorativa que cresce no hover */
    padding-left: 28px;
    position: relative;
}
.feature__body::after {
    content: '';
    position: absolute;
    top: 22px + .55rem;     /* alinha com o eyebrow — fallback abaixo */
    top: calc(22px + .55rem);
    left: 24px;
    width: 20px; height: 2px;
    background: linear-gradient(90deg, var(--brand-orange), var(--brand-orange-2));
    border-radius: 2px;
    transition: width .35s var(--ease);
}
.feature--media:hover .feature__body::after { width: 36px; }

.feature h3 {
    font-family: 'Space Grotesk', sans-serif;
    font-size: 1.18rem;
    font-weight: 700;
    line-height: 1.22;
    letter-spacing: -.015em;
    color: var(--text);
    margin: 2px 0 0;
}
.feature p {
    color: var(--text-dim);
    font-size: .92rem;
    line-height: 1.62;
    margin-bottom: 0;
    /* Limita a 4 linhas pra cards manterem altura semelhante */
    display: -webkit-box;
    -webkit-line-clamp: 4;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Linha decorativa que aparece embaixo do card no hover (CTA implícito) */
.feature--media .feature__body::before {
    margin-bottom: 2px;
}

/* ==== Plan cards ==== */
.plans-tabs {
    display: inline-flex;
    margin: 0 auto 40px;
    padding: 6px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 999px;
    backdrop-filter: blur(14px);
}
.plans-tabs__center { display: flex; justify-content: center; }
.plan-tab {
    padding: 10px 24px;
    border-radius: 999px;
    font-weight: 600; font-size: .92rem;
    color: var(--text-dim);
    transition: background .25s var(--ease), color .25s var(--ease);
    cursor: pointer;
}
.plan-tab.is-active {
    background: linear-gradient(135deg, var(--brand-orange), var(--brand-pink));
    color: #fff;
    box-shadow: 0 6px 20px -5px rgba(255,107,0,.5);
}

.plans {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px;
}
.plan {
    position: relative;
    padding: 32px 28px;
    border-radius: var(--radius-lg);
    background: linear-gradient(180deg, rgba(20,26,46,.65), rgba(10,13,26,.85));
    border: 1px solid var(--border);
    backdrop-filter: blur(14px);
    display: flex; flex-direction: column;
    transition: transform .3s var(--ease), border-color .3s var(--ease), box-shadow .3s var(--ease);
    overflow: hidden;
}
.plan::before {
    content: ''; position: absolute; inset: 0;
    background: radial-gradient(400px 200px at 50% -10%, rgba(255,107,0,.18), transparent 60%);
    opacity: 0; transition: opacity .3s var(--ease);
    pointer-events: none;
}
.plan:hover { transform: translateY(-8px); border-color: rgba(255,107,0,.4); }
.plan:hover::before { opacity: 1; }

.plan--destaque {
    border-color: rgba(255,107,0,.45);
    box-shadow: 0 30px 80px -25px rgba(255,107,0,.35);
}
.plan--destaque::before { opacity: 1; }
.plan__badge {
    position: absolute; top: 18px; right: 18px;
    padding: 6px 12px;
    border-radius: 999px;
    background: linear-gradient(135deg, var(--brand-orange), var(--brand-pink));
    font-size: .72rem; font-weight: 700; letter-spacing: .05em;
    text-transform: uppercase;
    box-shadow: var(--glow-orange);
}

.plan__name { color: var(--text-dim); font-size: .9rem; font-weight: 500; margin-bottom: 4px; }
.plan__speed {
    font-family: 'Space Grotesk', sans-serif;
    font-size: 2.2rem; font-weight: 700; letter-spacing: -.02em;
    background: linear-gradient(90deg, #fff, var(--brand-orange-2));
    -webkit-background-clip: text; background-clip: text; color: transparent;
    margin-bottom: 18px;
}
.plan__price { margin-bottom: 22px; }
.plan__price .currency { color: var(--text-dim); font-size: .9rem; font-weight: 500; }
.plan__price .amount {
    font-family: 'Space Grotesk', sans-serif;
    font-size: 2.6rem; font-weight: 700; line-height: 1; letter-spacing: -.03em;
}
.plan__price .period { color: var(--text-dim); font-size: .9rem; margin-left: 4px; }
.plan__price .old { color: var(--text-mute); text-decoration: line-through; font-size: .85rem; display: block; margin-bottom: 2px; }

.plan__list { margin-bottom: 26px; display: flex; flex-direction: column; gap: 10px; }
.plan__list li {
    display: flex; align-items: flex-start; gap: 10px;
    font-size: .92rem; color: var(--text-dim);
}
.plan__list svg { flex: 0 0 18px; color: var(--brand-orange-2); margin-top: 2px; }

.plan .btn { margin-top: auto; width: 100%; }

/* ==== Cobertura (cidades atendidas) ==== */
.coverage { position: relative; overflow: hidden; }
.coverage__bg {
    position: absolute; inset: 0; pointer-events: none;
    background:
        radial-gradient(500px 300px at 10% 30%, rgba(255,107,0,.08), transparent 60%),
        radial-gradient(500px 300px at 90% 70%, rgba(37,99,255,.08), transparent 60%);
    mask-image: radial-gradient(ellipse at center, #000 30%, transparent 80%);
}
.coverage__grid {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px;
    position: relative; z-index: 1;
}
.coverage__card {
    position: relative;
    padding: 28px 24px 22px;
    border-radius: 18px;
    background:
        linear-gradient(180deg, rgba(20,26,46,.7) 0%, rgba(10,13,26,.9) 100%);
    border: 1px solid var(--border);
    backdrop-filter: blur(14px);
    transition: transform .35s var(--ease), border-color .35s var(--ease), box-shadow .35s var(--ease);
    overflow: hidden;
    isolation: isolate;
}

/* Borda shimmer com gradiente girando */
.coverage__card::before {
    content: '';
    position: absolute; inset: -1px;
    border-radius: inherit;
    padding: 1px;
    background: conic-gradient(from 0deg, transparent 0%, rgba(255,107,0,.35) 20%, transparent 40%, transparent 100%);
    -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
    -webkit-mask-composite: xor; mask-composite: exclude;
    opacity: 0; transition: opacity .4s var(--ease);
    pointer-events: none;
    animation: shimmerRotate 6s linear infinite;
}
/* Glow radial do topo ao hover */
.coverage__card::after {
    content: '';
    position: absolute; inset: 0;
    background: radial-gradient(380px 240px at 50% 0%, rgba(255,107,0,.22), transparent 65%);
    opacity: 0; transition: opacity .4s var(--ease);
    pointer-events: none;
    z-index: 0;
}
@keyframes shimmerRotate { to { transform: rotate(360deg); } }

.coverage__card:hover {
    transform: translateY(-6px);
    border-color: rgba(255,107,0,.45);
    box-shadow: 0 22px 50px -12px rgba(255,107,0,.28), 0 0 0 1px rgba(255,107,0,.1);
}
.coverage__card:hover::before { opacity: 1; }
.coverage__card:hover::after  { opacity: 1; }
.coverage__card:hover .coverage__num { color: rgba(255,107,0,.18); }
.coverage__card:hover .coverage__pin {
    color: #fff;
    background: linear-gradient(135deg, var(--brand-orange), var(--brand-pink));
    border-color: transparent;
    box-shadow: 0 10px 24px -6px rgba(255,107,0,.6);
}

.coverage__card--destaque { border-color: rgba(255,107,0,.3); }
.coverage__card--destaque .coverage__num { color: rgba(255,107,0,.12); }

/* Número enorme no fundo (01/02/03/04) */
.coverage__num {
    position: absolute;
    top: -14px; right: 14px;
    font-family: 'Space Grotesk', sans-serif;
    font-size: 6.5rem;
    font-weight: 700;
    line-height: 1;
    letter-spacing: -.05em;
    color: rgba(255,255,255,.035);
    pointer-events: none;
    z-index: 0;
    transition: color .4s var(--ease);
}

/* === Head: tag + status "LIVE" === */
.coverage__head {
    position: relative; z-index: 2;
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: 14px;
}
.coverage__tag {
    display: inline-block;
    font-size: .66rem;
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--brand-orange-2);
    padding: 5px 9px;
    border-radius: 5px;
    background: rgba(255,107,0,.08);
    border: 1px solid rgba(255,107,0,.25);
}
.coverage__status {
    display: inline-flex; align-items: center; gap: 6px;
    font-size: .68rem; font-weight: 800;
    letter-spacing: .14em;
    color: #7ff3a8;
    padding: 4px 8px;
    border-radius: 5px;
    background: rgba(38,224,107,.08);
    border: 1px solid rgba(38,224,107,.3);
}
.coverage__dot {
    width: 6px; height: 6px; border-radius: 50%;
    background: #26e06b;
    box-shadow: 0 0 8px #26e06b, 0 0 16px rgba(38,224,107,.4);
    animation: coveragePulse 1.4s ease-in-out infinite;
}
@keyframes coveragePulse {
    0%, 100% { transform: scale(1);   opacity: 1;  }
    50%      { transform: scale(1.5); opacity: .55; }
}

/* === Constelação de rede animada === */
.coverage__network {
    position: relative; z-index: 2;
    display: block;
    width: 100%; height: 80px;
    margin-bottom: 14px;
}
.coverage__net-halo {
    transform-origin: 150px 50px;
    animation: coverageHubPulse 2.6s ease-in-out infinite;
}
@keyframes coverageHubPulse {
    0%, 100% { transform: scale(.85); opacity: .85; }
    50%      { transform: scale(1.15); opacity: 1;  }
}
.coverage__net-hub {
    filter: drop-shadow(0 0 6px rgba(255,107,0,.8));
}
.coverage__net-nodes circle {
    filter: drop-shadow(0 0 3px rgba(255,107,0,.6));
    animation: coverageNodeBlink 3s ease-in-out infinite;
}
.coverage__net-nodes circle:nth-child(2n) { animation-delay: .4s; }
.coverage__net-nodes circle:nth-child(3n) { animation-delay: 1.1s; }
.coverage__net-nodes circle:nth-child(5n) { animation-delay: 1.8s; }
@keyframes coverageNodeBlink {
    0%, 100% { opacity: 1; }
    50%      { opacity: .4; }
}

/* === Cidade e subtítulo === */
.coverage__city {
    position: relative; z-index: 2;
    font-family: 'Space Grotesk', sans-serif;
    font-size: 1.45rem;
    font-weight: 700;
    letter-spacing: -.015em;
    line-height: 1.1;
    margin-bottom: 2px;
}
.coverage__sub {
    position: relative; z-index: 2;
    color: var(--text-mute);
    font-size: .8rem;
    margin-bottom: 18px;
}

/* === Mini-dashboard de métricas 2x2 === */
.coverage__metrics {
    position: relative; z-index: 2;
    display: grid; grid-template-columns: 1fr 1fr;
    gap: 0;
    margin: 0 0 16px;
    border-radius: 10px;
    overflow: hidden;
    background: rgba(5,7,15,.45);
    border: 1px solid var(--border);
}
.coverage__metrics > div {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 8px;
    padding: 12px 14px;
    min-height: 68px;
    min-width: 0;          /* permite o conteúdo encolher até o tamanho da célula */
    border-right: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
}
.coverage__metrics > div:nth-child(2n) { border-right: 0; }
.coverage__metrics > div:nth-child(n+3) { border-bottom: 0; }

.coverage__metrics dt {
    display: flex; align-items: center; gap: 5px;
    font-size: .66rem;
    font-weight: 500;
    color: var(--text-mute);
    text-transform: uppercase;
    letter-spacing: .08em;
    margin: 0;
    line-height: 1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-height: 14px;
}
.coverage__metrics dt svg { color: var(--brand-orange-2); flex-shrink: 0; }

.coverage__metrics dd {
    margin: 0;
    display: flex;
    align-items: baseline;
    gap: 3px;
    font-family: 'Space Grotesk', sans-serif;
    font-size: 1.15rem;
    font-weight: 700;
    line-height: 1;
    color: var(--text);
    letter-spacing: -.01em;
    min-height: 18px;
}
.coverage__metrics dd small {
    font-family: 'Inter', sans-serif;
    font-size: .68rem;
    font-weight: 500;
    color: var(--text-dim);
    margin-left: 1px;
}

/* === Barra de cobertura com preenchimento laranja === */
.coverage__progress {
    position: relative; z-index: 2;
    margin-bottom: 12px;
}
.coverage__progress-label {
    display: flex; justify-content: space-between; align-items: baseline;
    font-size: .74rem;
    color: var(--text-dim);
    margin-bottom: 5px;
}
.coverage__progress-label strong {
    font-family: 'Space Grotesk', sans-serif;
    font-size: .88rem;
    color: var(--brand-orange-2);
}
.coverage__progress-bar {
    position: relative;
    height: 5px;
    background: rgba(255,255,255,.04);
    border-radius: 99px;
    overflow: hidden;
}
.coverage__progress-bar span {
    position: absolute; top: 0; left: 0; bottom: 0;
    width: var(--cov, 100%);
    background: linear-gradient(90deg, var(--brand-orange), var(--brand-pink));
    border-radius: inherit;
    box-shadow: 0 0 12px rgba(255,107,0,.55);
    animation: coverageFill 1.4s var(--ease) .1s backwards;
}
@keyframes coverageFill { from { width: 0; } }

/* === Sparkline "Tráfego agora" === */
.coverage__live {
    position: relative; z-index: 2;
    display: flex; align-items: center; gap: 10px;
    padding-top: 10px;
    border-top: 1px dashed var(--border);
}
.coverage__live-label {
    font-size: .68rem;
    color: var(--text-mute);
    text-transform: uppercase;
    letter-spacing: .1em;
    white-space: nowrap;
}
.coverage__spark {
    flex: 1;
    height: 24px;
    filter: drop-shadow(0 0 4px rgba(255,107,0,.5));
}

@media (max-width: 1000px) {
    .coverage__grid { grid-template-columns: repeat(2, 1fr); }
    .coverage__num { font-size: 7rem; }
}
@media (max-width: 520px) {
    /* Coverage cards: CARROSSEL HORIZONTAL (evita página de 13 telas) */
    .coverage__grid {
        display: flex;
        grid-template-columns: none;
        overflow-x: auto;
        overflow-y: hidden;
        scroll-snap-type: x mandatory;
        gap: 14px;
        padding: 4px 18px 14px;
        margin: 0 -18px;
        scrollbar-width: none;
        -webkit-overflow-scrolling: touch;
    }
    .coverage__grid::-webkit-scrollbar { display: none; }
    .coverage__card {
        scroll-snap-align: center;
        flex: 0 0 82vw;
        max-width: 320px;
        min-width: 260px;
        padding: 24px 20px 20px;
    }
    .coverage__network { height: 100px; }
}

/* Telas muito pequenas (iPhone SE / Android legacy) — evita overflow do título */
@media (max-width: 380px) {
    .hero__title { font-size: 1.65rem; }
    .hero__subtitle { font-size: .92rem; }
    .section__title { font-size: 1.45rem; }
    .coverage__city { font-size: 1.3rem; }
    .plan__price .amount { font-size: 2.2rem; }
}

/* ==== CTA big ==== */
.cta-big {
    padding: 60px 40px;
    border-radius: var(--radius-lg);
    background:
        radial-gradient(600px 300px at 20% 0%, rgba(255,107,0,.22), transparent 60%),
        radial-gradient(500px 300px at 100% 100%, rgba(37,99,255,.22), transparent 60%),
        linear-gradient(180deg, rgba(20,26,46,.85), rgba(10,13,26,.95));
    border: 1px solid rgba(255,107,0,.25);
    text-align: center;
    position: relative; overflow: hidden;
}
.cta-big h2 {
    font-family: 'Space Grotesk', sans-serif;
    font-size: clamp(1.6rem, 3vw, 2.5rem);
    font-weight: 700; line-height: 1.15; letter-spacing: -.02em;
    margin-bottom: 16px;
}
.cta-big p { color: var(--text-dim); font-size: 1.05rem; max-width: 640px; margin: 0 auto 30px; }

/* ==== About / empresarial ==== */
.split {
    display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: center;
}
.split__media {
    position: relative;
    border-radius: var(--radius-lg);
    overflow: hidden;
    aspect-ratio: 4/5;
    background:
        radial-gradient(400px 400px at 30% 20%, rgba(255,107,0,.3), transparent 60%),
        radial-gradient(400px 400px at 80% 80%, rgba(37,99,255,.3), transparent 60%),
        linear-gradient(180deg, #141a2e, #05070f);
    border: 1px solid var(--border);
    display: grid; place-items: center;
}
.split__media-inner {
    font-family: 'Space Grotesk', sans-serif;
    font-size: clamp(4rem, 8vw, 7rem);
    font-weight: 700; line-height: 1;
    background: linear-gradient(135deg, var(--brand-orange), var(--brand-pink), var(--brand-blue));
    -webkit-background-clip: text; background-clip: text; color: transparent;
    filter: drop-shadow(0 0 40px rgba(255,107,0,.4));
    text-align: center;
}
.split__media-inner small { display: block; font-size: 1rem; color: var(--text-dim); -webkit-text-fill-color: var(--text-dim); margin-top: 10px; font-weight: 500; }

/* Variant com vídeo: card assume a proporção do vídeo (9:16 / 704×1216),
   sem fundo gradient, sem vinheta, sem texto sobreposto. Mostra só o vídeo.
   max-width compacto pra não ocupar toda a coluna. */
.split__media--video {
    aspect-ratio: 704 / 1216;
    width: 100%;
    max-width: 280px;           /* card menor */
    margin: 0 auto;             /* centraliza na coluna */
    background: transparent;
    border: 0;
    overflow: hidden;
    place-items: stretch;       /* anula place-items: center do .split__media */
}
.split__video {
    width: 100%; height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
}

.split h2 {
    font-family: 'Space Grotesk', sans-serif;
    font-size: clamp(1.75rem, 3.2vw, 2.5rem);
    font-weight: 700; line-height: 1.15; letter-spacing: -.02em;
    margin-bottom: 20px;
}
.split p { color: var(--text-dim); font-size: 1.05rem; margin-bottom: 20px; }
.split__list { display: flex; flex-direction: column; gap: 14px; margin-top: 24px; }
.split__list li {
    display: flex; align-items: flex-start; gap: 12px;
    color: var(--text-dim);
}
.split__list svg {
    flex: 0 0 22px; color: var(--brand-orange-2); margin-top: 2px;
    filter: drop-shadow(0 0 6px rgba(255,107,0,.5));
}
.split__list strong { color: var(--text); display: block; margin-bottom: 2px; font-weight: 600; }

/* ==== Contact ==== */
.contact-grid {
    display: grid; grid-template-columns: 1fr 1.2fr; gap: 40px;
}
.contact-info {
    padding: 36px;
    border-radius: var(--radius-lg);
    background: var(--surface);
    border: 1px solid var(--border);
    backdrop-filter: blur(14px);
}
.contact-info h3 {
    font-family: 'Space Grotesk', sans-serif;
    font-size: 1.4rem; font-weight: 600; margin-bottom: 18px;
}
.contact-info p { color: var(--text-dim); margin-bottom: 24px; }
.contact-info__item {
    display: flex; gap: 14px; padding: 16px 0;
    border-top: 1px solid var(--border);
}
.contact-info__item:first-of-type { border-top: 0; padding-top: 0; }
.contact-info__icon {
    width: 42px; height: 42px; flex-shrink: 0;
    border-radius: 12px;
    display: grid; place-items: center;
    background: linear-gradient(135deg, rgba(255,107,0,.18), rgba(255,46,99,.12));
    border: 1px solid rgba(255,107,0,.25);
    color: var(--brand-orange-2);
}
.contact-info__label { font-size: .82rem; color: var(--text-mute); text-transform: uppercase; letter-spacing: .1em; }
.contact-info__value { color: var(--text); font-weight: 500; margin-top: 2px; }
.contact-info__value a:hover { color: var(--brand-orange-2); }

.form {
    padding: 36px;
    border-radius: var(--radius-lg);
    background: var(--surface);
    border: 1px solid var(--border);
    backdrop-filter: blur(14px);
}
.form h3 {
    font-family: 'Space Grotesk', sans-serif;
    font-size: 1.4rem; font-weight: 600; margin-bottom: 20px;
}
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.form-group { margin-bottom: 16px; }
.form-group label {
    display: block; font-size: .88rem; color: var(--text-dim);
    margin-bottom: 6px; font-weight: 500;
}
.form-group input,
.form-group select,
.form-group textarea {
    width: 100%;
    padding: 14px 16px;
    background: rgba(5, 7, 15, .6);
    border: 1px solid var(--border-strong);
    border-radius: var(--radius-sm);
    color: var(--text);
    font: inherit; font-size: .96rem;
    transition: border-color .2s var(--ease), box-shadow .2s var(--ease);
}
.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
    outline: 0;
    border-color: var(--brand-orange);
    box-shadow: 0 0 0 3px rgba(255,107,0,.15);
}
.form-group textarea { resize: vertical; min-height: 130px; }

.flash {
    padding: 14px 18px;
    border-radius: var(--radius-sm);
    margin-bottom: 20px;
    font-weight: 500; font-size: .95rem;
    border: 1px solid transparent;
}
.flash--sucesso { background: rgba(38, 224, 107, .1); border-color: rgba(38, 224, 107, .3); color: #7ff3a8; }
.flash--erro    { background: rgba(255, 46, 99, .1); border-color: rgba(255, 46, 99, .35); color: #ff94ad; }
.flash--aviso   { background: rgba(255, 154, 60, .1); border-color: rgba(255, 154, 60, .35); color: #ffc28a; }

/* ==== Footer ==== */
.site-footer {
    padding: 60px 0 24px;
    margin-top: 50px;
    background: linear-gradient(180deg, transparent 0%, rgba(5, 7, 15, .85) 30%, rgba(5, 7, 15, 1) 100%);
    border-top: 1px solid var(--border);
    position: relative;
}
.site-footer::before {
    content: '';
    position: absolute; top: -50px; left: 0; right: 0; height: 50px;
    background: linear-gradient(to bottom, transparent, rgba(5, 7, 15, .4));
    pointer-events: none;
}
.site-footer__grid {
    display: grid;
    grid-template-columns: minmax(260px, 1.5fr) minmax(160px, 1fr) minmax(180px, 1fr) minmax(220px, 1.2fr);
    gap: 36px clamp(28px, 4vw, 56px);
    margin-bottom: 36px;
    align-items: start;
}
.site-footer h4 {
    font-family: 'Space Grotesk', sans-serif;
    font-size: .82rem; font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .14em;
    color: var(--brand-orange-2);
    margin-bottom: 18px;
}
.site-footer__desc {
    color: var(--text-dim);
    font-size: .92rem; line-height: 1.6;
    margin: 20px 0 22px;
    max-width: 340px;
}
.site-footer__links {
    display: flex; flex-direction: column;
    gap: 10px;
    list-style: none; padding: 0; margin: 0;
}
.site-footer__links a {
    color: var(--text-dim);
    font-size: .92rem;
    text-decoration: none;
    transition: color .2s var(--ease), padding-left .2s var(--ease);
    display: inline-block;
}
.site-footer__links a:hover {
    color: var(--brand-orange-2);
    padding-left: 4px;
}
.site-footer__hours {
    margin-top: 4px;
    padding-top: 12px;
    border-top: 1px dashed var(--border);
}
.site-footer__hours span {
    display: block;
    font-size: .82rem;
    font-weight: 600;
    color: var(--text);
    margin-bottom: 2px;
}
.site-footer__hours small {
    font-size: .82rem;
    color: var(--text-mute);
    line-height: 1.4;
}
.site-footer__address {
    font-style: normal;
    display: flex; flex-direction: column; gap: 3px;
    color: var(--text-dim);
    font-size: .92rem; line-height: 1.5;
    margin-bottom: 14px;
}
.site-footer__regions {
    color: var(--text-dim);
    font-size: .88rem;
    line-height: 1.5;
}
.site-footer__regions strong {
    display: block;
    color: var(--text);
    font-size: .82rem;
    font-weight: 600;
    margin-bottom: 2px;
}
.site-footer__cta {
    display: inline-flex; align-items: center; gap: 7px;
    margin-top: 18px;
    padding: 9px 14px;
    background: rgba(255, 107, 0, .1);
    border: 1px solid rgba(255, 107, 0, .35);
    border-radius: 8px;
    color: var(--brand-orange-2);
    font-size: .84rem;
    font-weight: 600;
    text-decoration: none;
    transition: background .2s var(--ease), border-color .2s var(--ease), transform .2s var(--ease);
}
.site-footer__cta:hover {
    background: linear-gradient(135deg, rgba(255, 107, 0, .22), rgba(255, 46, 99, .12));
    border-color: rgba(255, 107, 0, .55);
    transform: translateY(-1px);
}

.social { display: flex; gap: 10px; }
.social a {
    width: 40px; height: 40px; border-radius: 10px;
    display: grid; place-items: center;
    background: rgba(255, 255, 255, .03);
    border: 1px solid var(--border);
    color: var(--text-dim);
    transition: color .2s var(--ease), border-color .2s var(--ease), background .2s var(--ease), transform .2s var(--ease);
}
.social a:hover {
    color: #fff;
    background: linear-gradient(135deg, rgba(255, 107, 0, .25), rgba(255, 46, 99, .15));
    border-color: rgba(255, 107, 0, .5);
    transform: translateY(-2px);
}

.site-footer__bottom {
    padding-top: 22px;
    border-top: 1px solid var(--border);
    display: flex; justify-content: space-between; align-items: center;
    flex-wrap: wrap; gap: 8px 24px;
    color: var(--text-mute);
    font-size: .82rem;
}
.site-footer__copy { margin: 0; }
.site-footer__copy strong { color: var(--text); font-weight: 600; }
.site-footer__legal { margin: 0; opacity: .8; }
.site-footer__legal span:first-child {
    font-family: ui-monospace, monospace;
    letter-spacing: .02em;
}
/* Crédito do desenvolvedor — bloco tipográfico elegante */
.site-footer__credit {
    margin: 0;
    display: inline-flex; align-items: center; gap: 14px;
    padding: 8px 12px 8px 14px;
    border-left: 2px solid rgba(255, 107, 0, .35);
    background: rgba(255,255,255,.02);
    border-radius: 0 10px 10px 0;
}
.site-footer__credit-label {
    display: flex; flex-direction: column;
    gap: 2px;
    line-height: 1.1;
}
.site-footer__credit-eyebrow {
    font-family: 'Space Grotesk', sans-serif;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--brand-orange-2);
    /* Gradient laranja sutil só no eyebrow pra dar identidade */
    background: linear-gradient(90deg, var(--brand-orange), var(--brand-orange-2));
    -webkit-background-clip: text; background-clip: text; color: transparent;
}
.site-footer__credit-line {
    font-family: 'Space Grotesk', sans-serif;
    font-size: .82rem;
    font-weight: 500;
    color: var(--text-dim);
    letter-spacing: -.005em;
}
.site-footer__credit a {
    display: inline-flex; align-items: center;
    padding: 4px;
    border-radius: 10px;
    transition: transform .2s var(--ease), background .25s var(--ease), box-shadow .25s var(--ease);
}
.site-footer__credit a:hover {
    background: rgba(37, 211, 102, .14);
    transform: translateY(-2px);
    box-shadow: 0 12px 28px -10px rgba(37, 211, 102, .45);
}
.site-footer__credit img {
    height: 56px; width: auto;
    display: block;
    border-radius: 8px;
    filter: brightness(.95) contrast(1.05);
    transition: filter .25s var(--ease);
}
.site-footer__credit a:hover img { filter: brightness(1.05) contrast(1.08); }

@media (max-width: 720px) {
    .site-footer__credit {
        width: 100%;
        justify-content: center;
        margin-top: 12px;
        border-left: 0;
        border-top: 2px solid rgba(255, 107, 0, .35);
        border-radius: 10px 10px 0 0;
        padding: 12px 10px 8px;
    }
    .site-footer__credit-label { align-items: flex-end; }
}

/* Tablet: 2x2 (era pulado direto pra 1col na regra antiga) */
@media (max-width: 1024px) {
    .site-footer__grid { grid-template-columns: 1fr 1fr; gap: 32px; }
}

/* ==== Segmentos de planos (Conexão / Conexão e Segurança) ==== */
.segments__grid {
    display: grid; grid-template-columns: 1fr 1fr; gap: 22px;
}
.segment-card {
    position: relative;
    padding: 36px 32px;
    border-radius: var(--radius-lg);
    background: linear-gradient(180deg, rgba(20,26,46,.7), rgba(10,13,26,.92));
    border: 1px solid var(--border);
    backdrop-filter: blur(14px);
    transition: transform .35s var(--ease), border-color .35s var(--ease), box-shadow .35s var(--ease);
    overflow: hidden;
    isolation: isolate;
}
.segment-card::before {
    content: ''; position: absolute; inset: 0;
    background: radial-gradient(450px 240px at 50% -10%, rgba(255,107,0,.18), transparent 60%);
    opacity: 0; transition: opacity .35s var(--ease);
    pointer-events: none;
}
.segment-card:hover {
    transform: translateY(-6px);
    border-color: rgba(255,107,0,.4);
    box-shadow: 0 28px 60px -15px rgba(255,107,0,.28);
}
.segment-card:hover::before { opacity: 1; }

.segment-card--featured {
    border-color: rgba(255,107,0,.4);
    box-shadow: 0 18px 50px -15px rgba(255,107,0,.25);
}
.segment-card--featured::before { opacity: 1; }

/* Card Conexão — GIF animado como background com overlay escuro p/ legibilidade.
   Mantém o tema laranja da marca (ícone, hover, borda). */
.segment-card--connection {
    background:
        linear-gradient(180deg, rgba(10,13,26,.78) 0%, rgba(10,13,26,.85) 60%, rgba(10,13,26,.92) 100%),
        url('https://onnexx.meucdn.com.br/uploads/imagens/conexao_38487d0a.gif') center/cover no-repeat;
    /* borda e ícone seguem o padrão laranja — usa as variants default */
}

/* Card Conexão e Segurança — GIF de segurança como background.
   Mantém o featured (badge "Novo", borda laranja, glow), apenas adiciona o GIF. */
.segment-card--security {
    background:
        linear-gradient(180deg, rgba(10,13,26,.78) 0%, rgba(10,13,26,.85) 60%, rgba(10,13,26,.92) 100%),
        url('https://onnexx.meucdn.com.br/uploads/imagens/seguranca_4ca76af9.gif') center/cover no-repeat;
}
.segment-card__badge {
    position: absolute; top: 18px; right: 18px;
    padding: 5px 12px;
    border-radius: 999px;
    background: linear-gradient(135deg, var(--brand-orange), var(--brand-pink));
    color: #fff;
    font-size: .68rem; font-weight: 800; letter-spacing: .14em;
    text-transform: uppercase;
    box-shadow: 0 8px 20px -4px rgba(255,107,0,.55);
}

.segment-card__icon {
    width: 64px; height: 64px;
    border-radius: 18px;
    display: grid; place-items: center;
    background: linear-gradient(135deg, rgba(255,107,0,.18), rgba(255,46,99,.1));
    border: 1px solid rgba(255,107,0,.3);
    color: var(--brand-orange-2);
    margin-bottom: 22px;
    box-shadow: inset 0 0 24px rgba(255,107,0,.12);
}
.segment-card__title {
    font-family: 'Space Grotesk', sans-serif;
    font-size: 1.6rem;
    font-weight: 700;
    letter-spacing: -.02em;
    margin-bottom: 12px;
}
.segment-card__desc {
    color: var(--text-dim);
    font-size: .98rem;
    line-height: 1.6;
    margin-bottom: 20px;
}
.segment-card__features {
    list-style: none; padding: 0; margin: 0 0 24px;
    display: flex; flex-direction: column; gap: 10px;
}
.segment-card__features li {
    display: flex; align-items: flex-start; gap: 10px;
    color: var(--text);
    font-size: .94rem;
}
.segment-card__features li::before {
    content: '✓';
    flex-shrink: 0;
    width: 20px; height: 20px;
    border-radius: 50%;
    background: rgba(255,107,0,.18);
    color: var(--brand-orange-2);
    display: grid; place-items: center;
    font-size: .72rem; font-weight: 700;
    margin-top: 1px;
}
.segment-card__cta {
    width: 100%;
    justify-content: center;
}
@media (max-width: 720px) {
    .segments__grid { grid-template-columns: 1fr; gap: 16px; }
    .segment-card { padding: 28px 22px; }
}

/* ==== CTA Big — versão "upgrade" com setas animadas estilo gamer.
   Setas FICAM EMBAIXO do CTA e APONTAM PRA BAIXO (chamando atenção pro
   próximo elemento do scroll). */
.cta-big--upgrade { position: relative; padding-bottom: 32px; }
.cta-arrows {
    display: flex; justify-content: center; gap: 18px;
    margin-top: 28px;
    height: 36px;
}
.cta-arrow {
    width: 0; height: 0;
    border-left: 14px solid transparent;
    border-right: 14px solid transparent;
    border-bottom: 22px solid var(--brand-orange);   /* aponta pra CIMA, em direção aos botões */
    filter: drop-shadow(0 0 8px rgba(255, 107, 0, .55));
    animation: ctaArrowPulse 1.4s ease-in-out infinite;
}
.cta-arrow:nth-child(1) { animation-delay: 0s;     opacity: .55; }
.cta-arrow:nth-child(2) { animation-delay: .15s;   opacity: .8;  border-bottom-color: var(--brand-orange-2); }
.cta-arrow:nth-child(3) { animation-delay: .3s;    opacity: 1;   border-bottom-color: #ffd28a; }
@keyframes ctaArrowPulse {
    0%, 100% { transform: translateY(0)     scale(1);   filter: drop-shadow(0 0 6px  rgba(255,107,0,.35)); }
    50%      { transform: translateY(-12px) scale(1.06); filter: drop-shadow(0 0 18px rgba(255,107,0,.85)); }
}
@media (prefers-reduced-motion: reduce) {
    .cta-arrow { animation: none; opacity: 1; }
}

/* ==== App store badges ==== */
.app-badges { display: flex; gap: 10px; margin-top: 14px; flex-wrap: wrap; }
.app-badge {
    display: inline-flex; align-items: center; gap: 10px;
    padding: 8px 14px;
    background: rgba(255,255,255,.04);
    border: 1px solid var(--border-strong);
    border-radius: 10px;
    color: var(--text);
    transition: border-color .2s var(--ease), background .2s var(--ease), transform .2s var(--ease);
}
.app-badge:hover { border-color: rgba(255,107,0,.4); background: rgba(255,255,255,.07); transform: translateY(-2px); }
.app-badge small { display: block; font-size: .68rem; color: var(--text-mute); letter-spacing: .05em; text-transform: uppercase; }
.app-badge strong { display: block; font-size: .92rem; font-weight: 600; }

/* ==== Regra global: atributo [hidden] do HTML sempre vence ==== */
/* Defesa em profundidade contra classes que declaram `display: grid/flex/block` e acidentalmente anulam o hidden */
[hidden] { display: none !important; }

/* Acessibilidade — outline visível em navegação por teclado */
input:focus-visible, select:focus-visible, textarea:focus-visible, button:focus-visible, a:focus-visible {
    outline: 2px solid var(--brand-orange);
    outline-offset: 2px;
    border-radius: 4px;
}

/* ==== Modal Segunda via ==== */
.sv-modal {
    position: fixed; inset: 0;
    z-index: var(--z-modal);
    display: grid; place-items: center;
    padding: 20px;
}
.sv-modal__backdrop {
    position: absolute; inset: 0;
    background: rgba(5, 7, 15, .7);
    backdrop-filter: blur(6px);
    animation: svFade .22s var(--ease);
}
.sv-modal__card {
    position: relative;
    width: 100%; max-width: 440px;
    background: linear-gradient(180deg, #141a2e, #0f1424);
    border: 1px solid var(--border-strong);
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 30px 80px -10px rgba(0,0,0,.7);
    animation: svSlide .3s var(--ease);
}
@keyframes svFade  { from { opacity: 0; } to { opacity: 1; } }
@keyframes svSlide { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: none; } }
.sv-modal__head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 18px 22px;
    border-bottom: 1px solid var(--border);
}
.sv-modal__head h3 {
    font-family: 'Space Grotesk', sans-serif;
    font-size: 1.15rem; font-weight: 600;
}
.sv-modal__close {
    width: 36px; height: 36px; border-radius: 10px;
    background: none; border: 0; cursor: pointer;
    display: grid; place-items: center;
    color: var(--text-mute);
    transition: background .2s var(--ease), color .2s var(--ease);
}
.sv-modal__close:hover { background: rgba(255,255,255,.05); color: var(--text); }

/* Body sempre scrollável internamente; overscroll-behavior bloqueia
   o "scroll-chaining" (modal sem scroll → page atrás scrolla) */
.sv-modal__body {
    padding: 16px 18px;
    position: relative;
    min-height: 180px;
    max-height: calc(85vh - 60px);
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}
.sv-modal__body p { color: var(--text-dim); margin-bottom: 12px; }
/* Card respeita altura — header fixo, body scrolla */
.sv-modal__card { display: flex; flex-direction: column; max-height: 90vh; }
.sv-modal__head { flex-shrink: 0; padding: 14px 18px; }

/* Modal "wide" — comporta listas de faturas + detalhes + QR PIX */
.sv-modal__card--wide { max-width: 640px; }

/* Botão "voltar" no header do modal */
.sv-modal__back {
    width: 32px; height: 32px; border-radius: 8px;
    background: none; border: 0; cursor: pointer;
    display: grid; place-items: center;
    color: var(--text-mute);
    margin-right: 4px;
    transition: background .2s var(--ease), color .2s var(--ease);
}
.sv-modal__back:hover { background: rgba(255,255,255,.05); color: var(--text); }
.sv-modal__head { gap: 8px; }
.sv-modal__head h3 { flex: 1; font-size: 1.05rem; }
.sv-modal__close { width: 32px; height: 32px; }

/* Trava de scroll no body da página (definida pelo JS) */
body.sv-locked {
    position: fixed;
    left: 0; right: 0;
    width: 100%;
    overflow: hidden;
}

/* Etapas */
.sv-step { display: block; }
.sv-step[hidden] { display: none; }
.sv-step__lead {
    color: var(--text-dim); font-size: .92rem; margin: 0 0 14px;
}
.sv-step__title {
    font-family: 'Space Grotesk', sans-serif;
    font-size: .92rem; font-weight: 600;
    margin: 4px 0 8px; color: var(--text);
    letter-spacing: .01em;
}

/* Botão fullwidth com spinner */
.sv-btn-full { width: 100%; display: inline-flex; align-items: center; justify-content: center; gap: 10px; position: relative; }
.sv-btn-full .sv-spinner { display: none; }
.sv-btn-full.is-loading .sv-btn-text { opacity: .55; }
.sv-btn-full.is-loading .sv-spinner { display: inline-block; }
.sv-btn-full[disabled] { opacity: .85; cursor: progress; }

.sv-spinner {
    width: 16px; height: 16px; border-radius: 50%;
    border: 2px solid rgba(255,255,255,.35);
    border-top-color: #fff;
    animation: svSpin .8s linear infinite;
}
.sv-spinner--lg { width: 28px; height: 28px; border-width: 3px; }
@keyframes svSpin { to { transform: rotate(360deg); } }

/* Mensagem de "fineprint" */
.sv-fineprint {
    margin-top: 12px; font-size: .8rem; color: var(--text-mute); text-align: center;
}
.sv-fineprint a { color: var(--brand-orange); text-decoration: underline; }

/* Erros */
.sv-error {
    margin: 8px 0 0;
    padding: 8px 10px;
    background: rgba(220, 60, 60, .12);
    border: 1px solid rgba(220, 60, 60, .35);
    color: #ffb3b3;
    border-radius: 8px;
    font-size: .85rem;
}
.sv-error[hidden] { display: none; }
.sv-error--block { margin-top: 12px; }

/* Empty state */
.sv-empty {
    text-align: center;
    color: var(--text-dim);
    padding: 14px 8px;
    font-size: .88rem;
}

/* Cliente — header etapa 2 (mais compacto) */
.sv-customer {
    display: flex; align-items: center; gap: 10px;
    padding: 8px 10px;
    background: rgba(255,255,255,.03);
    border: 1px solid var(--border);
    border-radius: 10px;
    margin-bottom: 12px;
}
.sv-customer strong { display: block; color: var(--text); font-weight: 600; font-size: .92rem; line-height: 1.3; }
.sv-customer small  { display: block; color: var(--text-mute); font-size: .76rem; }
.sv-customer__avatar {
    width: 34px; height: 34px; flex-shrink: 0;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--brand-orange), #ff7a3d);
    color: #fff;
    display: grid; place-items: center;
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 700; font-size: .9rem;
}

/* Lista de serviços (mais compacta, mais info) */
.sv-services {
    display: flex; flex-direction: column; gap: 6px;
}
.sv-service {
    display: flex; align-items: center; justify-content: space-between; gap: 10px;
    width: 100%;
    padding: 10px 12px;
    background: rgba(255,255,255,.025);
    border: 1px solid var(--border);
    border-radius: 10px;
    color: var(--text);
    cursor: pointer;
    text-align: left;
    transition: border-color .2s var(--ease), background .2s var(--ease), transform .15s var(--ease);
}
.sv-service:hover { border-color: var(--brand-orange); background: rgba(255,128,40,.06); }
.sv-service:active { transform: scale(.99); }
.sv-service__main {
    display: flex; flex-direction: column; min-width: 0; flex: 1;
}
.sv-service__main strong {
    font-weight: 600; font-size: .9rem; line-height: 1.25;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.sv-service__main small  {
    color: var(--text-mute); font-size: .76rem; margin-top: 2px;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.sv-service__side { display: flex; align-items: center; gap: 8px; flex-shrink: 0; color: var(--text-mute); }

/* Cabeçalho do serviço selecionado (etapa 3) — denso */
.sv-service-head {
    display: flex; align-items: center; justify-content: space-between; gap: 10px;
    padding: 8px 12px;
    background: rgba(255,255,255,.03);
    border: 1px solid var(--border);
    border-radius: 8px;
    margin-bottom: 12px;
}
.sv-service-head strong {
    font-weight: 600; font-size: .88rem;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    flex: 1;
}

/* Sumário rápido (vencidas/em_aberto/pagas count) */
.sv-summary {
    display: flex; gap: 6px; flex-wrap: wrap;
    margin-bottom: 12px;
}
.sv-summary__chip {
    flex: 1 1 auto;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    padding: 6px 8px; min-width: 72px;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: rgba(255,255,255,.025);
    text-align: center;
}
.sv-summary__chip strong { font-size: 1.1rem; font-weight: 700; line-height: 1; }
.sv-summary__chip small { font-size: .68rem; color: var(--text-mute); text-transform: uppercase; letter-spacing: .04em; margin-top: 2px; }
.sv-summary__chip--vencidas  { border-color: rgba(220,60,60,.4);   background: rgba(220,60,60,.08); }
.sv-summary__chip--vencidas strong  { color: #ff9d9d; }
.sv-summary__chip--em_aberto { border-color: rgba(220,170,40,.4);  background: rgba(220,170,40,.06); }
.sv-summary__chip--em_aberto strong { color: #ffd07a; }
.sv-summary__chip--pagas     { border-color: rgba(40,180,99,.4);   background: rgba(40,180,99,.06); }
.sv-summary__chip--pagas strong     { color: #8de0a8; }

/* Badges (mais compactos) */
.sv-badge {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 2px 8px;
    border-radius: 999px;
    font-size: .66rem; font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    background: rgba(255,255,255,.06);
    color: var(--text-dim);
    border: 1px solid var(--border);
    line-height: 1.4;
}
.sv-badge--ok        { background: rgba(40,180,99,.15);  color: #7be0a3; border-color: rgba(40,180,99,.35); }
.sv-badge--warn      { background: rgba(220,170,40,.15); color: #ffd980; border-color: rgba(220,170,40,.35); }
.sv-badge--off       { background: rgba(220,60,60,.15);  color: #ffb3b3; border-color: rgba(220,60,60,.35); }
.sv-badge--vencidas  { background: rgba(220,60,60,.18);  color: #ffb3b3; border-color: rgba(220,60,60,.4);  }
.sv-badge--em_aberto { background: rgba(220,170,40,.18); color: #ffd980; border-color: rgba(220,170,40,.4); }
.sv-badge--pagas     { background: rgba(40,180,99,.18);  color: #7be0a3; border-color: rgba(40,180,99,.4);  }
.sv-badge--outras    { background: rgba(120,120,160,.18);color: #cfd0e0; border-color: rgba(120,120,160,.4); }

/* Lista de faturas — mais densa */
.sv-invoices { display: flex; flex-direction: column; gap: 12px; }
.sv-invgroup h5 {
    display: flex; align-items: center; gap: 6px;
    margin: 0 0 6px;
    font-size: .72rem; font-weight: 700; letter-spacing: .06em;
    text-transform: uppercase; color: var(--text-mute);
}
.sv-invgroup h5 span {
    background: rgba(255,255,255,.07);
    color: var(--text-dim);
    border-radius: 999px;
    padding: 0 7px;
    font-size: .68rem;
    line-height: 1.5;
}
.sv-invgroup--vencidas h5 { color: #ff9d9d; }
.sv-invgroup--em_aberto h5 { color: #ffd07a; }
.sv-invgroup--pagas h5 { color: #8de0a8; }

/* Card de fatura — densidade alta, info rica */
.sv-inv {
    background: rgba(255,255,255,.025);
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 9px 11px;
    margin-bottom: 6px;
    display: grid;
    grid-template-columns: 1fr auto;
    column-gap: 10px;
    row-gap: 6px;
    align-items: center;
}
.sv-inv--vencidas  { border-color: rgba(220,60,60,.35); background: rgba(220,60,60,.05); }
.sv-inv--em_aberto { border-color: rgba(220,170,40,.32); background: rgba(220,170,40,.04); }
.sv-inv--pagas     { border-color: rgba(40,180,99,.30);  background: rgba(40,180,99,.04); }

.sv-inv__main { min-width: 0; }
.sv-inv__row1 {
    display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap;
    margin-bottom: 2px;
}
.sv-inv__valor { font-size: 1rem; font-weight: 700; color: var(--text); line-height: 1.1; }
.sv-inv__venc  { font-size: .76rem; color: var(--text-dim); }
.sv-inv__venc strong { color: var(--text); font-weight: 600; }
.sv-inv__row2 {
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
    font-size: .72rem; color: var(--text-mute);
}
.sv-inv__row2 .sv-dot { opacity: .5; }
.sv-inv__atraso       { color: #ff9d9d; font-weight: 600; }
.sv-inv__upcoming     { color: #ffd07a; font-weight: 600; }
.sv-inv__upcoming--soon { color: #ff9d9d; }

/* Ações — icon-only buttons compactos com tooltip */
.sv-inv__actions {
    display: flex; gap: 4px; align-items: center; flex-shrink: 0;
}
.sv-inv__act {
    width: 32px; height: 32px;
    display: inline-grid; place-items: center;
    padding: 0;
    border-radius: 8px;
    background: rgba(255,255,255,.05);
    border: 1px solid var(--border);
    color: var(--text-dim);
    cursor: pointer;
    text-decoration: none;
    transition: background .2s var(--ease), border-color .2s var(--ease), color .2s var(--ease), transform .12s var(--ease);
}
.sv-inv__act:hover { background: rgba(255,255,255,.09); border-color: rgba(255,128,40,.5); color: var(--text); }
.sv-inv__act:active { transform: scale(.95); }
.sv-inv__act--primary {
    background: linear-gradient(135deg, var(--brand-orange), #ff7a3d);
    border-color: transparent;
    color: #fff;
}
.sv-inv__act--primary:hover { filter: brightness(1.08); color: #fff; border-color: transparent; }
.sv-inv__act.is-copied {
    background: rgba(40,180,99,.2);
    border-color: rgba(40,180,99,.5);
    color: #7be0a3;
}

/* Feedback inline (toast pequeno) */
.sv-inv__feedback {
    grid-column: 1 / -1;
    margin: 4px 0 0;
    padding: 4px 8px;
    background: rgba(40,180,99,.12);
    border: 1px solid rgba(40,180,99,.35);
    border-radius: 6px;
    color: #7be0a3;
    font-size: .76rem;
    text-align: center;
    animation: svFade .2s var(--ease);
}

/* Loading overlay */
.sv-loading {
    position: absolute; inset: 0;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 10px;
    background: rgba(15, 20, 36, .82);
    color: var(--text-dim);
    font-size: .9rem;
    border-radius: inherit;
    backdrop-filter: blur(2px);
    z-index: 2;
}
.sv-loading[hidden] { display: none; }

/* ============================================================
   SV v2 — components: rich customer, finance summary, filter tabs,
   invoice text+icon buttons, detail panel with PIX QR code
   ============================================================ */

/* Customer card v2 — meta line com email/tel/cidade/total servicos */
.sv-customer--rich .sv-customer__main { min-width: 0; flex: 1; }
.sv-customer__meta {
    display: flex; flex-wrap: wrap; align-items: center;
    gap: 4px 6px;
    margin-top: 4px;
    color: var(--text-mute);
    font-size: .72rem;
}
.sv-customer__meta .sv-dot { opacity: .55; }

/* Service card v2 — com ícone de wifi/conexão + sub-linha velocidade */
.sv-service { gap: 12px; }
.sv-service__icon {
    width: 38px; height: 38px;
    border-radius: 10px;
    flex-shrink: 0;
    display: grid; place-items: center;
    background: linear-gradient(135deg, rgba(255,107,0,.18), rgba(255,46,99,.10));
    border: 1px solid rgba(255,107,0,.28);
    color: var(--brand-orange-2);
}
.sv-service__main { flex: 1; min-width: 0; gap: 1px; }
.sv-service__main strong { font-size: .92rem; }
.sv-service__main small  { display: block; }
.sv-service__speed {
    color: var(--brand-orange-2) !important;
    font-weight: 600 !important;
    font-size: .7rem !important;
    margin-top: 2px;
}

/* Service-head v2 — com plano/velocidade/endereço inline */
.sv-service-head--rich {
    flex-wrap: wrap;
    gap: 6px 10px;
}
.sv-service-head__main {
    flex: 1; min-width: 0;
    display: flex; flex-direction: column; gap: 2px;
}
.sv-service-head__main strong { font-size: .92rem; }
.sv-service-head__main small {
    color: var(--text-mute);
    font-size: .72rem;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* ===== Finance summary (chips) ===== */
.sv-finance {
    display: grid;
    grid-template-columns: 1.3fr 1fr;
    gap: 8px;
    margin-bottom: 12px;
}
.sv-finance[hidden] { display: none; }
.sv-finance__chip {
    padding: 12px 14px;
    border-radius: 12px;
    border: 1px solid var(--border);
    background: rgba(255,255,255,.03);
    display: flex; flex-direction: column;
    gap: 2px;
}
.sv-finance__label {
    font-size: .68rem; font-weight: 600;
    text-transform: uppercase; letter-spacing: .08em;
    color: var(--text-mute);
}
.sv-finance__chip strong {
    font-size: 1.25rem; font-weight: 700;
    line-height: 1.1;
    font-family: 'Space Grotesk', sans-serif;
    letter-spacing: -.01em;
}
.sv-finance__chip small {
    color: var(--text-dim);
    font-size: .76rem;
    margin-top: 2px;
}
.sv-finance__chip--due {
    background: linear-gradient(135deg, rgba(220,60,60,.10), rgba(255,107,0,.05));
    border-color: rgba(220,60,60,.3);
}
.sv-finance__chip--due strong { color: #ff9d9d; }
.sv-finance__chip--next {
    background: linear-gradient(135deg, rgba(40,180,99,.05), rgba(255,107,0,.04));
    border-color: rgba(255,107,0,.25);
}
.sv-finance__chip--next strong { color: var(--brand-orange-2); font-size: 1rem; }

/* ===== Filter tabs ===== */
.sv-filters {
    display: flex; gap: 4px;
    margin-bottom: 12px;
    overflow-x: auto;
    scrollbar-width: none;
    padding-bottom: 2px;
}
.sv-filters::-webkit-scrollbar { display: none; }
.sv-filter {
    flex-shrink: 0;
    padding: 7px 12px;
    border-radius: 999px;
    background: rgba(255,255,255,.04);
    border: 1px solid var(--border);
    color: var(--text-mute);
    font-size: .8rem; font-weight: 500;
    cursor: pointer;
    transition: background .15s, color .15s, border-color .15s;
    white-space: nowrap;
}
.sv-filter:hover { color: var(--text); border-color: var(--border-strong); }
.sv-filter.is-active {
    background: linear-gradient(135deg, rgba(255,107,0,.18), rgba(255,46,99,.08));
    color: var(--text);
    border-color: rgba(255,107,0,.45);
}
.sv-filter span {
    margin-left: 4px;
    padding: 0 6px;
    border-radius: 999px;
    background: rgba(0,0,0,.25);
    font-size: .7rem;
    font-variant-numeric: tabular-nums;
}
.sv-filter--vencidas.is-active  { border-color: rgba(220,60,60,.5);  background: rgba(220,60,60,.12); }
.sv-filter--em_aberto.is-active { border-color: rgba(220,170,40,.5); background: rgba(220,170,40,.12); }
.sv-filter--pagas.is-active     { border-color: rgba(40,180,99,.5);  background: rgba(40,180,99,.12); }

/* ===== Invoice card v2 — botões text+icon (substituem ícones puros) ===== */
.sv-inv__btn {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 7px 12px;
    border-radius: 8px;
    background: rgba(255,255,255,.05);
    border: 1px solid var(--border);
    color: var(--text);
    font-size: .78rem; font-weight: 500;
    text-decoration: none;
    cursor: pointer;
    transition: background .2s, border-color .2s, transform .12s;
}
.sv-inv__btn:hover { background: rgba(255,255,255,.09); border-color: rgba(255,128,40,.5); }
.sv-inv__btn:active { transform: scale(.97); }
.sv-inv__btn--primary {
    background: linear-gradient(135deg, var(--brand-orange), #ff7a3d);
    border-color: transparent;
    color: #fff;
    font-weight: 600;
}
.sv-inv__btn--primary:hover { filter: brightness(1.08); border-color: transparent; }
.sv-inv__btn.sv-btn-full { width: 100%; justify-content: center; padding: 10px 14px; font-size: .88rem; }
.sv-inv__pago { color: #8de0a8; font-weight: 600; }

/* ===== Detail panel ===== */
.sv-det__head {
    padding: 14px 16px;
    background: rgba(255,255,255,.03);
    border: 1px solid var(--border);
    border-radius: 12px;
    margin-bottom: 14px;
}
.sv-det__head .sv-badge { margin-bottom: 8px; }
.sv-det__valor {
    display: block;
    font-family: 'Space Grotesk', sans-serif;
    font-size: 1.6rem; font-weight: 700;
    line-height: 1;
    margin: 4px 0 6px;
    background: linear-gradient(90deg, var(--brand-orange), var(--brand-orange-2));
    -webkit-background-clip: text; background-clip: text; color: transparent;
}
.sv-det__sub {
    color: var(--text-dim);
    font-size: .85rem;
}

.sv-det__paid {
    display: flex; gap: 10px; align-items: flex-start;
    padding: 12px 14px;
    background: rgba(40,180,99,.10);
    border: 1px solid rgba(40,180,99,.4);
    border-radius: 12px;
    margin-bottom: 14px;
    color: #8de0a8;
}
.sv-det__paid strong { display: block; font-size: .92rem; }
.sv-det__paid small  { display: block; color: rgba(141,224,168,.75); font-size: .78rem; margin-top: 2px; }

.sv-det__section {
    background: rgba(255,255,255,.025);
    border: 1px solid var(--border);
    border-radius: 12px;
    padding: 14px;
    margin-bottom: 12px;
}
.sv-det__section h5 {
    display: inline-flex; align-items: center; gap: 6px;
    margin: 0 0 12px;
    font-family: 'Space Grotesk', sans-serif;
    font-size: .82rem; font-weight: 700;
    text-transform: uppercase; letter-spacing: .06em;
    color: var(--brand-orange-2);
}
.sv-det__section--pix {
    background: linear-gradient(135deg, rgba(40,180,99,.06), rgba(0,165,255,.04));
    border-color: rgba(0,165,255,.25);
}
.sv-det__section--pix h5 { color: #5cd3ff; }

/* PIX block: QR + copy field */
.sv-pix {
    display: grid;
    grid-template-columns: 1fr;
    gap: 12px;
}
@media (min-width: 480px) { .sv-pix { grid-template-columns: auto 1fr; } }

.sv-pix__qr {
    display: flex; flex-direction: column; align-items: center; gap: 6px;
}
.sv-pix__qr canvas {
    display: block;
    border-radius: 10px;
    background: #fff;
    padding: 8px;
    box-shadow: 0 8px 20px -8px rgba(0,0,0,.5);
}
.sv-pix__qr small { font-size: .7rem; color: var(--text-mute); text-align: center; }
.sv-pix__qr-fallback {
    padding: 30px 20px;
    background: rgba(255,255,255,.04);
    border: 1px dashed var(--border-strong);
    border-radius: 10px;
    color: var(--text-mute);
    font-size: .82rem;
    text-align: center;
}

.sv-pix__copy { display: flex; flex-direction: column; gap: 6px; }
.sv-pix__copy label,
.sv-copyfield label {
    font-size: .7rem; font-weight: 600;
    text-transform: uppercase; letter-spacing: .06em;
    color: var(--text-mute);
}
.sv-pix__copy textarea {
    width: 100%;
    min-height: 70px;
    resize: vertical;
    padding: 10px 12px;
    border-radius: 8px;
    background: rgba(0,0,0,.3);
    border: 1px solid var(--border);
    color: var(--text);
    font-family: ui-monospace, monospace;
    font-size: .72rem;
    word-break: break-all;
}

.sv-copyfield {
    display: flex; flex-direction: column; gap: 6px;
}
.sv-copyfield code {
    display: block;
    padding: 10px 12px;
    background: rgba(0,0,0,.3);
    border: 1px solid var(--border);
    border-radius: 8px;
    color: var(--text);
    font-family: ui-monospace, monospace;
    font-size: .8rem;
    word-break: break-all;
    line-height: 1.4;
}
.sv-copyfield > .sv-inv__btn {
    align-self: flex-start;
    flex-wrap: wrap;
}

.sv-det__beneficiario {
    margin-top: 8px; padding: 10px 12px;
    background: rgba(255,255,255,.025);
    border-radius: 8px;
    color: var(--text-mute);
    font-size: .76rem;
}
.sv-det__beneficiario small {
    display: block;
    text-transform: uppercase; letter-spacing: .06em; font-size: .66rem;
    margin-bottom: 2px;
}
.sv-det__beneficiario span { color: var(--text-dim); }

.sv-det__feedback {
    position: sticky; bottom: 0;
    margin-top: 10px;
    padding: 10px 14px;
    border-radius: 10px;
    text-align: center;
    font-size: .85rem; font-weight: 600;
    animation: svFade .2s var(--ease);
}
.sv-det__feedback.is-ok  { background: rgba(40,180,99,.18); border: 1px solid rgba(40,180,99,.5); color: #8de0a8; }
.sv-det__feedback.is-err { background: rgba(220,60,60,.15); border: 1px solid rgba(220,60,60,.45); color: #ffb3b3; }

/* Mobile (≤768px): modal CENTRALIZADO (não bottom-sheet), com altura dinâmica
   real (via var --app-viewport-height setada pelo JS visualViewport).
   Estado body.sv-keyboard-open ativa quando teclado abre — reduz altura do modal. */
@media (max-width: 768px) {
    .sv-modal {
        /* Altura real do viewport visual (set pelo JS); fallback 100dvh; fallback 100vh */
        height: var(--app-viewport-height, 100dvh);
        max-height: var(--app-viewport-height, 100dvh);
        padding:
            max(12px, env(safe-area-inset-top, 12px))
            12px
            max(12px, env(safe-area-inset-bottom, 12px));
        /* CENTRALIZADO no centro vertical (não bottom-sheet) */
        align-items: center;
        justify-content: center;
        overflow: hidden;
    }
    .sv-modal__card,
    .sv-modal__card--wide {
        width: min(100% - 8px, 430px);
        max-width: 430px;
        border-radius: 22px;
        /* max-height baseado no viewport real — sobra ~20px de respiro */
        max-height: calc(var(--app-viewport-height, 100dvh) - 24px);
        margin: 0 auto;
        display: flex;
        flex-direction: column;
        overflow: hidden;
    }
    /* Header sticky no topo do card — não some quando body rola */
    .sv-modal__head {
        flex: 0 0 auto;
        position: sticky;
        top: 0;
        z-index: 2;
        padding: 12px 14px;
        background: linear-gradient(180deg, #141a2e, #0f1424);
    }
    .sv-modal__body {
        flex: 1 1 auto;
        padding: 14px 14px 18px;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        overscroll-behavior: contain;
        /* Limita explicitamente — sticky header (~56px) + safe padding */
        max-height: calc(var(--app-viewport-height, 100dvh) - 90px);
    }

    /* QUANDO TECLADO ABERTO: modal ocupa quase toda viewport reduzida.
       JS adiciona body.sv-keyboard-open ao detectar visualViewport.height < innerHeight. */
    body.sv-keyboard-open .sv-modal {
        align-items: flex-start;       /* gruda no topo, input fica visível ao focar */
        padding-top: 8px;
    }
    body.sv-keyboard-open .sv-modal__card,
    body.sv-keyboard-open .sv-modal__card--wide {
        max-height: calc(var(--app-viewport-height, 100dvh) - 12px);
        border-radius: 18px;
    }
    body.sv-keyboard-open .sv-modal__body {
        max-height: calc(var(--app-viewport-height, 100dvh) - 70px);
    }

    /* Componentes internos compactados */
    .sv-inv { padding: 10px 11px; }
    .sv-inv__btn { padding: 8px 10px; font-size: .76rem; }
    .sv-finance { grid-template-columns: 1fr; }
    .sv-pix { grid-template-columns: 1fr; }
    .sv-pix__qr canvas { width: 200px !important; height: 200px !important; }
    .sv-det__valor { font-size: 1.4rem; }

    /* FABs/WhatsApp NÃO podem sobrepor o modal — z-index do modal já é > FABs,
       mas também escondemos pra reforçar a defesa visual */
    body.sv-locked .mbn,
    body.sv-locked .whatsapp-float {
        opacity: 0;
        pointer-events: none;
    }
}

/* Acessibilidade — reduz animação para quem prefere */
@media (prefers-reduced-motion: reduce) {
    .sv-modal *, .sv-inv__btn { animation: none !important; transition: none !important; }
}

/* ============================================================
   INDIQUE E GANHE — promoção R$ 50,00 no Pix
   Layout 2-col desktop (texto + imagem com badge Pix flutuante).
   Mobile empilhado, imagem acima, CTA fullwidth.
   ============================================================ */
.referral {
    position: relative;
    /* Skip paint quando fora da viewport — corta custo do GIF + smokes em listas longas */
    content-visibility: auto;
    contain-intrinsic-size: 1px 600px;
}
/* Glow ambient mais leve — gradient menor + sem blur invisível pra paint mais rápido */
.referral::before {
    content: '';
    position: absolute;
    top: 30%; left: 50%;
    width: 500px; height: 300px;
    transform: translateX(-50%);
    background: radial-gradient(ellipse at center, rgba(255, 107, 0, .08) 0%, transparent 65%);
    pointer-events: none;
    z-index: 0;
}
.referral > .container { position: relative; z-index: 1; }

.referral__card {
    display: grid;
    grid-template-columns: 1.3fr 0.85fr;     /* coluna texto maior — PNG vertical mais estreito */
    gap: 24px;
    align-items: end;                          /* colunas alinham na BASE — mascotes encostam no piso */
    padding: 36px 36px 0;                      /* sem padding-bottom: PNG vai até o limite inferior */
    border-radius: 22px;
    border: 1px solid rgba(255, 107, 0, .22);
    /* Background base: gradient dark (texto sempre legível). O GIF entra em ::after
       como camada separada — permite filter:blur + opacidade baixa + drift lento. */
    background-color: #0d1020;
    background-image: linear-gradient(135deg, rgba(20, 15, 12, .9) 0%, rgba(15, 17, 30, .94) 55%, rgba(10, 13, 26, .98) 100%);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, .04) inset,
        0 24px 60px -25px rgba(0, 0, 0, .55);
    overflow: visible;                          /* PNG dos mascotes precisa vazar acima (margin-top:-70px) */
    position: relative;
}
/* Top-edge highlight */
.referral__card::before {
    content: '';
    position: absolute;
    top: 0; left: 10%; right: 10%;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(255, 180, 80, .35), transparent);
    z-index: 1;
}
/* GIF de conexão como camada de fundo blurada + opacidade baixa + drift super lento.
   Deixa o efeito "lento e quase invisível" que o GIF original (rápido) não permitia. */
.referral__card::after {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: url('https://onnexx.meucdn.com.br/uploads/imagens/conexao_38487d0a.gif') center/130% no-repeat;
    filter: blur(3px) saturate(.8) brightness(.65);
    opacity: .18;                              /* quase invisível — só uma textura sutil */
    z-index: 0;
    pointer-events: none;
    animation: refBgDrift 60s ease-in-out infinite alternate;
    will-change: transform;
}
@keyframes refBgDrift {
    0%   { transform: scale(1)    translate(0,    0); }
    100% { transform: scale(1.06) translate(-2%, -1%); }
}
/* Filhos do card precisam ficar acima do ::after */
.referral__card > * { position: relative; z-index: 1; }

/* ===== Conteúdo (esquerda) ===== */
.referral__content {
    min-width: 0;
    padding-bottom: 36px;        /* garante respiro embaixo do texto (card não tem padding-bottom) */
}
.referral__eyebrow {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 6px 12px;
    background: #25d366;                          /* sólido — verde WhatsApp/Pix */
    border: 1px solid rgba(20, 160, 80, .65);
    border-radius: 999px;
    font-size: .72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .14em;
    color: #fff;                                  /* texto branco no verde sólido */
    margin-bottom: 14px;
    box-shadow: 0 6px 18px -6px rgba(37, 211, 102, .55);
}
.referral__eyebrow-dot {
    width: 7px; height: 7px;
    border-radius: 50%;
    background: #fff;                             /* dot branco contrasta no verde sólido */
    box-shadow: 0 0 10px rgba(255, 255, 255, .9);
    animation: refDot 1.6s ease-in-out infinite;
}
@keyframes refDot {
    0%, 100% { opacity: 1; transform: scale(1); }
    50%      { opacity: .55; transform: scale(1.3); }
}

.referral__title {
    font-family: 'Space Grotesk', sans-serif;
    font-size: clamp(1.7rem, 3.5vw, 2.4rem);
    font-weight: 700;
    line-height: 1.08;
    letter-spacing: -.02em;
    margin-bottom: 12px;
    color: var(--text);
}
.referral__lead {
    color: var(--text-dim);
    font-size: 1rem;
    line-height: 1.6;
    margin-bottom: 18px;
    max-width: 56ch;
}

/* Reward chip — destaque do valor R$ 50 */
.referral__reward {
    display: inline-flex; flex-direction: column; align-items: flex-start;
    padding: 12px 20px;
    background: linear-gradient(135deg, rgba(255, 107, 0, .14), rgba(255, 46, 99, .08));
    border: 1px solid rgba(255, 107, 0, .42);
    border-radius: 14px;
    margin-bottom: 22px;
    box-shadow: 0 12px 28px -10px rgba(255, 107, 0, .35);
}
.referral__reward-label {
    font-size: .7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .14em;
    color: var(--text-mute);
    margin-bottom: 2px;
}
.referral__reward-value {
    font-family: 'Space Grotesk', sans-serif;
    font-size: clamp(1.6rem, 3vw, 2.2rem);
    font-weight: 800;
    line-height: 1;
    letter-spacing: -.02em;
    background: linear-gradient(90deg, var(--brand-orange), var(--brand-orange-2));
    -webkit-background-clip: text; background-clip: text; color: transparent;
}

/* Steps — 1/2/3 */
.referral__steps {
    list-style: none; padding: 0; margin: 0 0 22px;
    display: flex; gap: 8px;
    flex-wrap: wrap;
}
.referral__steps li {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 8px 12px;
    background: rgba(255, 255, 255, .04);
    border: 1px solid rgba(255, 255, 255, .08);
    border-radius: 999px;
    font-size: .82rem;
    color: var(--text-dim);
}
.referral__steps li span {
    display: grid; place-items: center;
    width: 22px; height: 22px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--brand-orange), var(--brand-orange-2));
    color: #fff;
    font-family: 'Space Grotesk', sans-serif;
    font-size: .76rem;
    font-weight: 700;
}
.referral__steps li strong { color: var(--text); font-weight: 600; }

/* Actions */
.referral__actions { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 14px; }
.referral__cta { gap: 8px; }
.referral__fineprint {
    display: block;
    font-size: .76rem;
    color: var(--text-mute);
    font-style: italic;
}

/* ===== Mídia: PNG transparente dos mascotes — alinha à BASE do card
   PNG é vertical 1842×2304. align-items: flex-end faz pés encostarem no piso. */
.referral__media {
    position: relative;
    display: flex;
    justify-content: center;
    align-items: flex-end;       /* PÉS dos mascotes na base do card */
    background: transparent;
    isolation: isolate;
    min-height: 0;
    align-self: stretch;          /* ocupa toda altura disponível na linha do grid */
}
/* Glow base (fundo do palco) — sutil, só pra dar peso aos pés dos mascotes */
.referral__media::before {
    content: '';
    position: absolute;
    bottom: 6%; left: 50%;
    width: 320px; height: 110px;
    max-width: 95%;
    transform: translateX(-50%);
    background: radial-gradient(ellipse at center, rgba(255, 130, 30, .35) 0%, rgba(255, 60, 30, .18) 40%, transparent 75%);
    filter: blur(34px);
    z-index: -2;
    pointer-events: none;
}

/* ===== FUMAÇA NEON LARANJA — duas camadas animadas atrás do PNG =====
   Camada 1 (.referral__smoke): nuvem grande pulsante laranja saturado
   Camada 2 (.referral__smoke--alt): nuvem secundária deslocada, mais rosa
   Combinadas formam efeito de fumaça/brilho neon orgânico atrás dos mascotes. */
.referral__smoke {
    position: absolute;
    left: 50%; top: 45%;
    width: 360px; height: 360px;            /* reduzido — brilho atrás do PNG mais discreto */
    max-width: 100%;
    transform: translate(-50%, -50%);
    background:
        radial-gradient(circle at 30% 40%, rgba(255, 150, 50, .42) 0%, rgba(255, 107, 0, .25) 28%, transparent 62%),
        radial-gradient(circle at 70% 60%, rgba(255, 90, 40, .28) 0%, rgba(255, 46, 99, .12) 38%, transparent 68%);
    filter: blur(46px) saturate(1.25);
    border-radius: 50%;
    z-index: -1;
    pointer-events: none;
    mix-blend-mode: screen;
    animation: referralSmoke 9s ease-in-out infinite;
    will-change: transform, opacity;
    opacity: .65;
}
.referral__smoke--alt {
    width: 280px; height: 280px;
    top: 60%;
    background:
        radial-gradient(circle at 50% 50%, rgba(255, 190, 90, .35) 0%, rgba(255, 120, 30, .2) 35%, transparent 70%);
    filter: blur(52px) saturate(1.3);
    animation: referralSmokeAlt 12s ease-in-out infinite;
    animation-delay: -4s;
    opacity: .55;
}
@keyframes referralSmoke {
    0%, 100% { transform: translate(-50%, -50%) scale(1)    rotate(0deg);   opacity: .85; }
    33%      { transform: translate(-46%, -54%) scale(1.12) rotate(8deg);   opacity: 1;   }
    66%      { transform: translate(-54%, -48%) scale(.94)  rotate(-6deg);  opacity: .75; }
}
@keyframes referralSmokeAlt {
    0%, 100% { transform: translate(-50%, -50%) scale(1.05) rotate(0deg);   opacity: .9;  }
    50%      { transform: translate(-52%, -46%) scale(.88)  rotate(-12deg); opacity: .65; }
}
.referral__media img {
    /* max-height aumentada + margin-top NEGATIVO faz a imagem VAZAR pelo topo,
       mantendo presença visual maior sem aumentar a altura do card. */
    max-height: 440px;
    max-width: 100%;
    width: auto;
    height: auto;
    display: block;
    margin-top: -70px;
    filter: drop-shadow(0 24px 30px rgba(0, 0, 0, .55))
            drop-shadow(0 8px 14px rgba(255, 107, 0, .25));
    transition: transform .6s var(--ease);
}
.referral__card:hover .referral__media img { transform: scale(1.03) translateY(-4px); }

/* Tablet: 1-col, PNG vertical centralizado */
@media (max-width: 900px) {
    .referral__card { grid-template-columns: 1fr; gap: 24px; padding: 28px 22px; }
    .referral__media { width: 100%; }
    .referral__media img { max-height: 320px; }
}

/* Mobile: empilhado com imagem PRIMEIRO, tudo simetricamente alinhado ao centro */
@media (max-width: 768px) {
    /* Performance no scroll: desliga ambient glow + transform da imagem no hover.
       Mantém visual fundamental, evita travadinha em listas longas no celular. */
    .referral::before { display: none; }
    .referral__card:hover .referral__media img { transform: none; }
    .referral__media img { transition: none; }
    .referral__eyebrow-dot { animation: none; opacity: 1; }

    .referral__card {
        padding: 0 18px 24px;     /* sem padding-top — imagem encosta no topo */
        gap: 8px;                 /* gap menor entre imagem e texto */
        text-align: center;
    }
    .referral__content {
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 14px;
        padding-bottom: 0;        /* anula o padding-bottom desktop */
    }
    /* PNG mascotes: alinhado à base no mobile também (sem corte dos pés) */
    .referral__media {
        order: -1;
        width: 100%;
        align-items: flex-end;
    }
    .referral__media img { max-height: 260px; }

    /* Reseta margins entre filhos pra usar gap unicamente */
    .referral__content > * { margin: 0; }

    .referral__eyebrow {
        margin: -18px 0 0;        /* puxa "Promoção especial" mais perto da imagem */
        position: relative;
        z-index: 2;               /* fica à frente da fumaça/glow do PNG */
    }
    .referral__title { text-align: center; }
    .referral__lead {
        text-align: center;
        max-width: 100%;
    }
    .referral__reward {
        align-items: center;
        align-self: center;
    }
    .referral__steps {
        justify-content: center;
        align-self: center;
    }
    .referral__actions {
        flex-direction: column;
        gap: 8px;
        width: 100%;
        align-items: stretch;
    }
    .referral__actions .btn {
        width: 100%;
        justify-content: center;
        min-height: 48px;
    }
    .referral__fineprint { text-align: center; align-self: center; max-width: 32ch; }

    /* Mobile perf: troca o GIF (2.4MB animado) por gradient estático.
       Mantém clima visual sem decode de vídeo + repaint contínuo. */
    .referral__card {
        background-image: linear-gradient(135deg, rgba(40, 25, 15, .92) 0%, rgba(15, 17, 30, .96) 55%, rgba(10, 13, 26, 1) 100%);
        background-size: 100% 100%;
        will-change: auto;
    }
    /* Não baixa nem renderiza o GIF de 2.4MB no mobile */
    .referral__card::after { display: none; }
    /* Fumaça mobile: estática (sem animação) + sem blend-mode + blur menor.
       Animação + filter blur grande + mix-blend-mode na mesma camada custam caro
       no GPU móvel — o halo continua visível, só não pulsa. */
    .referral__smoke {
        width: 240px; height: 240px;
        filter: blur(28px);
        opacity: .5;
        animation: none;
        mix-blend-mode: normal;
    }
    .referral__smoke--alt {
        width: 180px; height: 180px;
        filter: blur(32px);
        opacity: .4;
        animation: none;
    }
    .referral__media::before { filter: blur(24px); }   /* glow base mais barato */
}

@media (prefers-reduced-motion: reduce) {
    .referral__eyebrow-dot,
    .referral__media img,
    .referral__smoke { animation: none; transition: none; }
}

/* ============================================================
   BENEFÍCIOS À LA CARTE — versão polida (UI critic v2)
   Melhorias:
   • Logos normalizados (altura 44px, max-width 140px) — ritmo visual
   • Eyebrow categoria ("Streaming"/"Telefonia") — hierarquia clara
   • Top-edge highlight em todos os cards — premium feel
   • Telefonia paridade (não destoa), preço vira badge canto sup. dir
   • Wordmark "Voz OnNexx" em vez do ícone genérico
   • CTA contextual com ícone WhatsApp ("Adicionar ao plano")
   • Padding 36px, gap 24px — mais respiro
   ============================================================ */
.benefits {
    position: relative;
}
.benefits::before {
    content: '';
    position: absolute;
    top: 20%; left: 50%;
    width: 700px; height: 400px;
    transform: translateX(-50%);
    background: radial-gradient(ellipse at center, rgba(255,107,0,.08) 0%, transparent 60%);
    pointer-events: none;
    z-index: 0;
}
.benefits > .container { position: relative; z-index: 1; }

.benefits-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;                 /* +6px de respiro */
}

.benefit-card {
    position: relative;
    padding: 36px 28px 28px;   /* +8px top, +4px lateral */
    border-radius: 20px;
    border: 1px solid rgba(255,255,255,.06);
    background:
        radial-gradient(120% 60% at 50% -10%, rgba(255,107,0,.10), transparent 60%),
        linear-gradient(180deg, rgba(20,26,46,.7) 0%, rgba(10,13,26,.92) 100%);
    backdrop-filter: blur(14px);
    box-shadow:
        0 1px 0 rgba(255,255,255,.04) inset,
        0 18px 40px -25px rgba(0,0,0,.55);
    display: flex; flex-direction: column;
    text-align: center;
    transition: transform .35s var(--ease), border-color .35s var(--ease), box-shadow .35s var(--ease);
    overflow: hidden;
}

/* Top-edge highlight (premium feel) — linha sutil branca no topo */
.benefit-card::before {
    content: '';
    position: absolute;
    top: 0; left: 12%; right: 12%;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,.22), transparent);
    pointer-events: none;
    transition: opacity .35s var(--ease);
    opacity: .8;
}
.benefit-card:hover {
    transform: translateY(-8px);
    border-color: rgba(255,107,0,.45);
    box-shadow:
        0 1px 0 rgba(255,255,255,.05) inset,
        0 36px 70px -25px rgba(255,107,0,.32),
        0 18px 40px -25px rgba(0,0,0,.65);
}
.benefit-card:hover::before {
    opacity: 1;
    background: linear-gradient(90deg, transparent, rgba(255,180,80,.5), transparent);
}

/* Eyebrow categoria — "Streaming" ou "Telefonia" (canto sup. esq.) */
.benefit-card__cat {
    position: absolute;
    top: 14px; left: 18px;
    font-size: .64rem;
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--text-mute);
    background: rgba(255,255,255,.04);
    border: 1px solid rgba(255,255,255,.08);
    padding: 3px 8px;
    border-radius: 999px;
}

/* Badge de preço (Telefonia) — canto sup. direito, contido */
.benefit-card__badge {
    position: absolute;
    top: 14px; right: 14px;
    padding: 6px 10px;
    border-radius: 10px;
    background: linear-gradient(135deg, rgba(255,107,0,.22), rgba(255,46,99,.12));
    border: 1px solid rgba(255,107,0,.45);
    box-shadow: 0 6px 18px -8px rgba(255,107,0,.5);
}
.benefit-card__badge strong {
    font-family: 'Space Grotesk', sans-serif;
    font-size: .82rem;
    font-weight: 700;
    background: linear-gradient(90deg, var(--brand-orange), var(--brand-orange-2));
    -webkit-background-clip: text; background-clip: text; color: transparent;
    letter-spacing: -.01em;
}

/* Logo container — altura fixa pra ritmo visual */
.benefit-card__logo {
    height: 64px;             /* normalizado */
    display: flex; align-items: center; justify-content: center;
    margin: 8px 0 18px;
}
.benefit-card__logo img {
    max-height: 44px;          /* todos os logos respeitam mesma altura */
    max-width: 140px;          /* cap horizontal */
    width: auto;
    object-fit: contain;
    filter: drop-shadow(0 4px 14px rgba(0,0,0,.35));
    transition: transform .35s var(--ease);
}
.benefit-card:hover .benefit-card__logo img { transform: scale(1.06); }

/* Ícone SVG do telefone (Telefonia) — gradient laranja-rosa + ondas pulsantes */
.benefit-card__icon {
    filter: drop-shadow(0 8px 18px rgba(255, 107, 0, .42));
    transition: transform .35s var(--ease);
}
.benefit-card:hover .benefit-card__icon {
    transform: scale(1.08) rotate(-6deg);
}
/* Animação das ondas: pulsa stagger (signal-like) */
.benefit-card__icon-wave {
    transform-origin: 40px 24px;        /* ponto de origem das curvas no viewBox */
    animation: bcWavePulse 2s ease-in-out infinite;
}
.benefit-card__icon-wave--1 { animation-delay: 0s;     }
.benefit-card__icon-wave--2 { animation-delay: .25s;   }
.benefit-card__icon-wave--3 { animation-delay: .5s;    }
@keyframes bcWavePulse {
    0%, 100% { opacity: .25; transform: scale(.92); }
    50%      { opacity: .85; transform: scale(1);   }
}
@media (prefers-reduced-motion: reduce) {
    .benefit-card__icon-wave { animation: none; opacity: .55; }
}

.benefit-card__title {
    font-family: 'Space Grotesk', sans-serif;
    font-size: 1.12rem;
    font-weight: 700;
    letter-spacing: -.015em;
    margin-bottom: 6px;
    color: var(--text);
}
.benefit-card__description {
    color: var(--text-dim);
    font-size: .88rem;
    line-height: 1.55;
    margin-bottom: 18px;
    flex: 1;
}

/* Card Telefonia: variant SUTIL — só leve tinta laranja, mantém paridade */
.benefit-card--phone {
    border-color: rgba(255,107,0,.22);
    background:
        radial-gradient(120% 60% at 50% -10%, rgba(255,107,0,.14), transparent 60%),
        linear-gradient(180deg, rgba(20,26,46,.7) 0%, rgba(10,13,26,.92) 100%);
}
.benefit-card--phone .benefit-card__cat {
    color: var(--brand-orange-2);
    background: rgba(255,107,0,.10);
    border-color: rgba(255,107,0,.30);
}

/* CTA — gradient laranja contextual, com ícone WhatsApp (não mais cinza apagado) */
.benefit-card__cta {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    margin-top: auto;
    padding: 10px 16px;
    background: linear-gradient(135deg, rgba(255,107,0,.16), rgba(255,46,99,.10));
    border: 1px solid rgba(255,107,0,.35);
    border-radius: 999px;
    color: var(--text);
    font-size: .84rem;
    font-weight: 600;
    text-decoration: none;
    transition: background .2s var(--ease), border-color .2s var(--ease), transform .15s var(--ease);
}
.benefit-card__cta:hover {
    background: linear-gradient(135deg, var(--brand-orange), #ff7a3d);
    border-color: transparent;
    color: #fff;
    transform: translateY(-1px);
}
.benefit-card__cta svg { color: #25d366; flex-shrink: 0; }
.benefit-card__cta:hover svg { color: #fff; }

/* Tablet: 2x2 */
@media (max-width: 1024px) {
    .benefits-grid { grid-template-columns: repeat(2, 1fr); gap: 18px; }
}

/* Mobile: carrossel horizontal scroll-snap (mesmo padrão das outras seções) */
@media (max-width: 768px) {
    .benefits-grid {
        display: flex;
        grid-template-columns: none;
        gap: 14px;
        overflow-x: auto;
        overflow-y: hidden;
        scroll-snap-type: x mandatory;
        scroll-padding: 18px;
        padding: 4px 18px 12px;
        margin: 0 -18px;
        scrollbar-width: none;
        -webkit-overflow-scrolling: touch;
    }
    .benefits-grid::-webkit-scrollbar { display: none; }
    .benefit-card {
        scroll-snap-align: center;
        flex: 0 0 78vw;
        max-width: 320px;
        min-width: 260px;
        padding: 32px 22px 22px;
    }
    .benefit-card__cat { top: 12px; left: 14px; }
    .benefit-card__badge { top: 12px; right: 12px; }
}

/* ==== Bottom Action Bar (mobile only) ==== */
.mbn { display: none; }
.plans-hint { display: none; }

/* ============================================================
   Lightbox: galeria fullscreen elegante para as imagens features
   - Backdrop blur + fade-in
   - Imagem com slide horizontal entre fotos
   - Setas prev/next + thumbnails strip
   - Keyboard: Esc fecha, ← → navega
   - Touch swipe em mobile
   ============================================================ */
.lb {
    position: fixed; inset: 0;
    z-index: 10000;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    animation: lbFade .25s var(--ease);
}
.lb[hidden] { display: none; }
.lb__backdrop {
    position: absolute; inset: 0;
    background: radial-gradient(circle at center, rgba(15, 20, 36, .94) 0%, rgba(5, 7, 15, .98) 70%);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    z-index: 0;
}
@keyframes lbFade { from { opacity: 0 } to { opacity: 1 } }

/* Stage onde a imagem grande mora — flex 1 pra ocupar todo espaço,
   min-height 0 pra permitir shrink (default em flex item é auto) */
.lb__stage {
    position: relative;
    z-index: 1;
    flex: 1;
    min-height: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 60px 80px 16px;
}
.lb__img {
    /* Cap explícito de viewport: tira espaço pra X(top) + caption + counter + thumbs */
    max-width:  min(100%, calc(100vw - 160px));
    max-height: calc(100vh - 280px);
    width: auto; height: auto;
    object-fit: contain;
    border-radius: 12px;
    box-shadow:
        0 30px 80px -10px rgba(0, 0, 0, .85),
        0 0 0 1px rgba(255, 255, 255, .06);
    background: #0a0d1a;
    animation: lbImgIn .35s var(--ease);
    transition: opacity .2s ease, transform .35s var(--ease);
}
.lb__img.is-changing-prev { animation: lbSlidePrev .35s var(--ease); }
.lb__img.is-changing-next { animation: lbSlideNext .35s var(--ease); }
@keyframes lbImgIn {
    from { opacity: 0; transform: scale(.96); }
    to   { opacity: 1; transform: scale(1); }
}
@keyframes lbSlidePrev {
    0%   { opacity: 0; transform: translateX(-40px); }
    100% { opacity: 1; transform: translateX(0); }
}
@keyframes lbSlideNext {
    0%   { opacity: 0; transform: translateX(40px); }
    100% { opacity: 1; transform: translateX(0); }
}
.lb__loader {
    position: absolute; inset: 0;
    display: grid; place-items: center;
    pointer-events: none;
}
.lb__spinner {
    width: 38px; height: 38px;
    border: 3px solid rgba(255, 255, 255, .2);
    border-top-color: var(--brand-orange);
    border-radius: 50%;
    animation: lbSpin .8s linear infinite;
}
@keyframes lbSpin { to { transform: rotate(360deg) } }

/* Botão fechar (X) */
.lb__close {
    position: absolute;
    top: 18px; right: 18px;
    z-index: 3;
    width: 44px; height: 44px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .08);
    border: 1px solid rgba(255, 255, 255, .15);
    backdrop-filter: blur(10px);
    color: #fff;
    cursor: pointer;
    display: grid; place-items: center;
    transition: background .2s, border-color .2s, transform .15s;
}
.lb__close:hover {
    background: rgba(255, 255, 255, .15);
    border-color: var(--brand-orange);
    transform: scale(1.05);
}

/* Setas prev/next (laterais) */
.lb__nav {
    position: absolute;
    top: 50%; transform: translateY(-50%);
    z-index: 3;
    width: 56px; height: 56px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .06);
    border: 1px solid rgba(255, 255, 255, .12);
    backdrop-filter: blur(10px);
    color: #fff;
    cursor: pointer;
    display: grid; place-items: center;
    transition: background .25s, border-color .25s, transform .2s;
}
.lb__nav--prev { left: 18px; }
.lb__nav--next { right: 18px; }
.lb__nav:hover {
    background: rgba(255, 107, 0, .25);
    border-color: var(--brand-orange);
    transform: translateY(-50%) scale(1.08);
}
.lb__nav:active { transform: translateY(-50%) scale(.95); }

/* Caption + contador */
.lb__caption {
    position: relative; z-index: 1;
    text-align: center;
    color: #fff;
    font-family: 'Space Grotesk', sans-serif;
    font-size: 1.1rem;
    font-weight: 600;
    padding: 12px 60px 4px;
    letter-spacing: -.005em;
    animation: lbFade .35s var(--ease);
}
.lb__counter {
    position: relative; z-index: 1;
    text-align: center;
    color: rgba(255, 255, 255, .55);
    font-size: .8rem;
    letter-spacing: .14em;
    font-weight: 600;
    padding: 0 60px 12px;
    text-transform: uppercase;
    font-variant-numeric: tabular-nums;
}
.lb__counter strong { color: var(--brand-orange-2); }

/* Strip de thumbnails na base */
.lb__thumbs {
    position: relative; z-index: 1;
    display: flex; justify-content: center;
    gap: 8px;
    padding: 12px 24px 24px;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}
.lb__thumbs::-webkit-scrollbar { display: none; }
.lb__thumb {
    flex-shrink: 0;
    width: 56px; height: 56px;
    border-radius: 8px;
    overflow: hidden;
    border: 2px solid transparent;
    background: rgba(255, 255, 255, .04);
    cursor: pointer;
    opacity: .55;
    transition: opacity .2s, border-color .2s, transform .15s;
}
.lb__thumb img {
    width: 100%; height: 100%;
    object-fit: cover;
    display: block;
}
.lb__thumb:hover {
    opacity: .85;
    transform: translateY(-2px);
}
.lb__thumb.is-active {
    opacity: 1;
    border-color: var(--brand-orange);
    box-shadow: 0 0 0 1px rgba(255, 107, 0, .4), 0 8px 20px -8px rgba(255, 107, 0, .5);
}

/* Mobile: setas menores, thumbs menores, padding menor */
@media (max-width: 720px) {
    .lb__stage { padding: 50px 56px 8px; }     /* 56px lateral pras setas não cobrirem */
    .lb__img {
        max-width:  calc(100vw - 112px);       /* 56 + 56 das setas */
        max-height: calc(100vh - 240px);
    }
    .lb__close { top: 12px; right: 12px; width: 40px; height: 40px; }
    .lb__nav  { width: 44px; height: 44px; }
    .lb__nav--prev { left: 8px; }
    .lb__nav--next { right: 8px; }
    .lb__caption { font-size: .95rem; padding: 8px 56px 2px; }
    .lb__counter { font-size: .72rem; padding: 0 56px 8px; }
    .lb__thumb { width: 44px; height: 44px; }
    .lb__thumbs { padding: 8px 12px 16px; }
}

/* ==== WhatsApp float ==== */
.whatsapp-float {
    position: fixed; bottom: 24px; right: 24px; z-index: var(--z-float);
    width: 60px; height: 60px;
    border-radius: 50%;
    background: linear-gradient(135deg, #25d366, #128c7e);
    color: #fff;
    display: grid; place-items: center;
    box-shadow: 0 15px 35px -8px rgba(37, 211, 102, .55), 0 0 0 0 rgba(37, 211, 102, .4);
    animation: whatsappPulse 2.2s ease-out infinite;
    transition: transform .2s var(--ease), opacity .25s var(--ease);
}
/* Esconde o botão WhatsApp quando o menu mobile está aberto,
   evitando que cubra o último item do drawer */
body.nav-open .whatsapp-float {
    opacity: 0; visibility: hidden; pointer-events: none;
    transform: scale(.85);
}
.whatsapp-float:hover { transform: scale(1.08); }
@keyframes whatsappPulse {
    0%   { box-shadow: 0 15px 35px -8px rgba(37, 211, 102, .55), 0 0 0 0 rgba(37, 211, 102, .5); }
    70%  { box-shadow: 0 15px 35px -8px rgba(37, 211, 102, .55), 0 0 0 22px rgba(37, 211, 102, 0); }
    100% { box-shadow: 0 15px 35px -8px rgba(37, 211, 102, .55), 0 0 0 0 rgba(37, 211, 102, 0); }
}

/* ==== Page hero (inner pages) ==== */
.page-hero {
    padding: 80px 0 60px;
    text-align: center;
    position: relative;
}
.page-hero h1 {
    font-family: 'Space Grotesk', sans-serif;
    font-size: clamp(2rem, 4vw, 3.25rem);
    font-weight: 700; line-height: 1.1; letter-spacing: -.02em;
    margin-bottom: 18px;
}
.page-hero p { color: var(--text-dim); font-size: 1.1rem; max-width: 720px; margin: 0 auto; }

/* ===== Page-hero "biz" (empresarial.php) — versão premium tecnológica =====
   Background: grid sutil + glow laranja radial + gradient angular
   Conteúdo: badge + título com accent + subtitle + CTAs + chips de stats */
.page-hero--biz {
    padding: 96px 0 72px;
    overflow: hidden;
}
.page-hero__bg {
    position: absolute; inset: 0;
    pointer-events: none;
    z-index: 0;
}
.page-hero__grid {
    position: absolute; inset: 0;
    background-image:
        linear-gradient(rgba(255,255,255,.025) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px);
    background-size: 48px 48px;
    mask-image: radial-gradient(ellipse 70% 50% at 50% 30%, #000 30%, transparent 80%);
    -webkit-mask-image: radial-gradient(ellipse 70% 50% at 50% 30%, #000 30%, transparent 80%);
    opacity: .65;
}
.page-hero__glow {
    position: absolute;
    top: -10%; left: 50%;
    width: 800px; height: 600px;
    transform: translateX(-50%);
    background: radial-gradient(ellipse at center, rgba(255,107,0,.18) 0%, transparent 60%);
    filter: blur(40px);
}
.page-hero--biz > .container { position: relative; z-index: 1; }
.page-hero--biz h1 {
    margin-bottom: 16px;
}
.page-hero--biz p {
    font-size: 1.1rem;
    line-height: 1.55;
    margin-bottom: 32px;
}
.page-hero__actions {
    display: flex; gap: 12px; justify-content: center; flex-wrap: wrap;
    margin-top: 28px;
}
.page-hero__actions .btn { gap: 8px; }

/* Stats chips — proof points abaixo dos CTAs */
.page-hero__stats {
    list-style: none; padding: 0;
    margin: 36px auto 0;
    display: inline-flex;
    gap: 8px;
    flex-wrap: wrap;
    justify-content: center;
}
.page-hero__stats li {
    padding: 8px 16px;
    background: rgba(255,255,255,.04);
    border: 1px solid rgba(255,255,255,.08);
    border-radius: 999px;
    backdrop-filter: blur(8px);
    display: inline-flex;
    gap: 6px;
    align-items: baseline;
    font-size: .82rem;
    color: var(--text-dim);
}
.page-hero__stats strong {
    color: var(--brand-orange-2);
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 700;
    letter-spacing: -.01em;
}

/* ==== Reveal animation ==== */
.reveal {
    opacity: 0; transform: translateY(24px);
    transition: opacity .7s var(--ease), transform .7s var(--ease);
}
.reveal.is-visible { opacity: 1; transform: none; }

/* ==== Responsive (consolidado) ==== */
@media (max-width: 1024px) {
    .plans { grid-template-columns: repeat(2, 1fr); }
    .features { grid-template-columns: 1fr; }
    .split, .contact-grid { grid-template-columns: 1fr; gap: 40px; }
    /* :not(--video) preserva o aspect-ratio próprio do card de vídeo (9:16) */
    .split__media:not(.split__media--video) { aspect-ratio: 16/9; }
    /* Card de vídeo no mobile: menor (foguete cabe inteiro, mantém proporção) */
    .split__media--video { max-width: 220px; }
    .hero__stats { grid-template-columns: repeat(2, 1fr); }
    /* Footer tablet: 2x2 (já declarado também na seção do footer com gap 32px) */
}

/* ============================================================
   MOBILE ≤ 720px — bloco único consolidado
   Contém: header, drawer, hero, planos, bottom bar, footer, forms
   ============================================================ */
@media (max-width: 720px) {
    :root { --nav-h: 68px; }
    .container { padding: 0 18px; }
    .section { padding: 60px 0; }
    .hero { padding: 50px 0 40px; }
    .brand__logo { height: 34px; }
    .brand__logo--lg { height: 40px; }

    /* Header MOBILE: sticky herdado (acompanha scroll = fica visível enquanto desce a página).
       IMPORTANTE: backdrop-filter REMOVIDO em mobile — ele cria containing block que prende o
       drawer lateral (position: fixed) dentro do header no Chrome Android.
       Como compensação visual, fundo sólido escuro substitui o efeito glass. */
    .site-header {
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
        background: rgba(5, 7, 15, .94);
    }
    .site-header.is-scrolled { background: rgba(5, 7, 15, .98); }

    /* Logo centralizado no mobile: nav-toggle sai do flow (absolute), brand fica no centro */
    .site-header__inner { justify-content: center; position: relative; }
    .nav-toggle { position: absolute; right: 18px; top: 50%; transform: translateY(-50%); }
    .brand { margin: 0 auto; }

    /* Logo no TOPO do drawer mobile, centralizado — sem fundo (logo branco já tem alpha) */
    .site-nav__brand {
        order: -1;
        display: flex; justify-content: center; align-items: center;
        margin: 0 auto 22px;
        padding: 8px;
        background: transparent;
        border: 0;
        box-shadow: none;
        opacity: 1;
        animation: navBrandIn .5s var(--ease) backwards;
        animation-delay: .04s;
    }
    .site-nav__brand img {
        height: 48px; width: auto;
        max-width: 100%;
        display: block;
        filter: drop-shadow(0 4px 14px rgba(255, 107, 0, .18));
    }
    @keyframes navBrandIn {
        from { opacity: 0; transform: translateY(-12px); }
        to   { opacity: 1; transform: translateY(0); }
    }

    /* Coverage cards — performance no scroll mobile.
       backdrop-filter blur(14px) é GPU-pesado em listas; substituímos por glass sólido. */
    .coverage__card {
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
        will-change: auto;
    }

    /* Padding do body pra FABs não tampar conteúdo do rodapé */
    body { padding-bottom: calc(90px + env(safe-area-inset-bottom, 0px)); }
    body.nav-open { padding-bottom: 0; overflow: hidden; }

    /* Toque mínimo 44×44 (Apple HIG) */
    .nav-toggle { display: flex; width: 44px; height: 44px; }

    /* Vídeo de fundo do hero TAMBÉM no mobile (com fallback pro poster).
       O JS em main.js só carrega o vídeo se canPlay && !saveData. Quando
       saveData estiver ligado ou o autoplay falhar, o poster cobre. */
    .hero__video {
        background: #0a0d1a url('/assets/video/hero-poster.jpg') center/cover no-repeat;
    }
    /* Diminui um pouco a saturação do vídeo no mobile pra texto respirar */
    .hero__video-el { filter: saturate(.85) contrast(1.05) brightness(.78); }

    /* Hero mobile — texto denso, CTAs em coluna */
    .hero__title { font-size: clamp(1.85rem, 7vw, 2.3rem); line-height: 1.08; }
    .hero__subtitle { font-size: .96rem; margin-bottom: 26px; }
    .hero__actions { flex-direction: column; gap: 10px; margin-bottom: 32px; }
    .hero__actions .btn { width: 100%; padding: 15px 20px; font-size: 1rem; }

    /* Page-hero "biz" mobile — compactação + CTAs full-width + stats em linha */
    .page-hero { padding: 60px 0 48px; }
    .page-hero--biz { padding: 64px 0 50px; }
    .page-hero h1 { font-size: clamp(1.7rem, 7vw, 2.1rem); line-height: 1.12; margin-bottom: 12px; }
    .page-hero p { font-size: .96rem; line-height: 1.55; margin-bottom: 22px; }
    .page-hero__actions {
        flex-direction: column;
        gap: 10px;
        margin-top: 22px;
    }
    .page-hero__actions .btn {
        width: 100%;
        padding: 14px 18px;
        font-size: .98rem;
        justify-content: center;
    }
    .page-hero__stats {
        margin-top: 26px;
        gap: 6px;
    }
    .page-hero__stats li {
        padding: 6px 12px;
        font-size: .76rem;
    }
    .page-hero__grid { background-size: 36px 36px; opacity: .45; }

    /* hero já é centralizado; nenhum override extra de cols necessário */
    .hero__stats {
        grid-template-columns: repeat(2, 1fr);
        gap: 12px;
        padding: 18px;
        margin-top: 28px;
    }
    .hero__stat .num { font-size: 1.5rem; }
    .hero__stat .label { font-size: .76rem; }
    .hero__badge { font-size: .76rem; padding: 6px 10px; }

    /* Section head compacto */
    .section__title { font-size: clamp(1.5rem, 6vw, 2rem); }
    .section__head { margin-bottom: 36px; }
    .section__subtitle { font-size: .94rem; }

    /* ===== DRAWER LATERAL DIREITA (app-like) — versão premium ===== */
    .site-nav {
        position: fixed; top: 0; right: 0; bottom: 0; left: auto;
        z-index: var(--z-nav-mobile);
        flex-direction: column; align-items: stretch; gap: 0;
        width: min(86vw, 340px);
        padding: calc(var(--nav-h) + 20px + env(safe-area-inset-top, 0px)) 18px calc(20px + env(safe-area-inset-bottom, 0px));
        /* Background com gradient angular + glow laranja sutil no topo */
        background:
            radial-gradient(120% 50% at 50% 0%, rgba(255,107,0,.12) 0%, transparent 50%),
            linear-gradient(180deg, rgba(15, 20, 36, .98) 0%, rgba(5, 7, 15, .995) 100%);
        backdrop-filter: blur(24px) saturate(150%);
        -webkit-backdrop-filter: blur(24px) saturate(150%);
        border-left: 1px solid rgba(255, 107, 0, .15);
        box-shadow: -30px 0 80px -10px rgba(0,0,0,.8);
        transform: translateX(100%);
        transition: transform .42s cubic-bezier(.2,.9,.3,1);
        max-height: none;
        overflow-y: auto;
        overscroll-behavior: contain;
    }
    .site-nav.is-open { transform: translateX(0); }

    /* Backdrop com leve gradient escuro (não preto puro) */
    body.nav-open::before {
        content: '';
        position: fixed; inset: 0;
        z-index: calc(var(--z-nav-mobile) - 1);
        background: radial-gradient(circle at center, rgba(5,7,15,.6) 0%, rgba(5,7,15,.85) 100%);
        backdrop-filter: blur(6px);
        -webkit-backdrop-filter: blur(6px);
        animation: navBackdropFade .3s var(--ease);
    }
    @keyframes navBackdropFade { from { opacity: 0; } to { opacity: 1; } }

    /* Lista de links — cards modernos, sem border-bottom estilo "lista plain" */
    .site-nav > ul {
        list-style: none;
        margin: 0 0 16px;
        padding: 0;
        display: flex; flex-direction: column;
        gap: 4px;
        width: 100%;
    }
    .site-nav > ul li {
        display: block;
        width: 100%;
        border: 0;            /* remove border-bottom antigo */
    }
    .site-nav > ul a {
        display: flex;
        align-items: center;
        gap: 12px;
        width: 100%;
        padding: 13px 14px;
        font-size: .98rem;
        font-weight: 500;
        min-height: 48px;
        color: #cdd2e3;
        text-decoration: none;
        border-radius: 12px;
        position: relative;
        transition: background .2s var(--ease), color .2s var(--ease), transform .12s var(--ease);
    }
    .site-nav > ul .nav-ic {
        display: inline-block;            /* sobrescreve display:none global */
        flex-shrink: 0;
        color: var(--text-mute);
        transition: color .2s var(--ease), transform .25s var(--ease);
    }
    /* No mobile, restaurar estilo do item destaque (override da regra global) */
    .site-nav > ul .nav-link--accent {
        margin-top: 6px;
        background: linear-gradient(90deg, rgba(255,46,99,.10) 0%, rgba(255,107,0,.08) 100%);
        border: 1px solid rgba(255,107,0,.20);
    }
    .site-nav > ul a:hover,
    .site-nav > ul a:focus-visible {
        background: linear-gradient(90deg, rgba(255,107,0,.10) 0%, rgba(255,107,0,.02) 100%);
        color: #fff;
    }
    .site-nav > ul a:hover .nav-ic,
    .site-nav > ul a:focus-visible .nav-ic { color: var(--brand-orange-2); transform: scale(1.08); }
    .site-nav > ul a:active { transform: scale(.98); }

    /* Item ativo — destaque com barra lateral laranja */
    .site-nav > ul a.is-active {
        color: #fff;
        font-weight: 600;
        background: linear-gradient(90deg, rgba(255,107,0,.16) 0%, rgba(255,107,0,.04) 100%);
    }
    .site-nav > ul a.is-active::after { display: none; }   /* sobrescreve regra global */
    .site-nav > ul a.is-active::before {
        content: '';
        position: absolute;
        left: 0; top: 12px; bottom: 12px;
        width: 3px;
        border-radius: 0 4px 4px 0;
        background: linear-gradient(180deg, var(--brand-orange), var(--brand-orange-2));
        box-shadow: 0 0 8px rgba(255,107,0,.6);
    }
    .site-nav > ul a.is-active .nav-ic { color: var(--brand-orange-2); }

    /* Item "destaque" (2ª via) — visual diferenciado */
    .site-nav > ul .nav-link--accent {
        margin-top: 6px;
        background: linear-gradient(90deg, rgba(255,46,99,.10) 0%, rgba(255,107,0,.08) 100%);
        border: 1px solid rgba(255,107,0,.20);
    }
    .site-nav > ul .nav-link--accent .nav-ic { color: var(--brand-orange-2); }

    /* Stagger animation: items entram em cascata quando o drawer abre */
    .site-nav.is-open > ul li {
        animation: navItemIn .42s var(--ease) backwards;
    }
    .site-nav.is-open > ul li:nth-child(1) { animation-delay: .08s; }
    .site-nav.is-open > ul li:nth-child(2) { animation-delay: .12s; }
    .site-nav.is-open > ul li:nth-child(3) { animation-delay: .16s; }
    .site-nav.is-open > ul li:nth-child(4) { animation-delay: .20s; }
    .site-nav.is-open > ul li:nth-child(5) { animation-delay: .24s; }
    .site-nav.is-open > ul li:nth-child(6) { animation-delay: .28s; }
    @keyframes navItemIn {
        from { opacity: 0; transform: translateX(20px); }
        to   { opacity: 1; transform: translateX(0); }
    }

    /* CTA WhatsApp — visualmente separado dos itens, com pulse sutil */
    .site-nav .nav-cta {
        margin: 12px 0 0;
        justify-content: center;
        min-height: 50px;
        width: 100%;
        font-size: 1rem;
        font-weight: 600;
        background: linear-gradient(135deg, #25d366, #128c7e);
        border: 0;
        box-shadow: 0 8px 22px -6px rgba(37,211,102,.5);
    }
    .site-nav .nav-cta:hover { filter: brightness(1.08); }

    /* ==== FABs flutuantes (Ligar + WhatsApp) empilhados, bottom-right ====
       Sempre visíveis (inclusive no topo da página) */
    .mbn {
        display: flex;
        flex-direction: column;
        align-items: flex-end;
        gap: 10px;
        position: fixed;
        right: 16px;
        bottom: calc(16px + env(safe-area-inset-bottom, 0px));
        z-index: var(--z-float);
        opacity: 1;
        transform: none;
        pointer-events: auto;
        transition: transform .35s var(--ease), opacity .3s var(--ease);
        animation: mbnEnter .5s var(--ease) .2s backwards;
    }
    @keyframes mbnEnter {
        from { opacity: 0; transform: translateY(20px) scale(.9); }
        to   { opacity: 1; transform: none; }
    }
    .mbn__btn {
        width: 52px; height: 52px;
        border-radius: 50%;
        display: grid; place-items: center;
        color: #fff;
        text-decoration: none;
        transition: transform .15s var(--ease), box-shadow .25s var(--ease);
    }
    .mbn__btn svg { width: 22px; height: 22px; flex-shrink: 0; }
    .mbn__btn:active { transform: scale(.92); }
    .mbn__label { display: none; }   /* FAB é só ícone */

    .mbn__btn--call {
        background: linear-gradient(135deg, #2563ff 0%, #1749d6 100%);
        box-shadow: 0 10px 24px -6px rgba(37, 99, 255, .55), 0 0 0 0 rgba(37, 99, 255, .4);
    }
    .mbn__btn--primary {
        background: linear-gradient(135deg, #25d366 0%, #128c7e 100%);
        box-shadow: 0 12px 28px -6px rgba(37, 211, 102, .6), 0 0 0 0 rgba(37, 211, 102, .4);
        animation: whatsappPulseFab 2.2s ease-out infinite;
    }
    @keyframes whatsappPulseFab {
        0%   { box-shadow: 0 12px 28px -6px rgba(37, 211, 102, .6), 0 0 0 0 rgba(37, 211, 102, .5); }
        70%  { box-shadow: 0 12px 28px -6px rgba(37, 211, 102, .6), 0 0 0 18px rgba(37, 211, 102, 0); }
        100% { box-shadow: 0 12px 28px -6px rgba(37, 211, 102, .6), 0 0 0 0 rgba(37, 211, 102, 0); }
    }

    body.nav-open .mbn {
        transform: translateX(120%);
        opacity: 0;
        pointer-events: none;
    }

    /* O float redondo antigo fica escondido (FABs já cobrem a função) */
    .whatsapp-float { display: none !important; }

    /* ==== Planos: carrossel horizontal touch-friendly ==== */
    .plans {
        display: flex;
        grid-template-columns: none;
        overflow-x: auto;
        overflow-y: hidden;
        scroll-snap-type: x mandatory;
        scroll-padding: 18px;
        gap: 14px;
        padding: 4px 18px 12px;
        margin: 0 -18px;
        scrollbar-width: none;
        -webkit-overflow-scrolling: touch;
    }
    .plans::-webkit-scrollbar { display: none; }
    .plans .plan {
        scroll-snap-align: center;
        flex: 0 0 82vw;
        max-width: 320px;
        min-width: 260px;
    }
    .plans-hint {
        display: flex !important;
        justify-content: center; align-items: center;
        gap: 6px; margin-top: 10px;
        font-size: .78rem; color: var(--text-mute);
    }
    .plans-hint::before,
    .plans-hint::after { content: ''; height: 1px; width: 20px; background: var(--border); }

    /* ==== Plans tabs (Pessoa Física / Empresarial / Conexão e Segurança): pills compactas mobile ==== */
    .plans-tabs__center {
        margin: 0 -18px;            /* ocupa toda a largura mobile */
        padding: 0 18px;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }
    .plans-tabs__center::-webkit-scrollbar { display: none; }
    .plans-tabs {
        display: inline-flex;
        flex-wrap: nowrap;
        margin: 0 0 28px;
        padding: 4px;
        gap: 0;
    }
    .plan-tab {
        padding: 7px 12px;
        font-size: .78rem;
        font-weight: 600;
        line-height: 1.2;
        white-space: nowrap;
        flex-shrink: 0;
    }

    /* ==== Features ("Por que OnNexx?") + Segments: scroll horizontal mobile ==== */
    .features,
    .segments__grid {
        display: flex !important;
        grid-template-columns: none;
        overflow-x: auto;
        overflow-y: hidden;
        scroll-snap-type: x mandatory;
        scroll-padding: 18px;
        gap: 14px;
        padding: 4px 18px 12px;
        margin: 0 -18px;
        scrollbar-width: none;
        -webkit-overflow-scrolling: touch;
    }
    .features::-webkit-scrollbar,
    .segments__grid::-webkit-scrollbar { display: none; }
    .features > .feature,
    .segments__grid > .segment-card {
        scroll-snap-align: center;
        flex: 0 0 82vw;
        max-width: 320px;
        min-width: 260px;
    }
    /* Card de feature precisa de altura uniforme no carrossel */
    .features > .feature--media { display: flex; flex-direction: column; }

    /* ==== Forms: evita zoom do iOS (precisa font-size >= 16px) ==== */
    .form-group input,
    .form-group select,
    .form-group textarea { font-size: 16px; }

    /* ==== Contato.php mobile: cards de contato com mais respiro ==== */
    .contact-info__item {
        padding: 14px 12px;
        border-radius: 12px;
        background: rgba(255,255,255,.025);
        border: 1px solid var(--border);
        margin-bottom: 10px;
        gap: 12px;
    }
    .contact-info__item:hover { border-color: rgba(255,107,0,.3); }
    .contact-info__value a {
        display: inline-block;
        padding: 4px 0;
        font-size: 1rem;
    }
    .contact-grid { gap: 22px !important; }
    .form input, .form textarea, .form select { min-height: 46px; }
    .form button[type="submit"] { width: 100%; min-height: 50px; font-size: 1rem; }

    /* ==== Desliga reveal-on-scroll em mobile — quem rola rápido de dedo
       perdia conteúdo quando IntersectionObserver não disparava ==== */
    .reveal,
    .feature,
    .plan,
    .contact-info,
    .form,
    .cta-big,
    .split,
    .coverage__card {
        opacity: 1 !important;
        transform: none !important;
    }

    /* ==== Hero badge: força uma linha; esconde texto longo pra deixar relógio respirar ==== */
    .hero__badge {
        max-width: 100%;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        font-size: .74rem;
    }
    .hero__badge-extra { display: none; }   /* "com estabilidade" some em mobile */

    /* ==== Footer mobile — fundo sólido + grid 2-col compacto ====
       Sem fundo sólido, o overscroll/bounce expõe a primeira camada do site.
       Grid 2-col (cobertura | extras) reduz a altura ~40% versus empilhado. */
    .site-footer {
        background: linear-gradient(180deg, #0c1024 0%, #06080f 100%);
    }
    .site-footer__grid {
        grid-template-columns: 1fr 1fr;
        gap: 22px 18px;
    }
    /* Coluna brand+desc ocupa as 2 colunas no topo, depois resto vira 2-up */
    .site-footer__col:first-child { grid-column: 1 / -1; text-align: center; }
    .site-footer__col:first-child .social,
    .site-footer__col:first-child .brand { justify-content: center; }
    .site-footer__col h4 { font-size: .82rem; }
    .site-footer__col ul { font-size: .86rem; }

    .site-footer__bottom {
        flex-direction: column;
        align-items: center;
        text-align: center;
        gap: 12px;
    }
    .form-row { grid-template-columns: 1fr; }
    .cta-big { padding: 40px 24px; }
    .contact-info, .form { padding: 26px; }
}

/* Telas muito pequenas: esconde "Rede operando ·" pra caber a data+relógio completos */
@media (max-width: 420px) {
    .hero__badge-status { display: none !important; }
}
