/* =====================================================================
   SHIELDCLOAK — DARK ICE / FROZEN TECHNOLOGY
   Sistema de design da landing page. Carregado apenas quando deslogado,
   depois de style.css, e escopado em body.is-landing.
   ===================================================================== */

body.is-landing {
    /* Base */
    --dx-bg: #05080C;
    --dx-bg-2: #080D14;
    --dx-blue: #0B1622;

    /* Gelo */
    --dx-ice: #7DD3FC;
    --dx-ice-strong: #38BDF8;
    --dx-white: #EAF7FF;
    --dx-muted: #8FA3B5;

    /* Estrutura */
    --dx-border: rgba(125, 211, 252, 0.12);
    --dx-border-strong: rgba(125, 211, 252, 0.28);
    --dx-surface: linear-gradient(135deg, rgba(255, 255, 255, 0.07), rgba(255, 255, 255, 0.015));
    --dx-shadow: 0 20px 80px rgba(0, 0, 0, 0.45);

    /* Tipografia */
    --dx-font: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
    --dx-font-display: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;

    /* Ritmo */
    --dx-radius: 20px;
    --dx-radius-lg: 26px;
    --dx-ease: cubic-bezier(0.22, 0.68, 0.28, 1);
    --dx-nav-h: 74px;

    /* Spotlight do mouse (atualizado por JS) */
    --dx-mx: 50vw;
    --dx-my: 20vh;
    --dx-spot: 0;

    background: var(--dx-bg);
    color: var(--dx-white);
    font-family: var(--dx-font);
    font-size: 16.5px;
    line-height: 1.65;
    letter-spacing: -0.006em;
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
}

body.is-landing.dx-locked { overflow: hidden; }

/* style.css aplica font-family via seletor universal; devolvemos a herança
   para que a tipografia da landing valha em toda a árvore. */
.is-landing *,
.is-landing *::before,
.is-landing *::after { font-family: inherit; }

/* style.css força Syne nos títulos da landing; a fase 2 usa Inter em tudo. */
body.is-landing h1,
body.is-landing h2,
body.is-landing h3,
body.is-landing .pricing-value {
    font-family: var(--dx-font-display);
    font-weight: 800;
    letter-spacing: -0.035em;
}

