/*
 * Paginas publicas: la landing y los textos legales (ADR 0072).
 *
 * Se carga DESPUES de app.css y solo en estas paginas (`PageMeta::$stylesheets`):
 * la aplicacion con sesion no paga ni un byte de esto. Todo va bajo `.fz-landing`
 * y todo color sale de un token de app.css -ni uno nuevo-, asi que el tema
 * oscuro sale solo, igual que en el resto del producto. Ni un estilo en linea:
 * la CSP no lleva 'unsafe-inline'.
 */

/* A partir de 1024 px el `body` es una fila flexible, por el riel (ADR 0030).
   Aqui no hay riel: la pagina es una columna normal. */
body:has(> .fz-landing) {
    display: block;
}

.fz-landing {
    min-height: 100vh;
    min-height: 100dvh;
    background-color: var(--bs-body-bg);
}

/* Las anclas no quedan tapadas por la cabecera fija. */
.fz-landing [id] {
    scroll-margin-top: 5rem;
}

@media (prefers-reduced-motion: no-preference) {
    html:has(.fz-landing) {
        scroll-behavior: smooth;
    }
}

.fz-lp-muted {
    color: var(--bs-secondary-color);
}

.fz-lp-lead {
    color: var(--bs-secondary-color);
    font-size: 1.0625rem;
}

.fz-lp-narrow {
    max-width: 48rem;
}

/* --- Saltar al contenido ------------------------------------------------- */

.fz-lp-skip:focus {
    position: absolute;
    top: var(--fz-space-2);
    left: var(--fz-space-2);
    z-index: 1100;
    padding: var(--fz-space-2) var(--fz-space-3);
    border-radius: var(--bs-border-radius);
    background-color: var(--fz-surface);
    color: var(--bs-body-color);
    box-shadow: var(--fz-elev-2);
}

/* --- Cabecera -------------------------------------------------------------

   Fija arriba y con el fondo de la pagina casi opaco: el contenido pasa por
   debajo sin que el texto de la cabecera pierda contraste. */

.fz-lp-header {
    position: sticky;
    top: 0;
    z-index: 1030;
    border-bottom: 1px solid var(--bs-border-color);
    background-color: var(--bs-body-bg);
    /* En la app instalada del iPhone se pega bajo el reloj: su fondo lo cubre y
       el logo baja (`viewport-fit=cover`, app.css seccion 18). */
    padding-top: env(safe-area-inset-top, 0px);
}

@supports (backdrop-filter: blur(1px)) {
    .fz-lp-header {
        background-color: rgba(var(--bs-body-bg-rgb), 0.9);
        backdrop-filter: saturate(1.4) blur(10px);
    }
}

.fz-lp-header-inner {
    display: flex;
    align-items: center;
    gap: var(--fz-space-3);
    min-height: 4rem;
}

.fz-lp-brand {
    display: inline-flex;
    align-items: center;
    gap: var(--fz-space-2);
    min-height: var(--fz-control-height);
    color: var(--bs-body-color);
    font-size: 1.125rem;
    font-weight: var(--fz-weight-heading);
    letter-spacing: -0.01em;
    text-decoration: none;
}

.fz-lp-brand:hover {
    color: var(--bs-body-color);
}

.fz-lp-nav {
    display: none;
}

.fz-lp-nav a,
.fz-lp-lang a,
.fz-lp-signin {
    display: inline-flex;
    align-items: center;
    min-height: var(--fz-control-height);
    color: var(--bs-secondary-color);
    font-weight: 500;
    text-decoration: none;
}

.fz-lp-nav a:hover,
.fz-lp-lang a:hover,
.fz-lp-signin:hover {
    color: var(--bs-body-color);
}

.fz-lp-actions {
    display: flex;
    align-items: center;
    gap: var(--fz-space-3);
    margin-left: auto;
}

.fz-lp-lang {
    display: flex;
    gap: var(--fz-space-1);
}

.fz-lp-lang a {
    padding: 0 var(--fz-space-2);
    border-radius: var(--bs-border-radius-sm);
    font-size: 0.875rem;
}

.fz-lp-lang a[aria-current] {
    color: var(--bs-body-color);
    font-weight: 600;
}

