/* ---------- Landing page (marketing) ----------
 * Pagina totalmente aparte de la app (ver landing.php) -- reusa los
 * tokens de color/tipografia/sombra de base.css, pero todo lo demas es
 * propio de aca, para no mezclar estilos de "app" con estilos de
 * "marketing" en el mismo archivo.
 */

.landing-body {
    background: var(--color-bg);
    color: var(--color-text);
    font-family: var(--font-sans);
    margin: 0;
}

.btn-lg {
    padding: 15px 28px;
    font-size: 15.5px;
}

/* ---------- Fondo ambiente (blobs) ----------
 * position:fixed a proposito -- no dependen del alto real de la pagina
 * (que cambia entre landing/registro) y no afectan el layout ni el
 * scroll, solo dan un fondo con un poco de vida detras del contenido. */
.landing-bg-blob {
    position: fixed;
    border-radius: 50%;
    filter: blur(70px);
    pointer-events: none;
    z-index: 0;
    opacity: 0.8;
}

.landing-bg-blob--1 {
    width: 560px;
    height: 560px;
    top: -200px;
    right: -180px;
    background: radial-gradient(circle, rgba(var(--color-primary-rgb), 0.22), transparent 70%);
}

.landing-bg-blob--2 {
    width: 460px;
    height: 460px;
    bottom: -180px;
    left: -160px;
    background: radial-gradient(circle, rgba(15, 118, 110, 0.18), transparent 70%);
}

.landing-nav,
.landing-hero,
.landing-body main,
.site-footer,
.registro-main {
    position: relative;
    z-index: 1;
}

/* ---------- Animacion de aparicion al hacer scroll ---------- */

.reveal {
    opacity: 0;
    transform: translateY(24px);
    transition: opacity 0.6s ease, transform 0.6s ease;
    transition-delay: var(--reveal-delay, 0ms);
}

.reveal.is-visible {
    opacity: 1;
    transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
    .reveal {
        opacity: 1;
        transform: none;
        transition: none;
    }
}

/* ---------- Nav ---------- */

.landing-nav {
    position: sticky;
    top: 0;
    z-index: 50;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 16px 32px;
    background: rgba(255, 255, 255, 0.85);
    backdrop-filter: blur(10px);
    border-bottom: 1px solid var(--color-border);
}

:root[data-theme="dark"] .landing-nav {
    background: rgba(20, 22, 28, 0.85);
}

@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) .landing-nav {
        background: rgba(20, 22, 28, 0.85);
    }
}

.landing-brand {
    display: flex;
    align-items: center;
    gap: 10px;
    text-decoration: none;
    color: var(--color-text);
}

.landing-brand-name {
    font-family: var(--font-wordmark);
    font-weight: 700;
    font-size: 18px;
    letter-spacing: -0.01em;
}

.landing-nav-cta {
    flex-shrink: 0;
}

.landing-nav-actions {
    display: flex;
    align-items: center;
    gap: 18px;
    flex-shrink: 0;
}

/* ---------- Hero ---------- */

.landing-hero {
    display: flex;
    align-items: center;
    gap: 48px;
    max-width: 1180px;
    margin: 0 auto;
    padding: 72px 32px;
}

.landing-hero-copy {
    flex: 1.1;
    min-width: 0;
}

.landing-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    margin: 0 0 14px;
    padding: 5px 14px;
    border-radius: 999px;
    background: var(--color-primary-soft);
    color: var(--color-primary-dark);
    font-size: 12.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.landing-eyebrow::before {
    content: '';
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--color-primary);
    flex-shrink: 0;
}

@media (prefers-reduced-motion: no-preference) {
    .landing-eyebrow::before {
        animation: brand-mark-pulse 2.4s ease-in-out infinite;
    }
}

.landing-hero h1 {
    margin: 0 0 20px;
    font-family: var(--font-brand);
    font-size: clamp(32px, 4.2vw, 48px);
    line-height: 1.15;
    letter-spacing: -0.01em;
}

.landing-hero h1 span {
    color: var(--color-primary);
}

.landing-hero-lead {
    margin: 0 0 32px;
    font-size: 17px;
    line-height: 1.6;
    color: var(--color-text-muted);
    max-width: 46ch;
}

.landing-hero-actions {
    display: flex;
    align-items: center;
    gap: 22px;
    flex-wrap: wrap;
}

@media (prefers-reduced-motion: no-preference) {
    .landing-hero-actions .btn-primary {
        animation: landing-cta-pulse 2.6s ease-in-out infinite;
    }
}

@keyframes landing-cta-pulse {
    0%, 100% { box-shadow: 0 10px 24px rgba(47, 95, 219, 0.32); }
    50% { box-shadow: 0 10px 32px rgba(47, 95, 219, 0.55); }
}

.landing-hero-secondary {
    display: inline-block;
    margin-top: 18px;
    font-size: 14.5px;
}

.landing-hero-visual {
    position: relative;
    flex: 1;
    min-width: 0;
    border-radius: var(--radius-lg);
    overflow: hidden;
    box-shadow: var(--shadow-pop);
    aspect-ratio: 4 / 3;
}

.landing-hero-visual img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

