/* precios-dinamicos.css — landing de Hortensia bajo
   www.okmystay.com/precios-dinamicos.
   Generado a partir del patrón de las landings de modulo (mismas clases
   lp-*). Las variables viven en el wrapper .mod-precios-dinamicos (heredan por
   DOM); el chrome (reset, nav, footer) lo aporta base.html + el landing.css
   principal. Paleta índigo (#4F46E5).

   El bloque .lp-panel-widget venía del patrón SIN usar en ninguna landing;
   aquí sí se usa: es el desglose de una noche («por qué vale lo que vale»),
   que es justo el argumento del módulo. Se le añaden al final dos variantes
   propias (.lp-panel-widget-op para el operador de cada línea y la fila
   .is-total para el resultado). */
.mod-precios-dinamicos {
    min-height: 100vh;
    background: #0d0d14;
    color: rgba(255, 255, 255, 0.92);
    /* Paleta Hortensia: índigo (#4F46E5). */
    --brand:       #4F46E5;
    --brand-light: #6366F1;
    --brand-pale:  #A5B4FC;   /* tints claros: badge text, finales de gradiente */
    --purple: #667eea;
    --purple-dark: #764ba2;
    --dark: #0d0d14;
    --dark-2: #16161f;
    --dark-3: #1c1c28;
    --text: rgba(255, 255, 255, 0.92);
    --text-muted: rgba(255, 255, 255, 0.62);
    --text-dim: rgba(255, 255, 255, 0.45);
    --border: rgba(255, 255, 255, 0.08);
    --border-strong: rgba(255, 255, 255, 0.14);
    --white: #ffffff;
    --radius: 18px;
    --radius-sm: 12px;
    --shadow: 0 4px 24px rgba(0, 0, 0, 0.4);
    --shadow-lg: 0 16px 48px rgba(0, 0, 0, 0.55);
}

/* Reset global, <html>, <body>, estilos de <a> y NAV: los aporta el
   landing.css principal + base.html. Eliminados aquí para no duplicar ni
   pisar el chrome del site.
   ===== HERO ===== */
.lp-hero {
    background: #111120;
    color: var(--text);
    padding: 66px 20px 100px;
    position: relative;
    overflow: hidden;
    min-height: 90vh;
    display: flex;
    align-items: center;
}

.lp-hero::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 80% 65% at 10% 60%, rgba(102,126,234,0.30) 0%, transparent 60%),
        radial-gradient(ellipse 60% 70% at 90% 10%, rgba(79, 70, 229, 0.28) 0%, transparent 55%),
        radial-gradient(ellipse 50% 50% at 50% 90%, rgba(167, 139, 250, 0.20) 0%, transparent 55%);
    pointer-events: none;
}

.lp-hero-content {
    max-width: 820px;
    margin: 60px auto 0;
    text-align: center;
    position: relative;
    z-index: 2;
}

.lp-hero-content h1 {
    font-size: clamp(32px, 5vw, 56px);
    margin: 0 0 22px;
    font-weight: 800;
    letter-spacing: -1.5px;
    line-height: 1.12;
    color: #fff;
}

.lp-hero-content h1 em {
    font-style: normal;
    background: linear-gradient(135deg, var(--brand) 0%, var(--brand-pale) 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

/* Hero badge */
.hero-badge {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    background: rgba(79, 70, 229, 0.12);
    border: 1px solid rgba(79, 70, 229, 0.28);
    color: var(--brand-pale);
    padding: 6px 18px;
    border-radius: 50px;
    font-size: 0.82rem;
    font-weight: 500;
    letter-spacing: 0.3px;
    margin-bottom: 26px;
}

.hero-badge-dot {
    width: 7px;
    height: 7px;
    background: var(--brand);
    border-radius: 50%;
    box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.28);
    animation: pulse-dot 2s ease-in-out infinite;
}

@keyframes pulse-dot {
    0%, 100% { box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.28); }
    50%      { box-shadow: 0 0 0 6px rgba(79, 70, 229, 0.12); }
}

.lp-hero-sub {
    font-size: clamp(18px, 2.6vw, 26px);
    color: var(--text);
    margin: -6px auto 22px;
    font-weight: 500;
    letter-spacing: -0.3px;
    max-width: 720px;
}

.lp-hero-lead {
    font-size: clamp(16px, 2.2vw, 20px);
    color: var(--text-muted);
    margin: 0 auto 36px;
    max-width: 660px;
    line-height: 1.7;
}

.lp-cta {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: linear-gradient(135deg, var(--brand), var(--brand-light));
    color: white;
    padding: 14px 32px;
    border-radius: 50px;
    font-weight: 600;
    font-size: 1rem;
    box-shadow: 0 6px 24px rgba(79, 70, 229, 0.32);
    transition: all 0.25s ease;
}

