/* ===========================================================
   Alitter 2026 — Estilo Stripe / Resend
   Bootstrap 5.3 + custom · Premium tech B2B 2026
   =========================================================== */

:root {
    /* superficies — TEMA OSCURO PREMIUM unificado */
    --bg:           #0a0a0f;      /* casi negro base */
    --bg-alt:       #0e0d16;      /* sutil variante para alternar */
    --bg-cream:     #110d18;      /* otra variante */
    --bg-soft-red:  #14080e;      /* dark con tinte rojo */
    --bg-card:      rgba(255, 255, 255, 0.04);
    --bg-card-hover:rgba(255, 255, 255, 0.07);
    --bg-dark:      #0a0a0f;
    --bg-mid:       #1a1822;

    /* líneas */
    --line:         rgba(255, 255, 255, 0.08);
    --line-strong:  rgba(255, 255, 255, 0.18);

    /* texto */
    --text:         #f6f6f9;
    --text-2:       #d4d4dc;
    --text-muted:   #9b9aa6;
    --text-soft:    #6e6c78;

    /* marca rojo Alitter */
    --red:          #D81E2D;
    --red-hover:    #b3141f;
    --red-deep:     #8C0716;
    --red-bright:   #FF1F2F;
    --red-50:       #fef2f4;
    --red-100:      #fcdcdf;
    --red-200:      #f4b4b9;

    /* paleta secundaria — armonía con el rojo */
    --amber:        #F59E0B;
    --amber-deep:   #B45309;
    --amber-50:     #FEF7E0;
    --amber-100:    #FCE4A2;

    --teal:         #0D9488;
    --teal-deep:    #0B6960;
    --teal-50:      #E6FAF7;
    --teal-100:     #C0EDE5;

    --navy:         #1E40AF;
    --navy-deep:    #1E3A8A;
    --navy-50:      #EEF2FF;
    --navy-100:    #D2DBFB;

    --orange:       #EA580C;
    --orange-deep:  #C2410C;
    --orange-50:    #FFF1E6;
    --orange-100:   #FFD7B5;

    --plum:         #7C2D5E;
    --plum-deep:    #5B1F45;
    --plum-50:      #FBE8F2;
    --plum-100:     #F4C6DD;

    /* radios */
    --r-sm:         6px;
    --r-md:         10px;
    --r-lg:         14px;
    --r-xl:         20px;

    /* sombras adaptadas a fondo oscuro */
    --shadow-xs:    0 1px 2px rgba(0, 0, 0, 0.4);
    --shadow-sm:    0 2px 6px rgba(0, 0, 0, 0.4);
    --shadow-md:    0 6px 18px rgba(0, 0, 0, 0.5);
    --shadow-lg:    0 14px 30px rgba(0, 0, 0, 0.55);
    --shadow-xl:    0 28px 60px rgba(0, 0, 0, 0.6);
    --shadow-red:   0 14px 32px -8px rgba(216, 30, 45, 0.55);
    --glow-red:     0 0 60px rgba(216, 30, 45, 0.18);

    --sans:         'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
    --mono:         'JetBrains Mono', ui-monospace, 'Consolas', monospace;

    /* compat */
    --coral:        var(--red);
    --coral-deep:   var(--red-deep);
    --coral-50:     var(--red-50);
    --coral-100:    var(--red-100);
    --border:       var(--line);
    --border-strong:var(--line-strong);
    --gradient:     linear-gradient(135deg, var(--red), var(--red-deep));
}

/* ─────────── base ─────────── */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
    margin: 0;
    background: var(--bg);
    color: var(--text);
    font-family: var(--sans);
    font-size: 16px;
    line-height: 1.6;
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    font-feature-settings: 'cv11', 'ss01';
}
a { color: inherit; text-decoration: none; transition: color .15s; }
a:hover { color: var(--red); }
img { max-width: 100%; height: auto; display: block; }

h1, h2, h3, h4 {
    font-family: var(--sans);
    color: var(--text);
    margin: 0 0 1rem;
    line-height: 1.08;
    letter-spacing: -0.025em;
    font-weight: 700;
}
h1 { font-size: clamp(2.6rem, 5.5vw, 4.8rem); font-weight: 800; letter-spacing: -0.035em; }
h2 { font-size: clamp(2rem, 3.6vw, 3rem); font-weight: 700; letter-spacing: -0.03em; }
h3 { font-size: clamp(1.1rem, 1.4vw, 1.3rem); font-weight: 600; letter-spacing: -0.015em; }
h4 { font-size: 1rem; font-weight: 600; }

p { margin: 0 0 1rem; }

.text-red       { color: var(--red) !important; }
.text-mono      { font-family: var(--mono); }
.text-muted-light { color: var(--text-muted) !important; }

/* ─────────── eyebrows / tags ─────────── */
.eyebrow {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    font-family: var(--mono);
    font-size: .72rem;
    font-weight: 500;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--red);
    background: var(--red-50);
    padding: .35rem .75rem;
    border-radius: 999px;
    border: 1px solid var(--red-100);
    margin-bottom: 1.25rem;
}
.eyebrow.eyebrow-muted {
    color: rgba(245, 241, 234, 0.7);
    background: rgba(255, 255, 255, 0.05);
    border-color: rgba(255, 255, 255, 0.10);
}
.eyebrow.eyebrow-muted .dot {
    background: rgba(245, 241, 234, 0.7);
    box-shadow: 0 0 0 3px rgba(245, 241, 234, 0.10);
}
.eyebrow .dot {
    width: 6px; height: 6px;
    border-radius: 50%;
    background: var(--red);
    box-shadow: 0 0 0 3px var(--red-100);
}

/* ─────────── fondo aurora animada para HERO ─────────── */
.bg-aurora {
    position: fixed; inset: 0; z-index: -1;
    pointer-events: none; overflow: hidden;
    background: var(--bg);
}
.bg-aurora::before {
    /* Capa de blobs de color animados */
    content: "";
    position: absolute;
    inset: -10%;
    background:
        radial-gradient(circle at 18% 22%, rgba(216, 30, 45, 0.30), transparent 35%),
        radial-gradient(circle at 82% 30%, rgba(234, 88, 12, 0.18), transparent 35%),
        radial-gradient(circle at 50% 80%, rgba(245, 158, 11, 0.14), transparent 40%),
        radial-gradient(circle at 75% 75%, rgba(216, 30, 45, 0.18), transparent 40%);
    animation: auroraShift 18s ease-in-out infinite alternate;
    filter: blur(20px);
    pointer-events: none;
}
.bg-aurora::after {
    /* Grid sutil con máscara radial */
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(rgba(255, 255, 255, 0.03) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, 0.03) 1px, transparent 1px);
    background-size: 50px 50px;
    -webkit-mask-image: radial-gradient(ellipse 70% 50% at 50% 30%, black 30%, transparent 80%);
            mask-image: radial-gradient(ellipse 70% 50% at 50% 30%, black 30%, transparent 80%);
    pointer-events: none;
}
@keyframes auroraShift {
    0%   { transform: translate(0, 0) rotate(0deg) scale(1); }
    50%  { transform: translate(2vw, 1vh) rotate(15deg) scale(1.08); }
    100% { transform: translate(-2vw, -1vh) rotate(-10deg) scale(1.05); }
}
.bg-aurora .blob, .bg-aurora .grid-overlay { display: none; }

/* ─────────── navbar ─────────── */
.app-nav {
    background: rgba(10, 10, 15, 0.72);
    backdrop-filter: saturate(180%) blur(18px);
    -webkit-backdrop-filter: saturate(180%) blur(18px);
    border-bottom: 1px solid transparent;
    padding: .9rem 0;
    transition: padding .2s, background .2s, border-color .2s, box-shadow .2s;
}
.app-nav.scrolled {
    padding: .55rem 0;
    background: rgba(10, 10, 15, 0.92);
    border-bottom-color: rgba(255, 255, 255, 0.08);
}

.brand { display: inline-flex; align-items: center; gap: .6rem; }
.brand-img { height: 44px; width: auto; transition: transform .25s, opacity .15s; }
.app-nav.scrolled .brand-img { height: 38px; }
.brand:hover .brand-img { transform: scale(1.04); }