.is-landing ::selection { background: rgba(56, 189, 248, 0.3); color: #fff; }

.is-landing :focus-visible {
    outline: 2px solid var(--dx-ice);
    outline-offset: 3px;
    border-radius: 6px;
}

/* ---------------------------------------------------------------
   1. BACKGROUND GLOBAL
   --------------------------------------------------------------- */
.dx-bg {
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
    background:
        radial-gradient(1400px 700px at 50% -12%, rgba(56, 189, 248, 0.12), transparent 46%),
        radial-gradient(900px 620px at 100% 18%, rgba(14, 165, 233, 0.08), transparent 55%),
        linear-gradient(180deg, #05080C 0%, #060B12 42%, #05080C 100%);
}

.dx-bg-grid {
    position: absolute;
    inset: -20%;
    background-image:
        linear-gradient(rgba(125, 211, 252, 0.055) 1px, transparent 1px),
        linear-gradient(90deg, rgba(125, 211, 252, 0.055) 1px, transparent 1px);
    background-size: 64px 64px;
    mask-image: radial-gradient(ellipse 80% 60% at 50% 30%, #000 5%, transparent 78%);
    -webkit-mask-image: radial-gradient(ellipse 80% 60% at 50% 30%, #000 5%, transparent 78%);
    animation: dxGridDrift 46s linear infinite;
}

.dx-bg-glow {
    position: absolute;
    border-radius: 50%;
    filter: blur(80px);
    opacity: 0.55;
}
.dx-bg-glow-1 {
    width: 60vw; height: 44vw;
    max-width: 900px; max-height: 640px;
    top: -16vw; left: 50%;
    transform: translateX(-50%);
    background: radial-gradient(circle, rgba(56, 189, 248, 0.22), transparent 66%);
    animation: dxBreathe 14s ease-in-out infinite;
}
.dx-bg-glow-2 {
    width: 46vw; height: 46vw;
    max-width: 700px; max-height: 700px;
    top: 44%; right: -14vw;
    background: radial-gradient(circle, rgba(125, 211, 252, 0.12), transparent 68%);
    animation: dxBreathe 19s ease-in-out infinite reverse;
}
.dx-bg-glow-3 {
    width: 52vw; height: 40vw;
    max-width: 760px; max-height: 560px;
    bottom: -14vw; left: -10vw;
    background: radial-gradient(circle, rgba(14, 165, 233, 0.12), transparent 70%);
    animation: dxBreathe 23s ease-in-out infinite;
}

/* Varredura horizontal muito lenta, como um scanner */
.dx-bg-scan {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, transparent 0%, rgba(125, 211, 252, 0.055) 50%, transparent 100%);
    height: 46vh;
    animation: dxScan 17s linear infinite;
    opacity: 0.6;
}

.dx-bg-noise {
    position: absolute;
    inset: 0;
    opacity: 0.035;
    mix-blend-mode: overlay;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* Iluminação que segue o mouse */
.dx-spot {
    position: absolute;
    inset: 0;
    opacity: var(--dx-spot);
    transition: opacity 0.5s ease;
    background: radial-gradient(420px circle at var(--dx-mx) var(--dx-my), rgba(56, 189, 248, 0.09), transparent 62%);
}

@keyframes dxGridDrift {
    from { transform: translate3d(0, 0, 0); }
    to { transform: translate3d(-64px, -64px, 0); }
}
@keyframes dxBreathe {
    0%, 100% { transform: translate3d(0, 0, 0) scale(1); opacity: 0.5; }
    50% { transform: translate3d(0, 3%, 0) scale(1.09); opacity: 0.72; }
}
.dx-bg-glow-1 { animation-name: dxBreatheCenter; }
@keyframes dxBreatheCenter {
    0%, 100% { transform: translateX(-50%) scale(1); opacity: 0.5; }
    50% { transform: translateX(-50%) scale(1.1); opacity: 0.75; }
}
@keyframes dxScan {
    0% { transform: translateY(-60vh); }
    100% { transform: translateY(130vh); }
}

/* ---------------------------------------------------------------
   2. BOOT / LOADING
   Some sozinho via CSS mesmo se o JS falhar.
   --------------------------------------------------------------- */
.dx-boot {
    position: fixed;
    inset: 0;
    z-index: 999;
    display: grid;
    place-items: center;
    background: #05080C;
    animation: dxBootOut 0.5s var(--dx-ease) 1.15s forwards;
}
.dx-boot.is-done { animation: dxBootOut 0.4s var(--dx-ease) forwards; }
.dx-boot-inner { width: min(260px, 70vw); text-align: center; }
.dx-boot-mark {
    display: block;
    width: 34px; height: 34px;
    margin: 0 auto 1.1rem;
    border-radius: 10px;
    background: linear-gradient(140deg, #EAF7FF, #38BDF8 55%, #0B1622);
    box-shadow: 0 0 26px rgba(56, 189, 248, 0.5);
    animation: dxBootPulse 1.1s ease-in-out infinite;
}
.dx-boot-label {
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: var(--dx-muted);
    margin-bottom: 0.85rem;
}
.dx-boot-bar {
    height: 2px;
    border-radius: 2px;
    background: rgba(125, 211, 252, 0.14);
    overflow: hidden;
}
.dx-boot-bar i {
    display: block;
    height: 100%;
    width: 0;
    background: linear-gradient(90deg, #38BDF8, #EAF7FF);
    animation: dxBootFill 1.15s var(--dx-ease) forwards;
}
@keyframes dxBootFill { to { width: 100%; } }
@keyframes dxBootPulse { 50% { opacity: 0.55; transform: scale(0.92); } }
@keyframes dxBootOut { to { opacity: 0; visibility: hidden; pointer-events: none; } }

/* ---------------------------------------------------------------
   3. LAYOUT
   --------------------------------------------------------------- */
.dx-page {
    position: relative;
    z-index: 1;
    /* clip (e não hidden) para não criar contexto de rolagem nem afetar
       elementos fixos; barra horizontal nunca aparece. */
    overflow-x: clip;
    scroll-margin-top: var(--dx-nav-h);
}

.dx-shell {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 clamp(1.1rem, 3.5vw, 2rem);
}

.dx-section {
    padding: clamp(4rem, 9vw, 7.5rem) 0;
    scroll-margin-top: calc(var(--dx-nav-h) + 12px);
}
.dx-section-tight { padding-top: clamp(2rem, 4vw, 3rem); }

.dx-head { max-width: 640px; margin-bottom: clamp(2rem, 4vw, 3.25rem); }
.dx-head-center { margin-left: auto; margin-right: auto; text-align: center; }

.dx-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--dx-ice);
    margin-bottom: 1rem;
}
.dx-eyebrow::before {
    content: '';
    width: 18px; height: 1px;
    background: linear-gradient(90deg, transparent, var(--dx-ice));
}

.is-landing h2.dx-title,
.dx-title {
    font-family: var(--dx-font-display);
    font-size: clamp(1.85rem, 3.9vw, 3rem);
    font-weight: 800;
    line-height: 1.08;
    letter-spacing: -0.035em;
    color: var(--dx-white);
}

.dx-sub {
    margin-top: 1rem;
    color: var(--dx-muted);
    font-size: clamp(0.95rem, 1.3vw, 1.06rem);
    line-height: 1.72;
}
.dx-sub a { color: var(--dx-ice); text-decoration: none; border-bottom: 1px solid rgba(125,211,252,0.35); }
.dx-sub a:hover { color: var(--dx-white); }

.dx-ice-text {
    background: linear-gradient(112deg, #EAF7FF 0%, #7DD3FC 42%, #38BDF8 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    filter: drop-shadow(0 0 26px rgba(56, 189, 248, 0.22));
}

/* ---------------------------------------------------------------
   4. CARDS DARK ICE + SPOTLIGHT
   --------------------------------------------------------------- */
.dx-card {
    position: relative;
    isolation: isolate;
    background: var(--dx-surface);
    border: 1px solid var(--dx-border);
    border-radius: var(--dx-radius);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    box-shadow: var(--dx-shadow);
    overflow: hidden;
    transition: transform 0.4s var(--dx-ease), border-color 0.4s var(--dx-ease), box-shadow 0.4s var(--dx-ease);
}
.dx-card::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: -1;
    opacity: 0;
    transition: opacity 0.35s ease;
    background: radial-gradient(340px circle at var(--mx, 50%) var(--my, 0%), rgba(56, 189, 248, 0.14), transparent 64%);
}
.dx-card:hover {
    transform: translateY(-5px);
    border-color: var(--dx-border-strong);
    box-shadow: 0 26px 90px rgba(0, 0, 0, 0.55), 0 0 0 1px rgba(125, 211, 252, 0.08);
}
.dx-card:hover::before { opacity: 1; }

/* Linha de luz no topo do card */
.dx-card-line {
    position: absolute;
    top: 0; left: 12%;
    width: 76%;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(125, 211, 252, 0.5), transparent);
    opacity: 0.5;
    transition: opacity 0.35s ease;
}
.dx-card:hover .dx-card-line { opacity: 1; }

/* ---------------------------------------------------------------
   5. BOTÕES
   --------------------------------------------------------------- */
.dx-btn {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.55rem;
    padding: 0.82rem 1.35rem;
    border: 1px solid transparent;
    border-radius: 13px;
    font-family: inherit;
    font-size: 0.9rem;
    font-weight: 700;
    letter-spacing: -0.01em;
    text-decoration: none;
    cursor: pointer;
    white-space: nowrap;
    transition: transform 0.25s var(--dx-ease), box-shadow 0.25s var(--dx-ease),
                background 0.25s ease, border-color 0.25s ease, color 0.25s ease;
}
.dx-btn svg { transition: transform 0.25s var(--dx-ease); flex-shrink: 0; }
.dx-btn:hover svg { transform: translateX(3px); }

.dx-btn-primary {
    background: linear-gradient(135deg, #BAE6FD 0%, #7DD3FC 45%, #38BDF8 100%);
    color: #04121C;
    box-shadow: 0 10px 30px rgba(56, 189, 248, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.6);
}
.dx-btn-primary:hover {
    transform: translateY(-2px);
    box-shadow: 0 16px 44px rgba(56, 189, 248, 0.36), inset 0 1px 0 rgba(255, 255, 255, 0.7);
}
.dx-btn-primary:active { transform: translateY(0); }

.dx-btn-ghost {
    background: rgba(125, 211, 252, 0.05);
    border-color: var(--dx-border);
    color: var(--dx-white);
    backdrop-filter: blur(8px);
}
.dx-btn-ghost:hover {
    background: rgba(125, 211, 252, 0.11);
    border-color: var(--dx-border-strong);
    transform: translateY(-2px);
}

.dx-btn-lg { padding: 1rem 1.6rem; font-size: 0.96rem; border-radius: 15px; }
.dx-btn-block { width: 100%; }

/* ---------------------------------------------------------------
   6. NAVBAR
   --------------------------------------------------------------- */
.dx-nav {
    position: fixed;
    top: 0; left: 0; right: 0;
    z-index: 90;
    height: var(--dx-nav-h);
    display: flex;
    align-items: center;
    border-bottom: 1px solid transparent;
    transition: background 0.35s ease, border-color 0.35s ease, backdrop-filter 0.35s ease, height 0.35s ease;
}
.dx-nav.is-stuck {
    height: 64px;
    background: rgba(5, 8, 12, 0.72);
    border-bottom-color: var(--dx-border);
    backdrop-filter: blur(18px) saturate(140%);
    -webkit-backdrop-filter: blur(18px) saturate(140%);
}

.dx-nav-inner {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 clamp(1.1rem, 3.5vw, 2rem);
    display: flex;
    align-items: center;
    gap: 1.5rem;
}

.dx-brand {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    font-family: var(--dx-font-display);
    font-size: 1.08rem;
    font-weight: 700;
    letter-spacing: -0.02em;
    color: var(--dx-white);
    text-decoration: none;
    flex-shrink: 0;
}
.dx-brand b { font-weight: 800; color: var(--dx-ice); }
.dx-logo {
    display: grid;
    place-items: center;
    width: 32px; height: 32px;
    border-radius: 10px;
    background: linear-gradient(140deg, rgba(234, 247, 255, 0.16), rgba(56, 189, 248, 0.1));
    border: 1px solid var(--dx-border-strong);
    box-shadow: 0 0 22px rgba(56, 189, 248, 0.18);
    color: var(--dx-ice);
}

.dx-links {
    display: flex;
    align-items: center;
    gap: 1.7rem;
    margin-right: auto;
}
.dx-links a {
    position: relative;
    color: var(--dx-muted);
    font-size: 0.88rem;
    font-weight: 600;
    text-decoration: none;
    padding: 0.35rem 0;
    transition: color 0.25s ease;
}
.dx-links a::after {
    content: '';
    position: absolute;
    left: 0; bottom: 0;
    width: 0; height: 1px;
    background: linear-gradient(90deg, var(--dx-ice), transparent);
    transition: width 0.3s var(--dx-ease);
}
.dx-links a:hover { color: var(--dx-white); }
.dx-links a:hover::after { width: 100%; }

.dx-nav-right {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    flex-shrink: 0;
}

.dx-status {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.35rem 0.75rem;
    border: 1px solid var(--dx-border);
    border-radius: 999px;
    background: rgba(11, 22, 34, 0.6);
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--dx-muted);
}
.dx-status i {
    width: 6px; height: 6px;
    border-radius: 50%;
    background: var(--dx-ice);
    box-shadow: 0 0 0 0 rgba(125, 211, 252, 0.6);
    animation: dxPing 2.4s ease-out infinite;
}
@keyframes dxPing {
    0% { box-shadow: 0 0 0 0 rgba(125, 211, 252, 0.55); }
    70%, 100% { box-shadow: 0 0 0 7px rgba(125, 211, 252, 0); }
}

.dx-burger {
    display: none;
    width: 42px; height: 42px;
    border-radius: 12px;
    border: 1px solid var(--dx-border);
    background: rgba(11, 22, 34, 0.7);
    cursor: pointer;
    padding: 0;
    position: relative;
}
.dx-burger span {
    position: absolute;
    left: 11px;
    width: 18px; height: 1.5px;
    background: var(--dx-white);
    border-radius: 2px;
    transition: transform 0.3s var(--dx-ease), opacity 0.2s ease;
}
.dx-burger span:nth-child(1) { top: 16px; }
.dx-burger span:nth-child(2) { top: 24px; }
.dx-burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(4px) rotate(45deg); }
.dx-burger[aria-expanded="true"] span:nth-child(2) { transform: translateY(-4px) rotate(-45deg); }

/* ---------------------------------------------------------------
   7. HERO
   --------------------------------------------------------------- */
.dx-hero {
    position: relative;
    padding: calc(var(--dx-nav-h) + clamp(2.5rem, 7vw, 5.5rem)) 0 clamp(3rem, 7vw, 6rem);
}
.dx-hero-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.02fr) minmax(0, 0.98fr);
    gap: clamp(2rem, 4.5vw, 4rem);
    align-items: center;
}

