/* Landing de Scary Lenses BQ.
   Reglas que se siguieron a propósito, y por qué:
   - UN solo acento en toda la página: el verde del ojo del logo. El rojo vive
     dentro del film, no en la interfaz.
   - Esquinas rectas en todo. Un radio consistente se lee más caro que mezclar.
   - Tipografía de palo seco para los títulos (Outfit). La serif "de lujo" es el
     tell más común, y aquí no la pide la marca.
   - Sin flechas de "scroll", sin numeritos de sección, sin puntos de colores.
   - Nada empieza invisible esperando el scroll: la página se entiende quieta. */

.landing{padding:0}
.landing .hoja{max-width:1180px;padding:0 24px}

/* ---------- barra ---------- */
.barra{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;
       gap:16px;padding:16px 26px;border:0;
       background:linear-gradient(to bottom,rgba(6,10,19,.92),rgba(6,10,19,0));
       transition:background .25s ease,padding .25s ease}
.barra.pegada{background:rgba(6,10,19,.94);padding:11px 26px;
              border-bottom:1px solid var(--borde);backdrop-filter:blur(10px)}
.barra .logo img{width:38px;height:38px}
.barra nav{margin-left:auto;gap:4px}
.barra nav a{font-size:14px;padding:8px 13px}
.barra nav a.wa{background:var(--verde);color:#0a1500;font-weight:700}
.barra nav a.wa:hover{background:#d4ff8a}

/* ---------- hero ---------- */
.hero{position:relative;min-height:88svh;display:flex;align-items:flex-end;
      overflow:hidden;background:#060a13}
.hero .film{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* El velo sube el contraste del texto sobre el video sin apagar el film. */
.hero .velo{position:absolute;inset:0;
  background:linear-gradient(105deg,rgba(6,10,19,.93) 0%,rgba(6,10,19,.72) 38%,
             rgba(6,10,19,.15) 68%,rgba(6,10,19,.55) 100%)}
.hero-txt{position:relative;z-index:2;padding:0 26px 84px;max-width:660px}
.ojo{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--verde);
     margin:0 0 18px;font-weight:500}
.hero h1{font-family:Outfit,var(--sans);font-weight:900;letter-spacing:-.045em;
         font-size:clamp(52px,10.5vw,116px);line-height:.87;margin:0 0 20px;
         color:var(--texto)}
.lead{font-size:clamp(16.5px,2.1vw,20px);color:#cdd6e2;max-width:44ch;margin:0 0 30px;
      line-height:1.55}
.acciones{display:flex;gap:12px;flex-wrap:wrap}
.btn-p,.btn-s{display:inline-block;padding:15px 27px;font-weight:700;font-size:15.5px;
              text-decoration:none;border-radius:0;transition:transform .15s ease,background .15s ease}
.btn-p{background:var(--verde);color:#0a1500}
.btn-p:hover{background:#d4ff8a;transform:translateY(-2px)}
.btn-s{border:1px solid rgba(249,245,234,.28);color:var(--texto)}
.btn-s:hover{border-color:var(--verde);color:var(--verde)}
.btn-p.grande{padding:19px 38px;font-size:17px;align-self:center;white-space:nowrap}

/* ---------- tira de ojos ---------- */
.tira-wrap{overflow:hidden;border-block:1px solid var(--borde);background:#0a0f1a;
            padding:0;position:relative;z-index:1}
.tira{display:flex;width:max-content}
/* El movimiento se enciende desde el JS, cuando la tira ya tiene las fotos. */
.tira.andando{animation:correr 72s linear infinite}
@keyframes correr{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ---------- secciones ---------- */
.seccion{max-width:1180px;margin:0 auto;padding:86px 26px}
.cab{margin-bottom:38px;max-width:60ch}
.seccion h2{font-family:Outfit,var(--sans);font-weight:800;letter-spacing:-.035em;
            font-size:clamp(31px,4.6vw,50px);line-height:1.03;margin:0 0 12px}
.cab p{color:var(--tenue);font-size:17px;margin:0}

/* rejilla del catálogo: es también el esqueleto de la tienda */
.rejilla{display:grid;grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:14px}
.prod{background:var(--sup);border:1px solid var(--borde);overflow:hidden;
      display:flex;flex-direction:column;transition:border-color .2s ease,transform .2s ease}
.prod:hover{border-color:rgba(196,242,117,.55);transform:translateY(-3px)}
.prod .im{position:relative;aspect-ratio:1080/616;overflow:hidden;background:#0a0f1a}
.prod .im img{width:100%;height:100%;object-fit:cover;display:block;
              transition:transform .45s ease}
.prod:hover .im img{transform:scale(1.06)}
.prod .cuerpo{padding:12px 14px 14px;display:flex;flex-direction:column;gap:5px;flex:1}
.prod .n{font-family:Outfit,var(--sans);font-size:23px;font-weight:800;line-height:1;
         color:var(--verde);letter-spacing:-.02em}
.prod .d{font-size:13px;color:var(--tenue);line-height:1.4;flex:1}
.prod .pie{display:flex;align-items:baseline;justify-content:space-between;gap:8px;
           margin-top:6px;padding-top:10px;border-top:1px solid var(--borde)}
.prod .precio{font-weight:700;font-size:15px}
.prod .pedir{font-size:12.5px;color:var(--verde);text-decoration:none;font-weight:700}
.prod.agotado{opacity:.42}
.prod.agotado .im img{filter:grayscale(1)}
.prod .sinstock{font-size:12px;color:var(--tenue)}
.pie-rejilla{color:var(--tenue);font-size:14.5px;margin:24px 0 0}

/* pasos: dos columnas desiguales, no tres tarjetas iguales */
.pasos{display:grid;grid-template-columns:1.15fr 1fr 1fr;gap:0;
       border-top:1px solid var(--borde)}
.paso{padding:40px 30px 40px 0}
.paso + .paso{border-left:1px solid var(--borde);padding-left:30px}
.paso h3{font-family:Outfit,var(--sans);font-size:20px;font-weight:700;margin:0 0 10px;
         letter-spacing:-.02em}
.paso p{color:var(--tenue);font-size:15.5px;line-height:1.6;margin:0}

.regalo{display:flex;gap:40px;align-items:center;justify-content:space-between;
        flex-wrap:wrap;border-top:1px solid var(--borde)}
.regalo h2{margin-bottom:14px}
.fino{color:var(--tenue);font-size:14.5px;margin:14px 0 0}

.landing footer{margin-top:0;padding:34px 0 60px}

/* ---------- entrada: pasa sola, sin necesidad de scroll ---------- */
.hero-txt > *{opacity:0;transform:translateY(18px);
              animation:entrar .85s cubic-bezier(.2,.7,.3,1) forwards}
.hero-txt > :nth-child(1){animation-delay:.15s}
.hero-txt > :nth-child(2){animation-delay:.27s}
.hero-txt > :nth-child(3){animation-delay:.39s}
.hero-txt > :nth-child(4){animation-delay:.51s}
@keyframes entrar{to{opacity:1;transform:none}}

@media(max-width:900px){
  .pasos{grid-template-columns:1fr}
  .paso{padding:28px 0}
  .paso + .paso{border-left:0;border-top:1px solid var(--borde);padding-left:0}
  .hero{min-height:82svh}
  .hero-txt{padding-bottom:56px}
    .barra nav a:not(.wa){display:none}
}

/* Quien pidió menos movimiento no ve ninguno, y la página sigue completa. */
@media(prefers-reduced-motion:reduce){
  .tira{animation:none}
  .hero-txt > *{opacity:1;transform:none;animation:none}
  .hero .film{display:none}
  .prod,.prod .im img,.btn-p,.btn-s{transition:none}
}

/* El héroe es una sección normal: el film corre solo y el carrusel queda
   justo debajo, a la vista. Con el héroe pegado había que bajar dos pantallas
   enteras antes de ver nada más. */

/* ---------- carrusel con número ---------- */
.ojo-tira{position:relative;display:block;text-decoration:none;flex:0 0 auto}
.ojo-tira img{width:214px;height:122px;object-fit:cover;display:block;
              filter:saturate(.92) brightness(.82);transition:filter .3s ease}
.ojo-tira:hover img{filter:saturate(1.1) brightness(1)}
/* El número va pequeño pero legible: si a alguien le gusta un lente al pasar,
   tiene que poder pedirlo sin ir a buscarlo a la rejilla. */
.ojo-tira:not(.sinstock):hover .nro{color:var(--verde)}

/* ---------- ver más en celular ---------- */
.vermas{display:block;width:100%;margin:18px 0 0;padding:16px;background:transparent;
        border:1px solid var(--borde);color:var(--texto);font:inherit;font-size:15px;
        font-weight:600;cursor:pointer;border-radius:0}
.vermas:hover{border-color:var(--verde);color:var(--verde)}
.vermas b{color:var(--verde)}



/* ---------- cierre: su propio film, distinto al del héroe ---------- */
/* Va bien oscurecido a propósito: es atmósfera, no catálogo. Nadie debe
   confundir el lente que se ve ahí con un modelo a la venta. */
.cierre{position:relative;min-height:66svh;display:flex;align-items:center;
        overflow:hidden;border-top:1px solid var(--borde)}
.film-cierre{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
             opacity:.85;filter:saturate(.8)}
.velo-cierre{position:absolute;inset:0;background:rgba(6,10,19,.62)}
.cierre-txt{position:relative;z-index:2;max-width:1180px;margin:0 auto;
            padding:70px 26px;width:100%}
.cierre-txt h2{font-family:Outfit,var(--sans);font-weight:800;letter-spacing:-.035em;
               font-size:clamp(31px,4.6vw,50px);line-height:1.03;margin:0 0 12px}
.cierre-txt .btn-p{margin-top:24px}
@media(prefers-reduced-motion:reduce){.film-cierre{display:none}}

/* ═══════════════════════════════════════════════════════════════
   CELULAR
   La mayoría entra desde Instagram, en el teléfono. Lo de abajo no
   son ajustes menores: es la vista principal del sitio.
   ═══════════════════════════════════════════════════════════════ */

/* svh evita que la barra del navegador tape el héroe, pero no existe antes de
   iOS 15.4. Se declara vh primero como red y svh la pisa donde sí existe. */
.hero{min-height:88vh}
.cierre{min-height:66vh}
@supports (height:100svh){
  .hero{min-height:88svh}
  .cierre{min-height:66svh}
}

@media(max-width:760px){
  /* Nada puede empujar el ancho: un scroll horizontal en celular se siente roto. */
  body.landing{overflow-x:hidden}

  .hero{min-height:78vh}
  @supports (height:100svh){ .hero{min-height:78svh} }
  .hero-txt{padding:0 18px 46px}
  /* En pantalla chica el interletrado cerrado pega las palabras: "El catálogo"
     se leia "Elcatalogo". Se afloja para movil sin perder el aire compacto. */
  .hero h1{font-size:40px;line-height:.96;letter-spacing:-.018em;word-spacing:.06em}
  .ojo{font-size:11.5px;letter-spacing:.12em;margin-bottom:12px}
  .lead{font-size:16px;margin-bottom:22px}

  /* Los dos botones a lo ancho, uno debajo del otro y con alto de dedo. */
  .acciones{flex-direction:column;align-items:stretch;gap:9px}
  .btn-p,.btn-s{padding:16px 20px;text-align:center;font-size:16px}

  .seccion{padding:52px 18px}
  .seccion h2{font-size:29px;letter-spacing:-.012em;word-spacing:.05em}
  .cab{margin-bottom:22px}
  .cab p{font-size:15.5px}

  /* Dos columnas: con una sola, cinco productos eran cinco pantallas. */
  .rejilla{grid-template-columns:repeat(2,1fr);gap:10px}
  .prod .cuerpo{padding:10px 11px 12px;gap:4px}
  .prod .n{font-size:19px}
  .prod .d{font-size:11.5px;line-height:1.35;
           display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
           overflow:hidden}
  .prod .pie{padding-top:8px;margin-top:4px}
  .prod .precio{font-size:13.5px}
  .prod .pedir{font-size:12px}
  /* El dedo no acierta un enlace de 12px: toda la tarjeta abre el pedido. */
  .prod{position:relative}
  .prod .pedir::after{content:"";position:absolute;inset:0}

  .vermas{padding:17px;font-size:15.5px;margin-top:14px}

  .paso{padding:22px 0}
  .paso h3{font-size:18px}
  .paso p{font-size:15px}

  .cierre{min-height:auto}
  @supports (height:100svh){ .cierre{min-height:auto} }
  .cierre-txt{padding:52px 18px}
  .cierre-txt h2{font-size:29px;letter-spacing:-.012em;word-spacing:.05em}
  .cierre-txt .btn-p{width:100%;text-align:center}

  .barra{padding:11px 16px}
  .barra.pegada{padding:9px 16px}
  .logo span{font-size:16px}
  .barra .logo img{width:32px;height:32px}
  .barra nav a.wa{padding:9px 14px;font-size:13.5px}

  /* En celular las fotos van más pequeñas: a 214px solo cabían dos y no se
     leía como carrusel. A 132px caben casi tres y el movimiento se nota. */
  .ojo-tira img{width:132px;height:75px}
  .ojo-tira .nro{font-size:12.5px;left:6px;bottom:5px;padding:2px 6px}
  .ojo-tira .marca{font-size:11.5px;top:5px;right:5px;padding:1px 5px}
  /* Recorrido más corto, así que se acelera para que se vea igual de vivo. */
  .tira.andando{animation-duration:34s}

  .landing footer{padding:26px 0 44px}
  .landing .hoja{padding:0 18px}
}

/* Pantallas muy angostas (iPhone SE y parecidos). */
@media(max-width:380px){
  .hero h1{font-size:35px}
  .rejilla{gap:8px}
  .prod .d{-webkit-line-clamp:1}
  .seccion{padding:44px 15px}
}

/* ---------- agotados en el carrusel ---------- */
/* Salen, pero apagados: quien vio ese número en el flyer entiende de una que
   existe y que ahora no hay, sin tener que preguntar. */
.ojo-tira.sinstock{cursor:default}
.ojo-tira.sinstock img{filter:saturate(.15) brightness(.42)}
.ojo-tira.sinstock:hover img{filter:saturate(.15) brightness(.42)}
.ojo-tira .nro{position:absolute;left:8px;bottom:7px;font-family:Outfit,var(--sans);
               font-size:14px;font-weight:800;letter-spacing:-.01em;color:var(--texto);
               background:rgba(6,10,19,.72);padding:2px 7px;line-height:1.25}
.ojo-tira.sinstock .nro{color:#8c94a3;text-decoration:line-through;
                        text-decoration-color:#c0392b;text-decoration-thickness:2px}
.ojo-tira .marca{position:absolute;top:8px;right:8px;font-size:11.5px;font-weight:700;
                 letter-spacing:.06em;text-transform:uppercase;color:#e06055;
                 border:1px solid rgba(224,96,85,.5);padding:2px 6px;line-height:1.3;
                 background:rgba(6,10,19,.6)}

/* El botón flotante y su nube se mudaron a chat.css: son la misma pieza que
   el panel que abren, y ADEMÁS las páginas legales no cargan esta hoja —
   viviendo aquí, en ellas el botón salía sin estilo ninguno. */

/* ═══════════════ el personaje que camina sobre el carrusel ═══════════════ */
/* Hoja de 12 celdas CUADRADAS de 180x180, con el personaje centrado y con aire
   alrededor. El aire no es capricho: al escalar la hoja el navegador interpola
   y se traga pixeles de la celda vecina, y sin margen aparecia una linea del
   esqueleto de al lado. Con margen, lo que sangra es transparencia.
   Se anima con steps(12), que es como se anima un dibujo: cada cuadro salta al
   siguiente, sin desvanecer. Doce por segundo es la cadencia tradicional.

   Cuenta: celda cuadrada, asi que si el alto es N el ancho de la hoja es 12N y
   el paso final es exactamente -12N. */
.paseo{position:relative;height:0;z-index:2;pointer-events:none}
.caminante{position:absolute;bottom:-2px;left:0;width:92px;height:92px;
           background-image:url("/caminante.png");
           background-repeat:no-repeat;background-size:1104px 92px;
           /* El avance y la cadencia de las piernas van proporcionados: si se
              frena uno solo, el personaje patina como en el paso lunar. */
           animation:pisar 1.59s steps(12) infinite, pasear 30s linear infinite;
           filter:drop-shadow(0 3px 5px rgba(0,0,0,.6));
           /* La banda entera ignora el puntero para no estorbar al carrusel,
              pero el personaje sí lo recibe: es lo único que reacciona. */
           pointer-events:auto}
/* Se frena si le pasas el mouse por encima. Se pausan las DOS animaciones: si
   solo se frena el avance, sigue pataleando en el sitio como en el paso lunar.
   Va detrás de (hover:hover) porque en pantalla táctil el :hover se queda
   pegado después de tocar, y el personaje quedaría congelado para siempre. */
@media(hover:hover){
  .caminante:hover{animation-play-state:paused,paused}
}
@keyframes pisar{from{background-position:0 0}to{background-position:-1104px 0}}
/* Cruza, se voltea al llegar al borde y vuelve. */
@keyframes pasear{
  0%{transform:translateX(-100px) scaleX(1)}
  47%{transform:translateX(calc(100vw + 14px)) scaleX(1)}
  50%{transform:translateX(calc(100vw + 14px)) scaleX(-1)}
  97%{transform:translateX(-100px) scaleX(-1)}
  100%{transform:translateX(-100px) scaleX(1)}
}

/* OJO: un @keyframes con el mismo nombre dentro de un media query NO queda
   limitado a ese ancho, pisa al de arriba en todas las pantallas. Por eso el
   de celular lleva su propio nombre. */
@media(max-width:760px){
  .caminante{width:78px;height:78px;background-size:936px 78px;
             animation-name:pisar-movil,pasear}
}
@keyframes pisar-movil{from{background-position:0 0}to{background-position:-936px 0}}

@media(prefers-reduced-motion:reduce){ .paseo{display:none} }