.app-nav .nav-link {
    color: rgba(245, 241, 234, 0.7);
    font-weight: 500;
    font-size: .92rem;
    padding: .45rem .85rem;
    border-radius: var(--r-md);
    transition: color .15s, background .15s;
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    position: relative;
}
.app-nav .nav-link i { font-size: 1rem; opacity: .7; }
.app-nav .nav-link:hover {
    color: #fff;
    background: rgba(255, 255, 255, 0.06);
}
.app-nav .nav-link.active {
    color: #ffabb3;
    background: rgba(216, 30, 45, 0.18);
}
.app-nav .nav-link.active i { opacity: 1; color: var(--red-bright); }
.app-nav .navbar-toggler {
    color: #fff;
    border: 1px solid rgba(255, 255, 255, 0.18);
    border-radius: var(--r-md);
    padding: .35rem .55rem;
    font-size: 1.3rem;
    background: rgba(255, 255, 255, 0.04);
    transition: background .15s, border-color .15s;
}
.app-nav .navbar-toggler:hover { background: rgba(255, 255, 255, 0.08); }
.app-nav .navbar-toggler:focus { box-shadow: none; }
.app-nav .navbar-toggler[aria-expanded="true"] {
    background: var(--red);
    border-color: var(--red);
    color: #fff;
}
.brand-img { opacity: .95; transition: opacity .15s; }
.brand:hover .brand-img { opacity: 1; }

/* En desktop: ocultar iconos del nav (los dejamos solo en mobile drawer) */
@media (min-width: 992px) {
    .app-nav .nav-link i { display: none; }
}

/* ─────────── botones ─────────── */
.btn {
    border-radius: var(--r-md);
    font-weight: 500;
    font-family: var(--sans);
    padding: .65rem 1.15rem;
    transition: background .15s, color .15s, transform .1s, border-color .15s, box-shadow .15s;
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    border: 1px solid transparent;
    font-size: .92rem;
    letter-spacing: -0.01em;
    line-height: 1.4;
}
.btn-lg { padding: .85rem 1.5rem; font-size: 1rem; }
.btn:active { transform: translateY(1px); }

.btn-cta {
    background: var(--red);
    color: #fff !important;
    border-color: var(--red);
    box-shadow: 0 1px 2px rgba(216, 30, 45, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.18);
}
.btn-cta:hover {
    background: var(--red-hover);
    border-color: var(--red-hover);
    box-shadow: var(--shadow-red);
    transform: translateY(-1px);
}
.btn[disabled], .btn.is-loading {
    opacity: .75;
    pointer-events: none;
}
.btn .btn-icon-loader { display: none; animation: spin 0.7s linear infinite; }
.btn.is-loading .btn-icon-arrow { display: none; }
.btn.is-loading .btn-icon-loader { display: inline-block; }
.btn.is-loading .btn-label::after { content: '…'; }
@keyframes spin {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}

.btn-dark {
    background: var(--text);
    color: #fff !important;
    border-color: var(--text);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}
.btn-dark:hover {
    background: #1c1a26;
    border-color: #1c1a26;
    box-shadow: var(--shadow-md);
    transform: translateY(-1px);
}

.btn-ghost {
    background: var(--bg-card);
    color: var(--text) !important;
    border-color: var(--line-strong);
    box-shadow: var(--shadow-xs);
}
.btn-ghost:hover {
    background: var(--bg-card);
    border-color: var(--text);
    box-shadow: var(--shadow-sm);
    transform: translateY(-1px);
}

.btn-text {
    background: transparent;
    color: var(--text) !important;
    padding: .45rem 0;
    border-radius: 0;
    border: 0;
    border-bottom: 1px solid transparent;
}
.btn-text:hover { color: var(--red) !important; border-bottom-color: var(--red); }

/* ─────────── secciones ─────────── */
/* Todas las secciones comparten fondo oscuro base y se diferencian por glows */
.section {
    padding: 100px 0;
    position: relative;
    background: var(--bg);
    overflow: hidden;
    color: var(--text);
}
.section::before, .section::after {
    content: "";
    position: absolute;
    pointer-events: none;
    z-index: 0;
}
.section > * { position: relative; z-index: 1; }

/* Variantes con glows diferentes en cada sección */

/* Default: glow rojo top-right (como el actual del Stack) */
.section-dark::before {
    top: -20%; right: -10%;
    width: 60%; height: 80%;
    background: radial-gradient(ellipse at center, rgba(216, 30, 45, 0.30), transparent 60%);
}

/* warm: ámbar abajo izquierda */
.section-warm::before {
    bottom: -25%; left: -15%;
    width: 70%; height: 90%;
    background: radial-gradient(ellipse at center, rgba(245, 158, 11, 0.18), transparent 60%);
}
.section-warm::after {
    top: -15%; right: -10%;
    width: 50%; height: 60%;
    background: radial-gradient(ellipse at center, rgba(216, 30, 45, 0.10), transparent 60%);
}

/* cream: teal arriba derecha, rojo abajo */
.section-cream::before {
    top: -20%; right: -15%;
    width: 60%; height: 80%;
    background: radial-gradient(ellipse at center, rgba(13, 148, 136, 0.18), transparent 60%);
}
.section-cream::after {
    bottom: -20%; left: -10%;
    width: 50%; height: 70%;
    background: radial-gradient(ellipse at center, rgba(216, 30, 45, 0.12), transparent 60%);
}

/* rose: rojo intenso centro alto */
.section-rose::before {
    top: -30%; left: 50%;
    transform: translateX(-50%);
    width: 90%; height: 90%;
    background: radial-gradient(ellipse at center, rgba(216, 30, 45, 0.22), transparent 60%);
}

/* bento: doble glow (rojo + naranja) en esquinas opuestas */
.section-bento::before {
    top: -15%; right: -10%;
    width: 55%; height: 70%;
    background: radial-gradient(ellipse at center, rgba(216, 30, 45, 0.18), transparent 60%);
}
.section-bento::after {
    bottom: -20%; left: -10%;
    width: 55%; height: 80%;
    background: radial-gradient(ellipse at center, rgba(234, 88, 12, 0.14), transparent 60%);
}

