/* =========================================================
   HERO — RESPONSIVE (escala proporcional)
   Pegar en responsive.css
========================================================= */

/* 1) Ajuste suave (laptops/desktop pequeños) */
@media (max-width: 1100px){

  .hero{
    padding-top: clamp(12px, 1.8vw, 28px);
    padding-bottom: clamp(32px, 5vw, 72px); /* antes clamp(40,6vw,90) */
  }

  .hero__grid{
    gap: clamp(18px, 3vw, 40px); /* reduce aire sin cambiar layout */
    grid-template-columns: 1.25fr .75fr; /* mantiene proporción */
  }

  .hero__panel{
    padding: clamp(6px, 1.6vw, 14px);
  }

  .hero__title--brand{
    font-size: clamp(3.2rem, 7.2vw, 6rem); /* “misma” estética, más contenida */
    line-height: 0.94;
  }

  .hero__subtitle--slogan{
    font-size: clamp(.95rem, 1.4vw, 1.05rem);
    letter-spacing: 0.08em;
  }

  .hero__media{
    min-height: 460px; /* antes 520 */
  }

  .hero__card{
    padding: 12px;
  }

  .hero__cardText{
    font-size: .92rem;
  }
}


/* 2) Tablet: sigue igual pero ya pide 2 filas (media debajo) */
@media (max-width: 900px){

  .hero__grid{
    grid-template-columns: 1fr;  /* apila panel + foto */
  }

  .hero__media{
    min-height: clamp(360px, 48vw, 520px);
  }

  /* Tiles: de 4 a 2 columnas (mismo estilo, más respirable) */
  .hero__actions--tiles{
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }

  .hero__cta .btn{
    flex:1;
    justify-content:center;
  }

  /* Casos reales: que no se rompa */
  .hero__cases{
    gap: 14px;
  }
}


/* 3) Móvil: escala fina (sin “modo móvil” feo) */
@media (max-width: 560px){

  .hero{
    padding: clamp(26px, 6vw, 52px) 0;
  }

  .hero__eyebrow{
    font-size: .72rem;
    letter-spacing: .07em;
    gap: 8px;
    margin-bottom: 10px;
  }

  .hero__eyebrow::before{
    width: 28px;
  }

  .hero__content{
    gap: 16px; /* antes 22 */
  }

  .hero__title--brand{
    font-size: clamp(2.6rem, 12vw, 4rem);
    line-height: 0.95;
    letter-spacing: -0.03em;
  }

  .hero__subtitle--slogan{
    font-size: clamp(.9rem, 3.2vw, 1rem);
    letter-spacing: .10em;
    max-width: 52ch;
  }

  /* Tiles: 1 columna a todo el ancho, texto más grande y legible */
  .hero__actions--tiles{
    grid-template-columns: 1fr;
    gap: 10px;
  }

  .hero-tile{
    padding: 18px 20px;
    border-radius: 18px;
    text-align: center;
  }

  .hero-tile__kicker{
    font-size: .85rem;
    letter-spacing: .1em;
  }

  .hero-tile__title{
    max-width: 100%;
    margin-top: 8px;
    font-size: 1.5rem;
  }

  /* Botón “Ver transformaciones” que no desborde */
  .hero__casesText{
    font-size: .95rem;
  }

  .hero__cases .btn{
    width: 100%;
    justify-content: center;
  }

  /* En móvil se prescinde de la foto y de la tarjeta con el nombre */
  .hero__media{
    display: none;
  }

  /* Botones del hero: ancho al contenido, no a todo lo ancho */
  .hero__cta .btn{
    flex: none;
  }

  /* Glow de fondo menos invasivo */
  .hero__bg{
    inset: -140px -160px auto -160px;
    height: 420px;
    opacity: .75;
  }
}


/* 4) Móvil muy pequeño */
@media (max-width: 380px){

  .hero__title--brand{
    font-size: clamp(2.3rem, 13vw, 3.4rem);
  }
}