.dx-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    padding: 0.4rem 0.9rem 0.4rem 0.7rem;
    border: 1px solid var(--dx-border);
    border-radius: 999px;
    background: linear-gradient(135deg, rgba(56, 189, 248, 0.1), rgba(11, 22, 34, 0.5));
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--dx-ice);
    margin-bottom: 1.5rem;
}
.dx-pill i {
    width: 7px; height: 7px;
    border-radius: 50%;
    background: var(--dx-ice);
    animation: dxPing 2.4s ease-out infinite;
}

.is-landing .dx-hero h1 {
    font-family: var(--dx-font-display);
    font-size: clamp(2.5rem, 6.2vw, 4.6rem);
    font-weight: 800;
    line-height: 1.02;
    letter-spacing: -0.05em;
    color: var(--dx-white);
    margin: 0;
}

.dx-hero-lead {
    max-width: 500px;
    margin: 1.5rem 0 2.1rem;
    color: var(--dx-muted);
    font-size: clamp(1rem, 1.35vw, 1.1rem);
    line-height: 1.76;
}

.dx-hero-cta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.dx-hero-trust {
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem 1.5rem;
    margin-top: 2.2rem;
    padding-top: 1.6rem;
    border-top: 1px solid var(--dx-border);
}
.dx-hero-trust span {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--dx-muted);
}
.dx-hero-trust span::before {
    content: '';
    width: 5px; height: 5px;
    border-radius: 50%;
    background: var(--dx-ice-strong);
    box-shadow: 0 0 8px rgba(56, 189, 248, 0.8);
}

/* ---------------------------------------------------------------
   8. CONSOLE DO HERO (mock vivo)
   --------------------------------------------------------------- */
.dx-console-wrap {
    position: relative;
    perspective: 1400px;
}
.dx-console-wrap::after {
    content: '';
    position: absolute;
    inset: 12% 8% -6%;
    z-index: -1;
    background: radial-gradient(closest-side, rgba(56, 189, 248, 0.2), transparent 72%);
    filter: blur(48px);
}

.dx-console {
    position: relative;
    border-radius: var(--dx-radius-lg);
    border: 1px solid var(--dx-border-strong);
    background: linear-gradient(165deg, rgba(15, 34, 50, 0.86), rgba(5, 10, 16, 0.95));
    box-shadow: 0 40px 110px rgba(0, 0, 0, 0.6), inset 0 1px 0 rgba(255, 255, 255, 0.07);
    padding: 1rem;
    transform: rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg));
    transform-style: preserve-3d;
    transition: transform 0.5s var(--dx-ease);
    overflow: hidden;
}
.dx-console::before {
    content: '';
    position: absolute;
    top: 0; left: -45%;
    width: 45%; height: 100%;
    background: linear-gradient(90deg, transparent, rgba(234, 247, 255, 0.055), transparent);
    animation: dxSheen 6.5s ease-in-out infinite;
    pointer-events: none;
}
@keyframes dxSheen {
    0% { transform: translateX(-40%) skewX(-14deg); }
    55%, 100% { transform: translateX(340%) skewX(-14deg); }
}

.dx-console-bar {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0 0.25rem 0.9rem;
    border-bottom: 1px solid var(--dx-border);
    margin-bottom: 1rem;
}
.dx-console-dots { display: flex; gap: 5px; }
.dx-console-dots i {
    width: 7px; height: 7px;
    border-radius: 50%;
    background: rgba(125, 211, 252, 0.25);
}
.dx-console-dots i:first-child { background: var(--dx-ice); }
.dx-console-title {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.66rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--dx-ice);
}
.dx-console-title i {
    width: 6px; height: 6px;
    border-radius: 50%;
    background: var(--dx-ice);
    animation: dxPing 2s ease-out infinite;
}

.dx-kpis {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.6rem;
    margin-bottom: 0.9rem;
}
.dx-kpi {
    padding: 0.8rem 0.85rem;
    border-radius: 14px;
    border: 1px solid var(--dx-border);
    background: rgba(5, 10, 16, 0.6);
    transition: border-color 0.3s ease, background 0.3s ease;
}
.dx-kpi:hover { border-color: var(--dx-border-strong); background: rgba(11, 22, 34, 0.8); }
.dx-kpi small {
    display: block;
    font-size: 0.63rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--dx-muted);
    margin-bottom: 0.3rem;
}
.dx-kpi strong {
    display: block;
    font-family: var(--dx-font-display);
    font-size: clamp(1.05rem, 2vw, 1.45rem);
    font-weight: 800;
    letter-spacing: -0.03em;
    color: var(--dx-white);
    font-variant-numeric: tabular-nums;
}
.dx-kpi em {
    font-style: normal;
    font-size: 0.68rem;
    font-weight: 700;
    color: var(--dx-ice);
}