/* En un telefono no caben marca, dos idiomas, acceso y boton: se queda el idioma
   al que se puede cambiar -el actual ya se esta leyendo- y el boton se va, porque
   el del hero esta justo debajo. */
@media (max-width: 575.98px) {
    .fz-lp-lang a[aria-current],
    .fz-lp-actions > .btn {
        display: none;
    }
}

@media (min-width: 992px) {
    .fz-lp-nav {
        display: flex;
        gap: var(--fz-space-5);
        margin-left: var(--fz-space-5);
    }

    .fz-lp-lang a[aria-current] {
        background-color: var(--bs-tertiary-bg);
    }
}

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

.fz-lp-hero {
    padding: var(--fz-space-6) 0 var(--fz-space-7);
}

.fz-lp-hero-grid {
    display: grid;
    gap: var(--fz-space-6);
    align-items: center;
}

/* Una etiqueta, no un enlace: fondo tenue de la marca y texto oscuro. El indigo
   suelto se reserva a lo que se puede pulsar. */
.fz-lp-eyebrow {
    display: inline-block;
    margin-bottom: var(--fz-space-3);
    padding: var(--fz-space-1) var(--fz-space-3);
    border-radius: 999px;
    background-color: var(--bs-primary-bg-subtle);
    color: var(--bs-primary-text-emphasis);
    font-size: 0.8125rem;
    font-weight: 600;
}

.fz-lp-hero-title {
    margin-bottom: var(--fz-space-4);
    font-size: clamp(2.25rem, 4vw + 1rem, 3.75rem);
    font-weight: 700;
    letter-spacing: -0.025em;
    line-height: 1.05;
}

.fz-lp-hero-lead {
    max-width: 34rem;
    color: var(--bs-secondary-color);
    font-size: 1.125rem;
}

.fz-lp-cta-row {
    display: flex;
    flex-wrap: wrap;
    gap: var(--fz-space-3);
    margin-top: var(--fz-space-5);
}

.fz-lp-fine-print {
    margin: var(--fz-space-3) 0 0;
    color: var(--bs-secondary-color);
    font-size: 0.875rem;
}

.fz-lp-hero-shots {
    position: relative;
    margin: 0;
}

.fz-lp-shot {
    display: block;
    width: 100%;
    height: auto;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-lg);
    background-color: var(--fz-surface);
    box-shadow: var(--fz-elev-2);
}

/* El telefono, montado sobre la esquina de la captura de escritorio. En un
   telefono de verdad no aporta -la captura grande ya ocupa el ancho- y no se
   descarga: `loading="lazy"` no baja una imagen que no se pinta. */
.fz-lp-shot-phone {
    display: none;
}

@media (max-width: 575.98px) {
    .fz-lp-cta-row .btn {
        flex: 1 1 100%;
    }
}

@media (min-width: 576px) {
    .fz-lp-hero-shots {
        padding: 0 var(--fz-space-6) var(--fz-space-6) 0;
    }

    .fz-lp-shot-phone {
        position: absolute;
        right: 0;
        bottom: 0;
        display: block;
        width: 26%;
        max-width: 11.5rem;
        border: 0.375rem solid var(--fz-rail-bg);
        border-radius: 1.5rem;
    }
}

@media (min-width: 992px) {
    .fz-lp-hero {
        padding: var(--fz-space-7) 0 5rem;
    }

    .fz-lp-hero-grid {
        grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
        gap: var(--fz-space-7);
    }

    .fz-lp-hero-lead {
        font-size: 1.1875rem;
    }
}

/* --- Franja de promesas ------------------------------------------------- */

.fz-lp-promises {
    border-block: 1px solid var(--bs-border-color);
    background-color: var(--fz-surface);
}

.fz-lp-promise-list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
    gap: var(--fz-space-3) var(--fz-space-5);
    margin-bottom: 0;
    padding-block: var(--fz-space-4);
    list-style: none;
}

.fz-lp-promise-list li {
    display: flex;
    align-items: center;
    gap: var(--fz-space-2);
    font-weight: 500;
}

.fz-lp-promise-icon {
    width: 1.25rem;
    height: 1.25rem;
    flex: none;
    color: var(--fz-state-ok-fill);
}

/* --- Secciones ------------------------------------------------------------ */