/* Reduce el margen lateral global en móvil */
@media (max-width: 560px){
  :root{ --gutter: 14px; } /* prueba 12px si lo quieres aún más “full” */
}

@media (max-width: 380px){
  :root{ --gutter: 12px; }
}

/* Full-width en móvil: el container ocupa todo el ancho */
@media (max-width: 560px){
  .container{
    width: 100%;
    margin-inline: 0;
    padding-inline: 0; /* quita los márgenes laterales */
  }

  /* mantenemos aire interno sin “cortar” al borde */
  .hero{
    padding-left: 16px;
    padding-right: 16px;
  }
}

/* FIX: asegurar que nada limite el ancho en móvil */
@media (max-width: 560px){
  html, body{
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
  }

  main, #contenido{
    width: 100%;
    max-width: 100%;
  }

  /* Por si algún wrapper está centrando */
  body{
    margin: 0;
  }

  /* Y el container del hero full */
  .hero .container{
    width: 100%;
    max-width: 100%;
    margin: 0;
  }
}

/* =================================================
   CABECERAS DE SECCIÓN — compactas en móvil
   (Servicios, Precios, Cómo trabajamos, FAQ... todas
   comparten .section__head/.section__title/.section__sub)
================================================= */

@media (max-width: 560px){
  .section__head{
    margin-bottom: 12px;
    gap: 0.7rem;
  }

  .section__title{
    font-size: clamp(1.6rem, 6vw, 2rem);
  }

  .section__sub{
    font-size: 0.9rem;
    max-width: 40ch;
    margin-inline: auto;
  }
}

/* =================================================
   PADDING LATERAL EN MÓVIL
   (el .container global pierde su padding a ≤560px;
   cada sección sin foto/carrusel a sangre lo recupera aquí)
================================================= */

@media (max-width: 560px){
  .section--services .container,
  .section--pricing .container,
  .section--faq .container,
  .section--transformations .container{
    padding-left: 16px;
    padding-right: 16px;
  }

  .section--process .container{
    padding-left: 30px;
    padding-right: 30px;
  }
}

/* =================================================
   SOBRE MÍ — CARD COMPACTA EN MOBILE
================================================= */

@media (max-width: 700px){
  .about-panel{
    padding: 1.4rem 1.1rem;
    border-radius: 20px;
  }

  .about-panel__title{
    font-size: clamp(1.35rem, 7vw, 1.9rem);
  }

  .about-panel__text{
    font-size: .96rem;
  }

  .about-panel__frame{
    width: min(100%, 420px);
    padding: 10px;
    border-radius: 22px;
  }

  .about-panel__frame::after{
    inset: 10px;
    border-radius: 16px;
  }

  .about-panel__frame img{
    border-radius: 16px;
  }
}

@media (max-width: 560px){
  .section--about .container{
    padding-left: 16px;
    padding-right: 16px;
  }

  .about-panel__actions .btn{
    flex: none;
  }
}

/* =========================================
   TRANSFORMACIONES — 1 ficha exacta (móvil)
   Sin teaser, centrada, sin cortar
========================================= */
@media (max-width: 560px){

  /* viewport: oculta todo lo que sobresalga */
  .carousel-viewport{
    overflow: hidden !important;
  }

  /* track: sin padding/gap para que 1 slide = 100% */
  .carousel-track{
    display: flex !important;
    flex-wrap: nowrap !important;
    gap: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
  }

  /* cada ficha ocupa exactamente el ancho del viewport */
  .carousel-track > *{
    flex: 0 0 100% !important;
    width: 100% !important;
    max-width: 100% !important;
    scroll-snap-align: start;
  }

  /* si tu card tiene width/max-width interno */
  .carousel-track .transform-card{
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
  }
}

