/* ==========================================================================
   COMBATBOTS — sitio público.
   Marca de entretenimiento: vídeo a sangre, tipografía enorme, texto mínimo.
   Negro, un solo acento, y el movimiento como parte del mensaje.
   ========================================================================== */

:root {
  --ink:    #08080A;
  --paper:  #F7F6F3;
  --accent: #FF3B0F;
  --dim:    #8C8C90;
  --faint:  #4A4A4E;
  --hair:   rgba(247, 246, 243, .13);

  --sans: "Helvetica Neue", Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
  --mono: ui-monospace, Menlo, "SF Mono", Consolas, monospace;

  --pad:  clamp(22px, 5.5vw, 90px);
  --maxw: 1400px;
}

* { margin: 0; padding: 0; box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  background: var(--ink);
  color: var(--paper);
  font-family: var(--sans);
  font-variant-numeric: tabular-nums;
  -webkit-font-smoothing: antialiased;
  line-height: 1.45;
}
img, video { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
::selection { background: var(--accent); color: #fff; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }

/* ---------- tipografía de marca ---------- */

.huge {                                   /* logotipo y frases de pantalla */
  font-size: clamp(58px, 15.5vw, 240px);
  line-height: .86;
  letter-spacing: -.05em;
  font-weight: 700;
  text-transform: uppercase;
}
.big {                                    /* titulares de sección */
  font-size: clamp(34px, 7.2vw, 104px);
  line-height: .96;
  letter-spacing: -.04em;
  font-weight: 700;
}
.mid { font-size: clamp(22px, 3.4vw, 44px); line-height: 1.12; letter-spacing: -.03em; font-weight: 600; }
.lab {
  font-family: var(--mono);
  font-size: clamp(9.5px, 1vw, 11px);
  letter-spacing: .24em;
  text-transform: uppercase;
  color: var(--dim);
}
.lab.acc { color: var(--accent); }
.dimtxt { color: var(--dim); font-size: clamp(14px, 1.6vw, 17px); line-height: 1.55; max-width: min(46ch, 100%); }
.acc { color: var(--accent); }

/* ---------- nav ---------- */

nav.top {
  position: fixed; inset: 0 0 auto 0; z-index: 60;
  display: flex; align-items: center; gap: 20px;
  padding: 18px var(--pad);
  color: var(--paper);
  background: linear-gradient(180deg, rgba(8,8,10,.78), rgba(8,8,10,0));
}
nav.top a { text-shadow: 0 1px 12px rgba(0,0,0,.5); }
nav.top .mark { font-weight: 700; letter-spacing: -.02em; font-size: 15px; text-transform: uppercase; }
nav.top .links { margin-left: auto; display: flex; gap: 22px; }
nav.top a.ln { font-family: var(--mono); font-size: 10.5px; letter-spacing: .18em; text-transform: uppercase; }
nav.top a.ln:hover { color: var(--accent); }
@media (max-width: 780px) { nav.top .links a:not(.keep) { display: none; } }

/* El CTA del nav en la página de producto va como píldora, no como enlace más:
   la nav es fija, así que es la única llamada a comprar que está siempre a la
   vista. En la portada no —allí el nav navega y la llamada es el correo—. */
nav.top a.ln.cta {
  background: var(--accent); color: #fff; border-radius: 100px;
  padding: 9px 18px; margin: -9px 0; text-shadow: none;
}
nav.top a.ln.cta:hover { color: #fff; filter: brightness(1.1); }

/* ---------- secciones a sangre ---------- */

.screen { position: relative; min-height: 100svh; display: flex; overflow: clip; }
.screen.tall { min-height: 118svh; }
.bleed { position: absolute; inset: 0; z-index: 0; }
.bleed img, .bleed video { width: 100%; height: 100%; object-fit: cover; }
.veil::after {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(180deg, rgba(8,8,10,.72) 0%, rgba(8,8,10,.34) 42%, rgba(8,8,10,.92) 100%);
}
.veil.hard::after { background: rgba(8,8,10,.62); }
/* El velo por defecto aclara el centro, que va bien cuando el texto se apoya
   abajo (portada). Con el texto centrado hace falta peso en el medio. */
.veil.deep::after {
  background: linear-gradient(180deg, rgba(8,8,10,.9) 0%, rgba(8,8,10,.82) 50%, rgba(8,8,10,.96) 100%);
}
/* Velo lateral: oscurece el lado del texto y deja respirar la fotografía al otro.
   Necesario sobre imágenes claras, donde un velo plano legible las apaga del todo. */
.veil.side::after {
  background: linear-gradient(100deg, rgba(8,8,10,.97) 0%, rgba(8,8,10,.95) 46%,
                              rgba(8,8,10,.74) 74%, rgba(8,8,10,.48) 100%);
}
.inner { position: relative; z-index: 2; width: 100%; max-width: var(--maxw); margin: 0 auto;
         padding: clamp(78px, 9vh, 120px) var(--pad); display: flex; flex-direction: column; }
.inner.end { justify-content: flex-end; }
.inner.mid-v { justify-content: center; }

.block { padding: clamp(84px, 13vh, 170px) var(--pad); }
.block .inner { padding: 0; }

/* ---------- hero ---------- */

.hero .inner { justify-content: flex-end; gap: 22px; }
.hero h1 { font-size: clamp(56px, 14vw, 210px); }
.hero .tag { margin-top: 6px; color: var(--dim); max-width: min(30ch, 100%); }

/* el punto de la marca: círculo, no un punto tipográfico */
.dot-lg { display: inline-block; background: var(--accent); border-radius: 50%;
          width: .155em; height: .155em; margin-left: .085em; vertical-align: baseline; }
.dot-sm { display: inline-block; background: var(--accent); border-radius: 50%;
          width: 5px; height: 5px; margin-left: 3px; vertical-align: baseline; }
.hero .sub { display: flex; flex-wrap: wrap; gap: 8px 26px; align-items: baseline; }
.scrollcue { position: absolute; left: var(--pad); bottom: 26px; z-index: 3; display: flex; gap: 10px; align-items: center; }
.scrollcue span { font-family: var(--mono); font-size: 10px; letter-spacing: .22em; text-transform: uppercase; color: var(--dim); }
.scrollcue i { width: 1px; height: 34px; background: linear-gradient(180deg, var(--accent), transparent); display: block; }
@media (max-width: 640px) { .scrollcue { display: none; } }

/* ---------- manifiesto: líneas que entran al hacer scroll ---------- */

.mani { display: flex; flex-direction: column; gap: clamp(4px, 1vh, 12px); }
/* La tesis son cinco líneas: a la escala de titular no cabrían junto a misión y
   visión en una sola pantalla, así que baja un paso. */
.mani.big { font-size: clamp(28px, 5.4vw, 76px); }
.mani .ln { display: block; }
.mani .off { color: var(--faint); }

/* ---------- misión y visión, y pares de bloques ---------- */

.duo { display: grid; grid-template-columns: 1fr; gap: clamp(26px, 4vh, 44px);
       margin-top: clamp(34px, 6vh, 64px); padding-top: clamp(26px, 4vh, 40px);
       border-top: 1px solid var(--hair); }
@media (min-width: 780px) { .duo { grid-template-columns: 1fr 1fr; gap: 56px; } }
.duo .lab { margin-bottom: 10px; }
.duo .mid { max-width: 22ch; }

/* ---------- vídeo contenido ---------- */
/* El clip de la emisión ya trae su propio grafismo de realización, con marco
   incluido. A sangre se recortaba mal, así que va contenido y entero. */
.wide { max-width: var(--maxw); margin: clamp(34px, 6vh, 62px) auto 0; padding: 0 var(--pad); }
.wide video { width: 100%; aspect-ratio: 16/9; object-fit: cover; background: #000; }
.wide img { display: block; width: 100%; height: auto; }

/* ---------- cifras ---------- */

.figs { display: grid; grid-template-columns: 1fr; gap: clamp(38px, 6vh, 74px); }
@media (min-width: 820px) { .figs { grid-template-columns: repeat(3, 1fr); gap: 40px; } }
.fig .n { font-size: clamp(56px, 10vw, 132px); line-height: .88; letter-spacing: -.055em; font-weight: 700; }
.fig .t { margin-top: 14px; color: var(--dim); font-size: clamp(13px, 1.5vw, 16px); max-width: 24ch; line-height: 1.45; }

/* ---------- marquesina ---------- */

.marq { overflow: clip; border-top: 1px solid var(--hair); border-bottom: 1px solid var(--hair); padding: 22px 0; }
.marq .row { display: flex; gap: 46px; width: max-content; animation: slide 34s linear infinite; }
.marq b { font-size: clamp(20px, 3.4vw, 44px); font-weight: 700; letter-spacing: -.03em;
          text-transform: uppercase; white-space: nowrap; color: transparent;
          -webkit-text-stroke: 1px var(--faint); }
.marq b.on { color: var(--accent); -webkit-text-stroke: 0; }
@keyframes slide { to { transform: translateX(-50%); } }

/* ---------- tira de imágenes ---------- */

.strip { display: flex; gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory;
         padding: 0 var(--pad); scrollbar-width: none; }
.strip::-webkit-scrollbar { display: none; }
.strip figure { flex: 0 0 min(78vw, 620px); scroll-snap-align: center; }
.strip img { width: 100%; aspect-ratio: 16/9; object-fit: cover; }
.strip figcaption { margin-top: 10px; }

/* ---------- palabras de tecnología ---------- */

.words { display: flex; flex-wrap: wrap; gap: 10px 26px; margin-top: clamp(30px, 5vh, 56px); }
.words span {
  font-size: clamp(24px, 4.6vw, 62px); font-weight: 700; letter-spacing: -.038em;
  text-transform: uppercase; line-height: 1.02;
  color: transparent; -webkit-text-stroke: 1px var(--faint);
  transition: color .22s, -webkit-text-stroke-color .22s;
}
.words span:hover, .words span.lit { color: var(--paper); -webkit-text-stroke-color: transparent; }
.words span.key { color: var(--accent); -webkit-text-stroke: 0; }

/* ---------- precios ---------- */

.prices { display: grid; grid-template-columns: 1fr; gap: 1px; background: var(--hair); margin-top: clamp(34px, 6vh, 62px); }
@media (min-width: 800px) { .prices { grid-template-columns: repeat(3, 1fr); }
  .prices.two { grid-template-columns: repeat(2, 1fr); } }
.pr { background: var(--ink); padding: clamp(26px, 4vw, 42px) clamp(22px, 3vw, 34px); display: flex; flex-direction: column; gap: 10px; }
.pr .p { font-size: clamp(38px, 6vw, 72px); font-weight: 700; letter-spacing: -.05em; line-height: .95; }
.pr.hl .p { color: var(--accent); }
.pr .d { color: var(--dim); font-size: 14px; line-height: 1.5; margin-top: 6px; }
.pr .go { margin-top: auto; padding-top: 22px; font-family: var(--mono); font-size: 10.5px;
          letter-spacing: .18em; text-transform: uppercase; color: var(--accent); }
.pr:hover .go { text-decoration: underline; }

/* ---------- fechas ---------- */

.dates { margin-top: clamp(30px, 5vh, 56px); border-top: 1px solid var(--hair); }
.dates a, .dates div.row { display: grid; grid-template-columns: 1fr auto; gap: 6px 24px;
        padding: clamp(20px, 3vh, 32px) 0; border-bottom: 1px solid var(--hair); align-items: baseline; }
.dates .city { font-size: clamp(26px, 4.6vw, 58px); font-weight: 700; letter-spacing: -.04em; text-transform: uppercase; line-height: 1; }
.dates .when { font-family: var(--mono); font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--accent); }
.dates .row:hover .city { color: var(--accent); }

/* ---------- cierre ---------- */

.mail { display: inline-block; align-self: flex-start; margin-top: clamp(26px, 4vh, 44px);
        font-size: clamp(18px, 3.2vw, 40px); font-weight: 600; letter-spacing: -.03em;
        border-bottom: 2px solid var(--accent); padding-bottom: 5px; }
.mail:hover { color: var(--accent); }

/* ---------- pie ---------- */

footer { padding: clamp(46px, 7vh, 80px) var(--pad) 40px; border-top: 1px solid var(--hair); }
footer .inner { max-width: var(--maxw); margin: 0 auto; display: flex; flex-wrap: wrap; gap: 26px 40px; }
footer .socials { display: flex; flex-wrap: wrap; gap: 20px; margin-left: auto; }
footer a.s { font-family: var(--mono); font-size: 10.5px; letter-spacing: .18em; text-transform: uppercase; color: var(--dim); }
footer a.s:hover { color: var(--paper); }
footer .fine { width: 100%; font-size: 11.5px; line-height: 1.65; color: var(--faint); max-width: 88ch; }

/* ---------- entradas al hacer scroll ---------- */

.rise { opacity: 0; transform: translateY(22px); transition: opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1); }
.rise.in { opacity: 1; transform: none; }
.rise.d1 { transition-delay: .07s } .rise.d2 { transition-delay: .14s }
.rise.d3 { transition-delay: .21s } .rise.d4 { transition-delay: .28s }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .rise { opacity: 1; transform: none; transition: none; }
  .marq .row { animation: none; }
  .words span { color: var(--paper); -webkit-text-stroke: 0; }
}

.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }


/* ==========================================================================
   Página de kits
   ========================================================================== */

.kit-h1 { font-size: clamp(46px, 11vw, 168px); }

/* botones sólo de esta página: el resto del sitio usa el correo como llamada */
.btnk {
  display: inline-block; font-size: 14.5px; font-weight: 600; letter-spacing: -.01em;
  padding: 14px 26px; border-radius: 100px; margin: 0 10px 10px 0;
  background: var(--accent); color: #fff; border: 1px solid var(--accent);
}
.btnk:hover { filter: brightness(1.1); }
.btnk.ghost { background: transparent; color: var(--paper); border-color: var(--hair); }
.btnk.ghost:hover { border-color: var(--paper); }

/* tres promesas */
.three { display: grid; grid-template-columns: 1fr; gap: clamp(30px, 5vh, 52px); }
@media (min-width: 800px) { .three { grid-template-columns: repeat(3, 1fr); gap: 46px; } }
.three .mid { margin-top: 12px; max-width: 20ch; }
.three .dimtxt { margin-top: 12px; }

/* nota de matiz, más visible que .note pero sin gritar */
.note-k {
  margin-top: clamp(26px, 4vh, 42px); padding-left: 16px;
  border-left: 2px solid var(--accent);
  font-size: clamp(13px, 1.5vw, 15px); line-height: 1.6; color: var(--dim);
  max-width: min(62ch, 100%);
}
.note-k strong { color: var(--paper); font-weight: 600; }

