/* DevNetSolutions — «el tablero»: la página es un tablero de fichas encajadas, como el bloque de 125 IP que vende.
   Verde bosque, negro y blanco; el lima solo en la acción, la calculadora y la marca del cierre. */
@font-face { font-family: "Schibsted"; src: url("/fuentes/schibsted.woff2") format("woff2"); font-weight: 400 900; font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Schibsted"; src: url("/fuentes/schibsted-ext.woff2") format("woff2"); font-weight: 400 900; font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }

:root {
  --bg: #0f1f10; --surface: #162a17; --ink: #ffffff; --muted: #b4bcb4;
  --accent: #c6f19d; --accent-ink: #0f1f10;
  --negro: #000000; --blanco: #ffffff; --blanco-ink: #0f1f10;
  --e1: #123316; --e2: #21482a; --e3: #3a6b3c; --e4: #9cc58f;
  --radio: 6px; --hueco: 8px; --margen: 10px;
  --step-small: clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem);
  --step-body: clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem);
  --step-lead: clamp(1.375rem, 1rem + 1.3vw, 2.25rem);
  --step-head: clamp(2rem, 1.3rem + 3.2vw, 4rem);
  --step-display: clamp(3.25rem, 1rem + 7.4vw, 8.5rem);
  --sale: cubic-bezier(0.2, 0.7, 0.2, 1);
}
* { box-sizing: border-box; }
html { background: var(--bg); color: var(--ink); scroll-behavior: smooth; }
body { margin: 0; font-family: "Schibsted", system-ui, sans-serif; font-size: var(--step-body); line-height: 1.45; letter-spacing: -0.01em;
  -webkit-font-smoothing: antialiased; }
/* Números de ancho fijo solo donde se alinean: en esta letra también ensanchan los puntos y las comas. */
.paso-numero, .calc-total, .precio-grande, .plan-precio, .ui-ip { font-variant-numeric: tabular-nums; }
h1, h2, h3, p, ul { margin: 0; }
a { color: inherit; text-underline-offset: 0.18em; }
a:hover { text-decoration-thickness: 2px; }
:focus-visible { outline: 3px solid var(--accent); outline-offset: 3px; }
::selection { background: var(--accent); color: var(--accent-ink); }
strong { font-weight: 800; }

/* ── Botones: planos, un solo color, la misma esquina en toda la página ── */
.boton { display: inline-flex; align-items: center; justify-content: center; min-height: 52px; padding: 0 24px; border: 0; border-radius: var(--radio);
  background: var(--bg); color: var(--accent); font: inherit; font-weight: 700; text-decoration: none; cursor: pointer;
  transition: transform 160ms var(--sale), background-color 160ms; }
.boton:hover { background: #000; text-decoration: none; }
.boton:active { transform: scale(0.97); }
.boton-claro { background: var(--blanco); color: var(--blanco-ink); }
.boton-chico { min-height: 44px; padding: 0 18px; background: var(--accent); color: var(--accent-ink); }
.boton-chico:hover { background: var(--blanco); }
.enlace-fuerte { font-weight: 700; }

/* ── El tablero de arriba ── */
.tablero { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--hueco); padding: var(--margen); }
.ficha { background: var(--surface); border-radius: var(--radio); padding: 24px; min-width: 0; }
.tablero-inicio { grid-auto-rows: minmax(100px, auto);
  grid-template-areas:
    "n n n n n n n n a a a a" "n n n n n n n n a a a a" "n n n n n n n n a a a a"
    "b b b b b b b d d d d d" "b b b b b b b d d d d d" "b b b b b b b d d d d d"
    "b b b b b b b i i i p p" "b b b b b b b i i i p p"; }