/* =========================================
   TRANSFORMACIONES — mostrar SOLO 1 ficha
   sin cambiar estilos/tamaños internos
========================================= */
@media (max-width: 560px){

  /* Recorta todo lo que no cabe => solo verás 1 */
  .carousel-viewport{
    overflow: hidden !important;
  }

  /* Track horizontal */
  .carousel-track{
    display: flex !important;
    flex-wrap: nowrap !important;
    gap: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
  }

  /* Cada ficha ocupa 1 “pantalla” del carrusel */
  .carousel-track > .transform-card{
    flex: 0 0 100% !important;
    width: 100% !important;
  }

  /* MUY IMPORTANTE: NO tocar tamaños internos */
  .transform-card,
  .transform-media,
  .transform-body{
    max-width: none !important;
  }
}

@media (max-width: 560px){

  .carousel-track .transform-card{
    width: min(88vw, 340px) !important;
  }
}

@media (max-width: 560px){

  .transforms-carousel{
    position: relative !important;
  }

  .transforms-carousel .carousel-btn{
    position: absolute !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    z-index: 20 !important;
  }

  .transforms-carousel .carousel-btn--prev{
    left: 14px !important;
    right: auto !important;
  }

  .transforms-carousel .carousel-btn--next{
    right: 14px !important;
    left: auto !important;
  }
}

@media (max-width: 560px){

  /* ===== CONTACTO: header más compacto ===== */
  .section--contact .section__head--contact{
    max-width: 100%;
    margin: 0 auto 14px;
    text-align: center;
  }

  .section--contact .section__title--contact{
    font-size: clamp(2.0rem, 7vw, 2.8rem);
    line-height: 1.02;
    letter-spacing: -0.02em;
    margin: .25rem 0 .5rem;
  }

  .section--contact .section-subtitle{
    font-size: 0.98rem;
    line-height: 1.35;
    margin: 0 auto;
    max-width: 34ch;
  }

  /* ===== CONTACTO: las 2 fichas en columna ===== */
  .section--contact .contact{
    display: grid;
    grid-template-columns: 1fr;   /* ✅ una debajo de la otra */
    gap: 14px;
    width: 100%;
  }

  /* La tarjeta de foto es solo para escritorio; en móvil solo el formulario */
  .contact-card--photo{
    display: none;
  }

  /* ===== Asegurar que cada card no “se salga” ===== */
  .section--contact .contact-card{
    width: 100%;
    max-width: 100%;
    min-width: 0;
  }

  /* Enlaces/botones dentro: evitar overflow por textos largos */
  .section--contact .contact-action{
    width: 100%;
    min-width: 0;
  }

  .section--contact .contact-action__value{
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap; /* ✅ evita que el mail/instagram rompan el layout */
  }

  /* La lista y badges que respiren bien */
  .section--contact .contact-list{
    margin: 10px 0 12px;
    padding-left: 0;
  }

  .section--contact .contact-badges{
    display: flex;
    flex-wrap: wrap;
    justify-content: center; /* queda más limpio en móvil */
    gap: 8px;
  }

  /* Si tu .badge es grande, lo afinamos un poco en móvil */
  .section--contact .badge{
    font-size: 0.82rem;
    padding: 6px 10px;
  }
}

@media (max-width: 560px){
  .section--contact .container{ padding-left: 16px; padding-right: 16px; }
  .section--contact .contact-actions{ gap: 10px; }
  .section--contact .contact-cta{ gap: 10px; }
  .section--contact .contact-cta .btn{ flex: none; }
}

@media (max-width: 560px){

  /* ===== FIX subtítulo CONTACTO ===== */
  .section--contact .section-subtitle{
    display: block;
    max-width: 100%;
    padding: 0 4px;
    white-space: normal;        /* 🔑 permite salto de línea */
    overflow: visible;
    text-overflow: initial;
    line-height: 1.4;
    font-size: 0.95rem;
  }

}