.lp-cta:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 32px rgba(79, 70, 229, 0.45);
    text-decoration: none;
    color: white;
}

/* SECTIONS */
.lp-section {
    max-width: 1100px;
    margin: 0 auto;
    padding: 90px 20px;
}

.lp-section-alt {
    background: var(--dark-2);
    max-width: none;
    padding-left: 20px;
    padding-right: 20px;
    border-top: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
}

.lp-section-alt > * {
    max-width: 1100px;
    margin-left: auto;
    margin-right: auto;
}

.lp-section h2 {
    font-size: clamp(26px, 3.5vw, 38px);
    margin: 0 0 50px;
    text-align: center;
    color: #fff;
    font-weight: 800;
    letter-spacing: -1px;
}

/* STEPS */
.lp-steps {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 24px;
}

.lp-step {
    background: var(--dark-3);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    padding: 32px 28px;
    transition: border-color 0.2s, transform 0.2s;
}

.lp-step:hover {
    border-color: var(--border-strong);
    transform: translateY(-2px);
}

.lp-step-num {
    width: 42px;
    height: 42px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--brand), var(--brand-light));
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 17px;
    margin-bottom: 18px;
    box-shadow: 0 4px 14px rgba(79, 70, 229, 0.32);
}

.lp-step h3 {
    margin: 0 0 12px;
    font-size: 19px;
    color: #fff;
    font-weight: 700;
}

.lp-step p {
    margin: 0;
    color: var(--text-muted);
    font-size: 15px;
    line-height: 1.65;
}

/* Nombres de producto (marcas del ecosistema). */
.brand {
    color: #fff;
    font-weight: 700;
}

/* LOOP — sección de la cadena */
.lp-section-lead {
    text-align: center;
    color: var(--text-muted);
    max-width: 720px;
    margin: -28px auto 56px;
    font-size: 1.05rem;
    line-height: 1.7;
}

.lp-loop {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 22px;
    margin-bottom: 60px;
}

.lp-loop-card {
    background: var(--dark-3);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    padding: 32px 28px;
    text-align: left;
}

.lp-loop-icon {
    width: 52px;
    height: 52px;
    border-radius: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 22px;
    font-size: 1.35rem;
    color: #fff;
}