.dx-graph {
    position: relative;
    height: 96px;
    margin-bottom: 0.9rem;
    border-radius: 14px;
    border: 1px solid var(--dx-border);
    background: rgba(5, 10, 16, 0.5);
    overflow: hidden;
}
.dx-graph svg { display: block; width: 100%; height: 100%; }
.dx-graph-line {
    fill: none;
    stroke: url(#dxLineGrad);
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-dasharray: 620;
    stroke-dashoffset: 620;
    animation: dxDraw 2.4s var(--dx-ease) 0.3s forwards;
}
@keyframes dxDraw { to { stroke-dashoffset: 0; } }

.dx-feed {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    min-height: 148px;
}
.dx-feed-row {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 0.7rem;
    padding: 0.55rem 0.7rem;
    border-radius: 11px;
    border: 1px solid var(--dx-border);
    background: rgba(5, 10, 16, 0.55);
    font-size: 0.76rem;
    color: var(--dx-muted);
    animation: dxRowIn 0.45s var(--dx-ease) both;
}
.dx-feed-row b {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.64rem;
    font-weight: 800;
    letter-spacing: 0.1em;
    color: var(--dx-ice);
}
.dx-feed-row b::before {
    content: '';
    width: 5px; height: 5px;
    border-radius: 50%;
    background: currentColor;
    box-shadow: 0 0 8px currentColor;
}
.dx-feed-row span { font-variant-numeric: tabular-nums; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dx-feed-row time { font-size: 0.66rem; color: #5c7183; font-style: normal; }
.dx-feed-row.is-block { border-color: rgba(148, 163, 184, 0.18); }
.dx-feed-row.is-block b { color: #94A3B8; }
.dx-feed-row.is-scan b { color: #BAE6FD; opacity: 0.75; }
@keyframes dxRowIn {
    from { opacity: 0; transform: translateY(-8px); }
    to { opacity: 1; transform: none; }
}

/* ---------------------------------------------------------------
   9. FLUXO — COMO FUNCIONA
   --------------------------------------------------------------- */
.dx-flow {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 0.75rem;
    position: relative;
}
.dx-flow::before {
    content: '';
    position: absolute;
    top: 38px; left: 6%; right: 6%;
    height: 1px;
    background: rgba(125, 211, 252, 0.14);
}
.dx-flow-step {
    position: relative;
    padding: 1.3rem 1.05rem;
    border-radius: 18px;
    border: 1px solid var(--dx-border);
    background: linear-gradient(160deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.008));
    text-align: center;
    transition: transform 0.45s var(--dx-ease), border-color 0.45s ease, background 0.45s ease;
}
.dx-flow-step .dx-flow-dot {
    display: grid;
    place-items: center;
    width: 42px; height: 42px;
    margin: 0 auto 0.9rem;
    border-radius: 13px;
    border: 1px solid var(--dx-border);
    background: rgba(5, 10, 16, 0.85);
    color: var(--dx-muted);
    font-size: 0.75rem;
    font-weight: 800;
    letter-spacing: 0.06em;
    transition: all 0.45s var(--dx-ease);
}
.dx-flow-step h3 {
    font-size: 0.82rem;
    font-weight: 800;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--dx-white);
    margin-bottom: 0.4rem;
}
.dx-flow-step p { font-size: 0.82rem; color: var(--dx-muted); line-height: 1.55; }
.dx-flow-step.is-on {
    border-color: var(--dx-border-strong);
    background: linear-gradient(160deg, rgba(56, 189, 248, 0.1), rgba(255, 255, 255, 0.01));
    transform: translateY(-4px);
}
.dx-flow-step.is-on .dx-flow-dot {
    color: #04121C;
    background: linear-gradient(140deg, #BAE6FD, #38BDF8);
    border-color: transparent;
    box-shadow: 0 0 26px rgba(56, 189, 248, 0.4);
}

.dx-steps {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
    margin-top: 1.5rem;
}
.dx-step { padding: 1.5rem 1.4rem; }
.dx-step-num {
    font-family: var(--dx-font-display);
    font-size: 0.8rem;
    font-weight: 800;
    letter-spacing: 0.18em;
    color: var(--dx-ice);
    margin-bottom: 0.9rem;
}
.dx-step h3 { font-size: 1.06rem; font-weight: 700; margin-bottom: 0.45rem; color: var(--dx-white); }
.dx-step p { font-size: 0.88rem; color: var(--dx-muted); line-height: 1.65; }

/* ---------------------------------------------------------------
   10. RECURSOS — BENTO EDITORIAL
   --------------------------------------------------------------- */
.dx-bento {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 1rem;
}
.dx-bento > * { grid-column: span 3; }
.dx-bento .dx-wide { grid-column: span 6; }

.dx-feature { padding: clamp(1.4rem, 2.4vw, 2rem); }
.dx-feature-top {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    margin-bottom: 1rem;
}
.dx-feature-ico {
    display: grid;
    place-items: center;
    width: 38px; height: 38px;
    border-radius: 11px;
    border: 1px solid var(--dx-border);
    background: rgba(56, 189, 248, 0.08);
    color: var(--dx-ice);
    flex-shrink: 0;
}
.dx-feature-tag {
    font-size: 0.66rem;
    font-weight: 800;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--dx-muted);
}
.dx-feature h3 {
    font-family: var(--dx-font-display);
    font-size: clamp(1.15rem, 2vw, 1.6rem);
    font-weight: 700;
    letter-spacing: -0.02em;
    color: var(--dx-white);
    margin-bottom: 0.6rem;
}
.dx-feature p {
    color: var(--dx-muted);
    font-size: 0.92rem;
    line-height: 1.7;
    max-width: 52ch;
}
.dx-feature-split {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
    gap: clamp(1.2rem, 3vw, 2.4rem);
    align-items: center;
}

/* Mini visualizações internas */
.dx-mini {
    border-radius: 16px;
    border: 1px solid var(--dx-border);
    background: rgba(5, 10, 16, 0.55);
    padding: 1rem;
}
.dx-bars {
    display: flex;
    align-items: flex-end;
    gap: 7px;
    height: 116px;
}
.dx-bars i {
    flex: 1;
    border-radius: 6px 6px 3px 3px;
    background: linear-gradient(180deg, #BAE6FD, rgba(56, 189, 248, 0.25));
    transform-origin: bottom;
    animation: dxBar 1s var(--dx-ease) both;
}
@keyframes dxBar { from { transform: scaleY(0.08); opacity: 0.2; } }
.dx-bars i:nth-child(2) { animation-delay: 0.06s; }
.dx-bars i:nth-child(3) { animation-delay: 0.12s; }
.dx-bars i:nth-child(4) { animation-delay: 0.18s; }
.dx-bars i:nth-child(5) { animation-delay: 0.24s; }
.dx-bars i:nth-child(6) { animation-delay: 0.3s; }
.dx-bars i:nth-child(7) { animation-delay: 0.36s; }
.dx-bars i:nth-child(8) { animation-delay: 0.42s; }
.dx-bars i:nth-child(9) { animation-delay: 0.48s; }
.dx-bars i:nth-child(10) { animation-delay: 0.54s; }

.dx-rows { display: flex; flex-direction: column; gap: 0.5rem; }
.dx-rows > div {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.6rem 0.75rem;
    border-radius: 10px;
    border: 1px solid var(--dx-border);
    background: rgba(11, 22, 34, 0.5);
    font-size: 0.78rem;
    color: var(--dx-muted);
    transition: border-color 0.3s ease, transform 0.3s ease;
}
.dx-rows > div:hover { border-color: var(--dx-border-strong); transform: translateX(3px); }
.dx-rows b { color: var(--dx-white); font-weight: 700; }
.dx-tag {
    font-size: 0.64rem;
    font-weight: 800;
    letter-spacing: 0.1em;
    padding: 0.2rem 0.5rem;
    border-radius: 999px;
    border: 1px solid var(--dx-border);
    color: var(--dx-ice);
    white-space: nowrap;
}
.dx-tag-off { color: #94A3B8; border-color: rgba(148, 163, 184, 0.2); }

.dx-meter { display: flex; flex-direction: column; gap: 0.75rem; }
.dx-meter-item span {
    display: flex;
    justify-content: space-between;
    font-size: 0.76rem;
    color: var(--dx-muted);
    margin-bottom: 0.35rem;
}
.dx-meter-item span b { color: var(--dx-white); font-variant-numeric: tabular-nums; }
.dx-meter-bar {
    height: 5px;
    border-radius: 3px;
    background: rgba(125, 211, 252, 0.1);
    overflow: hidden;
}
.dx-meter-bar i {
    display: block;
    height: 100%;
    border-radius: 3px;
    background: linear-gradient(90deg, #38BDF8, #EAF7FF);
    width: var(--v, 50%);
    transform-origin: left;
    animation: dxMeter 1.1s var(--dx-ease) both;
}
@keyframes dxMeter { from { transform: scaleX(0); } }

/* ---------------------------------------------------------------
   11. DASHBOARD INTERATIVO
   --------------------------------------------------------------- */
.dx-demo { padding: clamp(1.1rem, 2.4vw, 1.6rem); }
.dx-tabs {
    display: flex;
    gap: 0.35rem;
    padding: 0.32rem;
    border-radius: 14px;
    border: 1px solid var(--dx-border);
    background: rgba(5, 10, 16, 0.6);
    margin-bottom: 1.2rem;
    overflow-x: auto;
    scrollbar-width: none;
}
.dx-tabs::-webkit-scrollbar { display: none; }
.dx-tab {
    flex: 1;
    min-width: max-content;
    padding: 0.62rem 1rem;
    border: none;
    border-radius: 11px;
    background: transparent;
    color: var(--dx-muted);
    font-family: inherit;
    font-size: 0.74rem;
    font-weight: 800;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    cursor: pointer;
    transition: color 0.25s ease, background 0.25s ease;
}
.dx-tab:hover { color: var(--dx-white); }
.dx-tab[aria-selected="true"] {
    color: #04121C;
    background: linear-gradient(135deg, #BAE6FD, #7DD3FC);
    box-shadow: 0 6px 20px rgba(56, 189, 248, 0.22);
}

.dx-panel { display: none; animation: dxPanelIn 0.4s var(--dx-ease); }
.dx-panel.is-on { display: block; }
@keyframes dxPanelIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: none; }
}

.dx-panel-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 0.7rem;
}
.dx-stat {
    padding: 1.05rem 1.1rem;
    border-radius: 15px;
    border: 1px solid var(--dx-border);
    background: rgba(5, 10, 16, 0.55);
}
.dx-stat small {
    display: block;
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--dx-muted);
    margin-bottom: 0.45rem;
}
.dx-stat strong {
    display: block;
    font-family: var(--dx-font-display);
    font-size: 1.7rem;
    font-weight: 800;
    letter-spacing: -0.04em;
    color: var(--dx-white);
    font-variant-numeric: tabular-nums;
    line-height: 1;
}
.dx-stat em {
    display: block;
    margin-top: 0.4rem;
    font-style: normal;
    font-size: 0.72rem;
    color: var(--dx-ice);
}

/* ---------------------------------------------------------------
   12. PLANOS
   --------------------------------------------------------------- */
.dx-plans-wrap { position: relative; }
.dx-plans-wrap::before {
    content: '';
    position: absolute;
    inset: -8% 10% 20%;
    z-index: -1;
    background: radial-gradient(closest-side, rgba(56, 189, 248, 0.14), transparent 72%);
    filter: blur(60px);
}

.is-landing .dx-pricing {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
    align-items: stretch;
}

.is-landing .dx-pricing .pricing-card {
    position: relative;
    isolation: isolate;
    display: flex;
    flex-direction: column;
    padding: clamp(1.5rem, 2.4vw, 2rem) clamp(1.3rem, 2vw, 1.65rem);
    border-radius: var(--dx-radius-lg);
    border: 1px solid var(--dx-border);
    background: var(--dx-surface);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    box-shadow: var(--dx-shadow);
    overflow: hidden;
    transform: none;
    transition: transform 0.4s var(--dx-ease), border-color 0.4s ease, opacity 0.4s ease, box-shadow 0.4s ease;
}
.is-landing .dx-pricing .pricing-card::after { content: none; }
.is-landing .dx-pricing .pricing-card::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: -1;
    opacity: 0;
    transition: opacity 0.35s ease;
    background: radial-gradient(320px circle at var(--mx, 50%) var(--my, 0%), rgba(56, 189, 248, 0.14), transparent 62%);
}
.is-landing .dx-pricing:hover .pricing-card { opacity: 0.62; }
.is-landing .dx-pricing .pricing-card:hover {
    opacity: 1;
    transform: translateY(-6px);
    border-color: var(--dx-border-strong);
    box-shadow: 0 30px 90px rgba(0, 0, 0, 0.6);
}
.is-landing .dx-pricing .pricing-card:hover::before { opacity: 1; }

.is-landing .dx-pricing .pricing-card.featured {
    border-color: rgba(125, 211, 252, 0.42);
    background: linear-gradient(170deg, rgba(56, 189, 248, 0.14), rgba(255, 255, 255, 0.015) 55%);
    box-shadow: 0 30px 100px rgba(0, 0, 0, 0.55), 0 0 46px rgba(56, 189, 248, 0.1);
}
.is-landing .dx-pricing .pricing-card.featured::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: -2;
    border-radius: inherit;
    padding: 1px;
    background: conic-gradient(from 0deg, transparent 0%, rgba(125, 211, 252, 0.55) 18%, transparent 38%, transparent 100%);
    -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    animation: dxOrbit 9s linear infinite;
}
@keyframes dxOrbit { to { transform: rotate(1turn); } }

.is-landing .dx-pricing .pricing-ribbon {
    position: absolute;
    top: 1.15rem; right: 1.15rem;
    left: auto;
    transform: none;
    padding: 0.28rem 0.68rem;
    border-radius: 999px;
    background: linear-gradient(135deg, #BAE6FD, #38BDF8);
    color: #04121C;
    font-size: 0.62rem;
    font-weight: 800;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}
.is-landing .dx-pricing .pricing-name {
    font-size: 0.7rem;
    font-weight: 800;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--dx-ice);
}
.is-landing .dx-pricing .pricing-desc {
    margin: 0.6rem 0 1.3rem;
    color: var(--dx-muted);
    font-size: 0.86rem;
    line-height: 1.55;
    min-height: 2.8em;
}
.is-landing .dx-pricing .pricing-price { color: var(--dx-white); align-items: flex-start; }
.is-landing .dx-pricing .pricing-currency { font-size: 1rem; font-weight: 700; margin-top: 0.7rem; color: var(--dx-muted); }
.is-landing .dx-pricing .pricing-value {
    font-family: var(--dx-font-display);
    font-size: clamp(2.8rem, 5vw, 3.5rem);
    font-weight: 800;
    letter-spacing: -0.055em;
    line-height: 1;
    color: var(--dx-white);
}
.is-landing .dx-pricing .pricing-cents { font-size: 1rem; margin-top: 0.55rem; color: var(--dx-muted); }
.is-landing .dx-pricing .pricing-period {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--dx-muted);
    margin: 0.5rem 0 1.4rem;
}
.is-landing .dx-pricing .pricing-list {
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
    margin: 0 0 1.6rem;
    padding: 1.3rem 0 0;
    border-top: 1px solid var(--dx-border);
    flex: 1;
    list-style: none;
}
.is-landing .dx-pricing .pricing-list li {
    position: relative;
    padding-left: 1.6rem;
    font-size: 0.87rem;
    color: #C7DCEA;
    line-height: 1.45;
}
.is-landing .dx-pricing .pricing-list li::before {
    content: '';
    position: absolute;
    left: 0; top: 0.34em;
    width: 13px; height: 13px;
    border-radius: 4px;
    border: 1px solid rgba(125, 211, 252, 0.35);
    background: rgba(56, 189, 248, 0.12);
    color: transparent;
}
.is-landing .dx-pricing .pricing-list li::after {
    content: '';
    position: absolute;
    left: 4.5px; top: 0.52em;
    width: 3px; height: 6px;
    border-right: 1.6px solid var(--dx-ice);
    border-bottom: 1.6px solid var(--dx-ice);
    transform: rotate(42deg);
}