@media (max-width: 560px){

  /* =========================
     CONTACTO (arreglar subtítulo cortado)
  ========================== */

  .section__head--contact .section-subtitle{
    max-width: 32ch;          /* evita línea “kilométrica” */
    margin: 0.5rem auto 0;    /* centrado + aire */
    padding: 0 10px;          /* que no toque bordes */
    white-space: normal;      /* por si venía heredado raro */
    overflow: visible;
    text-overflow: clip;
    word-break: normal;
    overflow-wrap: anywhere;  /* garantiza salto en móviles */
    line-height: 1.35;
  }

  /* Si el título principal de contacto está muy grande en móvil */
  .section__title--contact{
    font-size: clamp(1.8rem, 7vw, 2.4rem);
    line-height: 1.05;
    margin-bottom: .35rem;
  }


  /* =========================
     FOOTER (menos apretado y 1 columna)
  ========================== */

  /* Asegura que el bloque del footer tenga aire vertical */
  .footer{
    padding-top: 22px;
  }

  /* El contenedor del footer (tu clase actual: .footer__inner) */
  .footer__inner{
    display: grid;
    grid-template-columns: 1fr;  /* 1 columna */
    gap: 18px;                   /* separación entre bloques */
    padding: 18px 16px;          /* aire interior */
    align-items: start;
  }

  /* Brand: que no quede todo pegado */
  .footer__brand{
    gap: 12px;
  }

  .footer__logo{
    width: 42px;
    height: 42px;
    font-size: 0.95rem;
    flex: 0 0 auto;
  }

  .footer__tagline{
    margin-top: 6px;
    line-height: 1.35;
  }

  /* Listas y nav del footer */
  .footer__nav,
  .footer__contact{
    padding-top: 8px;
    border-top: 1px solid rgba(244,244,244,.10);
  }

  .footer__title{
    margin: 0 0 10px;
    font-size: 0.95rem;
    letter-spacing: .02em;
  }

  .footer__list{
    margin: 0;
    padding: 0;
    display: grid;
    gap: 8px;
  }

  /* CTA botón WhatsApp en footer */
  .footer__cta{
    margin: 10px 0 12px;
  }

  .footer__btn{
    width: 100%;
    justify-content: center;
  }

  /* Barra inferior: apilar y separar */
  .footer__bottom{
    margin-top: 10px;
  }

  .footer__bottomInner{
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
    padding: 14px 16px;
    text-align: center;
  }

  .footer__legal{
    display: flex;
    justify-content: center;
    gap: 12px;
    flex-wrap: wrap;
  }

  .footer__copyright{
    margin: 0;
    line-height: 1.35;
  }

}

/* =================================================
   SERVICIOS — botones apilados en móvil
================================================= */

@media (max-width: 560px){
  .service-card__actions .btn{
    flex: none;
  }
}

/* =================================================
   PRECIOS — responsive
================================================= */

@media (max-width: 700px){
  .pricing-card{
    padding: 1.3rem 1.2rem 1.2rem;
  }

  .pricing-card__title{
    font-size: 1.25rem;
  }
}

@media (max-width: 560px){
  .pricing-grid{
    gap: 1.1rem;
  }

  .pricing-card__list li{
    padding: .6rem 0;
  }

  .pricing-note{
    font-size: .84rem;
  }
}

/* =================================================
   CÓMO TRABAJAMOS — responsive
================================================= */