@media (prefers-reduced-motion: no-preference) {
    .landing-hero-visual {
        animation: landing-hero-float 5s ease-in-out infinite;
    }
}

@keyframes landing-hero-float {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-10px); }
}

/* ---------- Features ---------- */

.landing-features {
    max-width: 1180px;
    margin: 0 auto;
    padding: 32px 32px 88px;
}

.landing-section-head {
    text-align: center;
    max-width: 560px;
    margin: 0 auto 48px;
}

.landing-section-head h2 {
    margin: 0 0 10px;
    font-family: var(--font-brand);
    font-size: clamp(24px, 3vw, 32px);
}

.landing-section-head h2::after {
    content: '';
    display: block;
    width: 56px;
    height: 4px;
    margin: 14px auto 0;
    border-radius: 999px;
    background: var(--gradient-header);
}

.landing-section-head p {
    margin: 0;
    color: var(--color-text-muted);
    font-size: 15.5px;
}

.landing-feature-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 22px;
}

.landing-feature-card {
    position: relative;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: 26px 24px;
    box-shadow: var(--shadow-soft);
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.landing-feature-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--shadow-pop);
}

.landing-feature-badge {
    position: absolute;
    top: 22px;
    right: 22px;
    padding: 3px 10px;
    border-radius: 999px;
    background: var(--color-warm-soft);
    color: var(--color-warm);
    font-size: 10.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.landing-feature-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 46px;
    height: 46px;
    border-radius: var(--radius-md);
    background: var(--color-primary-soft);
    color: var(--color-primary);
    margin-bottom: 16px;
    transition: transform 0.25s ease;
}

/* Un poco de variedad de color entre las tarjetas -- todas del mismo azul
   se sentia muy plano/monotono. Mismos tokens que ya existen en el resto
   de la app, nada de colores nuevos. */
.landing-feature-icon.is-color-accent {
    background: var(--color-accent-soft);
    color: var(--color-accent);
}

.landing-feature-icon.is-color-warm {
    background: var(--color-warm-soft);
    color: var(--color-warm);
}

.landing-feature-icon.is-color-success {
    background: var(--color-success-soft);
    color: var(--color-success);
}

.landing-feature-card:hover .landing-feature-icon {
    transform: scale(1.1) rotate(-6deg);
}

.landing-feature-card h3 {
    margin: 0 0 8px;
    font-size: 16.5px;
}

.landing-feature-card p {
    margin: 0;
    font-size: 14px;
    line-height: 1.55;
    color: var(--color-text-muted);
}

/* ---------- CTA final ---------- */

.landing-cta {
    text-align: center;
    max-width: 640px;
    margin: 0 auto;
    padding: 0 32px 96px;
}

.landing-cta h2 {
    margin: 0 0 10px;
    font-family: var(--font-brand);
    font-size: clamp(22px, 3vw, 30px);
}

.landing-cta p {
    margin: 0 0 28px;
    color: var(--color-text-muted);
    font-size: 15.5px;
}

.landing-cta-actions {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 18px;
    flex-wrap: wrap;
}

/* ---------- Experiencias (testimonios) ---------- */

.landing-testimonials {
    max-width: 1180px;
    margin: 0 auto;
    padding: 0 32px 88px;
}

.landing-testimonial-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 22px;
}

.landing-testimonial-card {
    margin: 0;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: 26px 24px;
    box-shadow: var(--shadow-soft);
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.landing-testimonial-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--shadow-pop);
}

.landing-testimonial-card blockquote::before {
    content: '\201C';
    display: block;
    font-family: Georgia, serif;
    font-size: 42px;
    line-height: 1;
    color: var(--color-primary-light);
    margin-bottom: 4px;
}

.landing-testimonial-card blockquote {
    margin: 0 0 16px;
    font-size: 15px;
    line-height: 1.6;
    color: var(--color-text);
}

.landing-testimonial-card figcaption {
    font-size: 13px;
    font-weight: 700;
    color: var(--color-text-muted);
}

/* ---------- Aviso de cookies ---------- */

.cookie-banner {
    position: fixed;
    left: 16px;
    right: 16px;
    bottom: 16px;
    z-index: 200;
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
    max-width: 720px;
    margin: 0 auto;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-pop);
    padding: 16px 20px;
}

.cookie-banner p {
    flex: 1;
    min-width: 220px;
    margin: 0;
    font-size: 13.5px;
    color: var(--color-text-muted);
}

.cookie-banner .btn {
    flex-shrink: 0;
}

/* El footer de las paginas publicas ahora es .site-footer (ver
   partials/site-footer.php y assets/css/base.css) -- landing.php dejo de
   usar su propio .landing-footer, ya no hace falta aca. */

@media (max-width: 860px) {
    .landing-hero {
        flex-direction: column;
        text-align: center;
        padding: 48px 24px;
    }

    .landing-hero-lead {
        max-width: none;
    }

    .landing-hero-actions {
        justify-content: center;
    }

    .landing-hero-visual {
        width: 100%;
        max-width: 420px;
    }
}

@media (max-width: 520px) {
    .landing-nav {
        padding: 14px 18px;
    }

    .landing-brand-name {
        display: none;
    }
}