/* Botões dentro dos planos (gerados pelo PHP) */
.is-landing .dx-pricing .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    width: 100%;
    padding: 0.88rem 1.2rem;
    border-radius: 13px;
    border: 1px solid transparent;
    font-family: inherit;
    font-size: 0.88rem;
    font-weight: 700;
    text-decoration: none;
    transition: transform 0.25s var(--dx-ease), box-shadow 0.25s ease, background 0.25s ease, border-color 0.25s ease;
}
.is-landing .dx-pricing .btn-primary {
    background: linear-gradient(135deg, #BAE6FD 0%, #7DD3FC 45%, #38BDF8 100%);
    color: #04121C;
    box-shadow: 0 10px 30px rgba(56, 189, 248, 0.22);
}
.is-landing .dx-pricing .btn-primary:hover {
    transform: translateY(-2px);
    box-shadow: 0 16px 42px rgba(56, 189, 248, 0.34);
}
.is-landing .dx-pricing .btn-secondary {
    background: rgba(125, 211, 252, 0.05);
    border-color: var(--dx-border);
    color: var(--dx-white);
}
.is-landing .dx-pricing .btn-secondary:hover {
    background: rgba(125, 211, 252, 0.12);
    border-color: var(--dx-border-strong);
    transform: translateY(-2px);
}

.dx-plans-note {
    margin-top: 1.4rem;
    text-align: center;
    font-size: 0.82rem;
    color: var(--dx-muted);
}

/* ---------------------------------------------------------------
   13. FAQ
   --------------------------------------------------------------- */
.dx-faq { display: flex; flex-direction: column; gap: 0.65rem; max-width: 840px; }
.is-landing .dx-faq .faq-item {
    border: 1px solid var(--dx-border);
    border-radius: 16px;
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.045), rgba(255, 255, 255, 0.01));
    padding: 0;
    overflow: hidden;
    transition: border-color 0.3s ease, background 0.3s ease;
}
.is-landing .dx-faq .faq-item:hover { border-color: var(--dx-border-strong); }
.is-landing .dx-faq .faq-item[open] { background: linear-gradient(135deg, rgba(56, 189, 248, 0.07), rgba(255, 255, 255, 0.01)); }
.is-landing .dx-faq summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1.15rem 1.3rem;
    cursor: pointer;
    list-style: none;
    font-size: 0.98rem;
    font-weight: 700;
    color: var(--dx-white);
}
.is-landing .dx-faq summary::-webkit-details-marker { display: none; }
.is-landing .dx-faq summary::after { content: none; }
.dx-faq-ico {
    position: relative;
    flex-shrink: 0;
    width: 26px; height: 26px;
    border-radius: 8px;
    border: 1px solid var(--dx-border);
    background: rgba(5, 10, 16, 0.6);
    transition: transform 0.35s var(--dx-ease), background 0.3s ease, border-color 0.3s ease;
}
.dx-faq-ico::before,
.dx-faq-ico::after {
    content: '';
    position: absolute;
    top: 50%; left: 50%;
    width: 11px; height: 1.5px;
    background: var(--dx-ice);
    border-radius: 2px;
    transform: translate(-50%, -50%);
    transition: opacity 0.3s ease;
}
.dx-faq-ico::after { transform: translate(-50%, -50%) rotate(90deg); }
.faq-item[open] .dx-faq-ico { transform: rotate(135deg); border-color: var(--dx-border-strong); background: rgba(56, 189, 248, 0.14); }
.dx-faq-body {
    padding: 0 1.3rem 1.25rem;
    color: var(--dx-muted);
    font-size: 0.92rem;
    line-height: 1.72;
    animation: dxFaqIn 0.32s var(--dx-ease);
}
.dx-faq-body a { color: var(--dx-ice); }
@keyframes dxFaqIn {
    from { opacity: 0; transform: translateY(-6px); }
    to { opacity: 1; transform: none; }
}