.fz-lp-section {
    padding: var(--fz-space-7) 0;
}

/* Una de cada dos sobre la superficie de tarjeta: separa sin dibujar lineas. */
.fz-lp-alt {
    background-color: var(--fz-surface);
}

.fz-lp-heading {
    max-width: 42rem;
    margin: 0 auto var(--fz-space-6);
    text-align: center;
}

.fz-lp-heading h2,
.fz-lp-split-copy h2,
.fz-lp-final h2 {
    font-size: clamp(1.75rem, 1.5vw + 1.1rem, 2.5rem);
    font-weight: 700;
    letter-spacing: -0.02em;
    line-height: 1.15;
}

.fz-lp-heading .fz-lp-lead {
    margin-bottom: 0;
}

@media (min-width: 992px) {
    .fz-lp-section {
        padding: 5.5rem 0;
    }
}

/* --- Como funciona -------------------------------------------------------- */

.fz-lp-steps {
    display: grid;
    gap: var(--fz-space-4);
    margin: 0;
    padding: 0;
    list-style: none;
    counter-reset: fz-paso;
}

.fz-lp-step {
    padding: var(--fz-space-5);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-lg);
    background-color: var(--fz-surface);
    counter-increment: fz-paso;
}

.fz-lp-step::before {
    content: counter(fz-paso);
    display: inline-grid;
    place-items: center;
    width: 2.25rem;
    height: 2.25rem;
    margin-bottom: var(--fz-space-3);
    border-radius: 50%;
    background-color: var(--fz-brand-fill);
    color: var(--fz-brand-on-fill);
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.fz-lp-step h3,
.fz-lp-feature h3 {
    font-size: 1.125rem;
    font-weight: 600;
}

.fz-lp-step p,
.fz-lp-feature p {
    margin-bottom: 0;
    color: var(--bs-secondary-color);
}

@media (min-width: 768px) {
    .fz-lp-steps {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

/* --- Funciones ------------------------------------------------------------ */

.fz-lp-features {
    display: grid;
    gap: var(--fz-space-4);
}

.fz-lp-feature {
    padding: var(--fz-space-5);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-lg);
    background-color: var(--bs-body-bg);
}

.fz-lp-feature-icon {
    display: inline-grid;
    flex: none;
    place-items: center;
    width: 2.75rem;
    height: 2.75rem;
    margin-bottom: var(--fz-space-3);
    border-radius: var(--bs-border-radius);
    background-color: var(--bs-primary-bg-subtle);
    color: var(--bs-primary-text-emphasis);
}

.fz-lp-feature-glyph {
    width: 1.375rem;
    height: 1.375rem;
}

@media (min-width: 576px) {
    .fz-lp-features {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1200px) {
    .fz-lp-features {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

/* --- Texto con captura: monedas y familia ------------------------------- */

.fz-lp-split {
    display: grid;
    gap: var(--fz-space-6);
    align-items: center;
}

.fz-lp-points {
    display: grid;
    gap: var(--fz-space-3);
    margin: var(--fz-space-4) 0 0;
    padding: 0;
    list-style: none;
}

.fz-lp-points li,
.fz-lp-plan-people {
    display: flex;
    align-items: flex-start;
    gap: var(--fz-space-3);
}

.fz-lp-point-icon {
    width: 1.25rem;
    height: 1.25rem;
    flex: none;
    margin-top: 0.125rem;
    color: var(--fz-brand);
}

@media (min-width: 992px) {
    .fz-lp-split {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: var(--fz-space-7);
    }

    .fz-lp-split-reverse .fz-lp-split-media {
        order: -1;
    }
}

/* --- Privacidad ------------------------------------------------------------ */

.fz-lp-privacy {
    display: grid;
    gap: var(--fz-space-4) var(--fz-space-6);
    max-width: 60rem;
    margin: 0 auto;
    padding: 0;
    list-style: none;
}

.fz-lp-privacy li {
    display: flex;
    align-items: flex-start;
    gap: var(--fz-space-4);
}

.fz-lp-privacy .fz-lp-feature-icon {
    margin-bottom: 0;
}

.fz-lp-privacy p {
    margin: 0;
    padding-top: var(--fz-space-2);
}

@media (min-width: 768px) {
    .fz-lp-privacy {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

/* --- Precios ---------------------------------------------------------------

   El periodo se cambia con dos radios y `:has()`: sin JavaScript. Sin soporte de
   `:has()` se queda la mensual, que es la marcada. */

.fz-lp-pricing-controls {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--fz-space-3);
    margin-bottom: var(--fz-space-5);
}

.fz-lp-period {
    min-width: 14rem;
    margin: 0;
    border: 0;
}

.fz-lp-pricing [data-period='year'] {
    display: none;
}

.fz-lp-pricing:has(#pricing-period-year:checked) [data-period='year'] {
    display: block;
}

.fz-lp-pricing:has(#pricing-period-year:checked) [data-period='month'] {
    display: none;
}

.fz-lp-plans {
    display: grid;
    gap: var(--fz-space-4);
    max-width: 54rem;
    margin: 0 auto;
}

.fz-lp-plan {
    display: flex;
    flex-direction: column;
    padding: var(--fz-space-5);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-xl);
    background-color: var(--fz-surface);
    box-shadow: var(--fz-elev-1);
}

.fz-lp-plan-featured {
    border: 2px solid var(--fz-brand);
    box-shadow: var(--fz-elev-2);
}

.fz-lp-plan-name {
    margin-bottom: var(--fz-space-1);
    font-size: 1.375rem;
    font-weight: 700;
}

.fz-lp-plan-tagline {
    margin-bottom: var(--fz-space-3);
    color: var(--bs-secondary-color);
}

.fz-lp-plan-people {
    align-items: center;
    margin-bottom: var(--fz-space-4);
    font-weight: 600;
}

.fz-lp-plan-people .fz-lp-point-icon {
    margin-top: 0;
}

.fz-lp-amount {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: var(--fz-space-1) var(--fz-space-2);
    margin: 0;
}

.fz-lp-amount-figure {
    font-size: 2.5rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.02em;
    line-height: 1.1;
}

.fz-lp-amount-suffix {
    color: var(--bs-secondary-color);
}

/* Alto minimo: al cambiar de periodo la nota pasa de una linea a dos, y sin esto
   el boton de la tarjeta daria un salto. */
.fz-lp-price-note {
    min-height: 3rem;
    margin: var(--fz-space-2) 0 var(--fz-space-4);
    color: var(--bs-secondary-color);
    font-size: 0.875rem;
}

.fz-lp-includes-title {
    margin: var(--fz-space-5) 0 var(--fz-space-3);
    color: var(--bs-secondary-color);
    font-size: 0.875rem;
    font-weight: 600;
}

.fz-lp-includes {
    display: grid;
    gap: var(--fz-space-2);
    margin: 0;
    padding: 0;
    list-style: none;
}

.fz-lp-includes li {
    display: flex;
    align-items: flex-start;
    gap: var(--fz-space-2);
}

.fz-lp-check {
    width: 1.125rem;
    height: 1.125rem;
    flex: none;
    margin-top: 0.1875rem;
    color: var(--fz-state-ok-fill);
}

.fz-lp-pricing-note {
    max-width: 42rem;
    margin: var(--fz-space-5) auto 0;
    color: var(--bs-secondary-color);
    font-size: 0.875rem;
    text-align: center;
}

.fz-lp-pricing-note + .fz-lp-pricing-note {
    margin-top: var(--fz-space-2);
}

@media (min-width: 768px) {
    .fz-lp-plans {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

/* --- Preguntas frecuentes ------------------------------------------------- */

.fz-lp-faq {
    display: grid;
    gap: var(--fz-space-3);
}

.fz-lp-faq-item {
    padding: 0 var(--fz-space-4);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-lg);
    background-color: var(--fz-surface);
}

.fz-lp-faq-item summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--fz-space-3);
    min-height: var(--fz-control-height);
    padding: var(--fz-space-3) 0;
    font-weight: 600;
    list-style: none;
    cursor: pointer;
}

.fz-lp-faq-item summary::-webkit-details-marker {
    display: none;
}

/* El signo es decoracion: el estado abierto/cerrado lo anuncia el propio
   `<details>`. */
.fz-lp-faq-item summary::after {
    content: '+';
    flex: none;
    color: var(--fz-brand);
    font-size: 1.5rem;
    font-weight: 400;
    line-height: 1;
}

.fz-lp-faq-item[open] summary::after {
    content: '\2212';
}

.fz-lp-faq-item summary:focus-visible {
    outline: var(--fz-focus-width) solid var(--fz-brand);
    outline-offset: 2px;
    border-radius: var(--bs-border-radius-sm);
}

.fz-lp-faq-item p {
    margin: 0;
    padding-bottom: var(--fz-space-4);
    color: var(--bs-secondary-color);
}

/* --- Llamada final --------------------------------------------------------- */

.fz-lp-final {
    padding: var(--fz-space-7) 0;
    background-image: linear-gradient(135deg, var(--fz-brand-fill), var(--fz-brand-fill-end));
    color: var(--fz-brand-on-fill);
    text-align: center;
}

.fz-lp-final h2 {
    color: var(--fz-brand-on-fill);
}

.fz-lp-final .fz-lp-lead {
    color: var(--fz-on-accent-muted);
}

/* Boton invertido sobre la franja de la marca: fondo blanco y texto de la marca.
   El de siempre desapareceria sobre su propio color. */
.fz-lp-final .btn-primary {
    --bs-btn-bg: var(--fz-on-accent);
    --bs-btn-border-color: var(--fz-on-accent);
    --bs-btn-color: var(--fz-brand-fill);
    --bs-btn-hover-bg: var(--fz-on-accent);
    --bs-btn-hover-border-color: var(--fz-on-accent);
    --bs-btn-hover-color: var(--fz-brand-fill);
    --bs-btn-active-bg: var(--fz-on-accent);
    --bs-btn-active-border-color: var(--fz-on-accent);
    --bs-btn-active-color: var(--fz-brand-fill);
    margin-top: var(--fz-space-3);
    /* Sin el degradado ni el brillo del boton principal (ADR 0080): sobre la
       franja de la marca, el degradado de la marca tapaba el fondo blanco y el
       rotulo, del mismo indigo, desaparecia. */
    background-image: none;
    box-shadow: none;
}

.fz-lp-final .btn-primary:hover,
.fz-lp-final .btn-primary:focus-visible {
    outline: var(--fz-focus-width) solid var(--fz-on-accent);
    outline-offset: 3px;
}

@media (min-width: 992px) {
    .fz-lp-final {
        padding: 5rem 0;
    }
}

/* --- Pie -------------------------------------------------------------------- */

.fz-lp-footer {
    padding: var(--fz-space-6) 0 var(--fz-space-5);
    border-top: 1px solid var(--bs-border-color);
    background-color: var(--fz-surface);
}

.fz-lp-footer-top {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: var(--fz-space-5);
    margin-bottom: var(--fz-space-5);
}

.fz-lp-footer-links {
    display: flex;
    flex-wrap: wrap;
    gap: var(--fz-space-2) var(--fz-space-5);
    margin: 0;
    padding: 0;
    list-style: none;
}

.fz-lp-footer-links a {
    display: inline-flex;
    align-items: center;
    min-height: var(--fz-control-height);
    font-weight: 500;
}

.fz-lp-footer-mor {
    max-width: 48rem;
    color: var(--bs-secondary-color);
    font-size: 0.8125rem;
}

/* --- Textos legales --------------------------------------------------------- */

.fz-lp-legal {
    padding: var(--fz-space-6) 0 var(--fz-space-7);
}

.fz-lp-legal-title {
    margin-bottom: var(--fz-space-2);
    font-size: clamp(1.75rem, 1.5vw + 1.1rem, 2.25rem);
    font-weight: 700;
    letter-spacing: -0.02em;
}

.fz-lp-legal-section h2 {
    margin-top: var(--fz-space-6);
    font-size: 1.25rem;
    font-weight: 600;
}

.fz-lp-legal-section p {
    line-height: 1.65;
}

.fz-lp-legal-others {
    display: flex;
    flex-wrap: wrap;
    gap: var(--fz-space-2) var(--fz-space-5);
    margin-top: var(--fz-space-7);
    padding-top: var(--fz-space-4);
    border-top: 1px solid var(--bs-border-color);
}

.fz-lp-legal-others a {
    display: inline-flex;
    align-items: center;
    min-height: var(--fz-control-height);
    font-weight: 500;
}