@media (max-width: 900px){
  .steps-grid{
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* En móvil, las tarjetas se convierten en un listado:
   número + título en la misma línea, párrafo debajo, sin icono. */
@media (max-width: 560px){
  .steps-grid{
    grid-template-columns: 1fr;
    gap: 0;
  }

  .step-card{
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: .6rem;
    row-gap: .3rem;
    align-items: baseline;
    background: none;
    border: none;
    border-bottom: 1px solid var(--border);
    border-radius: 0;
    box-shadow: none;
    padding: 1rem 0;
  }

  .step-card:hover{
    transform: none;
    border-bottom-color: var(--border);
  }

  .step-card__number{
    grid-column: 1;
    grid-row: 1;
    margin-bottom: 0;
    font-size: 1.2rem;
  }

  .step-card__title{
    grid-column: 2;
    grid-row: 1;
    margin-bottom: 0;
  }

  .step-card__text{
    grid-column: 1 / -1;
    grid-row: 2;
    margin-bottom: 0;
  }

  .step-card__icon{
    display: none;
  }
}

/* =================================================
   FAQ — responsive
================================================= */

@media (max-width: 560px){
  .faq-item{
    padding: .95rem 1.05rem;
  }

  .faq-item__question{
    font-size: .95rem;
    gap: .75rem;
  }

  .faq-item__question::after{
    width: 22px;
    height: 22px;
    font-size: 1rem;
  }

  .faq-item__answer{
    font-size: .9rem;
  }
}

/* Asegura que el atributo hidden siempre oculta (modales, etc.) */
[hidden] {
  display: none !important;
}

/* =================================================
   VALORACIONES — responsive
================================================= */

@media (max-width: 900px){
  .carousel-track .review-card{
    flex: 0 0 calc((100% - clamp(1.2rem, 3vw, 2rem)) / 2);
  }
}

@media (max-width: 560px){
  .review-card{
    min-height: 210px;
    padding: 1rem;
  }

  .review-card__avatar{
    width: 40px;
    height: 40px;
    font-size: .9rem;
  }

  .review-card .transform-text{
    font-size: .9rem;
  }

  .section-head--transformations{
    max-width: 100%;
    margin-bottom: 1.8rem;
  }

  .section--transformations .section-title{
    font-size: clamp(2rem, 8vw, 2.6rem);
    margin-bottom: .8rem;
  }

  .section--transformations .section-subtitle{
    max-width: 100%;
    font-size: .95rem;
  }
}

/* =========================================================
   SP-APP responsive
========================================================= */

/* =========================================================
   HERO — ESCRITORIO: alinear la foto con el título y las tiles
   (arriba = arriba del H1 · abajo = abajo del recuadro SP-APP/CONTACTO)
========================================================= */
@media (min-width: 901px){

  .hero__grid{
    grid-template-rows: repeat(6, auto);
    row-gap: 22px;
  }

  .hero__panel{
    display: grid;
    grid-template-rows: subgrid;
    grid-row: 1 / -1;
    grid-column: 1;
    padding: 0;
  }

  .hero__content{
    display: contents;
  }

  .hero__eyebrow{ grid-row: 1; }
  .hero__title{ grid-row: 2; }
  .hero__subtitle{ grid-row: 3; }
  .hero__lead{ grid-row: 4; }
  .hero__actions{ grid-row: 5; }
  .hero__socialproof{ grid-row: 6; }

  .hero__media{
    grid-column: 2;
    grid-row: 2 / 6;
    min-height: 0;
    align-self: stretch;
  }

  .hero__img{
    object-position: center bottom;
  }
}

@media (max-width: 980px){
  .spapp__top{
    grid-template-columns: 1fr;
    gap: 2rem;
  }

  .spapp-intro__title{
    max-width: none;
  }

  .spapp-visual{
    justify-content: flex-start;
  }
}

@media (max-width: 700px){
  .section__head--spapp{
    margin-bottom: 2rem;
  }

  .section__title--spapp{
    font-size: clamp(2rem, 8vw, 2.7rem);
  }

  .section__sub--spapp{
    font-size: .95rem;
    line-height: 1.5;
    max-width: 100%;
  }

  .spapp-intro__title{
    font-size: clamp(1.45rem, 7vw, 2rem);
    line-height: 1.1;
  }

  .spapp-intro__text{
    font-size: .96rem;
  }

  .spapp-intro__list{
    gap: .7rem;
  }

  .spapp-visual__frame{
    width: min(100%, 320px);
    padding: 10px;
    border-radius: 24px;
  }

  .spapp-visual__frame img{
    border-radius: 18px;
  }

  .spapp-highlight{
    font-size: 1rem;
  }
}

@media (max-width: 560px){
  .section--spapp .container{
    padding-left: 26px;
    padding-right: 26px;
  }

  .spapp{
    gap: 1.4rem;
  }

  .spapp__top{
    gap: 1.5rem;
  }

  .spapp-intro__list li{
    padding-left: 1.3rem;
  }
}