/* ---------------------------------------------------------------
   14. LOGIN
   --------------------------------------------------------------- */
.dx-login {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 420px);
    gap: clamp(1.5rem, 4vw, 3rem);
    align-items: center;
    padding: clamp(1.6rem, 3.5vw, 2.6rem);
}
.dx-auth-tabs {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.4rem;
    margin-bottom: 1.15rem;
    padding: 0.3rem;
    border-radius: 14px;
    border: 1px solid var(--dx-border);
    background: rgba(5, 10, 16, 0.45);
}
.dx-auth-tab {
    appearance: none;
    border: 0;
    border-radius: 10px;
    padding: 0.62rem 0.8rem;
    background: transparent;
    color: var(--dx-muted);
    font-family: inherit;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    cursor: pointer;
    transition: background 0.25s ease, color 0.25s ease;
}
.dx-auth-tab.active {
    background: rgba(56, 189, 248, 0.14);
    color: var(--dx-white);
}
.dx-login-form { display: flex; flex-direction: column; gap: 1rem; }
.dx-login-form[hidden] { display: none !important; }
.dx-field { display: flex; flex-direction: column; gap: 0.45rem; }
.dx-field label {
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--dx-muted);
}
.is-landing .dx-field input {
    width: 100%;
    padding: 0.85rem 1rem;
    border-radius: 12px;
    border: 1px solid var(--dx-border);
    background: rgba(5, 10, 16, 0.7);
    color: var(--dx-white);
    font-family: inherit;
    font-size: 0.92rem;
    outline: none;
    transition: border-color 0.25s ease, box-shadow 0.25s ease, background 0.25s ease;
}
.is-landing .dx-field input::placeholder { color: #4E6376; }
.is-landing .dx-field input:focus {
    border-color: rgba(125, 211, 252, 0.6);
    background: rgba(11, 22, 34, 0.9);
    box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.14);
}
.dx-form-error {
    margin: 0;
    padding: 0.7rem 0.85rem;
    border-radius: 10px;
    border: 1px solid rgba(248, 113, 113, 0.35);
    background: rgba(248, 113, 113, 0.1);
    color: #FCA5A5;
    font-size: 0.82rem;
    line-height: 1.4;
}
.dx-form-error[hidden] { display: none !important; }
.dx-link-mobile { display: none; }
.dx-login-hint {
    margin-top: 1.1rem;
    text-align: center;
    font-size: 0.78rem;
    color: var(--dx-muted);
}
.dx-login-hint strong { color: var(--dx-ice); font-weight: 700; }

/* ---------------------------------------------------------------
   15. FOOTER
   --------------------------------------------------------------- */
.dx-footer {
    position: relative;
    margin-top: clamp(3rem, 6vw, 5rem);
    padding: clamp(2.4rem, 4vw, 3.4rem) 0 2.4rem;
    border-top: 1px solid var(--dx-border);
}
.dx-footer::before {
    content: '';
    position: absolute;
    top: -1px; left: 50%;
    transform: translateX(-50%);
    width: min(620px, 80%);
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(125, 211, 252, 0.55), transparent);
}
.dx-footer::after {
    content: '';
    position: absolute;
    top: -60px; left: 50%;
    transform: translateX(-50%);
    width: min(560px, 76%);
    height: 120px;
    background: radial-gradient(closest-side, rgba(56, 189, 248, 0.11), transparent 72%);
    filter: blur(30px);
    pointer-events: none;
}
.dx-footer-grid {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1.25rem;
}
.dx-footer-links { display: flex; flex-wrap: wrap; gap: 1.2rem; }
.dx-footer-links a {
    color: var(--dx-muted);
    font-size: 0.85rem;
    font-weight: 600;
    text-decoration: none;
    transition: color 0.25s ease;
}
.dx-footer-links a:hover { color: var(--dx-ice); }
.dx-footer-bottom {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.85rem;
    margin-top: 2rem;
    padding-top: 1.4rem;
    border-top: 1px solid var(--dx-border);
    font-size: 0.78rem;
    color: var(--dx-muted);
}

/* ---------------------------------------------------------------
   16. WHATSAPP FLUTUANTE
   --------------------------------------------------------------- */
.dx-wa {
    position: fixed;
    right: clamp(0.9rem, 2vw, 1.6rem);
    bottom: clamp(0.9rem, 2vw, 1.6rem);
    z-index: 80;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 54px;
    height: 54px;
    padding: 0;
    border-radius: 50%;
    border: 1px solid rgba(125, 211, 252, 0.28);
    background: linear-gradient(135deg, rgba(11, 22, 34, 0.95), rgba(5, 10, 16, 0.95));
    color: var(--dx-white);
    text-decoration: none;
    box-shadow: 0 16px 46px rgba(0, 0, 0, 0.5);
    backdrop-filter: blur(12px);
    transition: transform 0.3s var(--dx-ease), border-color 0.3s ease, box-shadow 0.3s ease;
}
.dx-wa svg { color: var(--dx-ice); }
.dx-wa:hover {
    transform: translateY(-3px);
    border-color: rgba(125, 211, 252, 0.55);
    box-shadow: 0 20px 56px rgba(56, 189, 248, 0.2);
}

/* ---------------------------------------------------------------
   17. REVEAL AO SCROLL (só com JS ativo)
   --------------------------------------------------------------- */
.dx-js .dx-reveal {
    opacity: 0;
    transform: translateY(28px);
    transition: opacity 0.75s var(--dx-ease), transform 0.75s var(--dx-ease);
    transition-delay: var(--d, 0ms);
}
.dx-js .dx-reveal.is-in { opacity: 1; transform: none; }