/* ─────────── dividers sutiles entre secciones (gradiente rojo) ─────────── */
.section-divider {
    display: none; /* en modo oscuro usamos los glows internos de cada sección */
}
.section-dark h1, .section-dark h2, .section-dark h3, .section-dark h4 { color: #f6f6f9; }
.section-dark .section-lead { color: #9b9aa6; }
.section-dark .eyebrow {
    color: #f6f6f9;
    background: rgba(255, 255, 255, 0.06);
    border-color: rgba(255, 255, 255, 0.1);
}
.section-dark .eyebrow .dot { background: var(--red); box-shadow: 0 0 0 3px rgba(216, 30, 45, 0.3); }

.section-head { max-width: 720px; margin: 0 0 4rem; }
.section-head.text-center { margin-left: auto; margin-right: auto; }
.section-title {
    font-size: clamp(2rem, 3.5vw, 3rem);
    font-weight: 700;
    letter-spacing: -0.03em;
    line-height: 1.1;
    margin: 0 0 1rem;
    color: var(--text);
}
.section-lead {
    color: var(--text-muted);
    font-size: 1.1rem;
    line-height: 1.6;
    max-width: 60ch;
    margin: 0;
}
.feature-card h3 { color: var(--text); }
.feature-card p  { color: var(--text-muted); }

/* ─────────── HERO ─────────── */
.hero {
    padding: 160px 0 100px;
    position: relative;
    min-height: 92vh;
    display: flex;
    align-items: center;
}
.hero-grid {
    display: grid;
    grid-template-columns: 1.05fr 1fr;
    gap: 5rem;
    align-items: center;
    width: 100%;
}
.hero-title {
    font-size: clamp(2.8rem, 6vw, 5.2rem);
    font-weight: 800;
    line-height: 1.0;
    letter-spacing: -0.045em;
    color: var(--text);
    margin: 1.5rem 0 1.5rem;
}
.hero-title .accent {
    background: linear-gradient(120deg,
        #ff5c6c 0%,
        #ff8a3d 25%,
        #fcd34d 50%,
        #ff8a3d 75%,
        #ff5c6c 100%);
    background-size: 250% 100%;
    -webkit-background-clip: text;
            background-clip: text;
    -webkit-text-fill-color: transparent;
            color: transparent;
    position: relative;
    white-space: nowrap;
    animation: gradientShift 7s ease infinite;
    text-shadow: 0 0 80px rgba(216, 30, 45, 0.4);
}
@keyframes gradientShift {
    0%, 100% { background-position: 0% 50%; }
    50%      { background-position: 100% 50%; }
}
.hero-sub {
    font-size: 1.15rem;
    color: var(--text-muted);
    max-width: 52ch;
    line-height: 1.6;
    margin-bottom: 2rem;
}
.hero-actions { display: flex; gap: .75rem; flex-wrap: wrap; align-items: center; }

/* ── Mockup browser con perspectiva 3D ── */
.hero-mockup-wrap {
    position: relative;
    perspective: 1200px;
    transform-style: preserve-3d;
}
.hero-mockup {
    position: relative;
    background: rgba(255, 255, 255, 0.04);
    border-radius: var(--r-lg);
    box-shadow:
        0 30px 80px -20px rgba(0, 0, 0, 0.7),
        0 0 100px rgba(216, 30, 45, 0.30),
        inset 0 1px 0 rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.14);
    overflow: hidden;
    transform-style: preserve-3d;
    transition: transform .3s cubic-bezier(.16,.84,.44,1);
    backdrop-filter: blur(10px);
    will-change: transform;
}

/* Badges flotantes alrededor del mockup */
.floating-badge {
    position: absolute;
    background: rgba(20, 20, 28, 0.85);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 12px;
    padding: .65rem 1rem;
    color: #fff;
    font-size: .82rem;
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    box-shadow:
        0 12px 30px rgba(0, 0, 0, 0.5),
        0 0 24px rgba(216, 30, 45, 0.15);
    z-index: 2;
    white-space: nowrap;
    letter-spacing: -0.01em;
}
.floating-badge i { font-size: 1rem; }
.floating-badge .b-dot {
    width: 7px; height: 7px;
    border-radius: 50%;
    background: #34d399;
    box-shadow: 0 0 8px #34d399;
    animation: pulseDot 2s ease-in-out infinite;
}
@keyframes pulseDot {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: .6; transform: scale(.85); }
}
.fb-top-left  { top: -22px; left: -28px; animation: floatBadge 7s ease-in-out infinite; }
.fb-top-left i { color: #fcd34d; }
.fb-right     { top: 38%; right: -36px; animation: floatBadge 8s 1s ease-in-out infinite; }
.fb-right i   { color: #ffabb3; }
.fb-bottom    { bottom: -16px; left: 20%; animation: floatBadge 9s 2s ease-in-out infinite; }
.fb-bottom i  { color: #5eead4; }

@keyframes floatBadge {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-12px); }
}
.hero-mockup::before {
    content: "";
    position: absolute;
    inset: -40px -20px -20px -20px;
    background: radial-gradient(ellipse at 30% 0%, rgba(216, 30, 45, 0.25), transparent 60%);
    z-index: -1;
    border-radius: var(--r-xl);
}
.mockup-bar {
    background: rgba(255, 255, 255, 0.06);
    padding: .65rem 1rem;
    display: flex;
    align-items: center;
    gap: .4rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.10);
}
.mockup-dot {
    width: 11px; height: 11px;
    border-radius: 50%;
    background: #d4d3cf;
}
.mockup-dot:nth-child(1) { background: #ff5f57; }
.mockup-dot:nth-child(2) { background: #ffbd2e; }
.mockup-dot:nth-child(3) { background: #28c840; }
.mockup-url {
    margin-left: .85rem;
    font-family: var(--mono);
    font-size: .72rem;
    color: rgba(255, 255, 255, 0.6);
    background: rgba(0, 0, 0, 0.35);
    padding: .25rem .65rem;
    border-radius: var(--r-sm);
    border: 1px solid rgba(255, 255, 255, 0.08);
    flex: 1;
    max-width: 280px;
}
.mockup-body {
    position: relative;
    aspect-ratio: 4 / 5;
    overflow: hidden;
}
.mockup-body img {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    object-fit: cover;
}

/* ─────────── Marquee de tecnologías ─────────── */
.hero-marquee {
    overflow: hidden;
    border-top: 1px solid rgba(255, 255, 255, 0.08);
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
    padding: 1.25rem 0;
    margin-top: 5rem;
    background: rgba(0, 0, 0, 0.2);
    -webkit-mask-image: linear-gradient(90deg, transparent, black 8%, black 92%, transparent);
            mask-image: linear-gradient(90deg, transparent, black 8%, black 92%, transparent);
}
.marquee-track {
    display: inline-flex;
    gap: 2.5rem;
    align-items: center;
    animation: marquee 38s linear infinite;
    width: max-content;
    white-space: nowrap;
}
.hero-marquee:hover .marquee-track { animation-play-state: paused; }
.m-item {
    color: rgba(245, 241, 234, 0.6);
    font-family: var(--mono);
    font-size: .92rem;
    font-weight: 500;
    letter-spacing: -.01em;
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    transition: color .2s;
}
.m-item i { color: #ffabb3; font-size: 1.05rem; }
.m-item.m-dot { color: rgba(245, 241, 234, 0.3); font-size: 1.3rem; }
.m-item:hover { color: #fff; }
@keyframes marquee {
    from { transform: translateX(0); }
    to   { transform: translateX(-50%); }
}

/* trusted by (deprecated) */
.trusted {
    margin-top: 5rem;
    padding-top: 3rem;
    border-top: 1px solid var(--line);
}
.trusted-label {
    font-family: var(--mono);
    font-size: .72rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--text-soft);
    text-align: center;
    margin-bottom: 1.5rem;
}
.trusted-row {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 1.5rem;
    align-items: center;
    opacity: .55;
}
.trusted-logo {
    height: 28px;
    background: var(--text-soft);
    -webkit-mask: linear-gradient(90deg, transparent, #000 20%, #000 80%, transparent);
            mask: linear-gradient(90deg, transparent, #000 20%, #000 80%, transparent);
    border-radius: 4px;
    opacity: .35;
}
.trusted-logo:nth-child(1) { width: 70%; }
.trusted-logo:nth-child(2) { width: 80%; }
.trusted-logo:nth-child(3) { width: 60%; }
.trusted-logo:nth-child(4) { width: 75%; }
.trusted-logo:nth-child(5) { width: 65%; }
.trusted-logo:nth-child(6) { width: 70%; }

/* ─────────── NOSOTROS — feature grid ─────────── */
.feature-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1.25rem;
}
.feature-card {
    background: var(--bg-card);
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    padding: 1.75rem;
    transition: transform .25s, box-shadow .25s, border-color .25s, background .25s;
    position: relative;
    overflow: hidden;
    backdrop-filter: blur(8px);
}
.feature-card::before {
    content: "";
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
    background: var(--feat-color, var(--red));
    opacity: 0;
    transition: opacity .25s;
}
.feature-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--shadow-lg);
    border-color: rgba(255, 255, 255, 0.20);
    background: var(--bg-card-hover);
}
.feature-card:hover::before { opacity: 1; }
.feature-icon {
    width: 44px; height: 44px;
    border-radius: var(--r-md);
    background: var(--feat-bg-dark, rgba(216, 30, 45, 0.15));
    color: var(--feat-color-dark, #ffabb3);
    display: grid; place-items: center;
    font-size: 1.25rem;
    margin-bottom: 1.25rem;
    transition: transform .25s;
    border: 1px solid var(--feat-border-dark, rgba(216, 30, 45, 0.3));
}
.feature-card:hover .feature-icon { transform: scale(1.05) rotate(-3deg); }
.feature-card h3 { font-size: 1.05rem; margin-bottom: .4rem; font-weight: 600; }
.feature-card p { color: var(--text-muted); font-size: .94rem; line-height: 1.55; margin: 0; }

/* paletas por feature card — adaptadas para tema oscuro */
.feat-red    { --feat-bg-dark: rgba(216, 30, 45, 0.15);  --feat-color-dark: #ffabb3; --feat-border-dark: rgba(216, 30, 45, 0.40); }
.feat-amber  { --feat-bg-dark: rgba(245, 158, 11, 0.15); --feat-color-dark: #fcd34d; --feat-border-dark: rgba(245, 158, 11, 0.40); }
.feat-teal   { --feat-bg-dark: rgba(13, 148, 136, 0.15); --feat-color-dark: #5eead4; --feat-border-dark: rgba(13, 148, 136, 0.40); }
.feat-navy   { --feat-bg-dark: rgba(96, 165, 250, 0.15); --feat-color-dark: #93c5fd; --feat-border-dark: rgba(96, 165, 250, 0.40); }
.feat-orange { --feat-bg-dark: rgba(234, 88, 12, 0.15);  --feat-color-dark: #fdba74; --feat-border-dark: rgba(234, 88, 12, 0.40); }
.feat-plum   { --feat-bg-dark: rgba(192, 132, 252, 0.15);--feat-color-dark: #d8b4fe; --feat-border-dark: rgba(192, 132, 252, 0.40); }

/* ─────────── SERVICIOS — service cards ─────────── */
.services-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.25rem;
}
.service-card {
    display: flex;
    flex-direction: column;
    background: var(--bg-card);
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    padding: 1.75rem;
    color: var(--text);
    transition: transform .25s, box-shadow .25s, border-color .25s, background .25s;
    position: relative;
    overflow: hidden;
    backdrop-filter: blur(8px);
}
.service-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--shadow-lg);
    border-color: rgba(255, 255, 255, 0.20);
    background: var(--bg-card-hover);
    color: var(--text);
}
.service-card.service-wide { grid-column: span 2; }
.service-card .svc-icon {
    width: 48px; height: 48px;
    border-radius: var(--r-md);
    background: var(--svc-gradient, linear-gradient(135deg, var(--red), var(--red-deep)));
    color: #fff;
    display: grid; place-items: center;
    font-size: 1.35rem;
    margin-bottom: 1.5rem;
    box-shadow: var(--svc-shadow, 0 6px 16px -6px rgba(216, 30, 45, 0.4));
    transition: transform .25s;
}
.service-card:hover .svc-icon { transform: scale(1.05) rotate(-3deg); }

/* paletas por servicio */
.svc-red    { --svc-gradient: linear-gradient(135deg, var(--red), var(--red-deep));       --svc-shadow: 0 6px 16px -6px rgba(216, 30, 45, 0.45); }
.svc-navy   { --svc-gradient: linear-gradient(135deg, var(--navy), var(--navy-deep));     --svc-shadow: 0 6px 16px -6px rgba(30, 64, 175, 0.45); }
.svc-teal   { --svc-gradient: linear-gradient(135deg, var(--teal), var(--teal-deep));     --svc-shadow: 0 6px 16px -6px rgba(13, 148, 136, 0.45); }
.svc-orange { --svc-gradient: linear-gradient(135deg, var(--orange), var(--orange-deep)); --svc-shadow: 0 6px 16px -6px rgba(234, 88, 12, 0.45); }
.svc-amber  { --svc-gradient: linear-gradient(135deg, var(--amber), var(--amber-deep));   --svc-shadow: 0 6px 16px -6px rgba(245, 158, 11, 0.45); }
.svc-plum   { --svc-gradient: linear-gradient(135deg, var(--plum), var(--plum-deep));     --svc-shadow: 0 6px 16px -6px rgba(124, 45, 94, 0.45); }
.service-card.alt .svc-icon { background: linear-gradient(135deg, #1c1a26, var(--text)); box-shadow: 0 6px 16px -6px rgba(20, 18, 32, 0.3); }
.service-card h3 { font-size: 1.15rem; margin-bottom: .5rem; font-weight: 600; }
.service-card p { color: var(--text-muted); font-size: .95rem; line-height: 1.55; margin: 0 0 1.5rem; flex: 1; }
.service-card .svc-link {
    font-size: .88rem; font-weight: 500;
    color: var(--text);
    display: inline-flex; align-items: center; gap: .4rem;
    transition: gap .2s, color .2s;
}
.service-card:hover .svc-link { color: #ffabb3; gap: .65rem; }
.service-card h3 { color: var(--text); }
.service-card p  { color: var(--text-muted); }

/* ─────────── PROCESO — timeline horizontal ─────────── */
.process-timeline {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1.25rem;
    position: relative;
}
.process-timeline::before {
    content: "";
    position: absolute;
    top: 24px;
    left: 8%; right: 8%;
    height: 2px;
    background: linear-gradient(90deg,
        rgba(255,171,179,0.4),
        rgba(252,211,77,0.4),
        rgba(94,234,212,0.4),
        rgba(147,197,253,0.4));
    z-index: 0;
    border-radius: 2px;
}
.process-step {
    position: relative;
    z-index: 1;
}
.process-num {
    width: 52px; height: 52px;
    border-radius: 50%;
    background: var(--bg);
    border: 2px solid var(--proc-color, var(--red));
    color: var(--proc-color, var(--red));
    display: grid; place-items: center;
    font-family: var(--sans);
    font-weight: 700;
    font-size: 1.05rem;
    margin-bottom: 1.5rem;
    box-shadow: 0 0 0 4px rgba(10, 10, 15, 0.6);
    transition: transform .25s, background .25s, color .25s;
    position: relative;
    z-index: 1;
}
.process-step:hover .process-num {
    transform: scale(1.08);
    background: var(--proc-color, var(--red));
    color: #fff;
}

/* paletas por step — adaptadas a tema dark */
.proc-red    { --proc-color: #ffabb3; }
.proc-amber  { --proc-color: #fcd34d; }
.proc-teal   { --proc-color: #5eead4; }
.proc-navy   { --proc-color: #93c5fd; }

.process-step h3 { color: var(--text); }
.process-step p  { color: var(--text-muted); }
.process-step h3 { font-size: 1.1rem; margin-bottom: .5rem; font-weight: 600; }
.process-step p { color: var(--text-muted); font-size: .94rem; line-height: 1.55; margin: 0; }

/* ─────────── STACK — dark cards ─────────── */
.stack-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.25rem;
}
.stack-card {
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: var(--r-lg);
    padding: 1.75rem;
    transition: background .25s, border-color .25s, transform .25s;
}
.stack-card:hover {
    background: rgba(255, 255, 255, 0.06);
    border-color: rgba(216, 30, 45, 0.4);
    transform: translateY(-3px);
}
.stack-card h3 {
    color: #f6f6f9;
    font-size: 1rem;
    font-weight: 600;
    margin-bottom: 1.25rem;
    display: flex; align-items: center; gap: .65rem;
}
.stack-card h3 i {
    color: var(--stack-color, var(--red));
    background: var(--stack-bg, rgba(216, 30, 45, 0.15));
    width: 32px; height: 32px;
    border-radius: var(--r-sm);
    display: grid; place-items: center;
    font-size: .95rem;
}

/* paletas por stack card */
.stack-navy   { --stack-color: #93c5fd;  --stack-bg: rgba(30, 64, 175, 0.25); }
.stack-amber  { --stack-color: #fcd34d;  --stack-bg: rgba(245, 158, 11, 0.18); }
.stack-teal   { --stack-color: #5eead4;  --stack-bg: rgba(13, 148, 136, 0.18); }
.stack-pills {
    display: flex; flex-wrap: wrap;
    gap: .4rem;
}
.stack-pills span {
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.1);
    color: #c9c9d0;
    font-family: var(--mono);
    font-size: .78rem;
    padding: .35rem .65rem;
    border-radius: var(--r-sm);
    transition: background .2s, border-color .2s, color .2s;
}
.stack-pills span:hover {
    background: rgba(255, 255, 255, 0.10);
    border-color: rgba(255, 255, 255, 0.18);
    color: #fff;
}
.stack-pills .featured {
    background: rgba(216, 30, 45, 0.18);
    border-color: rgba(216, 30, 45, 0.45);
    color: #ffabb3;
}
.stack-pills .pill-amber  { background: rgba(245, 158, 11, 0.15); border-color: rgba(245, 158, 11, 0.40); color: #fcd34d; }
.stack-pills .pill-teal   { background: rgba(13, 148, 136, 0.15); border-color: rgba(13, 148, 136, 0.45); color: #5eead4; }
.stack-pills .pill-navy   { background: rgba(96, 165, 250, 0.15); border-color: rgba(96, 165, 250, 0.45); color: #93c5fd; }

/* ─────────── PORTAFOLIO ─────────── */
.case-featured {
    background: var(--bg-card);
    border: 1px solid var(--line);
    border-radius: var(--r-xl);
    overflow: hidden;
    display: grid;
    grid-template-columns: 1fr 1.1fr;
    margin-bottom: 1.25rem;
    box-shadow: var(--shadow-md);
    transition: box-shadow .3s, transform .3s, border-color .3s;
    backdrop-filter: blur(8px);
}
.case-featured:hover {
    box-shadow: var(--shadow-lg);
    transform: translateY(-3px);
    border-color: rgba(255, 255, 255, 0.20);
}
.case-featured .case-content { padding: 2.5rem; }
.case-featured h3, .case-featured h4 { color: var(--text); }
.case-featured p { color: var(--text-muted); }
.case-featured .case-image {
    position: relative;
    background: rgba(0, 0, 0, 0.4);
    aspect-ratio: 4 / 3;
    overflow: hidden;
}
.case-featured .case-image img {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    object-fit: cover;
}
.case-featured h3 {
    font-size: clamp(1.4rem, 2vw, 1.8rem);
    line-height: 1.2;
    margin: .75rem 0 1rem;
    font-weight: 700;
}
.case-featured p {
    color: var(--text-muted);
    line-height: 1.55;
    margin: 0 0 1.5rem;
}
.case-tags { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: 1.5rem; }
.case-tags span {
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.12);
    color: var(--text-2);
    font-family: var(--mono);
    font-size: .75rem;
    padding: .3rem .65rem;
    border-radius: var(--r-sm);
}

.cases-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 1.25rem;
}
.case-card {
    display: flex;
    flex-direction: column;
    background: var(--bg-card);
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    padding: 1.5rem;
    color: var(--text);
    transition: transform .25s, box-shadow .25s, border-color .25s, background .25s;
    backdrop-filter: blur(8px);
}
.case-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--shadow-md);
    border-color: rgba(255, 255, 255, 0.20);
    background: var(--bg-card-hover);
    color: var(--text);
}
.case-card h4 { color: var(--text); }
.case-card p  { color: var(--text-muted); }
.case-card .case-head {
    display: flex; justify-content: space-between;
    align-items: center;
    margin-bottom: 1rem;
}
.case-card .case-cat {
    font-family: var(--mono);
    font-size: .7rem;
    letter-spacing: .08em;
    text-transform: uppercase;
    padding: .3rem .65rem;
    border-radius: 999px;
    background: var(--case-bg, var(--red-50));
    color: var(--case-color, var(--red));
    border: 1px solid var(--case-border, var(--red-100));
    font-weight: 500;
}
.case-card .case-year {
    font-family: var(--mono);
    font-size: .72rem;
    color: var(--text-soft);
    letter-spacing: .08em;
}

/* paletas por case card — dark */
.case-red    { --case-bg: rgba(216, 30, 45, 0.15);  --case-color: #ffabb3; --case-border: rgba(216, 30, 45, 0.40); }
.case-orange { --case-bg: rgba(234, 88, 12, 0.15);  --case-color: #fdba74; --case-border: rgba(234, 88, 12, 0.40); }
.case-teal   { --case-bg: rgba(13, 148, 136, 0.15); --case-color: #5eead4; --case-border: rgba(13, 148, 136, 0.40); }
.case-navy   { --case-bg: rgba(96, 165, 250, 0.15); --case-color: #93c5fd; --case-border: rgba(96, 165, 250, 0.40); }
.case-amber  { --case-bg: rgba(245, 158, 11, 0.15); --case-color: #fcd34d; --case-border: rgba(245, 158, 11, 0.40); }
.case-plum   { --case-bg: rgba(192, 132, 252, 0.15);--case-color: #d8b4fe; --case-border: rgba(192, 132, 252, 0.40); }
.case-card h4 { font-size: 1.1rem; margin-bottom: .65rem; font-weight: 600; }
.case-card p { color: var(--text-muted); font-size: .92rem; margin: 0; line-height: 1.5; }
.case-card .case-link {
    margin-top: 1.25rem;
    font-size: .85rem;
    color: var(--red);
    display: inline-flex; align-items: center; gap: .35rem;
    font-weight: 500;
}
.case-card:hover .case-link i { transform: translate(2px, -2px); }
.case-card .case-link i { transition: transform .2s; }

/* ─────────── PLANES ─────────── */
.pricing-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1.25rem;
}
.plan {
    background: var(--bg-card);
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    padding: 2rem;
    display: flex;
    flex-direction: column;
    position: relative;
    transition: transform .25s, box-shadow .25s, border-color .25s, background .25s;
    backdrop-filter: blur(8px);
}
.plan:hover {
    transform: translateY(-3px);
    box-shadow: var(--shadow-lg);
    border-color: rgba(255, 255, 255, 0.20);
    background: var(--bg-card-hover);
}
.plan h3 { color: var(--text); }
.plan-desc { color: var(--text-muted); }
.plan ul li { color: var(--text-2); border-color: var(--line); }
.plan ul li i { color: #ffabb3; }
.plan .btn-ghost {
    background: rgba(255, 255, 255, 0.06);
    color: #f6f6f9 !important;
    border-color: rgba(255, 255, 255, 0.18);
}
.plan .btn-ghost:hover {
    background: var(--red);
    border-color: var(--red);
    color: #fff !important;
}
.plan h3 { font-size: 1.3rem; margin-bottom: .5rem; font-weight: 600; }
.plan-desc {
    color: var(--text-muted);
    font-size: .92rem;
    line-height: 1.5;
    margin-bottom: 1.5rem;
    min-height: 2.5rem;
}
.plan ul {
    list-style: none;
    padding: 0; margin: 0 0 1.75rem;
    flex: 1;
}
.plan ul li {
    display: flex; align-items: flex-start;
    gap: .55rem;
    padding: .55rem 0;
    color: var(--text-2);
    font-size: .9rem;
    line-height: 1.5;
    border-bottom: 1px solid var(--line);
}
.plan ul li:last-child { border-bottom: 0; }
.plan ul li i { color: var(--red); margin-top: 4px; flex-shrink: 0; font-size: .9rem; }

.plan-tag {
    position: absolute;
    top: 1.25rem; right: 1.25rem;
    background: var(--red-50);
    color: var(--red);
    font-family: var(--mono);
    font-size: .68rem;
    font-weight: 500;
    letter-spacing: .08em;
    text-transform: uppercase;
    padding: .25rem .55rem;
    border-radius: var(--r-sm);
    border: 1px solid var(--red-100);
}

/* ── plan destacado: borde y glow rojo intenso ── */
.plan.plan-featured {
    background: rgba(216, 30, 45, 0.10);
    color: #f6f6f9;
    border: 1px solid rgba(216, 30, 45, 0.50);
    transform: scale(1.04);
    box-shadow: 0 14px 40px -10px rgba(216, 30, 45, 0.45);
}
.plan.plan-featured:hover {
    transform: scale(1.04) translateY(-3px);
    box-shadow: 0 20px 50px -10px rgba(216, 30, 45, 0.55);
    border-color: rgba(216, 30, 45, 0.7);
    background: rgba(216, 30, 45, 0.14);
}
.plan.plan-featured h3 { color: #f6f6f9; }
.plan.plan-featured .plan-desc { color: #c9c9d0; }
.plan.plan-featured ul li {
    color: #e9e9ec;
    border-bottom-color: rgba(255, 255, 255, 0.10);
}
.plan.plan-featured ul li i { color: var(--red-bright); }
.plan.plan-featured .btn-ghost {
    background: rgba(255, 255, 255, 0.08);
    color: #ffffff !important;
    border-color: rgba(255, 255, 255, 0.22);
}
.plan.plan-featured .btn-ghost:hover {
    background: var(--red);
    border-color: var(--red);
    color: #fff !important;
}
.plan.plan-featured .plan-tag {
    background: var(--red);
    color: #fff;
    border-color: var(--red);
}

/* ─────────── FAQ ─────────── */
.faq-list {
    display: flex;
    flex-direction: column;
    gap: .85rem;
}
.faq-item {
    background: var(--bg-card);
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    transition: border-color .2s, box-shadow .2s, background .2s;
    backdrop-filter: blur(8px);
}
.faq-item:hover { border-color: rgba(255, 255, 255, 0.20); background: var(--bg-card-hover); }
.faq-item[open] {
    border-color: rgba(216, 30, 45, 0.45);
    box-shadow: 0 8px 20px -8px rgba(216, 30, 45, 0.25);
}
.faq-item summary {
    list-style: none;
    cursor: pointer;
    padding: 1.3rem 1.5rem;
    display: grid;
    grid-template-columns: 1fr 28px;
    gap: 1rem;
    align-items: center;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-q {
    font-size: 1.02rem;
    font-weight: 600;
    color: var(--text);
    line-height: 1.4;
}
.faq-icon {
    width: 28px; height: 28px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.06);
    color: var(--text-muted);
    display: grid; place-items: center;
    font-size: 1rem;
    transition: transform .25s, background .25s, color .25s;
}
.faq-item[open] .faq-icon {
    transform: rotate(45deg);
    background: rgba(216, 30, 45, 0.2);
    color: #ffabb3;
}
.faq-q { color: var(--text); }
.faq-a {
    padding: 0 1.5rem 1.5rem 1.5rem;
    color: var(--text-muted);
    line-height: 1.65;
    font-size: .96rem;
    max-width: 70ch;
}
.faq-a strong { color: var(--text); font-weight: 600; }
.faq-a ul {
    padding-left: 1.25rem;
    margin: .65rem 0 .25rem;
}
.faq-a ul li {
    padding: .15rem 0;
    list-style: disc;
}
.faq-a ul li::marker { color: var(--red); }

/* ─────────── CONTACTO ─────────── */
.contact-grid {
    display: grid;
    grid-template-columns: 5fr 7fr;
    gap: 2.5rem;
}
.contact-info-card {
    background: var(--bg-dark);
    color: #e9e9ec;
    border-radius: var(--r-xl);
    padding: 2.5rem;
    display: flex;
    flex-direction: column;
    position: relative;
    overflow: hidden;
}
.contact-info-card::before {
    content: "";
    position: absolute;
    top: -50%; right: -30%;
    width: 80%; height: 100%;
    background: radial-gradient(ellipse at center, rgba(216, 30, 45, 0.25), transparent 60%);
    pointer-events: none;
}
.contact-info-card h3 {
    color: #f6f6f9;
    font-size: 1.6rem;
    line-height: 1.2;
    margin-bottom: .75rem;
    position: relative;
}
.contact-info-card .lead {
    color: #b3b1bc;
    margin-bottom: 2.5rem;
    position: relative;
    line-height: 1.6;
}
.contact-info-card .ci-list {
    list-style: none;
    padding: 0; margin: 0;
    position: relative;
}
.contact-info-card .ci-list li {
    padding: 1rem 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    display: flex; gap: .9rem;
    align-items: flex-start;
}
.contact-info-card .ci-list li:last-child { border-bottom: 0; }
.contact-info-card .ci-list i {
    color: var(--red-bright);
    font-size: 1.1rem;
    margin-top: 2px;
    flex-shrink: 0;
}
.contact-info-card .ci-label {
    font-family: var(--mono);
    font-size: .7rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: #8b8993;
    margin-bottom: .2rem;
    display: block;
}
.contact-info-card .ci-list a { color: #f6f6f9; }
.contact-info-card .ci-list a:hover { color: var(--red-bright); }

.contact-form-card {
    background: var(--bg-card);
    border: 1px solid var(--line);
    border-radius: var(--r-xl);
    padding: 2.5rem;
    box-shadow: var(--shadow-md);
    backdrop-filter: blur(8px);
}

/* form modern flotante — dark */
.form-floating-modern { position: relative; }
.form-floating-modern .form-control,
.form-floating-modern .form-select {
    background: rgba(255, 255, 255, 0.04) !important;
    border: 1px solid rgba(255, 255, 255, 0.14) !important;
    color: var(--text) !important;
    border-radius: var(--r-md) !important;
    padding: 1.5rem .9rem .55rem !important;
    height: auto;
    font-size: .98rem;
    font-family: var(--sans);
    transition: border-color .15s, box-shadow .15s, background .15s;
    box-shadow: none !important;
}
.form-floating-modern .form-control:hover,
.form-floating-modern .form-select:hover {
    background: rgba(255, 255, 255, 0.06) !important;
}
.form-floating-modern .form-control:focus,
.form-floating-modern .form-select:focus {
    border-color: var(--red) !important;
    box-shadow: 0 0 0 3px rgba(216, 30, 45, 0.20) !important;
    outline: none;
}
.form-floating-modern .form-control::placeholder { color: transparent; }
.form-floating-modern label {
    position: absolute;
    top: .4rem; left: 1rem;
    font-size: .7rem;
    font-weight: 500;
    color: rgba(255, 255, 255, 0.5);
    letter-spacing: .06em;
    text-transform: uppercase;
    pointer-events: none;
}
.form-floating-modern .form-select option {
    background: var(--bg-dark);
    color: var(--text);
}
.form-floating-modern textarea.form-control { min-height: 140px; padding-top: 1.7rem !important; }
.field-error {
    display: block;
    margin-top: .4rem;
    color: var(--red);
    font-size: .82rem;
}
.honeypot { position: absolute; left: -9999px; top: -9999px; height: 0; width: 0; overflow: hidden; }
.alert-danger {
    background: rgba(216, 30, 45, 0.12);
    border: 1px solid rgba(216, 30, 45, 0.40);
    color: #ffabb3;
    border-radius: var(--r-md);
    padding: .85rem 1.1rem;
}

/* ─────────── CAPTCHA ─────────── */
.captcha-block {
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.10);
    border-radius: var(--r-md);
    padding: 1.1rem 1.25rem;
}
.captcha-label {
    display: block;
    font-size: .72rem;
    font-weight: 500;
    color: rgba(255, 255, 255, 0.55);
    letter-spacing: .06em;
    text-transform: uppercase;
    margin-bottom: .65rem;
}
.captcha-row {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 1rem;
    align-items: start;
}
.captcha-img-wrap {
    position: relative;
    display: inline-flex;
    border-radius: var(--r-sm);
    overflow: hidden;
    border: 1px solid var(--red-100);
    background: #fff;
    box-shadow: var(--shadow-xs);
    flex-shrink: 0;
    width: 200px;
    height: 70px;
}
.captcha-img {
    width: 200px;
    height: 70px;
    display: block;
    user-select: none;
    -webkit-user-select: none;
    pointer-events: none;
}
.captcha-refresh {
    position: absolute;
    top: 4px; right: 4px;
    background: rgba(255, 255, 255, 0.85);
    border: 1px solid var(--red-100);
    color: var(--red);
    width: 24px; height: 24px;
    border-radius: 50%;
    display: grid; place-items: center;
    cursor: pointer;
    transition: background .15s, color .15s, border-color .15s, transform .35s;
    font-size: .85rem;
    padding: 0;
}
.captcha-refresh:hover {
    background: var(--red);
    color: #fff;
    border-color: var(--red);
}
.captcha-refresh.rotating { transform: rotate(360deg); }
.captcha-input-wrap { display: flex; flex-direction: column; min-width: 0; }
.captcha-input-wrap .form-control {
    background: rgba(255, 255, 255, 0.04) !important;
    border: 1px solid rgba(255, 255, 255, 0.18) !important;
    color: var(--text) !important;
    border-radius: var(--r-md) !important;
    padding: .75rem 1rem !important;
    height: auto;
    font-size: 1.1rem;
    font-weight: 600;
    font-family: var(--mono);
    letter-spacing: .08em;
    text-align: center;
    box-shadow: none !important;
    transition: border-color .15s, box-shadow .15s, background .15s;
    max-width: 180px;
}
.captcha-input-wrap .form-control:focus {
    border-color: var(--red) !important;
    box-shadow: 0 0 0 3px rgba(216, 30, 45, 0.20) !important;
    background: rgba(255, 255, 255, 0.07) !important;
    outline: none;
}
.captcha-hint {
    display: block;
    margin-top: .55rem;
    color: var(--text-muted);
    font-size: .78rem;
    line-height: 1.4;
}

@media (max-width: 575px) {
    .captcha-row {
        grid-template-columns: 1fr;
        gap: .85rem;
    }
    .captcha-img-wrap, .captcha-img { width: 100%; max-width: 280px; }
    .captcha-input-wrap .form-control { max-width: none; }
}

/* ─────────── GRACIAS ─────────── */
.section-thanks {
    padding: 160px 0 120px;
    background: var(--bg);
    position: relative;
    overflow: hidden;
}
.section-thanks::before {
    content: "";
    position: absolute;
    top: -10%; left: 50%;
    transform: translateX(-50%);
    width: 80%; height: 80%;
    background: radial-gradient(ellipse at center, rgba(216, 30, 45, 0.20), transparent 60%);
    pointer-events: none;
}
.thanks-card {
    max-width: 600px;
    margin: 0 auto;
    background: var(--bg-card);
    border: 1px solid var(--line);
    border-radius: var(--r-xl);
    padding: 3rem 2.5rem;
    text-align: center;
    box-shadow: var(--shadow-xl), var(--glow-red);
    position: relative;
    backdrop-filter: blur(8px);
}
.thanks-icon {
    width: 56px; height: 56px;
    border-radius: 50%;
    background: rgba(216, 30, 45, 0.15);
    color: #ffabb3;
    margin: 0 auto 1.5rem;
    display: grid; place-items: center;
    font-size: 1.6rem;
    border: 1px solid rgba(216, 30, 45, 0.40);
}
.thanks-card h1, .thanks-card .lead strong { color: var(--text); }
.thanks-card .lead { color: var(--text-muted); }
.thanks-card h1 { font-size: clamp(1.6rem, 3vw, 2.2rem); margin-bottom: 1rem; }
.thanks-card .lead { color: var(--text-muted); margin-bottom: 2rem; }

/* ─────────── FOOTER ─────────── */
.app-footer {
    background: #050508;
    color: rgba(245, 241, 234, 0.55);
    padding: 80px 0 32px;
    border-top: 1px solid rgba(255, 255, 255, 0.08);
    margin-top: 0;
    position: relative;
    overflow: hidden;
}
.app-footer::before {
    content: "";
    position: absolute;
    top: -50%; right: -20%;
    width: 60%; height: 100%;
    background: radial-gradient(ellipse at center, rgba(216, 30, 45, 0.10), transparent 60%);
    pointer-events: none;
}
.app-footer > * { position: relative; z-index: 1; }
.footer-grid {
    display: grid;
    grid-template-columns: 3fr 2fr 2fr 2fr;
    gap: 3rem;
    margin-bottom: 3rem;
    padding-bottom: 2.5rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.footer-col h4 {
    font-size: .82rem;
    font-weight: 600;
    color: #f6f6f9;
    margin-bottom: 1.1rem;
    letter-spacing: .01em;
}
.footer-col ul { list-style: none; padding: 0; margin: 0; }
.footer-col ul li { padding: .35rem 0; color: rgba(245, 241, 234, 0.55); font-size: .92rem; }
.footer-col ul li a { color: rgba(245, 241, 234, 0.75); font-size: .92rem; }
.footer-col ul li a:hover { color: #ffabb3; }
.brand-footer img {
    height: 52px;
    width: auto;
    opacity: .95;
}
.footer-tagline {
    color: rgba(245, 241, 234, 0.65);
    font-size: .94rem;
    margin-top: 1rem;
    line-height: 1.5;
    max-width: 36ch;
}
.footer-bottom {
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1rem;
    font-size: .85rem;
    color: rgba(245, 241, 234, 0.4);
}
.footer-bottom a { color: rgba(245, 241, 234, 0.6); }
.footer-bottom a:hover { color: #ffabb3; }

/* ─────────── To-top ─────────── */
.to-top {
    position: fixed; right: 22px; bottom: 22px;
    width: 42px; height: 42px;
    border-radius: 50%;
    display: grid; place-items: center;
    background: rgba(255, 255, 255, 0.10);
    border: 1px solid rgba(255, 255, 255, 0.18);
    color: #fff;
    box-shadow: var(--shadow-lg);
    z-index: 100;
    opacity: 0; transform: translateY(20px); pointer-events: none;
    transition: opacity .25s, transform .25s, background .2s, border-color .2s;
    font-size: 1rem;
    backdrop-filter: blur(10px);
}
.to-top:hover {
    background: var(--red);
    border-color: var(--red);
    color: #fff;
}
.to-top.show { opacity: 1; transform: translateY(0); pointer-events: auto; }

/* ─────────── ANIMACIONES ─────────── */

/* Reveal con variantes */
.reveal { opacity: 0; transition: opacity .8s cubic-bezier(.16,.84,.44,1), transform .8s cubic-bezier(.16,.84,.44,1); will-change: opacity, transform; }
.reveal-up     { transform: translateY(28px); }
.reveal-down   { transform: translateY(-20px); }
.reveal-left   { transform: translateX(-28px); }
.reveal-right  { transform: translateX(28px); }
.reveal-zoom   { transform: scale(.92); }
.reveal-fade   { /* solo opacity */ }
.reveal.is-visible { opacity: 1; transform: none; }

/* Stagger automático para hijos directos */
.stagger > * { opacity: 0; transform: translateY(24px); transition: opacity .7s cubic-bezier(.16,.84,.44,1), transform .7s cubic-bezier(.16,.84,.44,1); }
.stagger.is-visible > *      { opacity: 1; transform: none; }
.stagger.is-visible > *:nth-child(1) { transition-delay: 0s; }
.stagger.is-visible > *:nth-child(2) { transition-delay: .08s; }
.stagger.is-visible > *:nth-child(3) { transition-delay: .16s; }
.stagger.is-visible > *:nth-child(4) { transition-delay: .24s; }
.stagger.is-visible > *:nth-child(5) { transition-delay: .32s; }
.stagger.is-visible > *:nth-child(6) { transition-delay: .40s; }
.stagger.is-visible > *:nth-child(7) { transition-delay: .48s; }
.stagger.is-visible > *:nth-child(8) { transition-delay: .56s; }

/* Hero entrance al cargar */
.hero-text > * {
    opacity: 0;
    transform: translateY(20px);
    animation: heroIn .9s cubic-bezier(.16,.84,.44,1) forwards;
}
.hero-text > *:nth-child(1) { animation-delay: .05s; }
.hero-text > *:nth-child(2) { animation-delay: .18s; }
.hero-text > *:nth-child(3) { animation-delay: .31s; }
.hero-text > *:nth-child(4) { animation-delay: .44s; }
@keyframes heroIn {
    to { opacity: 1; transform: none; }
}

/* Mockup wrap con float continuo + entrada */
.hero-mockup-wrap {
    animation: mockupIn 1s .35s cubic-bezier(.16,.84,.44,1) backwards,
               floatWrap 7s 1.5s ease-in-out infinite;
}
@keyframes mockupIn {
    from { opacity: 0; transform: translateY(40px) scale(.95); }
    to   { opacity: 1; }
}
@keyframes floatWrap {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-12px); }
}

/* Pulse del dot del eyebrow */
.eyebrow .dot {
    animation: pulse 2.2s ease-in-out infinite;
}
@keyframes pulse {
    0%, 100% { transform: scale(1); box-shadow: 0 0 0 3px var(--red-100); }
    50%      { transform: scale(.85); box-shadow: 0 0 0 5px rgba(216,30,45,0.08); }
}

/* Reveal de iconos: pequeño wiggle al aparecer la card */
.feature-card.is-visible .feature-icon,
.service-card.is-visible .svc-icon {
    animation: iconPop .6s .15s cubic-bezier(.16,1.4,.44,1) backwards;
}
@keyframes iconPop {
    0%   { transform: scale(.5) rotate(-12deg); opacity: 0; }
    100% { transform: scale(1) rotate(0deg);   opacity: 1; }
}

/* Process steps: línea horizontal que se traza */
.process-timeline.is-visible::before {
    animation: lineDraw 1.2s .3s cubic-bezier(.16,.84,.44,1) backwards;
    transform-origin: left center;
}
@keyframes lineDraw {
    from { transform: scaleX(0); }
    to   { transform: scaleX(1); }
}
.process-timeline.is-visible .process-num {
    animation: numPop .6s cubic-bezier(.16,1.4,.44,1) backwards;
}
.process-timeline.is-visible .process-step:nth-child(1) .process-num { animation-delay: .5s; }
.process-timeline.is-visible .process-step:nth-child(2) .process-num { animation-delay: .7s; }
.process-timeline.is-visible .process-step:nth-child(3) .process-num { animation-delay: .9s; }
.process-timeline.is-visible .process-step:nth-child(4) .process-num { animation-delay: 1.1s; }
@keyframes numPop {
    0%   { transform: scale(0); opacity: 0; }
    60%  { transform: scale(1.15); opacity: 1; }
    100% { transform: scale(1); }
}

/* Stack cards: brillo sutil al hover */
.stack-card { position: relative; overflow: hidden; }
.stack-card::after {
    content: "";
    position: absolute; inset: 0;
    background: linear-gradient(115deg, transparent 40%, rgba(216,30,45,0.12) 50%, transparent 60%);
    transform: translateX(-100%);
    transition: transform .8s ease;
    pointer-events: none;
}
.stack-card:hover::after { transform: translateX(100%); }

/* Plan featured: shimmer perpetuo */
.plan-featured {
    position: relative;
    overflow: hidden;
}
.plan-featured::after {
    content: "";
    position: absolute; inset: 0;
    background: linear-gradient(125deg, transparent 30%, rgba(255,255,255,0.04) 50%, transparent 70%);
    transform: translateX(-100%);
    animation: shimmer 4s 1s ease-in-out infinite;
    pointer-events: none;
}
@keyframes shimmer {
    0%, 100% { transform: translateX(-100%); }
    50%      { transform: translateX(100%); }
}

/* Mini hover lift en chips/pills */
.stack-pills span, .case-tags span, .chip {
    transition: transform .2s, background .2s, border-color .2s, color .2s;
}
.stack-pills span:hover, .case-tags span:hover, .chip:hover {
    transform: translateY(-2px);
}

/* CTA button: gradiente animado + glow */
.btn-cta {
    background: linear-gradient(90deg, var(--red) 0%, #ff5c6c 50%, var(--red) 100%);
    background-size: 200% 100%;
    background-position: 0% 0;
    box-shadow:
        0 6px 16px -4px rgba(216, 30, 45, 0.45),
        0 0 30px rgba(216, 30, 45, 0.25),
        inset 0 1px 0 rgba(255, 255, 255, 0.22);
    transition: background-position .4s ease, transform .15s, box-shadow .25s, border-color .15s;
    position: relative;
}
.btn-cta:hover {
    background-position: 100% 0;
    box-shadow:
        0 10px 28px -6px rgba(216, 30, 45, 0.65),
        0 0 50px rgba(216, 30, 45, 0.40),
        inset 0 1px 0 rgba(255, 255, 255, 0.25);
}

/* Eliminar animaciones si el usuario lo prefiere */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
        scroll-behavior: auto !important;
    }
}

/* ===========================================================
   Responsive
   =========================================================== */
@media (max-width: 1199px) {
    .hero { min-height: auto; padding: 130px 0 80px; }
    .hero-grid { grid-template-columns: 1fr; gap: 4rem; }
    .hero-mockup-wrap { max-width: 520px; margin: 0 auto; }
    .fb-top-left { left: -10px; top: -16px; }
    .fb-right { right: -16px; }
    .fb-bottom { left: 10%; }
    .feature-grid { grid-template-columns: repeat(2, 1fr); }
    .services-grid { grid-template-columns: repeat(2, 1fr); }
    .service-card.service-wide { grid-column: span 2; }
    .process-timeline { grid-template-columns: repeat(2, 1fr); gap: 2rem; }
    .process-timeline::before { display: none; }
    .stack-grid { grid-template-columns: repeat(2, 1fr); }
    .stack-grid > :last-child { grid-column: span 2; }
    .case-featured { grid-template-columns: 1fr; }
    .case-featured .case-image { order: -1; }
    .cases-grid { grid-template-columns: 1fr; }
    .pricing-grid { grid-template-columns: repeat(2, 1fr); }
    .contact-grid { grid-template-columns: 1fr; }
    .footer-grid { grid-template-columns: 1fr 1fr; gap: 2rem; }
    .trusted-row { grid-template-columns: repeat(3, 1fr); gap: 2rem 1.5rem; }
}

@media (max-width: 767px) {
    .section { padding: 60px 0; }
    .hero { padding: 110px 0 40px; min-height: auto; }
    .floating-badge { font-size: .72rem; padding: .5rem .75rem; }
    .fb-top-left { top: -12px; left: -8px; }
    .fb-right { right: -8px; top: 35%; }
    .fb-bottom { left: 5%; bottom: -12px; }
    .hero-marquee { margin-top: 3rem; }
    .m-item { font-size: .8rem; }
    .feature-grid, .services-grid, .pricing-grid { grid-template-columns: 1fr; }
    .service-card.service-wide { grid-column: span 1; }
    .process-timeline { grid-template-columns: 1fr; }
    .stack-grid { grid-template-columns: 1fr; }
    .stack-grid > :last-child { grid-column: span 1; }
    .footer-grid { grid-template-columns: 1fr; gap: 2rem; }
    .trusted-row { grid-template-columns: repeat(2, 1fr); }
    .plan-featured { transform: none; }
    .plan-featured:hover { transform: translateY(-3px); }
    /* Mobile drawer menu rediseñado */
    .app-nav .navbar-collapse {
        background: var(--bg-card);
        border: 1px solid var(--line);
        border-radius: var(--r-lg);
        padding: .5rem;
        margin-top: .75rem;
        box-shadow: var(--shadow-xl);
        overflow: hidden;
    }
    .app-nav .navbar-nav { width: 100%; gap: 2px !important; }
    .app-nav .nav-item { width: 100%; }
    .app-nav .nav-link {
        padding: .9rem 1rem !important;
        font-size: 1rem;
        font-weight: 500;
        display: flex !important;
        align-items: center;
        gap: .85rem;
        width: 100%;
        border-radius: var(--r-md);
        color: var(--text);
    }
    .app-nav .nav-link i {
        display: inline-flex !important;
        align-items: center; justify-content: center;
        width: 32px; height: 32px;
        border-radius: var(--r-sm);
        background: var(--bg-alt);
        color: var(--text-muted);
        font-size: 1rem;
        opacity: 1;
        flex-shrink: 0;
        transition: background .15s, color .15s, transform .15s;
    }
    .app-nav .nav-link span { flex: 1; }
    .app-nav .nav-link::after {
        content: "\F285"; /* chevron-right de bootstrap-icons */
        font-family: 'bootstrap-icons';
        font-size: .85rem;
        color: var(--text-soft);
        opacity: .5;
        margin-left: auto;
    }
    .app-nav .nav-link:hover {
        background: var(--bg-alt);
    }
    .app-nav .nav-link:hover i {
        background: var(--bg-card);
        color: var(--red);
        transform: scale(1.05);
    }
    .app-nav .nav-link.active {
        background: var(--red-50);
        color: var(--red);
    }
    .app-nav .nav-link.active i {
        background: var(--red);
        color: #fff;
    }
    .app-nav .nav-link.active::after {
        color: var(--red);
        opacity: 1;
    }
    .app-nav .nav-cta {
        margin-top: .5rem;
        padding-top: .75rem;
        border-top: 1px solid var(--line);
    }
    .app-nav .nav-cta .btn-cta {
        width: 100%;
        justify-content: center;
        padding: .85rem 1rem;
        font-size: 1rem;
    }
    .contact-info-card, .contact-form-card { padding: 1.75rem; }
}
