/* Alias de los tokens del design system (ds.css debe cargarse antes) */
:root {
    --primary: var(--brand);
    --secondary: var(--brand-50);
    --top-bar: var(--danger);
    --text-light: #FFF;
    --text-dark: var(--ink);
}

/* Estilos Globales */

* {
    box-sizing: border-box;
}

html,
body {
    margin: 0;
    padding: 0;
    font-family: "Albert Sans", sans-serif;
}

p {
    line-height: 1.6;
}

button {
    border: none;
    padding: clamp(10px, 1.2vw, 20px) clamp(24px, 4vw, 60px);
    color: var(--text-light);
    background-color: var(--primary);
    border-radius: 40px;
    font-family: inherit;
    font-size: clamp(16px, 1.6vw, 25px);
    font-weight: 400;
    cursor: pointer;
    margin: 30px auto;
    z-index: 2;
    text-wrap: nowrap;
    width: fit-content;
    max-width: min(600px, 92%);
}

.section__title {
    font-size: clamp(24px, 4.5vw, 60px);
    text-align: center;
    margin: 10px;
    font-weight: 700;
}

.section__subheading {
    font-size: clamp(14px, 1.6vw, 20px);
    text-align: center;
    margin: 0 auto;
    max-width: min(800px, 88%);
    line-height: 1.6;
}

.overlay {
    position: absolute;
    background: rgba(9, 2, 2, 0.61);
    top: 0;
    left: 0;
    height: 100%;
    width: 100%;
    z-index: 1;
}

.cta__body {
    text-align: center;
    max-width: min(800px, 88%);
    margin: 0 auto;
    font-size: clamp(14px, 1.4vw, 20px);
}

/* Enlace que envuelve un botón CTA */
.cta__link {
    display: flex;
    justify-content: center;
    text-decoration: none;
    position: relative;
    z-index: 2;
}

.cta__button {
    width: min(600px, 92%);
    max-width: 92%;
}

/* Barra de navegación */

nav {
    display: flex;
    align-items: center;
    height: 65px;
    box-shadow: 0px 4px 30px 0px rgba(0, 0, 0, 0.25);
}

.menu__toggle {
    display: none;
    width: auto;
    max-width: none;
    margin: 0 0 0 15px;
    padding: 0;
    background: none;
    border: none;
    color: var(--primary);
    cursor: pointer;
}

.menu__toggle svg {
    width: 28px;
    height: 28px;
    display: block;
}

.nav__menu {
    background-color: white;
    height: 100vh;
    position: fixed;
    width: 60%;
    top: 0;
    z-index: 5;
    transform: translate(-100%);
    padding: 20px;
    box-shadow: 0px 4px 30px 0px rgba(0, 0, 0, 0.25);
    transition: all 0.4s;
    padding: 0;
}

.menu__close {
    display: flex;
    align-items: center;
    position: absolute;
    top: 0;
    left: 16px;
    height: 65px;
    margin: 0;
}

.nav__menu--open {
    transform: translate(0);
    transition: all 0.4s;
}

.nav__list {
    list-style: none;
    display: flex;
    gap: clamp(20px, 2.8vw, 40px);
}

.menu__list {
    height: fit-content;
    display: flex;
    flex-direction: column;
    list-style: none;
    width: 100%;
    box-sizing: border-box;
    gap: 34px;
    margin: 0;
    padding: 90px 16px 24px 23px;
    align-items: flex-start;
    justify-content: flex-start;
}

.item__link {
    color: var(--text-dark);
    text-decoration: none;
}

.nav__brand {
    display: flex;
    align-items: center;
    margin-left: clamp(15px, 2vw, 30px);
    text-decoration: none;
}

.nav__brand img {
    height: clamp(19px, 2.3vw, 27px);
    display: block;
}

.nav__actions {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 15px;
}

.nav__button {
    margin-right: clamp(10px, 2.8vw, 40px);
    border: none;
    padding: 10px clamp(16px, 2.8vw, 40px);
    color: var(--text-light);
    background-color: var(--primary);
    border-radius: 20px;
    font-family: inherit;
    font-size: clamp(13px, 1.1vw, 16px);
    cursor: pointer;
    width: fit-content;
    text-decoration: none;
}

/* Seccion Ofertas */

.hero {
    position: relative;
    min-height: calc(100vh - 65px);
    background: url(../img/hero-bg.jpg);
    background-size: cover;
    background-position: center;
    margin: 0;
    color: var(--text-light);
    padding: 120px 10%;
    display: flex;
    align-items: center;
}

.hero__container {
    display: flex;
    gap: 60px;
    width: 100%;
    align-items: center;
    justify-content: space-between;
}

.hero__column--left {
    display: flex;
    flex-direction: column;
    position: relative;
    z-index: 2;
    flex: 1;
    width: 50%;
    min-width: 0;
    max-width: 600px;
}

.hero .overlay {
    z-index: 1;
    background-color: rgba(25, 22, 39, 0.49);
    height: 100%;
}