/* =====================================================================
   FASE 2 — PROFUNDIDADE, HIERARQUIA E MOVIMENTO
   Refinamentos aplicados sobre a base acima (ordem importa).
   ===================================================================== */

/* --- 2.1 Tipografia: leitura mais confortável ------------------- */
.dx-sub { max-width: 62ch; }
.dx-title { text-wrap: balance; }
.dx-head-center .dx-sub { margin-left: auto; margin-right: auto; }
.is-landing .dx-hero h1 { text-wrap: balance; }
.dx-hero-lead { letter-spacing: -0.004em; }

/* --- 2.2 Luz ambiente por seção --------------------------------- */
.dx-section { position: relative; }
.dx-section-glow {
    position: absolute;
    z-index: -1;
    pointer-events: none;
    border-radius: 50%;
    filter: blur(46px);
}
.dx-glow-left {
    top: 6%;
    left: -14%;
    width: min(720px, 86%);
    height: 420px;
    background: radial-gradient(closest-side, rgba(56, 189, 248, 0.08), transparent 74%);
}
.dx-glow-right {
    top: 10%;
    right: -14%;
    width: min(720px, 86%);
    height: 460px;
    background: radial-gradient(closest-side, rgba(125, 211, 252, 0.05), transparent 74%);
}
.dx-glow-center {
    top: 2%;
    left: 50%;
    transform: translateX(-50%);
    width: min(880px, 94%);
    height: 520px;
    background: radial-gradient(closest-side, rgba(14, 116, 144, 0.16), rgba(56, 189, 248, 0.05) 52%, transparent 76%);
}
.dx-section-plans .dx-glow-center { background: radial-gradient(closest-side, rgba(56, 189, 248, 0.1), rgba(14, 116, 144, 0.06) 48%, transparent 76%); }

/* --- 2.3 Hero cinematográfico ----------------------------------- */
.dx-hero-layers {
    position: absolute;
    inset: 0;
    z-index: -1;
    overflow: hidden;
    pointer-events: none;
}
.dx-hero-halo {
    position: absolute;
    top: -34%;
    left: 50%;
    transform: translateX(-50%);
    width: min(1120px, 130%);
    height: 780px;
    background: radial-gradient(closest-side, rgba(56, 189, 248, 0.13), rgba(14, 116, 144, 0.05) 54%, transparent 78%);
    filter: blur(18px);
}
/* Feixe de luz diagonal atrás do console */
.dx-hero-beam {
    position: absolute;
    top: -46%;
    right: 4%;
    width: 300px;
    height: 190%;
    transform: rotate(17deg);
    background: linear-gradient(180deg, rgba(125, 211, 252, 0.085), rgba(56, 189, 248, 0.02) 46%, transparent 72%);
    filter: blur(30px);
}
.dx-hero-horizon {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(125, 211, 252, 0.26) 28%, rgba(125, 211, 252, 0.26) 72%, transparent);
    opacity: 0.6;
}
.dx-motes { position: absolute; inset: 0; }
.dx-motes i {
    position: absolute;
    left: var(--x);
    top: var(--y);
    width: 3px;
    height: 3px;
    border-radius: 50%;
    background: rgba(186, 230, 253, 0.9);
    box-shadow: 0 0 9px rgba(125, 211, 252, 0.7);
    opacity: 0;
    animation: dxMote 17s ease-in-out infinite;
    animation-delay: var(--t);
}
@keyframes dxMote {
    0%, 100% { opacity: 0; transform: translateY(8px); }
    30% { opacity: 0.5; transform: translateY(-6px); }
    65% { opacity: 0.14; transform: translateY(-22px); }
}

/* --- 2.4 Elementos de interface flutuando ----------------------- */
.dx-chip {
    position: absolute;
    z-index: 3;
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.44rem 0.75rem;
    border-radius: 999px;
    border: 1px solid var(--dx-border);
    background: rgba(8, 13, 20, 0.85);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    font-size: 0.66rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: #C7DCEA;
    box-shadow: 0 14px 36px rgba(0, 0, 0, 0.45);
    animation: dxFloat 7.5s ease-in-out infinite;
}
.dx-chip i {
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: var(--dx-ice);
    box-shadow: 0 0 8px var(--dx-ice);
}
.dx-chip-a { top: -14px; left: -14px; }
.dx-chip-b { bottom: -16px; right: -8px; animation-delay: -3.6s; }
@keyframes dxFloat { 50% { transform: translateY(-7px); } }

/* --- 2.5 Console mais vivo -------------------------------------- */
.dx-console-scan {
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    z-index: 2;
    height: 130px;
    opacity: 0;
    pointer-events: none;
    background: linear-gradient(180deg, rgba(125, 211, 252, 0.11), transparent);
    animation: dxConsoleScan 11s ease-in-out infinite;
}
@keyframes dxConsoleScan {
    0% { opacity: 0; transform: translateY(-100%); }
    12% { opacity: 0.75; }
    42% { opacity: 0; transform: translateY(400%); }
    100% { opacity: 0; transform: translateY(400%); }
}
.dx-console [data-par] { transition: transform 0.3s var(--dx-ease); }
.dx-kpi strong { transition: color 0.45s ease; }
.dx-kpi.is-bump strong { color: var(--dx-ice); }

/* --- 2.6 Carrossel de plataformas ------------------------------- */
.dx-platforms {
    position: relative;
    padding: clamp(1rem, 2.5vw, 2rem) 0 clamp(2rem, 4vw, 3.2rem);
}
.dx-platforms-label {
    text-align: center;
    font-size: 0.71rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--dx-muted);
    margin-bottom: 1.5rem;
}
.dx-marquee {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 0.7rem;
    overflow: hidden;
    mask-image: linear-gradient(90deg, transparent, #000 11%, #000 89%, transparent);
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 11%, #000 89%, transparent);
}
.dx-marquee-track {
    display: flex;
    gap: 0;
    width: max-content;
    animation: dxMarquee 48s linear infinite;
}
.dx-marquee-track.is-reverse {
    animation-duration: 67s;
    animation-direction: reverse;
}
.dx-marquee-row {
    display: flex;
    gap: 0.7rem;
    padding-right: 0.7rem;
}
@keyframes dxMarquee { to { transform: translateX(-50%); } }
.dx-marquee:hover .dx-marquee-track { animation-play-state: paused; }
.dx-plat {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.68rem 1.1rem;
    border-radius: 12px;
    border: 1px solid rgba(125, 211, 252, 0.1);
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.012));
    font-size: 0.84rem;
    font-weight: 600;
    color: #A9C1D2;
    white-space: nowrap;
    transition: color 0.25s ease, border-color 0.25s ease, background 0.25s ease;
}
.dx-plat i {
    width: 6px;
    height: 6px;
    border-radius: 2px;
    background: linear-gradient(140deg, #BAE6FD, #38BDF8);
    opacity: 0.7;
}
.dx-plat:hover {
    color: var(--dx-white);
    border-color: var(--dx-border-strong);
    background: rgba(56, 189, 248, 0.08);
}

/* --- 2.7 Progresso de leitura na navbar ------------------------- */
.dx-nav-progress {
    position: absolute;
    left: 0;
    bottom: -1px;
    width: 100%;
    height: 2px;
    transform: scaleX(var(--p, 0));
    transform-origin: 0 50%;
    background: linear-gradient(90deg, rgba(56, 189, 248, 0), #38BDF8 38%, #EAF7FF);
    opacity: 0;
    transition: opacity 0.35s ease;
}
.dx-nav.is-stuck .dx-nav-progress { opacity: 0.85; }

/* --- 2.8 Indicador deslizante das abas -------------------------- */
.dx-tabs { position: relative; }
.dx-tab { position: relative; z-index: 1; }
.dx-tab-ink {
    position: absolute;
    top: 0.32rem;
    bottom: 0.32rem;
    left: 0;
    width: 0;
    border-radius: 11px;
    background: linear-gradient(135deg, #BAE6FD, #7DD3FC);
    box-shadow: 0 6px 20px rgba(56, 189, 248, 0.22);
    pointer-events: none;
}
.dx-tab-ink.is-ready { transition: transform 0.4s var(--dx-ease), width 0.4s var(--dx-ease); }
/* Sem JS o pill original continua marcando a aba ativa. */
.dx-js .dx-tab[aria-selected="true"] {
    background: transparent;
    box-shadow: none;
}

/* --- 2.9 Hierarquia dos cards ----------------------------------- */
.dx-card--soft {
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.045), rgba(255, 255, 255, 0.012));
    border-color: rgba(125, 211, 252, 0.1);
    box-shadow: 0 14px 46px rgba(0, 0, 0, 0.34);
}
.dx-card--soft:hover {
    transform: translateY(-3px);
    box-shadow: 0 20px 64px rgba(0, 0, 0, 0.45);
}
.dx-card--raised {
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.075), rgba(255, 255, 255, 0.018));
    border-color: rgba(125, 211, 252, 0.17);
    box-shadow: 0 26px 90px rgba(0, 0, 0, 0.5);
}
.dx-card--raised:hover { transform: translateY(-4px); }