/* antes / después */
.vs { display: grid; grid-template-columns: 1fr; gap: clamp(28px, 4vh, 46px);
      margin-top: clamp(34px, 5vh, 56px); padding-top: clamp(26px, 4vh, 38px);
      border-top: 1px solid var(--hair); }
@media (min-width: 780px) { .vs { grid-template-columns: 1fr 1fr; gap: 56px; } }
.lst { list-style: none; margin-top: 16px; display: flex; flex-direction: column; gap: 11px; }
.lst li { position: relative; padding-left: 20px; font-size: clamp(14px, 1.6vw, 16.5px);
          line-height: 1.5; color: var(--dim); }
.lst li::before { content: ""; position: absolute; left: 0; top: .62em;
                  width: 8px; height: 1.5px; background: var(--faint); }
.lst.on li { color: var(--paper); }
.lst.on li::before { background: var(--accent); }

/* dos clips verticales lado a lado */
.duoclip { display: grid; grid-template-columns: 1fr; gap: 14px;
           max-width: var(--maxw); margin: clamp(30px, 5vh, 54px) auto 0; padding: 0 var(--pad); }
@media (min-width: 700px) { .duoclip { grid-template-columns: 1fr 1fr; gap: 18px; } }
.duoclip video { width: 100%; aspect-ratio: 4/5; object-fit: cover; background: #000; }
.duoclip figcaption { margin-top: 10px; }

/* diagramas vectoriales ------------------------------------------------------
   Un esquema con rótulos de 15 px no sobrevive a reducirse a 360 px de ancho:
   se vuelve ilegible y deja de servir para nada. Así que en pantalla estrecha
   no se encoge, se desliza —y se dice que se puede deslizar—. */

.dia { max-width: var(--maxw); margin: clamp(30px, 5vh, 54px) auto 0; padding: 0 var(--pad); }
.diaw { overflow-x: auto; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; }
.dia img { display: block; width: 100%; min-width: 860px; height: auto;
           border: 1px solid var(--hair); }
.dia figcaption { margin-top: 12px; }
.diaw::-webkit-scrollbar { height: 5px; }
.diaw::-webkit-scrollbar-thumb { background: var(--faint); border-radius: 3px; }
.dia .swipe { display: none; }
@media (max-width: 900px) { .dia .swipe { display: inline; } }

/* cuatro puntos numerados, 2×2 en pantalla ancha */
.quad { display: grid; grid-template-columns: 1fr; margin-top: clamp(30px, 5vh, 54px);
        border-top: 1px solid var(--hair); }
@media (min-width: 800px) { .quad { grid-template-columns: 1fr 1fr; } }
.quad > div { padding: clamp(22px, 3.4vh, 34px) 0; border-bottom: 1px solid var(--hair);
              display: grid; grid-template-columns: 34px 1fr; gap: 4px 12px; align-items: start; }
@media (min-width: 800px) { .quad > div:nth-child(odd) { padding-right: 46px; }
  .quad > div:nth-child(even) { padding-left: 46px; border-left: 1px solid var(--hair); } }
.quad .n { font-family: var(--mono); font-size: 10.5px; letter-spacing: .18em;
           color: var(--accent); line-height: 1.9; }
.quad h3 { font-size: clamp(19px, 2.4vw, 26px); font-weight: 600; letter-spacing: -.025em; line-height: 1.15; }
.quad p { grid-column: 2; color: var(--dim); font-size: clamp(13.5px, 1.5vw, 15.5px);
          line-height: 1.55; margin-top: 8px; max-width: 40ch; }

/* preguntas frecuentes */
.faq { margin-top: clamp(30px, 5vh, 54px); border-top: 1px solid var(--hair); }
.faq details { border-bottom: 1px solid var(--hair); }
.faq summary {
  cursor: pointer; list-style: none; padding: clamp(18px, 2.6vh, 26px) 40px clamp(18px, 2.6vh, 26px) 0;
  position: relative; font-size: clamp(16px, 2.1vw, 21px); font-weight: 600; letter-spacing: -.02em;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
  content: "+"; position: absolute; right: 6px; top: 50%; transform: translateY(-50%);
  font-weight: 400; color: var(--accent); font-size: 1.35em; line-height: 1;
}
.faq details[open] summary::after { content: "–"; }
.faq summary:hover { color: var(--accent); }
.faq p { padding: 0 0 clamp(20px, 3vh, 28px); color: var(--dim);
         font-size: clamp(14px, 1.6vw, 16.5px); line-height: 1.6; max-width: min(64ch, 100%); }