.lp-loop-icon-hash { background: linear-gradient(135deg, var(--brand), var(--brand-light)); }
.lp-loop-icon-sign { background: linear-gradient(135deg, #667eea, #764ba2); }
/* El patrón traía aquí un cian (#0ea5e9): en esta paleta chocaba con el
   índigo y además el cian es el color de Jazmín. Se baja al extremo oscuro
   de la propia familia para que las tres tarjetas se lean como una gama. */
.lp-loop-icon-qr   { background: linear-gradient(135deg, #6366F1, #4338CA); }

.lp-loop-card h3 {
    margin: 0 0 12px;
    color: #fff;
    font-size: 18px;
    font-weight: 700;
    letter-spacing: -0.2px;
}

.lp-loop-card p {
    margin: 0;
    color: var(--text-muted);
    font-size: 15px;
    line-height: 1.65;
}

/* Mini-widget que imita el panel de facturas */
.lp-panel-widget {
    background: linear-gradient(180deg, var(--dark-3) 0%, var(--dark-2) 100%);
    border: 1px solid var(--border-strong);
    border-radius: var(--radius);
    padding: 28px 28px 24px;
    max-width: 680px;
    margin: 0 auto;
    box-shadow: 0 24px 64px rgba(0, 0, 0, 0.5);
}

.lp-panel-widget-label {
    font-size: 0.8rem;
    color: var(--text-dim);
    text-transform: uppercase;
    letter-spacing: 1.2px;
    margin-bottom: 4px;
}

.lp-panel-widget-num {
    font-size: 3.4rem;
    font-weight: 800;
    color: #fff;
    line-height: 1;
    letter-spacing: -2px;
    margin-bottom: 22px;
    background: linear-gradient(135deg, var(--brand), var(--brand-pale));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.lp-panel-widget-rows {
    display: flex;
    flex-direction: column;
    gap: 1px;
    background: var(--border);
    border-radius: 10px;
    overflow: hidden;
    margin-bottom: 18px;
}

.lp-panel-widget-row {
    display: grid;
    grid-template-columns: 80px 1fr auto;
    gap: 14px;
    padding: 12px 14px;
    background: rgba(13, 13, 20, 0.6);
    align-items: center;
    font-size: 0.88rem;
}

.lp-panel-widget-when {
    color: var(--text-muted);
    font-variant-numeric: tabular-nums;
}

.lp-panel-widget-who {
    color: #fff;
    font-weight: 500;
}

.lp-panel-widget-status {
    font-size: 0.78rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    white-space: nowrap;
}

.lp-status-ok      { color: #34d399; }
.lp-status-pending { color: var(--brand-light); }

.lp-panel-widget-caption {
    font-size: 0.82rem;
    color: var(--text-dim);
    text-align: center;
    line-height: 1.55;
    margin-top: 4px;
    font-style: italic;
}

@media (max-width: 700px) {
    .lp-panel-widget-row {
        grid-template-columns: 1fr;
        gap: 4px;
    }
    .lp-panel-widget-status { text-align: left; }
}

/* BENEFITS (grid 3x2 con iconos) */
.lp-benefits {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 22px;
    max-width: 1100px;
    margin: 0 auto;
}

.lp-benefit {
    background: var(--dark-3);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    padding: 28px 26px;
    transition: border-color 0.2s, transform 0.2s, box-shadow 0.2s;
}

.lp-benefit:hover {
    border-color: var(--border-strong);
    transform: translateY(-3px);
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.32);
}

.lp-benefit-icon {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    background: linear-gradient(135deg, rgba(79, 70, 229, 0.18), rgba(102, 126, 234, 0.18));
    border: 1px solid rgba(79, 70, 229, 0.25);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 18px;
    font-size: 1.15rem;
    color: var(--brand-light);
}

.lp-benefit h3 {
    margin: 0 0 10px;
    font-size: 17px;
    color: #fff;
    font-weight: 700;
    letter-spacing: -0.2px;
}

.lp-benefit p {
    margin: 0;
    color: var(--text-muted);
    font-size: 14.5px;
    line-height: 1.6;
}

/* Síntesis al final de Beneficios */
.lp-benefits-sintesis {
    text-align: center;
    margin: 56px auto 0;
    max-width: 760px;
    font-size: clamp(18px, 2.4vw, 24px);
    color: #fff;
    font-weight: 500;
    letter-spacing: -0.4px;
    line-height: 1.5;
}

/* CTA SECTION */
.cta-section {
    background: linear-gradient(135deg, var(--purple) 0%, var(--purple-dark) 45%, var(--brand) 100%);
    color: white;
    text-align: center;
    padding: 108px 20px;
    position: relative;
    overflow: hidden;
}

.cta-section::before {
    content: '';
    position: absolute;
    inset: 0;
    background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200"><defs><pattern id="p" width="28" height="28" patternUnits="userSpaceOnUse"><circle cx="14" cy="14" r="1" fill="white" opacity="0.07"/></pattern></defs><rect width="200" height="200" fill="url(%23p)"/></svg>');
    pointer-events: none;
}

.cta-inner {
    position: relative;
    z-index: 2;
    max-width: 1100px;
    margin: 0 auto;
}

.cta-section h2 {
    font-size: clamp(2rem, 4vw, 3rem);
    font-weight: 800;
    letter-spacing: -0.03em;
    margin-bottom: 16px;
    color: white;
}

.cta-section p {
    font-size: 1.1rem;
    opacity: 0.85;
    margin-bottom: 44px;
    max-width: 520px;
    margin-left: auto;
    margin-right: auto;
    line-height: 1.65;
}

.btn-white {
    background: white;
    color: var(--purple-dark);
    padding: 17px 38px;
    border-radius: 50px;
    font-size: 1.05rem;
    font-weight: 700;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 11px;
    transition: all 0.3s ease;
    box-shadow: 0 8px 32px rgba(0,0,0,0.2);
}

.btn-white:hover {
    transform: translateY(-3px);
    box-shadow: 0 16px 48px rgba(0,0,0,0.28);
    text-decoration: none;
    color: var(--purple-dark);
}

@media (max-width: 600px) {
    .cta-section { padding: 72px 20px; }
    .cta-section h2 { font-size: 1.7rem; }
    .btn-white { padding: 14px 28px; font-size: 0.95rem; }
}

/* FOOTER — lo aporta base.html (el <footer> global del site). */

/* Estado "incidencia" del panel-widget (ambar). */
.mod-precios-dinamicos .lp-status-inc { color: #f59e0b; }


/* ===== DESGLOSE DE UNA NOCHE (variantes propias del widget) =====
   El patrón lo declara con `margin: 0 auto` porque nadie lo usaba debajo de
   nada. Aquí va justo tras los 3 pasos, así que necesita aire propio: sin
   esto queda pegado —y en pantallas anchas parece pisar— la fila de pasos. */
.lp-panel-widget {
    margin-top: 56px;
}

/* La columna 1 del .lp-panel-widget-row pasa a ser la ETIQUETA del concepto
   (Base / Ocupación / Red / Total) y la última fila, el resultado. Se probó
   con operadores (=, −, =) y no valía: el mismo símbolo abría la base y
   cerraba el total, así que no se entendía qué hacía cada línea. */
.lp-panel-widget-op {
    font-size: 0.72rem;
    font-weight: 700;
    color: var(--brand-light);
    text-transform: uppercase;
    letter-spacing: 0.6px;
}

.lp-panel-widget-amount {
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    color: #fff;
    white-space: nowrap;
}

.lp-panel-widget-row.is-total {
    background: rgba(79, 70, 229, 0.14);
}

.lp-panel-widget-row.is-total .lp-panel-widget-who,
.lp-panel-widget-row.is-total .lp-panel-widget-amount {
    font-weight: 700;
}

/* La red no suma ni resta cuando no actúa: su importe se apaga para que se
   lea como "estaba mirando y no hizo falta", no como un cargo de 0 €. */
.lp-panel-widget-amount.is-idle {
    color: var(--text-dim);
    font-weight: 500;
}

.lp-panel-widget-foot {
    font-size: 0.82rem;
    color: var(--text-dim);
    text-align: center;
    margin: 0;
}


/* ===== RETÍCULA Y ALINEACIÓN CENTRADAS (decisión del usuario, 2026-08-05) =====
   El patrón monta las 3 rejillas con `grid: repeat(auto-fit, minmax(…,1fr))`
   y el texto de las tarjetas a la izquierda. Dos problemas aquí: la sección
   PRO tiene 5 tarjetas, así que la última fila (2) se quedaba pegada a la
   izquierda; y el conjunto no casaba con el resto de la página, que va
   centrado. Se pasa a flex centrado — el mismo recurso que `.family-grid`
   de landing.css ("filas incompletas centradas") — y se centra el contenido
   de la tarjeta. */
.lp-steps,
.lp-benefits,
.lp-loop {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 22px;
}

/* ===== RITMO VERTICAL: MISMO AIRE A AMBOS LADOS DE CADA CORTE =====
   Todas las secciones dan 90px arriba y 90px abajo (.lp-section), así que
   cada línea de cambio de fondo queda con el mismo hueco por los dos lados.
   El hero era la excepción: `min-height:90vh` + `align-items:center` reparte
   el sobrante de la pantalla arriba y abajo, así que el hueco bajo el CTA
   crecía con el monitor (en 1400x900 pasaba de 160px contra los 90px de la
   sección siguiente) y encima no era estable entre pantallas. Se deja que
   lo gobierne el padding, como en el resto. */
.lp-hero {
    min-height: 0;
    padding-bottom: 90px;
}

/* El ojo mide hasta la TINTA, no hasta la caja. Encima de cada corte lo
   último es un borde nítido (una tarjeta, el botón, el desglose), pero
   debajo lo primero es un h2, y su línea de texto deja ~18px de aire sobre
   las mayúsculas. Con 90/90 de padding se veían 90 arriba y 108 abajo. Se
   descuentan del padding superior para que el hueco PERCIBIDO sea el mismo
   a ambos lados. Ojo si algún día una sección deja de empezar por h2. */
.lp-section {
    padding-top: 74px;
}

/* Bug heredado del patrón: `.lp-section-alt > *` centra a sus hijos con
   márgenes automáticos, pero `.lp-section h2` llega DESPUÉS con el atajo
   `margin: 0 0 50px`, que reinicia los laterales a 0. En una sección a
   ancho completo (.lp-section-alt quita el max-width) el título se pegaba
   a la izquierda mientras las tarjetas seguían centradas. */
.lp-section-alt h2 {
    margin-left: auto;
    margin-right: auto;
}

.lp-step,
.lp-benefit,
.lp-loop-card {
    flex: 0 1 calc(33.333% - 15px);   /* 3 por fila en escritorio */
    min-width: 280px;
    text-align: center;
}

/* Los tres son `display:flex`, así que con márgenes automáticos quedan
   centrados en la tarjeta (con el texto centrado, colgando a la izquierda
   se veían torcidos). */
.lp-step-num,
.lp-benefit-icon,
.lp-loop-icon {
    margin-left: auto;
    margin-right: auto;
}

/* El desglose SÍ mantiene sus filas alineadas a los lados: es una cuenta,
   y una cuenta se lee con el concepto a la izquierda y el importe a la
   derecha. Solo el pie va centrado. */
.lp-panel-widget-row {
    text-align: left;
}