.hero__offer-tag {
    align-self: flex-start;
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 18px;
    padding: 10px 20px;
    border-radius: var(--r-pill);
    background: var(--brand);
    color: var(--text-light);
    font-size: clamp(14px, 1.3vw, 18px);
    font-weight: 500;
    position: relative;
    z-index: 2;
    box-shadow: 0 6px 18px rgba(138, 119, 240, .45);
}

.hero__offer-tag b {
    font-weight: 800;
}

.hero__offer-tag svg {
    width: 20px;
    height: 20px;
    flex: 0 0 auto;
}

.hero__title {
    font-size: clamp(28px, 4.2vw, 60px);
    font-weight: 700;
    margin: 0;
    margin-bottom: 10px;
    position: relative;
    z-index: 2;
}

.hero__subheading {
    font-size: clamp(13px, 1.1vw, 16px);
    font-weight: 300;
    max-width: 600px;
    position: relative;
    z-index: 2;
    height: fit-content;
    margin-bottom: 25px;
}

.hero__perks {
    list-style: none;
    padding: 0;
    margin: 0 0 30px;
    display: flex;
    flex-direction: column;
    gap: 12px;
    position: relative;
    z-index: 2;
}

.hero__perks li {
    display: flex;
    align-items: center;
    gap: 10px;
    font-weight: 300;
    font-size: clamp(13px, 1.1vw, 16px);
}

.hero__perks svg {
    width: 20px;
    height: 20px;
    padding: 3px;
    border-radius: 50%;
    background: var(--text-light);
    color: var(--primary);
    flex: 0 0 auto;
}

.hero button {
    margin-top: auto;
    width: 100%;
    max-width: 100%;
}

.hero__cta {
    margin: 24px 0 0;
    width: 600px;
    max-width: 100%;
    position: relative;
    z-index: 2;
}

.hero__button--desktop {
    display: block;
    width: 100%;
    text-decoration: none;
}

.offers__container {
    display: flex;
    flex-direction: column;
    position: relative;
    z-index: 2;
    gap: 26px;
    min-width: 0;
    max-width: 600px;
    width: 50%;
}

.hero__button--mobile {
    display: none;
    text-decoration: none;
    position: relative;
    z-index: 2;
}

.hero__button--mobile button {
    width: 100%;
}

.hero__offer {
    width: 100%;
    max-width: 520px;
    color: inherit;
    text-decoration: none;
    border: solid 1px var(--text-light);
    border-radius: 20px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: clamp(16px, 2vw, 24px) clamp(16px, 2vw, 28px);
    cursor: pointer;
    position: relative;
    z-index: 2;
    box-sizing: border-box;
}

.hero__offer--selected {
    background-color: var(--primary);
    border: none;
}

.offer__badge {
    position: absolute;
    top: -12px;
    left: clamp(14px, 2vw, 28px);
    background: #fff;
    color: var(--brand-deep);
    font-size: .74rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .04em;
    padding: 5px 14px;
    border-radius: var(--r-pill);
    box-shadow: var(--sh-sm);
}