/* Spotlight mais difuso — reação do material, não um círculo visível */
.dx-card::before {
    background: radial-gradient(480px circle at var(--mx, 50%) var(--my, 0%),
        rgba(56, 189, 248, 0.1), rgba(56, 189, 248, 0.03) 40%, transparent 68%);
}
.is-landing .dx-pricing .pricing-card::before {
    background: radial-gradient(440px circle at var(--mx, 50%) var(--my, 0%),
        rgba(56, 189, 248, 0.12), rgba(56, 189, 248, 0.035) 42%, transparent 68%);
}

/* --- 2.10 Plano recomendado ------------------------------------- */
.is-landing .dx-pricing .pricing-card.featured {
    box-shadow: 0 34px 110px rgba(0, 0, 0, 0.6), 0 0 64px rgba(56, 189, 248, 0.09);
}
.is-landing .dx-pricing .pricing-card.featured::after { animation-duration: 14s; }
.is-landing .dx-pricing .pricing-card.featured .pricing-ribbon {
    box-shadow: 0 8px 24px rgba(56, 189, 248, 0.28);
}
.is-landing .dx-pricing .pricing-card.featured .pricing-value {
    background: linear-gradient(112deg, #EAF7FF, #7DD3FC 72%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

/* --- 2.11 Microinterações em links ------------------------------ */
.dx-footer-links a,
.dx-sub a,
.dx-login-hint a {
    position: relative;
    text-decoration: none;
    border-bottom: none;
}
.dx-footer-links a::after,
.dx-sub a::after,
.dx-login-hint a::after {
    content: '';
    position: absolute;
    left: 0;
    bottom: -2px;
    width: 100%;
    height: 1px;
    background: currentColor;
    opacity: 0.32;
    transform: scaleX(var(--u, 0.35));
    transform-origin: 0 50%;
    transition: transform 0.3s var(--dx-ease), opacity 0.3s ease;
}
.dx-footer-links a:hover::after,
.dx-sub a:hover::after,
.dx-login-hint a:hover::after { transform: scaleX(1); opacity: 0.75; }
.dx-login-hint a { color: var(--dx-ice); }

/* --- 2.12 Variações de entrada ---------------------------------- */
.dx-js .dx-reveal-side { transform: translateX(26px); }
.dx-js .dx-reveal-scale { transform: translateY(16px) scale(0.985); }

/* --- 2.13 Ajustes mobile da fase 2 ------------------------------ */
@media (max-width: 940px) {
    .dx-chip { display: none; }
    .dx-hero-beam { display: none; }
    .dx-section-glow { filter: blur(36px); opacity: 0.8; }
}

@media (max-width: 620px) {
    .dx-motes i:nth-child(n + 4) { display: none; }
    .dx-console-scan { display: none; }
    /* Blur em áreas grandes custa caro no scroll do mobile; o fundo fixo já
       entrega a luz ambiente. */
    .dx-section-glow { display: none; }
    .dx-platforms-label { font-size: 0.66rem; letter-spacing: 0.16em; }
    .dx-plat { padding: 0.58rem 0.9rem; font-size: 0.78rem; }
    .dx-marquee { gap: 0.55rem; }
    .dx-marquee-track { animation-duration: 34s; }
    .dx-marquee-track.is-reverse { animation-duration: 46s; }
}

/* ---------------------------------------------------------------
   18. RESPONSIVO
   --------------------------------------------------------------- */
@media (max-width: 1100px) {
    .dx-hero-grid { grid-template-columns: 1fr; gap: 2.5rem; }
    .dx-hero-lead { max-width: 100%; }
    .dx-console-wrap { max-width: 620px; }
    .dx-bento > * { grid-column: span 6; }
    .dx-feature-split { grid-template-columns: 1fr; }
}

@media (max-width: 940px) {
    .dx-links {
        position: fixed;
        top: 64px; left: 0; right: 0;
        flex-direction: column;
        align-items: stretch;
        gap: 0;
        padding: 0.5rem 1.1rem 1.4rem;
        background: rgba(5, 8, 12, 0.97);
        border-bottom: 1px solid var(--dx-border);
        backdrop-filter: blur(18px);
        transform: translateY(-12px);
        opacity: 0;
        visibility: hidden;
        transition: opacity 0.25s ease, transform 0.25s var(--dx-ease), visibility 0.25s;
    }
    .dx-links.is-open { opacity: 1; visibility: visible; transform: none; }
    .dx-links a { padding: 0.95rem 0; border-bottom: 1px solid var(--dx-border); font-size: 0.95rem; }
    .dx-links a:last-child { border-bottom: none; }
    .dx-links a::after { display: none; }
    .dx-burger { display: block; }
    .dx-nav { height: 64px; }
    .dx-nav .dx-status,
    .dx-nav-right .dx-nav-wa { display: none; }
    .dx-link-mobile { display: block; }
    .dx-flow { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .dx-flow::before { display: none; }
    .dx-steps { grid-template-columns: 1fr; }
    .is-landing .dx-pricing { grid-template-columns: 1fr; }
    .is-landing .dx-pricing:hover .pricing-card { opacity: 1; }
    .dx-login { grid-template-columns: 1fr; }
}

@media (max-width: 620px) {
    body.is-landing { font-size: 15px; }
    .dx-hero { padding-top: calc(var(--dx-nav-h) + 1.6rem); }
    .dx-flow { grid-template-columns: 1fr; }
    .dx-kpis { grid-template-columns: 1fr; }
    .dx-kpi { display: flex; align-items: baseline; justify-content: space-between; gap: 0.6rem; }
    .dx-kpi small { margin-bottom: 0; }
    .dx-hero-cta .dx-btn { width: 100%; }
    .dx-panel-grid { grid-template-columns: 1fr; }
    .dx-wa { width: 54px; height: 54px; }
    .dx-bg-scan, .dx-bg-noise { display: none; }
    .dx-console { padding: 0.85rem; }
    .dx-footer-bottom { flex-direction: column; align-items: flex-start; }
}

@media (max-width: 460px) {
    .dx-nav-right .dx-nav-login { display: none; }
    .dx-nav-right .dx-btn-primary { padding: 0.62rem 0.85rem; font-size: 0.8rem; }
    .dx-nav-right .dx-btn-primary svg { display: none; }
    .dx-brand { font-size: 0.98rem; }
    .dx-logo { width: 28px; height: 28px; }
}

/* ---------------------------------------------------------------
   19. ACESSIBILIDADE / MOVIMENTO REDUZIDO
   --------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    .is-landing *,
    .is-landing *::before,
    .is-landing *::after {
        animation-duration: 0.001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.001ms !important;
        scroll-behavior: auto !important;
    }
    .dx-js .dx-reveal { opacity: 1; transform: none; }
    .dx-boot { display: none; }
    .dx-spot { display: none; }
    .dx-console { transform: none !important; }
}