.f-nombre { grid-area: n; display: flex; flex-direction: column; justify-content: space-between; gap: 24px; }
.nombre { font-size: var(--step-display); font-weight: 800; letter-spacing: -0.05em; line-height: 0.88; }
.enlaces { display: flex; flex-wrap: wrap; gap: 8px 28px; font-weight: 600; }
.enlaces a { text-decoration: none; min-height: 44px; display: inline-flex; align-items: center; }
.enlaces a:hover { text-decoration: underline; }
.f-accion { grid-area: a; background: var(--accent); color: var(--accent-ink); display: flex; flex-direction: column; justify-content: space-between; gap: 24px; }
.grande { font-size: var(--step-lead); font-weight: 800; letter-spacing: -0.03em; line-height: 1.05; }
.acciones { display: flex; flex-direction: column; align-items: flex-start; gap: 14px; }
.f-bloque { grid-area: b; background: var(--negro); display: flex; flex-direction: column; gap: 22px; }
.bloque-cabeza { display: flex; flex-direction: column; gap: 8px; max-width: 46ch; }
.titulo-ficha { font-size: var(--step-head); font-weight: 800; letter-spacing: -0.04em; line-height: 0.95; }
.leyenda { display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: var(--step-small); font-weight: 600; color: var(--muted); }
.leyenda span { display: inline-flex; align-items: center; gap: 8px; }
.leyenda i { width: 12px; height: 12px; border-radius: 2px; }
.cuadricula { display: grid; grid-template-columns: repeat(25, minmax(0, 1fr)); gap: 4px; }
.cuadricula span { aspect-ratio: 1; border-radius: 2px; transition: background-color 260ms var(--sale), transform 260ms var(--sale); }
.u { background: #4d544d; } .l { background: #234a27; } .s { background: var(--accent); }
.cuadricula .s { transform: scale(0.86); }
.calculadora { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 10px 24px; }
.paso { display: flex; align-items: center; gap: 6px; }
.paso-boton { width: 52px; height: 52px; border: 0; border-radius: var(--radio); background: var(--accent); color: var(--accent-ink); font: inherit;
  font-size: var(--step-lead); font-weight: 800; cursor: pointer; transition: transform 140ms var(--sale); }
.paso-boton:hover { background: var(--blanco); }
.paso-boton:active { transform: scale(0.92); }
.paso-numero { min-width: 2.2ch; text-align: center; font-size: var(--step-head); font-weight: 800; letter-spacing: -0.04em; }
.calc-total { font-size: var(--step-lead); font-weight: 800; letter-spacing: -0.03em; line-height: 1.05; }
.calc-nota { grid-column: 1 / -1; color: var(--muted); }
.f-declaracion { grid-area: d; background: var(--blanco); color: var(--blanco-ink); display: flex; align-items: flex-end; }
.declaracion { font-size: var(--step-lead); font-weight: 700; letter-spacing: -0.03em; line-height: 1.1; max-width: 22ch; }
.f-tarjeta { grid-area: i; padding: 0; overflow: hidden; display: flex; align-items: flex-end; justify-content: flex-end; background: var(--e2); }
.f-precio { grid-area: p; background: var(--negro); display: flex; flex-direction: column; justify-content: flex-end; }
.precio-chico { font-weight: 600; color: var(--muted); }
.precio-grande { font-size: var(--step-head); font-weight: 800; letter-spacing: -0.05em; line-height: 0.95; }

/* ── Fragmentos de la cuenta del cliente (interfaz real, en claro) ── */
[data-ui] { background: #f6f7f9; color: #14171c; font-size: var(--step-small); font-weight: 600; letter-spacing: 0; }
.ui-tarjeta { width: 92%; min-height: 100%; padding: 18px; border-radius: var(--radio) 0 0 0; display: grid; grid-template-columns: 1fr auto; gap: 6px 14px; align-items: center; }
.ui-ip { font-size: var(--step-body); font-weight: 800; letter-spacing: -0.02em; }
.ui-linea { grid-column: 1; display: flex; align-items: center; gap: 8px; color: #166534; }
.ui-punto { display: inline-block; width: 9px; height: 9px; border-radius: 50%; background: #16a34a; }
.ui-qr { grid-row: 1 / span 3; grid-column: 2; width: 92px; height: 92px; }
.ui-boton { grid-column: 1; justify-self: start; padding: 8px 12px; border-radius: var(--radio); background: #0f766e; color: #fff; }

.seccion { padding: clamp(96px, 12vw, 180px) var(--margen) 0; }
.titulo-seccion { font-size: var(--step-head); font-weight: 800; letter-spacing: -0.04em; line-height: 0.95; margin-bottom: 56px; }

.celdas { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--hueco); }
.celda { background: var(--surface); border-radius: var(--radio); min-height: 440px; overflow: hidden; display: flex; flex-direction: column; justify-content: space-between; }
.celda-texto { padding: 24px; max-width: 38ch; }
.celda-texto h3 { font-size: var(--step-lead); font-weight: 800; letter-spacing: -0.03em; line-height: 1.05; margin-bottom: 12px; }
.celda-texto p { color: var(--muted); }
.celda-ui { align-self: flex-end; width: 86%; min-height: 220px; border-radius: var(--radio) 0 0 0; padding: 20px; display: flex; flex-direction: column; justify-content: center; }
.celda-alrevés .celda-ui { align-self: flex-start; border-radius: 0 0 var(--radio) 0; }
.ui-lista { display: flex; flex-direction: column; gap: 10px; }
.ui-lista span { display: flex; justify-content: space-between; padding: 12px 14px; background: #fff; border-radius: var(--radio); font-size: var(--step-body); font-weight: 700; }
.ui-lista em { font-style: normal; font-size: 13px; color: #166534; background: #dcfce7; padding: 2px 10px; border-radius: 999px; }
.ui-tunel { display: flex; flex-direction: column; gap: 8px; font-size: 15px; }
.ui-tunel strong { font-size: 20px; }
.ui-tunel span { display: flex; align-items: center; gap: 8px; }
.ui-velocidad { display: flex; flex-direction: column; gap: 10px; }
.ui-barra { height: 18px; background: #e3e6ea; border-radius: 999px; overflow: hidden; }
.ui-barra span { display: block; height: 100%; width: 100%; background: #0f766e; transform-origin: left; }
.ui-escala { display: flex; justify-content: space-between; color: #4b5563; }
.ui-equipos { display: flex; flex-wrap: wrap; gap: 8px; }
.ui-equipos span { padding: 10px 14px; border-radius: var(--radio); background: #fff; }
.ui-equipos .activo { background: #14171c; color: #fff; }
.celda-ui pre { margin: 0; font-family: ui-monospace, "Cascadia Mono", Consolas, monospace; font-size: 14px; line-height: 1.5; white-space: pre; overflow: hidden; }
.ui-qr-grande { display: block; width: 180px; height: 180px; background: #fff; padding: 8px; border-radius: var(--radio); }

.intro { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--hueco); margin-bottom: 64px; }
.intro .titulo-seccion { grid-column: 1 / 6; margin: 0; }
.intro-texto { grid-column: 7 / 12; font-size: var(--step-body); }
.acordeon { display: flex; height: 520px; border-radius: var(--radio); overflow: hidden; }
.etapa { position: relative; overflow: hidden; flex: 1 1 0; min-width: 72px; transition: flex-grow 450ms var(--sale), flex-basis 450ms var(--sale); }
.etapa:has(input:checked) { flex: 0 0 58%; }
.e1 { background: var(--e1); } .e2 { background: var(--e2); } .e3 { background: var(--e3); } .e4 { background: var(--e4); color: var(--blanco-ink); }
.etapa input { position: absolute; opacity: 0; pointer-events: none; }
.etapa label { position: absolute; inset: 0; display: flex; align-items: flex-end; padding: 24px; cursor: pointer; font-weight: 800; font-size: var(--step-body); }
.etapa label { writing-mode: vertical-rl; transform: rotate(180deg); justify-content: flex-start; align-items: flex-start; }
.etapa input:focus-visible + label { outline: 3px solid var(--accent); outline-offset: -6px; }
.etapa:has(input:checked) label { opacity: 0; }
.etapa-cuerpo { position: absolute; top: 0; bottom: 0; left: 0; width: calc((100vw - 20px) * 0.58); padding: 32px; display: flex; flex-direction: column; justify-content: space-between; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity 300ms, visibility 0s 300ms; }
.etapa:has(input:checked) .etapa-cuerpo { opacity: 1; visibility: visible; transition: opacity 300ms 150ms, visibility 0s; }
.etapa-cuerpo h3 { font-size: var(--step-lead); font-weight: 800; letter-spacing: -0.03em; line-height: 1; }
.etapa-cuerpo p { max-width: 36ch; font-size: var(--step-body); }

.planes { position: relative; display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--hueco); align-items: end; min-height: 600px; }
.titulo-planes { position: absolute; top: 0; left: 0; margin: 0; max-width: 60%; }
.plan { grid-row: 1; border-radius: var(--radio); overflow: hidden; display: flex; flex-direction: column; padding: 28px 28px 0; gap: 4px; }
.plan h3 { font-size: var(--step-lead); font-weight: 800; letter-spacing: -0.03em; }
.plan-precio { font-size: var(--step-head); font-weight: 800; letter-spacing: -0.05em; line-height: 1; margin-top: 8px; }
.plan-unidad { font-weight: 600; margin-bottom: 18px; }
.plan ul { list-style: none; padding: 0; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.plan-boton { display: flex; align-items: center; min-height: 64px; margin: 24px -28px 0; padding: 0 28px; font-weight: 800; text-decoration: none; transition: background-color 160ms; }
.p1 { grid-column: 1 / 5; height: 360px; background: var(--surface); } .p1 .plan-boton { background: #0a170b; }
.p2 { grid-column: 5 / 9; height: 480px; background: var(--blanco); color: var(--blanco-ink); } .p2 .plan-boton { background: #dfe7dc; }
.p3 { grid-column: 9 / 13; height: 600px; background: var(--negro); } .p3 .plan-boton { background: var(--accent); color: var(--accent-ink); }
.p1 .plan-boton:hover { background: #000; } .p2 .plan-boton:hover { background: #cbd8c6; } .p3 .plan-boton:hover { background: var(--blanco); }

.preguntas { margin-top: clamp(96px, 12vw, 180px); }
.banda { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--hueco); padding: 56px var(--margen); }
.banda h3 { grid-column: 1 / 6; font-size: var(--step-lead); font-weight: 800; letter-spacing: -0.03em; line-height: 1.05; padding-left: 14px; }
.banda p { grid-column: 7 / 13; font-size: var(--step-body); line-height: 1.5; max-width: 60ch; padding-right: 14px; }
.banda-a { background: var(--bg); } .banda-b { background: var(--surface); }
.banda-titulo { background: var(--accent); color: var(--accent-ink); min-height: 40svh; align-items: end; }
.banda-titulo h2 { grid-column: 1 / -1; font-size: var(--step-display); font-weight: 800; letter-spacing: -0.05em; line-height: 0.88; padding-left: 14px; }

.cierre { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 14px; margin: clamp(96px, 12vw, 180px) 0 0; padding: 0 var(--margen); }
.cierre > * { height: 360px; border-radius: var(--radio); }
.lado-1 { grid-column: 1 / 3; background: var(--blanco); margin-left: calc(var(--margen) * -1); border-radius: 0 var(--radio) var(--radio) 0; }
.lado-2 { grid-column: 11 / 13; background: var(--negro); margin-right: calc(var(--margen) * -1); border-radius: var(--radio) 0 0 var(--radio); padding: 20px; overflow: hidden; }
.lado-2 .cuadricula { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; }
.cierre-centro { grid-column: 3 / 11; background: var(--accent); color: var(--accent-ink); padding: 40px; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 16px; }
.cierre-centro h2 { font-size: var(--step-lead); font-weight: 800; letter-spacing: -0.03em; line-height: 1; }
.cierre-centro p { max-width: 52ch; }

.pie { margin-top: clamp(96px, 12vw, 180px); padding: 0 var(--margen) 24px; }
.marca-bloques { display: flex; align-items: flex-end; gap: 4px; height: 34svh; min-height: 220px; }
.marca-bloques span { flex: 1 1 0; display: flex; align-items: flex-end; justify-content: center; padding-bottom: 0.08em; border-radius: var(--radio) var(--radio) 0 0;
  font-size: var(--step-display); font-weight: 800; line-height: 0.9; letter-spacing: -0.05em; overflow: hidden; }
.marca-bloques .corte { display: none; }
.b0 { background: var(--accent); color: var(--bg); } .b1 { background: var(--e3); color: var(--accent); }
.b2 { background: var(--blanco); color: var(--bg); } .b3 { background: var(--negro); color: var(--accent); }
.pie-columnas { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--hueco); margin-top: 56px; font-size: var(--step-small); }
.pie-columnas nav { grid-column: span 2; display: flex; flex-direction: column; gap: 2px; }
.pie-columnas nav a { min-height: 36px; display: inline-flex; align-items: center; text-decoration: none; }
.pie-columnas nav a:hover { text-decoration: underline; }
.pie-contacto { grid-column: 9 / 13; display: flex; flex-direction: column; gap: 6px; }
.pie-final { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin-top: 48px; font-size: var(--step-small); }

/* ── Registro, entrar y contraseña ── */
.tablero-cuenta { min-height: 100svh; grid-template-rows: 1fr; }
.f-form { grid-column: 1 / 8; background: var(--blanco); color: var(--blanco-ink); padding: clamp(24px, 4vw, 56px); display: flex; flex-direction: column; gap: 20px; }
.f-lado { grid-column: 8 / 13; display: flex; flex-direction: column; justify-content: flex-end; gap: 16px; padding: clamp(24px, 4vw, 48px); }
.f-lado p:not(.grande) { color: var(--muted); max-width: 40ch; }
.marca-chica { font-weight: 800; font-size: var(--step-body); letter-spacing: -0.02em; text-decoration: none; }
.formulario { display: flex; flex-direction: column; gap: 14px; max-width: 460px; }
.formulario label { display: flex; flex-direction: column; gap: 6px; font-weight: 600; font-size: var(--step-small); }
.formulario input:not([type="checkbox"]) { min-height: 50px; padding: 0 14px; border: 1px solid #9fae9b; border-radius: var(--radio); background: #f3f6f1; font: inherit; color: inherit; }
.formulario input:focus { outline: 3px solid #3a6b3c; outline-offset: 1px; }
.formulario .casilla { flex-direction: row; align-items: center; gap: 10px; }
.casilla input { width: 22px; height: 22px; accent-color: #0f1f10; }
.formulario .boton { align-self: flex-start; }
.pie-form { font-weight: 600; }
.aviso { padding: 12px 16px; border-radius: var(--radio); font-weight: 600; max-width: 460px; }
.aviso.bien { background: #dcfce7; color: #166534; } .aviso.mal { background: #fee4e2; color: #b42318; } .aviso.ojo { background: #fef3c7; color: #92400e; }
.enlace-copiar { word-break: break-all; font-weight: 400; }

/* ── Movimiento: solo transform y opacidad, y nada se queda escondido sin JavaScript ── */
.js [data-entra] { opacity: 0; transform: translateY(24px); }
.js [data-entra].visto { opacity: 1; transform: none; transition: opacity 640ms var(--sale) var(--retraso, 0ms), transform 640ms var(--sale) var(--retraso, 0ms); }
.obturador { overflow: hidden; }
.js .f-bloque.visto .obturador { animation: obturar 1100ms var(--sale) 200ms both; }
.js .f-bloque.visto .obturador .cuadricula { animation: asentar 1300ms var(--sale) 200ms both; }
@keyframes obturar { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }
@keyframes asentar { from { transform: scale(1.12); } to { transform: none; } }
.ui-punto { animation: latido 2.4s ease-in-out infinite; }
@keyframes latido { 50% { transform: scale(0.6); opacity: 0.55; } }
.celda.visto .ui-barra span { animation: llenar 1400ms var(--sale) 300ms both; }
@keyframes llenar { from { transform: scaleX(0.08); } to { transform: none; } }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .js [data-entra] { opacity: 1; transform: none; }
  html { scroll-behavior: auto; }
}

/* ── Teléfono: el tablero se rearma a dos columnas, con el nombre y la acción primero ── */
@media (max-width: 860px) {
  .tablero-inicio { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: auto;
    grid-template-areas: "n n" "a a" "d d" "b b" "i p"; }
  .f-nombre { min-height: 40svh; }
  .nombre { font-size: 15vw; }
  .cuadricula { grid-template-columns: repeat(13, minmax(0, 1fr)); gap: 3px; }
  .f-tarjeta { min-height: 220px; }
  .ui-tarjeta { width: 100%; border-radius: 0; grid-template-columns: 1fr; }
  .ui-qr { grid-row: auto; grid-column: 1; }
  .celdas { grid-template-columns: 1fr; gap: 6px; }
  .celda { min-height: 0; }
  .celda-alrevés { flex-direction: column-reverse; }
  .celda-alrevés .celda-ui { align-self: flex-start; border-radius: 0 var(--radio) 0 0; }
  .intro { grid-template-columns: 1fr; gap: 16px; }
  .intro .titulo-seccion, .intro-texto { grid-column: 1; }
  .acordeon { flex-direction: column; height: auto; }
  .etapa, .etapa:has(input:checked) { flex: none; min-height: 64px; }
  .etapa label { position: static; writing-mode: horizontal-tb; transform: none; min-height: 64px; align-items: center; padding: 0 20px; }
  .etapa:has(input:checked) label { display: none; }
  .etapa-cuerpo { position: static; width: auto; display: none; padding: 20px; gap: 12px; }
  .etapa:has(input:checked) .etapa-cuerpo { display: flex; }
  .planes { grid-template-columns: 1fr; min-height: 0; gap: var(--hueco); }
  .titulo-planes { position: static; max-width: none; margin-bottom: 16px; }
  .plan, .p1, .p2, .p3 { grid-column: 1; grid-row: auto; height: auto; }
  .banda { grid-template-columns: 1fr; padding: 32px 20px; gap: 12px; }
  .banda h3, .banda p { grid-column: 1; padding: 0; }
  .banda-titulo { min-height: 30svh; }
  .banda-titulo h2 { padding: 0; }
  .cierre { grid-template-columns: 1fr 1fr; gap: var(--hueco); }
  .cierre > * { height: auto; }
  .cierre-centro { grid-column: 1 / -1; grid-row: 1; padding: 28px; min-height: 300px; }
  .lado-1, .lado-2 { grid-row: 2; height: 120px; margin: 0; border-radius: var(--radio); }
  .lado-1 { grid-column: 1; } .lado-2 { grid-column: 2; }
  .marca-bloques { flex-wrap: wrap; height: auto; min-height: 0; row-gap: 4px; }
  .marca-bloques .corte { display: block; flex-basis: 100%; height: 0; }
  .marca-bloques span:not(.corte) { height: 11svh !important; min-height: 72px; }
  .pie-columnas { grid-template-columns: 1fr 1fr; }
  .pie-columnas nav { grid-column: span 1; }
  .pie-contacto { grid-column: 1 / -1; }
  .tablero-cuenta { grid-template-columns: 1fr; grid-template-rows: auto; }
  .f-form, .f-lado { grid-column: 1; }
}