/* Fila superior (cantidad SMS + coste/SMS): destacada, negrita y al doble de tamaño que la inferior */
.offer__top { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.offer__sms { font-size: clamp(20px, 2.4vw, 30px); font-weight: 800; line-height: 1.05; }
.offer__unit { font-size: clamp(20px, 2.4vw, 30px); font-weight: 800; white-space: nowrap; }

/* Fila inferior (nombre + precio): mitad de tamaño, peso normal */
.offer__bottom { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-top: 4px; }
.offer__plan { font-size: clamp(14px, 1.5vw, 15px); font-weight: 500; opacity: .9; }
.offer__number { font-size: clamp(14px, 1.5vw, 15px); font-weight: 700; white-space: nowrap; }

/* Personalizado: cantidad editable con cálculo en vivo */
.hero__offer--custom { cursor: default; }
.offer__sms--input { display: inline-flex; align-items: baseline; gap: 6px; font-size: clamp(20px, 2.4vw, 30px); font-weight: 800; }
.offer__sms--input input {
    width: 5ch; max-width: 150px;
    background: transparent; border: none; border-bottom: 2px solid rgba(255, 255, 255, .5);
    color: inherit; font-family: inherit; font-size: inherit; font-weight: 800;
    padding: 0 2px; text-align: right; -moz-appearance: textfield; appearance: textfield;
}
.offer__sms--input input:focus { outline: none; border-bottom-color: #fff; }
.offer__sms--input input::-webkit-outer-spin-button,
.offer__sms--input input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* Linea gráfica — composición artística (solo ≥1200px) */

.steps {
    padding: 100px 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.steps__container {
    position: relative;
    width: fit-content;
    margin: 200px auto;
    transition: all 0.4s;
}

.steps__plane {
    position: absolute;
    bottom: 18px;
    left: 450px;
}

.step {
    position: absolute;
    width: 500px;
    display: flex;
    flex-direction: column;
}

.step__photo {
    position: absolute;
    border: solid 1px var(--border);
    border-radius: 38px;
}

/* En desktop el contenedor es transparente (la composición usa la img directamente) */
.step__frame {
    display: contents;
}

/* Tamaños fijos: la composición se escala como unidad (scale), así el
   anclaje del paso 4 al loop de la línea no depende del ancho de ventana */
.step__number {
    font-size: 40px;
    font-weight: 700;
    margin: 0;
    color: var(--primary);
}

.step__title {
    font-size: 35px;
    font-weight: 600;
    margin: 0;
}

.step__body {
    font-size: 24px;
    font-weight: 300;
    line-height: 1.6;
    margin: 10px 0;
    max-width: 420px;
}

.step__1 {
    top: -73px;
    right: 540px;
    text-align: right;
    align-items: flex-end;
}

.step__2 {
    left: 290px;
    top: 324px;
}

.step__3 {
    right: 310px;
    top: 745px;
    text-align: right;
    align-items: flex-end;
}

.step__4 {
    left: 520px;
    bottom: -138px;
}

.photo__1 {
    top: -85px;
    left: 300px;
}

.photo__2 {
    top: 310px;
    right: 310px;
}

.photo__3 {
    left: 300px;
    top: 760px;
}

.photo__4 {
    right: 310px;
    bottom: -125px;
}

/* Servicios / Funcionalidades */

.services {
    background-color: var(--slate-50);
    padding: 100px 0 60px;
    display: flex;
    flex-direction: column;
}

.features__grid {
    width: min(1340px, 92%);
    margin: 70px auto;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 30px;
}

.feature {
    background: var(--white);
    border: 1px solid var(--border);
    border-radius: var(--r-lg);
    padding: 38px 34px;
}

.feature__icon {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background: var(--brand-50);
    color: var(--primary);
    display: grid;
    place-items: center;
}

.feature__icon svg {
    width: 32px;
    height: 32px;
}

.feature h3 {
    font-size: clamp(21px, 1.8vw, 26px);
    font-weight: 700;
    margin: 22px 0 10px;
    color: var(--text-dark);
}

.feature p {
    margin: 0;
    font-size: clamp(15px, 1.25vw, 18px);
    line-height: 1.65;
    color: var(--body);
}

/* Seccion Casos de Uso */

.usecases {
    display: flex;
    flex-direction: column;
    padding: 100px 0 60px;
    overflow: hidden;
}

.usecases__container {
    position: relative;
    height: 1000px;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.usecases__title {
    font-weight: 200;
    font-size: clamp(24px, 4vw, 60px);
    margin: 0;
    text-align: center;
}

.usecases__subheading {
    font-size: clamp(14px, 1.5vw, 20px);
    font-weight: 300;
    text-align: center;
}

.iphone {
    position: absolute;
    z-index: 1;
    top: 200px;
    transition: all 0.4s ease-in-out;
}

.blob {
    position: absolute;
    right: 25%;
    transition: all 0.4s;
}

.usecase {
    display: flex;
    flex-direction: column;
    align-items: center;
    transition: all 0.4s;
}

.usecase__bubble {
    text-wrap: nowrap;
    text-align: center;
    margin-left: auto;
    margin-right: 40px;
    border: 1px solid var(--slate-100);
    padding: 10px 35px;
    color: var(--text-dark);
    background: linear-gradient(130deg, var(--brand-50) 50%, var(--brand));
    border-radius: 40px;
    font-family: inherit;
    font-size: clamp(16px, 1.4vw, 20px);
    font-weight: 300;
    cursor: pointer;
}

.usecase__bubble p {
    margin: 0;
}

.usecase__body {
    max-width: 285px;
    font-size: clamp(13px, 1.1vw, 16px);
    font-weight: 200;
    line-height: 1.4;
}

.alertas {
    position: absolute;
    top: 300px;
    right: 14%;
}

.promociones {
    position: absolute;
    top: 450px;
    left: 12%;
}

.pedidos {
    position: absolute;
    top: 600px;
    right: 6%;
}

/* Seccion Ventajas / Stats */

.numbers {
    display: flex;
    flex-direction: column;
    padding-bottom: 100px;
}

.stats__container {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 30px;
    width: min(1300px, 90%);
    margin: 80px auto;
}

.stat {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 0 10px;
}

.stat + .stat {
    border-left: solid 1px var(--border);
}

.stat__number {
    color: var(--primary);
    font-size: clamp(40px, 5.5vw, 80px);
    font-weight: 900;
    margin: 0;
    line-height: 1;
}

.stat__p {
    font-size: clamp(14px, 1.4vw, 20px);
    font-weight: 700;
    margin: 8px 0 0;
}

.stat__desc {
    font-size: clamp(13px, 1vw, 15px);
    font-weight: 400;
    color: var(--body);
    margin: 10px 0 0;
    max-width: 280px;
}

/* Sección Integración API */

.api {
    min-height: 100vh;
    background: url(../img/api_bg.png);
    background-size: cover;
    background-position: center;
    position: relative;
    color: var(--text-light);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: clamp(40px, 8vw, 160px);
    padding: 80px 5%;
}

.column--left,
.column--right {
    max-width: 620px;
    flex: 1;
    z-index: 2;
    position: relative;
}

.column__title {
    font-size: clamp(26px, 3.5vw, 60px);
    font-weight: 700;
    margin: 30px 0;
}

.column__body {
    font-size: clamp(14px, 1.15vw, 18px);
    font-weight: 400;
}

.column__list {
    font-size: clamp(14px, 1.15vw, 18px);
    line-height: 1.6;
    padding-left: 24px;
}

.column__item {
    margin: 15px 0;
}

::marker {
    color: var(--primary);
    font-size: 1.5em;
}

.column--right .cta__link {
    justify-content: flex-start;
}

.column--right button {
    margin: 20px 0 0;
    text-wrap: nowrap;
}

/* Sección Logos — "Confían en nosotros" */

.logos {
    background: var(--secondary);
    padding: 70px 0;
    text-align: center;
}

.logos__title {
    font-size: clamp(22px, 2.6vw, 38px);
    font-weight: 700;
    margin: 0;
    color: var(--text-dark);
}

.logos__row {
    width: min(1100px, 90%);
    margin: 40px auto 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: clamp(30px, 5vw, 70px);
}

.logos__row img {
    height: clamp(26px, 2.6vw, 38px);
    width: auto;
    filter: grayscale(1);
    opacity: .55;
    transition: .2s ease;
}

.logos__row img:hover {
    filter: none;
    opacity: 1;
}

/* Sección Testimonios */

.reviews {
    padding: 100px 0;
    display: flex;
    flex-direction: column;
}

.reviews__container {
    width: min(1340px, 92%);
    margin: 60px auto 0;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 30px;
}

.review {
    position: relative;
    display: flex;
    flex-direction: column;
    background: var(--white);
    border: 1px solid var(--border);
    border-radius: var(--r-lg);
    padding: 38px 34px;
}

.review__quote {
    width: 34px;
    height: 34px;
    color: var(--primary);
    opacity: .25;
}

.stars__container {
    display: flex;
    gap: 4px;
    margin: 14px 0 16px;
    color: var(--brand);
}

.stars__container svg {
    width: 18px;
    height: 18px;
    fill: currentColor;
}

.review__body {
    flex: 1;
    margin: 0;
    font-size: clamp(15px, 1.25vw, 18px);
    line-height: 1.65;
    color: var(--body);
}

.reviewer {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-top: 24px;
    padding-top: 20px;
    border-top: 1px solid var(--border);
}

.reviewer__avatar {
    width: 46px;
    height: 46px;
    flex: 0 0 auto;
    border-radius: 50%;
    background: var(--brand-50);
    color: var(--primary);
    display: grid;
    place-items: center;
    font-weight: 800;
    font-size: 1.15rem;
}

.reviewer__text h4 {
    margin: 0;
    font-size: clamp(15px, 1.2vw, 17px);
    color: var(--text-dark);
}

.reviewer__text p {
    margin: 2px 0 0;
    font-size: clamp(13px, 1vw, 15px);
    color: var(--muted);
}

/* Seccion mensaje motivacion / CTA final */

.cta {
    display: flex;
    flex-direction: column;
    position: relative;
    overflow: hidden;
    padding: 160px 0 50px;
}

.cta__container {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    gap: 40px 60px;
    width: min(1300px, 90%);
    margin: 0 auto 30px;
}

.cta__column--left {
    min-width: 0;
}

.column__title--bold {
    font-size: clamp(40px, 6vw, 96px);
    font-weight: 800;
    line-height: .96;
    margin: 0;
    color: var(--primary);
}

.cta__column--left .column__body {
    font-size: clamp(14px, 1.2vw, 18px);
    font-weight: 400;
    line-height: 1.6;
    max-width: 60ch;
    color: var(--text-dark);
}

.column__text--outline {
    font-size: clamp(90px, 12vw, 200px);
    line-height: .85;
    font-weight: 900;
    text-shadow: -1px -1px 0 var(--primary), 1px -1px 0 var(--primary), -1px 1px 0 var(--primary), 1px 1px 0 var(--primary);
    color: var(--text-light);
    margin: 0;
    width: min-content;
}

.column__text--outline span {
    margin-left: .5em;
}

/* Sección preguntas frecuentes */

.questions {
    padding: 100px 0;
}

.questions__container {
    margin: clamp(30px, 6vw, 100px) auto;
    width: min(1200px, 85%);
}

.question {
    border-radius: 25px;
    padding: 10px clamp(15px, 2vw, 30px);
    margin: 10px 0;
    cursor: pointer;
}

.question:hover {
    background-color: var(--secondary);
}

.question__title {
    display: flex;
    align-items: center;
    gap: 14px;
    font-size: clamp(16px, 1.7vw, 25px);
    font-weight: 500;
}

.angle {
    width: clamp(17px, 1.6vw, 24px);
    height: clamp(17px, 1.6vw, 24px);
    flex: 0 0 auto;
    color: var(--primary);
    transition: transform 0.2s;
}

.question__body {
    font-size: clamp(14px, 1.4vw, 20px);
    font-weight: 400;
    margin-left: clamp(30px, 2.6vw, 38px);
    display: none;
}

.question--open {
    background-color: var(--secondary);
}

.question--open .angle {
    transform: rotate(180deg);
}

.question--open .question__body {
    display: block;
    margin-top: 5px;
}

.question--open .question__title {
    margin-bottom: 0;
}

.questions__more {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: fit-content;
    margin: 10px auto 0;
    color: var(--primary);
    font-weight: 700;
    font-size: clamp(15px, 1.3vw, 18px);
    text-decoration: none;
}

.questions__more:hover {
    text-decoration: underline;
}

.questions__more svg {
    width: 18px;
    height: 18px;
}

/* Página de preguntas frecuentes */

.faq-page {
    width: min(1000px, 88%);
    margin: 40px auto 80px;
}

.faq-page h1 {
    font-size: clamp(28px, 3.5vw, 48px);
    text-align: center;
    margin: 30px 0 8px;
}

.faq-intro {
    text-align: center;
    color: var(--muted);
    margin: 0 auto 30px;
    max-width: 620px;
}

.faq-intro a {
    color: var(--primary);
    font-weight: 600;
}

.faq-cat {
    font-size: clamp(20px, 2vw, 26px);
    font-weight: 800;
    color: var(--text-dark);
    margin: 44px 0 8px;
    padding-bottom: 8px;
    border-bottom: 2px solid var(--brand-100);
}

.faq-page .question__title {
    font-size: clamp(16px, 1.5vw, 21px);
}

.faq-page .question__body {
    font-size: clamp(14px, 1.2vw, 17px);
}

.faq-page .question__body ul {
    margin: 8px 0;
    padding-left: 22px;
}

.faq-page .question__body li {
    margin: 6px 0;
}

.faq-cta {
    text-align: center;
    margin-top: 60px;
}

.faq-cta p {
    font-size: clamp(15px, 1.4vw, 19px);
    font-weight: 600;
}

/* Páginas legales (condiciones, privacidad, cookies) */
.legal-page {
    width: min(820px, 88%);
    margin: 40px auto 80px;
}

.legal-page__title {
    font-size: clamp(28px, 3.5vw, 44px);
    margin: 30px 0 6px;
    color: var(--text-dark);
}

.legal-page__meta {
    margin: 0 0 24px;
    color: var(--muted);
    font-size: .9rem;
}

.legal-notice {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    background: var(--brand-50, #f3f2fa);
    border: 1px solid var(--brand-100, #e5e1f7);
    border-radius: var(--r-md, 14px);
    padding: 14px 18px;
    margin-bottom: 36px;
}

.legal-notice svg {
    width: 20px;
    height: 20px;
    color: var(--brand, #8a77f0);
    flex: 0 0 auto;
    margin-top: 2px;
}

.legal-notice p {
    margin: 0;
    font-size: .92rem;
    color: var(--brand-deep, #502274);
}

.legal-section {
    margin-bottom: 28px;
}

.legal-section__title {
    font-size: clamp(18px, 1.8vw, 23px);
    font-weight: 800;
    color: var(--text-dark);
    margin: 0 0 8px;
}

.legal-section p {
    font-size: clamp(14px, 1.2vw, 17px);
    color: var(--body, #454545);
    margin: 0;
}

.legal-section a,
.legal-page__foot a {
    color: var(--primary);
    font-weight: 600;
}

.legal-section em {
    color: var(--muted);
    font-style: italic;
}

.legal-section p + p {
    margin-top: 12px;
}

.legal-section ul,
.legal-section ol {
    margin: 12px 0 0;
    padding-left: 22px;
    color: var(--body, #454545);
    font-size: clamp(14px, 1.2vw, 17px);
}

.legal-section li {
    margin: 6px 0;
    line-height: 1.6;
}

.legal-section strong {
    color: var(--text-dark);
    font-weight: 700;
}

.legal-table-wrap {
    margin-top: 14px;
    overflow-x: auto;
}

.legal-table {
    width: 100%;
    border-collapse: collapse;
    font-size: clamp(13px, 1.1vw, 15px);
    color: var(--body, #454545);
}

.legal-table th,
.legal-table td {
    border: 1px solid var(--border, #e7e5f0);
    padding: 10px 12px;
    text-align: left;
    vertical-align: top;
}

.legal-table th {
    background: var(--brand-50, #f3f2fa);
    color: var(--brand-deep, #502274);
    font-weight: 700;
}

.legal-page__foot {
    margin-top: 48px;
    padding-top: 20px;
    border-top: 1px solid var(--border, #e7e5f0);
    font-size: clamp(14px, 1.2vw, 16px);
    color: var(--body, #454545);
}

/* Pie de Página */

footer {
    background: var(--brand);
    padding: 60px 0 30px;
}

.footer__container {
    width: 90%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    margin: 0 auto;
    justify-content: space-between;
    gap: 40px;
}

.footer__row--top {
    width: 100%;
    display: flex;
    justify-content: space-between;
    gap: 40px;
}

.footer__row--bottom {
    width: 100%;
    display: flex;
    justify-content: space-between;
}

.footer__columns {
    display: flex;
    gap: 50px;
    flex-wrap: wrap;
}

.footer__brand {
    align-self: flex-start;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 16px;
    max-width: 340px;
}

.footer__brand img {
    height: 42px;
    display: block;
}

.footer__corp {
    margin: 0;
    font-size: clamp(12px, 1vw, 14px);
    font-weight: 400;
    line-height: 1.6;
    color: var(--text-light);
    opacity: .9;
}

footer .column {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    max-width: 250px;
}

footer .column__title {
    font-size: 1rem;
    font-weight: 600;
    color: var(--text-light);
    text-transform: uppercase;
    margin: 0;
    margin-bottom: 20px;
}

footer .column__link {
    font-size: clamp(14px, 1.2vw, 18px);
    line-height: 1.4;
    font-weight: 400;
    color: var(--text-light);
    margin: 0;
    margin-bottom: 5px;
    cursor: pointer;
    text-decoration: none;
}

.copyright__text {
    margin: 0;
    margin-top: auto;
    font-size: 12px;
    font-weight: 500;
    line-height: 1.4;
    color: var(--text-light);
}

/* Botón flotante de WhatsApp */
.wsp-float {
    position: fixed;
    right: 22px;
    bottom: 22px;
    width: 58px;
    height: 58px;
    border-radius: 50%;
    background: #25d366;
    color: #fff;
    display: grid;
    place-items: center;
    box-shadow: 0 6px 20px rgba(0, 0, 0, .22);
    z-index: 90;
    transition: transform .15s, box-shadow .15s;
}

.wsp-float:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 26px rgba(0, 0, 0, .28);
}

/* ============================================================
   RESPONSIVE — 5 breakpoints: 1500 (solo steps/hero bg),
   1200 (laptop), 900 (tablet), 600 (móvil), 400 (móvil chico)
   ============================================================ */

@media(max-width: 1500px) {
    .hero {
        background-size: cover;
        background-position-x: -800px;
        padding: 80px 10%;
    }

    /* La composición artística no entra completa: se escala */
    .steps__container {
        scale: 0.8;
        transform-origin: top;
        margin-bottom: 0;
    }

    .steps {
        padding-bottom: 0;
    }
}

@media(max-width: 1200px) {

    /* Steps: timeline vertical, sin scale ni posiciones absolutas */
    .steps {
        padding: 60px 0;
    }

    .steps__container {
        scale: 1;
        width: min(680px, 90%);
        margin: 40px auto 0;
        border-left: 2px dashed var(--brand-300);
    }

    .steps__img,
    .steps__plane {
        display: none;
    }

    .step {
        position: relative;
        inset: auto;
        width: auto;
        text-align: left;
        align-items: flex-start;
        padding: 0 0 16px 28px;
    }

    .step::before {
        content: "";
        position: absolute;
        left: -9px;
        top: 8px;
        width: 12px;
        height: 12px;
        border-radius: 50%;
        background: var(--white);
        border: 2px solid var(--primary);
    }

    .step__number {
        font-size: 30px;
    }

    .step__title {
        font-size: clamp(20px, 3.4vw, 26px);
    }

    .step__body {
        font-size: clamp(15px, 2.2vw, 17px);
        max-width: none;
    }

    /* En móvil el contenedor es el marco que recorta a 20px con borde */
    .step__frame {
        display: block;
        overflow: hidden;
        border: 1px solid var(--border);
        border-radius: 20px;
        margin: 4px 0 40px 28px;
        max-width: min(340px, calc(100% - 28px));
        line-height: 0;
    }

    /* La foto llena el ancho y se amplía un poco para que las esquinas horneadas
       del PNG queden fuera del recorte (la foto llega al borde en los 4 lados) */
    .step__photo {
        position: static;
        width: 100%;
        height: auto;
        max-width: none;
        border: none;
        border-radius: 0;
        margin: 0;
        display: block;
        transform: scale(1.3);
        transform-origin: center;
    }

    /* Casos de uso: flujo normal */
    .usecases__container {
        height: auto;
        width: min(680px, 90%);
        margin: 0 auto;
        gap: 16px;
    }

    .usecases__subheading {
        margin-bottom: 20px;
    }

    .iphone {
        position: static;
        width: 220px;
        margin: 10px auto 20px;
        transform: none;
    }

    .blob {
        display: none;
    }

    .usecase {
        position: static;
        width: 100%;
    }

    .usecase__bubble {
        width: 100%;
        margin: 0;
        text-wrap: wrap;
    }

    .usecase__body {
        max-width: none;
        width: 100%;
        font-weight: 400;
    }

    /* Grids */
    .features__grid {
        grid-template-columns: repeat(2, 1fr);
    }

    .stats__container {
        grid-template-columns: repeat(2, 1fr);
        gap: 40px 20px;
        margin: 50px auto;
    }

    .stat + .stat {
        border-left: none;
    }

    .reviews__container {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media(max-width: 900px) {

    /* Nav: hamburguesa */
    nav {
        padding: 0 16px;
    }

    .menu__toggle {
        display: block;
        margin-left: 0;
    }

    .nav__brand {
        margin-left: 15px;
    }

    nav .nav__list {
        display: none;
    }

    /* Hero: una columna, con toda la info reorganizada y la oferta arriba del todo */
    .hero {
        padding: 30px 5%;
    }

    .hero__container {
        flex-direction: column;
        align-items: center;
        justify-content: flex-start;
        gap: 20px;
    }

    .hero__column--left {
        align-items: flex-start;
        text-align: left;
        width: 100%;
    }

    /* El botón desktop no se usa en móvil (se muestra el botón inferior) */
    .hero__cta {
        display: none;
    }

    .offers__container {
        margin: 0 auto;
        width: 100%;
        max-width: 600px;
    }

    .hero__offer {
        max-width: 100%;
    }

    .hero__button--mobile {
        display: block;
        margin-top: 10px;
    }

    .hero__button--desktop {
        display: none;
    }

    /* API: una columna */
    .api {
        flex-direction: column;
        justify-content: center;
        min-height: 0;
        padding: 80px 24px;
    }

    .column--left,
    .column--right {
        width: 100%;
        max-width: 620px;
        flex: none;
    }

    .column--right .cta__link {
        justify-content: center;
    }

    .column--right button {
        width: 100%;
        max-width: 100%;
        margin-top: 30px;
    }

    /* CTA final: una columna */
    .cta {
        padding: 100px 0 40px;
    }

    .cta__container {
        grid-template-columns: 1fr;
        justify-items: start;
        text-align: left;
    }

    .column__text--outline {
        margin: 10px auto 0;
    }

    /* Footer apilado */
    .footer__row--top {
        flex-direction: column;
        gap: 40px;
    }
}

@media(max-width: 600px) {
    /* ===== Hero móvil: layout propio — oferta arriba, info reorganizada, CTA separado ===== */
    .hero {
        padding: 22px 5% 88px;            /* aire inferior: el CTA no llega a tapar el WhatsApp flotante */
        min-height: calc(100vh - 65px);   /* llena el viewport */
        align-items: stretch;             /* el contenido ocupa todo el alto disponible */
    }

    .hero__container {
        gap: 22px;                         /* separación mínima entre bloques */
        justify-content: space-between;    /* reparte el espacio sobrante entre TODOS los bloques */
        align-items: flex-start;
    }

    /* Aplanar en móvil: los bloques (oferta, título+desc, ventajas, planes) pasan a ser
       hijos directos del contenedor para distribuirse uniformemente en el alto */
    .hero__column--left,
    .hero__text {
        display: contents;
    }

    /* Título + descripción como un solo bloque */
    .hero__headline {
        width: 100%;
        display: flex;
        flex-direction: column;
    }

    /* Oferta (arriba) */
    .hero__offer-tag {
        align-self: flex-start;
        margin: 0;
        padding: 6px 13px;
        font-size: 12.5px;
        gap: 7px;
        box-shadow: 0 4px 14px rgba(138, 119, 240, .4);
    }

    .hero__offer-tag svg {
        width: 15px;
        height: 15px;
    }

    /* Título: lo más grande posible en una sola línea (pegado a la descripción) */
    .hero__title {
        font-size: min(6.3vw, 30px);
        line-height: 1.12;
        margin: 0 0 9px;
        white-space: nowrap;
    }

    /* Descripción: mismo bloque que el título (interlineado 1.6) */
    .hero__subheading {
        font-size: 13.5px;
        line-height: 1.6;
        margin: 0;
        max-width: 100%;
    }

    /* Ventajas (conservadas, compactas) */
    .hero__perks {
        width: 100%;
        gap: 7px;
        margin: 0;
    }

    .hero__perks li {
        font-size: 12.5px;
        font-weight: 500;
        gap: 8px;
    }

    .hero__perks svg {
        width: 16px;
        height: 16px;
        padding: 2px;
    }

    /* Planes como lista de precios compacta (filas con borde, no tarjetas grandes) */
    .offers__container {
        gap: 11px;
        margin: 0;
    }

    .hero__offer {
        border: 1px solid rgba(255, 255, 255, .45);
        border-radius: 12px;
        padding: 11px 14px;
        gap: 2px;
        max-width: 100%;
    }

    /* Fila 1 (arriba): nombre + precio — protagonista */
    .offer__bottom {
        order: 1;
        margin: 0;
        gap: 10px;
    }

    .offer__plan {
        font-size: 15px;
        font-weight: 600;
        opacity: 1;
    }

    .offer__number {
        font-size: 16px;
        font-weight: 800;
    }

    /* Fila 2 (abajo): SMS + coste/SMS — secundaria */
    .offer__top {
        order: 2;
        gap: 10px;
    }

    .offer__sms,
    .offer__sms--input,
    .offer__unit {
        font-size: 13px;
        font-weight: 600;
        opacity: .8;
    }

    /* Recomendado: relleno morado (sin borde visible) */
    .hero__offer--selected {
        background: var(--primary);
        border-color: transparent;
        border-radius: 12px;
        padding: 11px 14px;
        margin: 0;
    }

    /* Badge en línea, arriba del bloque recomendado */
    .offer__badge {
        position: static;
        order: 0;
        align-self: flex-start;
        top: auto;
        left: auto;
        margin: 0 0 5px;
        font-size: .54rem;
        padding: 2px 9px;
        letter-spacing: .03em;
    }

    /* CTA separado y protagonista */
    .hero__button--mobile {
        margin-top: 24px;
    }

    .hero__button--mobile button {
        width: 100%;
        padding: 15px;
        font-size: 1.05rem;
        font-weight: 700;
        box-shadow: 0 10px 26px rgba(138, 119, 240, .5);
    }

    .steps__container,
    .usecases__container {
        width: 90%;
    }

    /* Casos de uso en móvil: título y teléfono más grandes,
       pills sin borde raro, texto "Comunica" más separado */
    .usecases__title {
        font-size: clamp(27px, 7.5vw, 36px);
        line-height: 1.15;
    }

    .usecases__subheading {
        font-size: 15px;
    }

    .iphone {
        width: min(460px, 118%);
        max-width: none;
        margin: 10px auto 20px;
    }

    .usecase__bubble {
        border: none;
    }

    .cta__body {
        margin-top: 30px;
    }

    .step__photo {
        max-width: calc(100% - 28px);
    }

    .features__grid {
        grid-template-columns: 1fr;
    }

    .stats__container {
        grid-template-columns: 1fr;
        gap: 30px;
    }

    .reviews__container {
        grid-template-columns: 1fr;
        margin-top: 36px;
    }

    .logos {
        padding: 45px 0;
    }

    .services,
    .usecases,
    .questions,
    .numbers,
    .reviews {
        padding: 40px 0;
    }

    .question {
        border-radius: 10px;
    }

    .footer__columns {
        flex-direction: column;
        gap: 20px;
    }

    footer .column__title {
        text-decoration: underline;
        margin-bottom: 10px;
    }
}

@media(max-width: 400px) {
    nav {
        height: 55px;
        padding: 0 10px;
    }

    /* X del menú alineada con la hamburguesa (nav más bajo y con menos padding) */
    .menu__close {
        height: 55px;
        left: 10px;
    }

    .menu__list {
        padding-left: 17px;
        padding-top: 78px;
    }

    .nav__brand {
        margin-left: 10px;
    }

    .nav__brand img {
        height: 15px;
    }

    .nav__actions {
        gap: 8px;
    }

    .nav__actions .item__link {
        font-size: 12px;
    }

    .nav__button {
        padding: 8px 12px;
        font-size: 11px;
        margin-right: 8px;
    }

    .offer__circle {
        height: 18px;
        width: 18px;
    }

    footer {
        padding: 30px 0 20px;
    }

    .copyright__text {
        font-size: 10px;
    }
}

/* Fix hero height for short mobile viewports (667px height) */
/* Pantallas móviles bajas (p. ej. altura 554): no forzar alto, compactar y que quepa limpio */
@media(max-height: 700px) and (max-width: 900px) {
    .hero {
        min-height: auto;
        padding: 16px 5% 60px;
    }

    .hero__container {
        gap: 14px;
        justify-content: flex-start;
    }

    /* Ventana muy baja: se compacta ocultando subtítulo y ventajas para que quepa */
    .hero__subheading,
    .hero__perks {
        display: none;
    }

    .hero__offer-tag {
        margin: 0 0 12px;
    }

    .hero__title {
        font-size: clamp(15px, 4.8vw, 21px);
        margin: 0;
    }

    .offers__container {
        gap: 8px;
    }

    .hero__offer {
        padding: 9px 13px;
    }

    .hero__offer--selected {
        padding: 9px 13px;
    }

    .offer__plan {
        font-size: 14px;
    }

    .offer__number {
        font-size: 15px;
    }

    .offer__sms,
    .offer__unit,
    .offer__sms--input {
        font-size: 12.5px;
    }

    .hero__button--mobile {
        margin-top: 4px;
    }

    .hero__button--mobile button {
        padding: 12px;
        font-size: 1rem;
    }
}
