/* v0.24 · sector inline en el H1 (mismo cuerpo que el titular) + hero proporcionado */
.h1-sector {
  -webkit-text-fill-color: var(--blue);
  text-fill-color: var(--blue);
  color: var(--blue);
}
/* aire proporcional L/R y T/B; el titular usa el ancho disponible en 16" */
.hero-mesh { padding-block: clamp(2.5rem, 7vh, 6rem); }
.hero-mesh .container { padding-inline: clamp(28px, 6vw, 112px); }
.hero-mesh h1 { max-width: 16em; text-wrap: balance; }
.hero-mesh .lead { margin-top: 1.6rem; max-width: 40em; }
.hero-ctas { margin-top: 2.6rem; }
@media (min-width: 1024px) and (max-height: 900px) {
  .hero-mesh       { padding-block: clamp(1.5rem, 4vh, 3rem); }
  .hero-mesh h1    { font-size: clamp(2.5rem, 4vw, 3.8rem); }
  .hero-mesh .lead { font-size: clamp(1.16rem, 1.5vw, 1.36rem); margin-top: 1.2rem; }
  .hero-ctas       { margin-top: 1.9rem; }
}
@media (min-width: 1024px) and (max-height: 760px) {
  .hero-mesh h1    { font-size: clamp(2.2rem, 3.4vw, 3.2rem); }
  .hero-mesh .lead { font-size: 1.12rem; margin-top: 1rem; }
  .hero-ctas       { margin-top: 1.4rem; }
}
/* fin v0.24 *//*
  Cortex Analytica · Base 2026 · v0.4
  Sistema oscuro por defecto. Doctrina: alto contraste, líneas 1px,
  jerarquía de superficies, mensajes grandes, nada de decoración gratuita.
*/

*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  text-rendering: geometricPrecision;
  -webkit-font-smoothing: antialiased;
}

img { max-width: 100%; height: auto; }

a { color: var(--blue-text); text-decoration: none; transition: color .18s ease; }
a:hover { color: var(--title); }

.container { max-width: var(--container-max); margin: 0 auto; padding: 0 var(--gutter); }

/* ---------- Tipografía · mensajes grandes ---------- */
h1, h2, h3, h4 { color: var(--title); font-weight: 700; line-height: var(--lh-h3); margin: 0 0 var(--space-md); text-wrap: balance; }

h1 { font-size: var(--fs-h1); letter-spacing: var(--ls-h1); line-height: var(--lh-h1); margin-bottom: var(--space-lg); }
h2 { font-size: var(--fs-h2); letter-spacing: var(--ls-h2); line-height: var(--lh-h2); margin-bottom: var(--space-md); }
h3 { font-size: var(--fs-h3); letter-spacing: var(--ls-h3); line-height: var(--lh-h3); margin-bottom: var(--space-sm); }
h4 { font-size: var(--fs-h4); letter-spacing: var(--ls-h4); line-height: var(--lh-h4); font-weight: 600; margin-bottom: var(--space-xs); }

.lead {
  font-size: var(--fs-lead);
  font-weight: 500;
  line-height: var(--lh-lead);
  letter-spacing: -0.014em;
  color: var(--muted);
  max-width: 40ch;
  margin: 1.25rem 0 0;
}
.lead:first-child { margin-top: 0; }

.label-tech {
  font-family: var(--font-mono);
  font-size: var(--fs-xs);
  font-weight: 500;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--blue-text);
  margin: 0 0 var(--space-md);
  display: flex;
  align-items: center;
  gap: 10px;
}
.label-tech::before { content: ""; width: 22px; height: 1px; background: var(--blue); display: inline-block; }

/* Mensaje clave gigante */
.statement {
  font-size: var(--fs-statement);
  font-weight: 600;
  letter-spacing: -0.022em;
  line-height: var(--lh-snug);
  color: var(--title);
  max-width: 30ch;
  border-left: 2px solid var(--blue);
  padding-left: var(--space-lg);
  margin: var(--space-5xl) 0 0;
}
.statement em { font-style: normal; color: var(--blue); }

/* ---------- Header ---------- */
.site-header {
  position: sticky; top: 0; z-index: 50;
  background: color-mix(in srgb, var(--bg) 86%, transparent);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--line);
}
.header-inner { display: flex; align-items: center; gap: 32px; height: 66px; }

.brand { display: inline-flex; align-items: baseline; gap: 7px; }
.brand-cortex { font-weight: 800; letter-spacing: -0.02em; color: var(--title); font-size: 1.02rem; }
.brand-analytica { font-family: var(--font-mono); font-weight: 500; font-size: .82rem; letter-spacing: .12em; color: var(--blue); }

.site-nav { margin-left: auto; }
.nav-links { display: flex; gap: 26px; list-style: none; margin: 0; padding: 0; }
.nav-links a { color: var(--muted); font-size: .92rem; font-weight: 500; }
.nav-links a:hover { color: var(--title); }

.header-cta { white-space: nowrap; }

.theme-toggle {
  display: inline-grid; place-content: center; flex: 0 0 auto;
  width: 36px; height: 36px; padding: 0;
  color: var(--muted); background: transparent;
  border: 1px solid var(--line); border-radius: 0; cursor: pointer;
  transition: color .18s ease, border-color .18s ease;
  -webkit-tap-highlight-color: transparent;
}
.theme-toggle:hover { color: var(--blue); border-color: var(--blue); }
.theme-toggle .tt-ico { display: block; width: 18px; height: 18px; }
/* Se ve el icono del tema al que se va: en oscuro el sol, en claro la luna */
.theme-toggle .tt-sun { display: none; }
html[data-theme="dark"] .theme-toggle .tt-sun { display: block; }
html[data-theme="dark"] .theme-toggle .tt-moon { display: none; }
@media (max-width: 860px) {
  .header-inner { gap: 14px; }
  .theme-toggle { width: 40px; height: 40px; }
  .theme-toggle .tt-ico { width: 19px; height: 19px; }
}

/* ---------- Botones ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 13px 26px; border-radius: 0;
  font-size: .96rem; font-weight: 600;
  border: 1px solid transparent;
  transition: background .18s ease, border-color .18s ease, color .18s ease, transform .18s ease;
}
.btn:hover { transform: translateY(-1px); }
.btn-primary { background: var(--dark); color: var(--bg); }
.btn-primary:hover { background: var(--blue); color: #fff; }
.btn-ghost { border-color: var(--line); color: var(--title); background: transparent; }
.btn-ghost:hover { border-color: var(--blue); color: var(--blue); }

/* ---------- Hero · malla de señal ---------- */
.hero-mesh {
  position: relative; overflow: hidden;
  min-height: 88vh;
  display: flex; align-items: center;
  width: 100%;
  border-bottom: 1px solid var(--line);
}
#cortex-mesh { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.hero-mesh .container { position: relative; z-index: 2; pointer-events: none; width: 100%; }
.hero-mesh .container a { pointer-events: auto; }

.hero-mesh h1 { max-width: 12em; }
.hero-mesh .lead { margin-top: 8px; }
.hero-ctas { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 2.6rem; }

.hero-readout {
  position: absolute; right: 28px; bottom: 20px; z-index: 2; pointer-events: none;
  font-family: var(--font-mono); font-size: .68rem; letter-spacing: .08em;
  color: var(--muted); display: flex; gap: 18px;
}
.hero-readout .ok-dot { color: var(--green); }

/* ---------- Secciones · ritmo y aire ---------- */
.section {
  position: relative;
  padding: var(--space-section) 0;
  border-bottom: 1px solid var(--line);
  overflow: hidden;
}
.section-soft { background: var(--soft); }

/* número fantasma de sección */
.ghost {
  position: absolute; top: clamp(40px, 6vw, 80px); right: 28px;
  font-family: var(--font-mono); font-weight: 300;
  font-size: clamp(5rem, 12vw, 11rem);
  line-height: 1; letter-spacing: -0.05em;
  color: var(--title); opacity: .05;
  pointer-events: none; user-select: none;
}

/* cabecera de sección a dos columnas: titular izquierda, lead derecha */
.sec-head {
  display: grid;
  grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
  gap: clamp(28px, 5vw, 72px);
  align-items: end;
  margin-bottom: clamp(40px, 6vw, 72px);
}
.sec-head h2 { margin-bottom: 0; }
.sec-head .lead { justify-self: end; }

/* ---------- Cards ---------- */
.cards { display: grid; gap: 18px; }
.cards-2 { grid-template-columns: repeat(2, 1fr); }
.cards-3 { grid-template-columns: repeat(3, 1fr); }
.cards-4 { grid-template-columns: repeat(4, 1fr); }

.card {
  position: relative;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 0;
  padding: 30px 26px 26px;
  transition: border-color .2s ease, transform .2s ease, box-shadow .2s ease;
}
.card:hover {
  border-color: var(--blue);
  transform: translateY(-3px);
  box-shadow: 0 10px 34px var(--glow-blue);
}
.section-soft .card { background: var(--bg); }

.card .chip {
  display: inline-block;
  font-family: var(--font-mono); font-size: .64rem; font-weight: 500;
  letter-spacing: .14em; text-transform: uppercase;
  color: var(--blue);
  border: 1px solid var(--line); border-radius: 0;
  padding: 3px 8px; margin-bottom: 18px;
}
.card h3 { margin-bottom: .4em; }
.card p { margin: 0; font-size: 1.02rem; line-height: 1.5; color: var(--muted); }

/* tarjeta de mensaje grande (bloque el cambio) */
.card-big p {
  font-size: clamp(1.15rem, 1.9vw, 1.4rem);
  font-weight: 600; line-height: 1.35; letter-spacing: -0.014em;
  color: var(--title);
}

.card-link h3 a { color: var(--title); }
.card-link h3 a::after { content: " →"; color: var(--blue); }
.card-link h3 a:hover { color: var(--blue); }

/* ---------- Pasos de metodología ---------- */
.steps {
  list-style: none; counter-reset: paso;
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 18px; margin: 0; padding: 0;
}
.step {
  counter-increment: paso;
  border-top: 2px solid var(--line);
  padding-top: 22px;
  transition: border-color .2s ease;
}
.step:hover { border-top-color: var(--blue); }
.step::before {
  content: "0" counter(paso);
  font-family: var(--font-mono); font-size: .78rem; letter-spacing: .1em;
  color: var(--blue); display: block; margin-bottom: 12px;
}
.step h3 { font-size: 1.2rem; }
.step p { font-size: 1rem; color: var(--muted); margin: 0; line-height: 1.5; }

/* ---------- Enlaces con flecha ---------- */
.link-row { display: flex; flex-wrap: wrap; gap: 14px; }
.link-arrow {
  font-weight: 600; font-size: 1.02rem; color: var(--title);
  border: 1px solid var(--line); border-radius: 0;
  padding: 18px 24px; flex: 1 1 220px;
  transition: border-color .2s ease, transform .2s ease, box-shadow .2s ease;
}
.link-arrow::after { content: " →"; color: var(--blue); }
.link-arrow:hover { border-color: var(--blue); color: var(--blue); transform: translateY(-2px); box-shadow: 0 8px 26px var(--glow-blue); }

/* ---------- Panel Sentinel ---------- */
.panel {
  margin-top: clamp(40px, 6vw, 64px);
  border: 1px solid var(--line); border-radius: 0;
  background: var(--paper); overflow: hidden;
  box-shadow: 0 12px 44px var(--glow-blue);
}
.panel-head {
  display: flex; align-items: center; gap: 12px; padding: 15px 22px;
  border-bottom: 1px solid var(--line);
  font-family: var(--font-mono); font-size: .72rem; letter-spacing: .12em; text-transform: uppercase; color: var(--muted);
}
.status-dot {
  /* Perímetro Abierto · el punto latente pasa a ser el iconotipo activo */
  width: 15px;
  height: 15px;
  border-radius: 0;
  background: none;
  box-shadow: none;
  background-color: var(--blue-text);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 96 96'%3E%3Cpath d='M77.2 28.7A35 35 0 1 1 67.3 18.8L52.03 34.07A14.5 14.5 0 1 0 61.93 43.97Z'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 96 96'%3E%3Cpath d='M77.2 28.7A35 35 0 1 1 67.3 18.8L52.03 34.07A14.5 14.5 0 1 0 61.93 43.97Z'/%3E%3C/svg%3E") center / contain no-repeat;
  flex: 0 0 auto;
}
.panel-head .right { margin-left: auto; }

.kpis { display: grid; grid-template-columns: repeat(3, 1fr); border-bottom: 1px solid var(--line); }
.kpi { padding: 26px 22px; border-right: 1px solid var(--line); }
.kpi:last-child { border-right: 0; }
.kpi .k-label { font-family: var(--font-mono); font-size: .68rem; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); margin-bottom: 10px; }
.kpi .k-value { font-size: 2.6rem; font-weight: 700; letter-spacing: -0.025em; color: var(--title); font-variant-numeric: tabular-nums; line-height: 1; }
.kpi .k-delta { font-family: var(--font-mono); font-size: .7rem; color: var(--green); margin-top: 8px; }

.panel-body { display: grid; grid-template-columns: 1.6fr 1fr; }
.chart-zone { padding: 24px 22px; border-right: 1px solid var(--line); }
.panel-sub {
  font-family: var(--font-mono); font-size: .68rem; font-weight: 500; letter-spacing: .1em;
  text-transform: uppercase; color: var(--muted); margin: 0 0 16px;
}
.spark { width: 100%; height: auto; display: block; }
.spark .grid-line { stroke: var(--line); stroke-width: 1; }
.spark .serie { stroke: var(--blue); stroke-width: 2; fill: none; }
.spark .serie-2 { stroke: var(--violet); stroke-width: 1.5; fill: none; opacity: .7; }
.spark text { font-family: var(--font-mono); font-size: 9px; fill: var(--muted); letter-spacing: .06em; }

.bars { margin-top: 22px; display: grid; gap: 11px; }
.bar-row { display: grid; grid-template-columns: 150px 1fr 44px; align-items: center; gap: 12px; font-size: .88rem; color: var(--muted); }
.bar-track { height: 4px; background: var(--panel); border-radius: 0; overflow: hidden; }
.bar-fill { height: 100%; width: 0; background: var(--blue); border-radius: 0; }
.bar-row .pct { font-family: var(--font-mono); font-size: .7rem; color: var(--muted); text-align: right; font-variant-numeric: tabular-nums; }

.signals { padding: 24px 22px; }
.signal { display: flex; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--line); font-size: .88rem; }
.signal:last-child { border-bottom: 0; }
.signal time { font-family: var(--font-mono); font-size: .68rem; color: var(--muted); white-space: nowrap; padding-top: 3px; }
.signal .tag { font-family: var(--font-mono); font-size: .62rem; letter-spacing: .08em; text-transform: uppercase; padding: 2px 7px; border: 1px solid var(--line); border-radius: 0; color: var(--blue); align-self: flex-start; margin-top: 2px; white-space: nowrap; }
.signal .tag.ok { color: var(--green); }
.signal p { margin: 0; color: var(--muted); }

/* ---------- CTA final ---------- */
.section-cta { text-align: center; }
.section-cta h2 { max-width: 16em; margin-left: auto; margin-right: auto; }
.section-cta .lead { margin: 0 auto; }
.section-cta .hero-ctas { justify-content: center; margin-top: 3rem; }

/* ---------- Prose (páginas estándar) ---------- */
.prose { max-width: 780px; }
.prose h1 { font-size: clamp(2rem, 4.4vw, 2.9rem); }

/* ---------- Footer ---------- */
.site-footer { background: var(--soft); padding: 64px 0 0; }
.footer-inner { display: grid; grid-template-columns: 1.2fr 2fr; gap: 48px; padding-bottom: 48px; }
.footer-tagline { font-family: var(--font-mono); font-size: .8rem; color: var(--muted); margin-top: 10px; }
.footer-cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.footer-title {
  font-family: var(--font-mono); font-size: .72rem; letter-spacing: .12em;
  text-transform: uppercase; color: var(--muted); margin-bottom: 14px;
}
.footer-col ul { list-style: none; margin: 0; padding: 0; }
.footer-col li { margin-bottom: 10px; }
.footer-col a { color: var(--muted); font-size: .94rem; }
.footer-col a:hover { color: var(--blue); }
.footer-legal { border-top: 1px solid var(--line); padding-top: 18px; padding-bottom: 24px; }
.footer-legal p { font-size: .82rem; color: var(--muted); margin: 0; }

/* ---------- Responsive ---------- */
@media (max-width: 1020px) {
  .sec-head { grid-template-columns: 1fr; align-items: start; }
  .sec-head .lead { justify-self: start; }
  .cards-4 { grid-template-columns: repeat(2, 1fr); }
  .steps { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 860px) {
  .kpis { grid-template-columns: 1fr; }
  .kpi { border-right: 0; border-bottom: 1px solid var(--line); }
  .panel-body { grid-template-columns: 1fr; }
  .chart-zone { border-right: 0; border-bottom: 1px solid var(--line); }
  .footer-inner { grid-template-columns: 1fr; gap: 32px; }
}

@media (max-width: 680px) {
  .site-nav { display: none; } /* menú móvil: pendiente */
  .header-inner { justify-content: space-between; }
  .cards-2, .cards-3, .cards-4 { grid-template-columns: 1fr; }
  .steps { grid-template-columns: 1fr; }
  .ghost { display: none; }
}

/* ---------- Accesibilidad ---------- */
:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; animation: none !important; }
}
/* fin base.css v0.4 */

/* ============================================================
   v0.5 · menú interactivo · barrido H1 · Sentinel v2 · footer B
   ============================================================ */

/* ---------- Menú principal: subrayado animado izq→dcha ---------- */
.nav-links > li > a {
  position: relative;
  padding-bottom: 5px;
  transition: color .2s ease;
}
.nav-links > li > a::after {
  content: "";
  position: absolute; left: 0; bottom: 0;
  width: 100%; height: 1px;
  background: var(--blue);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform .28s cubic-bezier(.25,.8,.3,1);
}
.nav-links > li > a:hover { color: var(--title); }
.nav-links > li > a:hover::after { transform: scaleX(1); }
.nav-links .current-menu-item > a { color: var(--title); }
.nav-links .current-menu-item > a::after { transform: scaleX(1); }

/* ---------- Barrido de luz en H1 (variante A validada) ---------- */
.h1-sweep {
  background: linear-gradient(110deg,
    var(--title) 0%, var(--title) 38%,
    var(--sweep-a) 48%, var(--sweep-b) 52%, var(--sweep-a) 56%,
    var(--title) 66%, var(--title) 100%);
  background-size: 260% 100%;
  background-position: 98% 0;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  transition: background-position 1.1s cubic-bezier(.25,.8,.3,1);
}
.h1-sweep:hover { background-position: 2% 0; }

/* ---------- Sentinel v2 ---------- */
.status-dot { animation: cxlatido 3.2s ease-in-out infinite; }
@keyframes cxlatido { 0%, 100% { opacity: .6; } 50% { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .status-dot { animation: none; opacity: 1; } }
@keyframes dotpulse {
  0%, 100% { box-shadow: 0 0 0 3px var(--glow-green); }
  50% { box-shadow: 0 0 0 6px var(--glow-green); }
}
.panel-head .right { display: flex; gap: 16px; }
.panel-head .clock { color: var(--green); }
.kpi .k-value { transition: color .5s ease; }
.kpi .k-value.tick { color: var(--ca-blue-light); }

.bar-row { border-radius: 0; padding: 3px 6px; margin: -3px -6px; transition: background .2s ease, color .2s ease; cursor: default; }
.bar-row:hover { background: var(--panel); color: var(--title); }
.bar-row:hover .bar-fill { background: var(--ca-blue-light); box-shadow: 0 0 12px var(--glow-blue); }
.bar-fill { transition: width 1.4s cubic-bezier(.25,.8,.3,1), background .2s ease; }

.engines { margin-top: 26px; border-top: 1px solid var(--line); padding-top: 20px; }
.engine-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px 22px; }
.engine { display: grid; grid-template-columns: 14px 92px 1fr 40px; align-items: center; gap: 10px; font-size: .82rem; color: var(--muted); padding: 4px 6px; margin: -4px -6px; border-radius: 0; transition: background .2s ease, color .2s ease; cursor: default; }
.engine:hover { background: var(--panel); color: var(--title); }
.engine .e-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--green); }
.engine .e-dot.geo { background: var(--ca-blue-light); }
.engine .e-name { font-weight: 600; color: var(--ink); }
.engine .e-kind { font-family: var(--font-mono); font-size: .6rem; letter-spacing: .1em; color: var(--muted); }
.engine .e-pct { font-family: var(--font-mono); font-size: .7rem; text-align: right; font-variant-numeric: tabular-nums; transition: color .4s ease; }
.engine .e-pct.tick { color: var(--ca-blue-light); }

/* detección de errores · search console */
.errors { margin-top: 26px; border-top: 1px solid var(--line); padding-top: 20px; }
.error-row { display: grid; grid-template-columns: 64px 1fr auto; align-items: center; gap: 12px; font-size: .82rem; color: var(--muted); padding: 7px 6px; margin: 0 -6px; border-radius: 0; transition: background .2s ease, color .2s ease; }
.error-row:hover { background: var(--panel); color: var(--ink); }
.error-row .e-code { font-family: var(--font-mono); font-size: .68rem; letter-spacing: .08em; color: var(--blue); }
.error-row .e-state { font-family: var(--font-mono); font-size: .6rem; letter-spacing: .1em; padding: 2px 7px; border: 1px solid var(--line); border-radius: 0; white-space: nowrap; }
.error-row .e-state.ok { color: var(--green); }
.error-row .e-state.warn { color: var(--ca-amber); }
.error-row .e-state.info { color: var(--ca-blue-light); }
.error-sum { font-family: var(--font-mono); font-size: .66rem; letter-spacing: .08em; color: var(--muted); margin: 14px 0 0; text-transform: uppercase; }

.signal.new { animation: sigin .6s cubic-bezier(.25,.8,.3,1); }
@keyframes sigin { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: none; } }
.signal .tag.seo { color: var(--green); }
.signal .tag.geo { color: var(--ca-blue-light); }
.signal .tag.lead { color: var(--ca-amber); }
.signal:hover p { color: var(--ink); }

/* ---------- Footer B · índice de sistema ---------- */
.mega-footer { position: relative; overflow: hidden; background: var(--bg); border-top: 1px solid var(--line); }
.mega-footer .cortex-fmesh { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.mega-footer .container { position: relative; z-index: 2; }
.mega-footer ul { list-style: none; margin: 0; padding: 0; }
.mega-footer li { margin-bottom: 11px; }
.mega-footer a:not(.btn):not(.idx-row) { color: var(--muted); font-size: .94rem; transition: color .18s ease; }
.mega-footer a:not(.btn):not(.idx-row):hover { color: var(--blue); }
.f-title { font-family: var(--font-mono); font-size: .7rem; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); margin: 0 0 16px; }
.f-soon { color: var(--muted); font-size: .94rem; opacity: .65; }
.soon { font-family: var(--font-mono); font-size: .58rem; letter-spacing: .1em; color: var(--muted); border: 1px solid var(--line); border-radius: 0; padding: 1px 5px; margin-left: 7px; vertical-align: 2px; }

.fb-top { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(32px, 5vw, 80px); padding: clamp(64px, 8vw, 104px) 0; }
.fb-claim h2 { margin-bottom: 28px; }
.footer-status { font-family: var(--font-mono); font-size: .7rem; letter-spacing: .1em; color: var(--muted); display: flex; gap: 16px; margin-top: 22px; }
.footer-status .ok { color: var(--green); }

.fb-index { border-left: 1px solid var(--line); padding-left: clamp(24px, 3vw, 48px); }
.idx-row { display: grid; grid-template-columns: 44px 1fr auto; align-items: center; gap: 4px 14px; padding: 13px 8px; border-bottom: 1px solid var(--line); text-decoration: none; transition: background .2s ease; }
.idx-row:hover { background: var(--panel); }
.idx-row .n { font-family: var(--font-mono); font-size: .7rem; color: var(--blue); }
.idx-row .t { color: var(--title); font-weight: 600; font-size: 1.05rem; transition: color .2s ease; }
.idx-row:hover .t { color: var(--blue); }
.idx-row .arrow { color: var(--muted); font-size: 1rem; transition: transform .2s ease, color .2s ease; }
.idx-row:hover .arrow { transform: translateX(4px); color: var(--blue); }
.idx-row .sub { grid-column: 2 / 4; font-size: .82rem; color: var(--muted); }
.fb-razones .label-tech { margin: 0 0 6px; padding: 0 8px; }   /* 0.123.0 · pie de Presencia Web: razones, no índice */

.fb-cols { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; border-top: 1px solid var(--line); padding: 36px 0 48px; }

.fc-wordmark { overflow: hidden; }
.giant-wordmark { display: flex; align-items: baseline; gap: 18px; justify-content: center; font-size: clamp(3rem, 11vw, 10rem); line-height: .95; letter-spacing: -0.04em; user-select: none; transform: translateY(18%);
  -webkit-mask-image: linear-gradient(180deg, rgba(0,0,0,.6) 0%, rgba(0,0,0,.18) 70%, transparent 100%);
  mask-image: linear-gradient(180deg, rgba(0,0,0,.6) 0%, rgba(0,0,0,.18) 70%, transparent 100%); }
.giant-wordmark .c { font-weight: 800; color: var(--title); }
.giant-wordmark .a { font-family: var(--font-mono); font-weight: 500; font-size: .32em; letter-spacing: .18em; color: var(--blue); }
.sweepable .c {
  background: linear-gradient(110deg, var(--title) 0%, var(--title) 38%, var(--sweep-a) 48%, var(--sweep-b) 52%, var(--sweep-a) 56%, var(--title) 66%, var(--title) 100%);
  background-size: 260% 100%; background-position: 98% 0;
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent;
  transition: background-position 1.2s cubic-bezier(.25,.8,.3,1);
}
.sweepable:hover .c { background-position: 2% 0; }

.footer-legal { position: relative; z-index: 2; border-top: 1px solid var(--line); }
.footer-legal .container { display: flex; flex-wrap: wrap; gap: 18px; align-items: center; padding-top: 18px; padding-bottom: 22px; }
.footer-legal p { font-size: .8rem; color: var(--muted); margin: 0; }
.footer-legal .right { margin-left: auto; font-family: var(--font-mono); font-size: .68rem; letter-spacing: .1em; color: var(--muted); }
.footer-legal .legal-clock { color: var(--green); }

@media (max-width: 900px) {
  .fb-top { grid-template-columns: 1fr; }
  .fb-index { border-left: 0; padding-left: 0; }
  .fb-cols { grid-template-columns: repeat(2, 1fr); }
  .engine-grid { grid-template-columns: 1fr; }
}
/* fin v0.5 */

/* ---------- v0.5.1 · barrido H1: fix hover + barridos aleatorios ---------- */
/* el contenedor del hero anula pointer-events: el H1 debe recibirlos para el hover */
.hero-mesh h1, .hero-mesh .lead, .hero-mesh .label-tech { pointer-events: auto; }

.h1-sweep.sweeping { animation: h1sweep 1.6s cubic-bezier(.25,.8,.3,1); }
@keyframes h1sweep {
  0%   { background-position: 98% 0; }
  100% { background-position: 2% 0; }
}

/* ---------- v0.6 · Activación Digital / portfolio ---------- */
.hero-page { min-height: 64vh; }

.filter-row { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 34px; }
.filter-chip {
  font-family: var(--font-mono); font-size: .68rem; letter-spacing: .1em; text-transform: uppercase;
  color: var(--muted); border: 1px solid var(--line); border-radius: 0;
  padding: 7px 14px; transition: all .18s ease;
}
.filter-chip:hover, .filter-chip.active { color: var(--blue); border-color: var(--blue); }

.card-project { padding: 0; overflow: hidden; }
.card-project > a { display: block; color: inherit; padding: 0 0 22px; }
.card-project .project-thumb { width: 100%; height: 200px; object-fit: cover; object-position: top; display: block; border-bottom: 1px solid var(--line); margin-bottom: 20px; filter: saturate(.9); transition: filter .3s ease; }
.card-project:hover .project-thumb { filter: saturate(1.05); }
.card-project h3, .card-project p, .card-project .chip { margin-left: 24px; margin-right: 24px; }
.card-project h3 { margin-top: 0; }
.card-project .chip { margin-top: 14px; margin-bottom: 0; }
.card-project > a:not(:has(.project-thumb)) { padding-top: 26px; }

.project-meta { display: flex; flex-wrap: wrap; gap: 8px; }
.project-cover { margin-top: clamp(28px, 4vw, 48px); border: 1px solid var(--line); border-radius: 0; overflow: hidden; box-shadow: 0 12px 44px var(--glow-blue); }
.project-cover img { display: block; width: 100%; height: auto; }

.project-body h2 { font-size: clamp(1.5rem, 2.6vw, 2rem); margin-top: 2em; }
.project-body h2:first-child { margin-top: 0; }
.project-body p { color: var(--ca-soft-text); font-size: 1.05rem; }
html[data-theme="dark"] .project-body p { color: var(--muted); }

.project-nav { display: flex; flex-wrap: wrap; gap: 16px; justify-content: space-between; border-top: 1px solid var(--line); margin-top: clamp(48px, 6vw, 72px); padding-top: 24px; font-weight: 600; }
.project-nav a { color: var(--muted); }
.project-nav a:hover { color: var(--blue); }

/* paginación WP */
.pagination .nav-links { display: flex; gap: 10px; }
.page-numbers { font-family: var(--font-mono); font-size: .8rem; color: var(--muted); border: 1px solid var(--line); border-radius: 0; padding: 8px 13px; }
.page-numbers.current, .page-numbers:hover { color: var(--blue); border-color: var(--blue); }
/* fin v0.6 */

/* ============================================================
   v0.7 · página Autoridad Digital: diagramas, entregables, FAQ
   ============================================================ */

/* ---------- Diagramas SVG estilo Sentinel ---------- */
.diagram-wrap {
  border: 1px solid var(--line);
  border-radius: 0;
  background: var(--paper);
  padding: clamp(16px, 3vw, 36px);
  overflow: hidden;
}
.section-soft .diagram-wrap { background: var(--bg); }
.diagram { width: 100%; height: auto; display: block; }

.diagram text {
  font-family: var(--font-mono);
  font-size: 13px;
  letter-spacing: .08em;
  fill: var(--ink);
  text-anchor: middle;
}
.d-title { font-size: 12px; fill: var(--muted); letter-spacing: .16em; }
.d-title-on { fill: var(--blue); }
.d-note { font-size: 11px; fill: var(--muted); }
.d-note-on { fill: var(--blue); }
.d-sep { stroke: var(--line); stroke-width: 1; }

.d-node circle { fill: var(--panel); stroke: var(--line); stroke-width: 1; }
.d-node text { font-size: 11px; }
.d-node-off circle { stroke-dasharray: 3 5; }
.d-node-off text { fill: var(--muted); }
.d-node-on circle { stroke: var(--blue); fill: var(--panel); }
.d-node-on text { fill: var(--ink); }

.d-broken line { stroke: var(--muted); stroke-width: 1; opacity: .35; }
.d-links line { stroke: var(--blue); stroke-width: 1.3; opacity: .7; }

.d-hub circle { fill: var(--bg); stroke: var(--blue); stroke-width: 2; }
.d-hub text { fill: var(--title); font-weight: 600; font-size: 12px; }
.d-hub .d-hub-sub { fill: var(--blue); font-size: 10px; }
.d-status { fill: var(--green); }

.d-flow line, .d-flow path { stroke: var(--blue); stroke-width: 1.4; opacity: .8; }
.d-box rect { fill: var(--panel); stroke: var(--line); stroke-width: 1; transition: stroke .2s ease; }
.d-box:hover rect { stroke: var(--blue); }
.d-box text { font-size: 12px; fill: var(--title); font-weight: 600; }
.d-box .d-box-n { font-size: 10px; fill: var(--blue); font-weight: 400; }
.d-box .d-box-sub { font-size: 10px; fill: var(--muted); font-weight: 400; letter-spacing: .04em; }
.d-box-hub rect { stroke: var(--blue); }

/* ---------- Panel de entregables ---------- */
.deliver-panel {
  margin-top: clamp(32px, 4vw, 48px);
  border: 1px solid var(--line);
  border-radius: 0;
  background: var(--bg);
  overflow: hidden;
}
.deliver-list { list-style: none; margin: 0; padding: 10px 22px 18px; }
.deliver-list li {
  display: flex; gap: 14px; align-items: baseline;
  padding: 12px 0; border-bottom: 1px solid var(--line);
  font-size: 1.05rem; color: var(--ink);
}
.deliver-list li:last-child { border-bottom: 0; }
.d-check { color: var(--green); font-weight: 700; }

/* ---------- Para quién es / no es ---------- */
.fit-cards .card { padding-bottom: 30px; }
.fit-yes { border-top: 2px solid var(--green); }
.fit-no { border-top: 2px solid var(--ca-amber); }
.chip-warn { color: var(--ca-amber) !important; }
.fit-list { list-style: none; margin: 0; padding: 0; }
.fit-list li {
  padding: 10px 0 10px 22px; position: relative;
  font-size: 1.02rem; color: var(--muted); line-height: 1.5;
  border-bottom: 1px solid var(--line);
}
.fit-list li:last-child { border-bottom: 0; }
.fit-yes .fit-list li::before { content: "→"; position: absolute; left: 0; color: var(--green); }
.fit-no .fit-list li::before { content: "×"; position: absolute; left: 0; color: var(--ca-amber); }

/* ---------- FAQ acordeón ---------- */
.faq-acc details {
  border: 1px solid var(--line);
  border-radius: 0;
  background: var(--paper);
  margin-bottom: 12px;
  transition: border-color .2s ease;
}
.faq-acc details:hover, .faq-acc details[open] { border-color: var(--blue); }
.faq-acc summary {
  cursor: pointer;
  list-style: none;
  padding: 20px 24px;
  font-weight: 600;
  font-size: 1.1rem;
  color: var(--title);
  display: flex; align-items: center; justify-content: space-between;
}
.faq-acc summary::-webkit-details-marker { display: none; }
.faq-acc summary::after {
  content: "+";
  font-family: var(--font-mono);
  color: var(--blue);
  font-size: 1.2rem;
  transition: transform .25s ease;
}
.faq-acc details[open] summary::after { transform: rotate(45deg); }
.faq-acc details p {
  margin: 0; padding: 0 24px 22px;
  color: var(--muted); font-size: 1.02rem; line-height: 1.6;
  max-width: 52em;
}

@media (max-width: 680px) {
  .diagram text { font-size: 16px; }
  .fit-cards { grid-template-columns: 1fr; }
}
/* fin v0.7 */

/* ============================================================
   v0.8 · diagramas vivos (estilo timeline) + malla en módulos
   ============================================================ */

/* corriente que fluye por las líneas */
.flow-line { stroke-dasharray: 7 9; animation: flowdash 1.1s linear infinite; }
@keyframes flowdash { to { stroke-dashoffset: -16; } }

/* pulsos viajeros (los mueve cortex-telemetry.js) */
.pulse-dot { fill: var(--ca-blue-light); filter: drop-shadow(0 0 5px var(--ca-blue-light)); }

/* ---------- Timeline de autoridad ---------- */
.diagram-tl { overflow: visible; }
.tl-ruler { stroke: var(--line); stroke-width: 12; stroke-dasharray: 1 31; opacity: .5; }
.tl-main { stroke: var(--blue); stroke-width: 1.6; fill: none; }
.tl-end { font-size: 11px; fill: var(--blue); text-anchor: end; letter-spacing: .12em; }

.tl-branch { stroke: var(--muted); stroke-width: 1.2; fill: none; opacity: .5; transition: stroke .25s ease, opacity .25s ease; }
.tl-merge { stroke-dasharray: 3 6; }
.tl-g:hover .tl-branch { stroke: var(--ca-blue-light); opacity: 1; }

.tl-pill rect { fill: var(--panel); stroke: var(--line); stroke-width: 1; transition: stroke .25s ease, fill .25s ease; }
.tl-pill circle { fill: var(--blue); }
.tl-pill text { font-size: 11.5px; fill: var(--ink); letter-spacing: .08em; }
.tl-pill-main rect { fill: var(--bg); stroke: var(--blue); }
.tl-g:hover .tl-pill rect { stroke: var(--blue); fill: var(--bg); }

.tl-ev circle { fill: var(--green); }
.tl-ev-geo circle { fill: var(--ca-blue-light); }
.tl-check { font-size: 9px; fill: var(--bg); font-weight: 700; }
.tl-ev-label { font-size: 10px; fill: var(--muted); letter-spacing: .1em; }
.tl-g:hover .tl-ev-label { fill: var(--ink); }
.tl-ev-live circle { fill: var(--green); }
.blink { animation: blinkdot 1.6s ease-in-out infinite; }
@keyframes blinkdot { 50% { opacity: .25; } }

/* ---------- Diagrama sistema: conexiones vivas + hub pulsante ---------- */
.d-links-live line {
  stroke: var(--blue); stroke-width: 1.3; opacity: .7;
  stroke-dasharray: 7 9; animation: flowdash 1.3s linear infinite;
}
.d-hub-pulse {
  fill: none; stroke: var(--blue); stroke-width: 1.5;
  transform-box: fill-box; transform-origin: center;
  animation: hubpulse 3s ease-out infinite;
}
@keyframes hubpulse {
  0% { transform: scale(1); opacity: .5; }
  100% { transform: scale(1.55); opacity: 0; }
}
.d-node-on { cursor: default; }
.d-node-on circle { transition: stroke .25s ease, fill .25s ease; }
.d-node-on:hover circle { stroke: var(--ca-blue-light); fill: var(--bg); }
.d-flicker { animation: flick 6s linear infinite; }
@keyframes flick {
  0%, 90%, 100% { opacity: 1; }
  92% { opacity: .35; }
  94% { opacity: .9; }
  96% { opacity: .45; }
  98% { opacity: 1; }
}

/* ---------- Malla de señal como fondo de sección ---------- */
.section-mesh .cortex-fmesh { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.section-mesh > .container { position: relative; z-index: 2; }
/* fin v0.8 */

/* ============================================================
   v0.9 · hero con mini-consola + consolas enfrentadas (vs)
   ============================================================ */

/* ---------- Hero grid con consola ---------- */
.hero-grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(32px, 5vw, 72px); align-items: center; }
.hero-copy { min-width: 0; }

.hero-console {
  pointer-events: auto;
  border: 1px solid var(--line);
  border-radius: 0;
  background: color-mix(in srgb, var(--paper) 84%, transparent);
  backdrop-filter: blur(8px);
  box-shadow: 0 18px 60px var(--glow-blue);
  overflow: hidden;
  animation: floaty 7s ease-in-out infinite;
  max-width: 420px;
  justify-self: end;
  width: 100%;
}
@keyframes floaty { 50% { transform: translateY(-9px); } }

.hc-head {
  display: flex; align-items: center; gap: 10px;
  padding: 13px 18px; border-bottom: 1px solid var(--line);
  font-family: var(--font-mono); font-size: .66rem; letter-spacing: .12em; text-transform: uppercase; color: var(--muted);
}
.hc-clock { margin-left: auto; color: var(--green); }

.hc-row {
  display: grid; grid-template-columns: 82px 1fr auto;
  align-items: center; gap: 10px;
  padding: 11px 18px; border-bottom: 1px solid var(--line);
  font-size: .84rem;
}
.hc-name { font-weight: 600; color: var(--ink); }
.hc-kind { font-family: var(--font-mono); font-size: .58rem; letter-spacing: .12em; color: var(--muted); }
.hc-state { font-family: var(--font-mono); font-size: .62rem; letter-spacing: .1em; white-space: nowrap; }
.hc-state.ok { color: var(--green); }
.hc-state.geo { color: var(--ca-blue-light); }
.hc-state.live { color: var(--green); }

.hc-foot { display: flex; align-items: center; gap: 14px; padding: 14px 18px 16px; }
.hc-spark { flex: 1; height: 44px; }
.hc-line { fill: none; stroke: var(--blue); stroke-width: 2; }
.hc-metric { font-family: var(--font-mono); font-size: .64rem; letter-spacing: .12em; color: var(--blue); white-space: nowrap; }

/* ---------- Consolas enfrentadas: piezas sueltas vs sistema ---------- */
.vs-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }

.vs-panel { border: 1px solid var(--line); border-radius: 0; background: var(--paper); overflow: hidden; }
.section-soft .vs-panel { background: var(--bg); }
.vs-good { border-color: color-mix(in srgb, var(--blue) 45%, var(--line)); box-shadow: 0 14px 48px var(--glow-blue); }
.vs-bad { opacity: .92; }

.vs-head {
  display: flex; align-items: center; gap: 10px;
  padding: 14px 20px; border-bottom: 1px solid var(--line);
  font-family: var(--font-mono); font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; color: var(--muted);
}
.vs-head .right { margin-left: auto; }
.vs-good .vs-head .right { color: var(--green); }
.vs-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--ca-amber); opacity: .7; animation: flick 6s linear infinite; }

.vs-row {
  display: grid; grid-template-columns: 64px 1fr auto;
  align-items: center; gap: 12px;
  padding: 13px 20px; border-bottom: 1px solid var(--line);
  transition: background .2s ease;
}
.vs-row:hover { background: var(--panel); }
.vs-name { font-family: var(--font-mono); font-size: .68rem; letter-spacing: .1em; color: var(--blue); }
.vs-bad .vs-name { color: var(--muted); }
.vs-desc { font-size: .88rem; color: var(--muted); line-height: 1.4; }
.vs-good .vs-desc { color: var(--ink); }
.vs-state { font-family: var(--font-mono); font-size: .6rem; letter-spacing: .1em; padding: 2px 8px; border: 1px solid var(--line); border-radius: 0; white-space: nowrap; }
.vs-state.ok { color: var(--green); border-color: color-mix(in srgb, var(--green) 40%, var(--line)); }
.vs-state.geo { color: var(--ca-blue-light); border-color: color-mix(in srgb, var(--ca-blue-light) 40%, var(--line)); }
.vs-state.warn { color: var(--ca-amber); }
.vs-state.off { color: var(--muted); opacity: .7; }
.vs-flicker { animation: flick 7s linear infinite; }

.vs-foot { display: flex; align-items: flex-end; gap: 18px; padding: 16px 20px 18px; }
.vs-spark { flex: 1; height: 54px; }
.vs-line-bad { fill: none; stroke: var(--muted); stroke-width: 1.6; stroke-dasharray: 4 6; opacity: .6; }
.vs-line-good { fill: none; stroke: var(--blue); stroke-width: 2; }
.vs-metric { text-align: right; }
.vs-metric-label { display: block; font-family: var(--font-mono); font-size: .58rem; letter-spacing: .12em; color: var(--muted); margin-bottom: 4px; }
.vs-metric-val { font-family: var(--font-mono); font-size: 1.05rem; font-weight: 700; letter-spacing: .04em; }
.vs-metric-val.bad { color: var(--muted); }
.vs-metric-val.good { color: var(--green); }

.vs-caption {
  font-family: var(--font-mono); font-size: .68rem; letter-spacing: .16em;
  color: var(--muted); text-align: center; margin: 26px 0 0;
}

@media (max-width: 1020px) {
  .hero-grid { grid-template-columns: 1fr; }
  .hero-console { display: none; }
  .vs-grid { grid-template-columns: 1fr; }
}
/* fin v0.9 */

/* ============================================================
   v0.9.1 · consola encajada + barras de acumulación
   ============================================================ */

/* ---------- consola: anclada a la retícula, misma altura que el copy ---------- */
.hero-grid { grid-template-columns: minmax(0, 7fr) minmax(0, 6fr); align-items: stretch; }
.hero-copy { display: flex; flex-direction: column; justify-content: center; }

.hero-console {
  animation: none;                 /* nada flota porque sí */
  max-width: none;
  width: auto;
  align-self: stretch;
  justify-self: stretch;
  display: flex;
  flex-direction: column;
  border-radius: 0;
  border-color: color-mix(in srgb, var(--blue) 32%, var(--line));
  position: relative;
}
/* borde superior de energía: la consola está "conectada" */
.hero-console::before {
  content: "";
  position: absolute; top: 0; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, var(--blue), var(--ca-blue-light) 40%, transparent 90%);
  opacity: .8;
}

.hc-head { background: var(--panel); padding: 15px 22px; font-size: .68rem; }
.hc-row { flex: 1; align-content: center; padding: 14px 22px; font-size: .95rem; grid-template-columns: 96px 1fr auto; }
.hc-row:hover { background: var(--panel); }
.hc-state { font-size: .66rem; }
.hc-foot { display: block; padding: 18px 22px 20px; }

/* ---------- barras de acumulación (12 meses) ---------- */
.cx-bars { display: flex; align-items: flex-end; gap: 5px; height: 62px; }
.cx-bars i { flex: 1; min-height: 3px; border-radius: 0; display: block; }

/* sistema: crecen mes a mes */
.cx-bars-up i { background: var(--blue); transform-origin: bottom; }
.cx-bars-up i:nth-child(1)  { height: 9%; }
.cx-bars-up i:nth-child(2)  { height: 15%; }
.cx-bars-up i:nth-child(3)  { height: 22%; }
.cx-bars-up i:nth-child(4)  { height: 30%; }
.cx-bars-up i:nth-child(5)  { height: 37%; }
.cx-bars-up i:nth-child(6)  { height: 45%; }
.cx-bars-up i:nth-child(7)  { height: 53%; }
.cx-bars-up i:nth-child(8)  { height: 61%; }
.cx-bars-up i:nth-child(9)  { height: 70%; }
.cx-bars-up i:nth-child(10) { height: 79%; }
.cx-bars-up i:nth-child(11) { height: 88%; }
.cx-bars-up i:nth-child(12) { height: 97%; background: var(--ca-blue-light); animation: blinkdot 2.2s ease-in-out infinite; }
.cx-bars-glow i { box-shadow: 0 0 12px var(--glow-blue); }

/* aparición escalonada al entrar en pantalla */
.cx-bars.prep i { transform: scaleY(0); transition: transform .55s cubic-bezier(.25,.8,.3,1); }
.cx-bars.prep i:nth-child(1)  { transition-delay: .05s; }
.cx-bars.prep i:nth-child(2)  { transition-delay: .13s; }
.cx-bars.prep i:nth-child(3)  { transition-delay: .21s; }
.cx-bars.prep i:nth-child(4)  { transition-delay: .29s; }
.cx-bars.prep i:nth-child(5)  { transition-delay: .37s; }
.cx-bars.prep i:nth-child(6)  { transition-delay: .45s; }
.cx-bars.prep i:nth-child(7)  { transition-delay: .53s; }
.cx-bars.prep i:nth-child(8)  { transition-delay: .61s; }
.cx-bars.prep i:nth-child(9)  { transition-delay: .69s; }
.cx-bars.prep i:nth-child(10) { transition-delay: .77s; }
.cx-bars.prep i:nth-child(11) { transition-delay: .85s; }
.cx-bars.prep i:nth-child(12) { transition-delay: .93s; }
.cx-bars.prep.on i { transform: scaleY(1); }

/* piezas sueltas: meses irregulares, meses perdidos, señal averiada */
.cx-bars-flat i { background: var(--muted); opacity: .45; }
.cx-bars-flat i:nth-child(1)  { height: 26%; }
.cx-bars-flat i:nth-child(2)  { height: 12%; }
.cx-bars-flat i:nth-child(3)  { height: 4%; opacity: .18; }
.cx-bars-flat i:nth-child(4)  { height: 30%; }
.cx-bars-flat i:nth-child(5)  { height: 4%; opacity: .18; }
.cx-bars-flat i:nth-child(6)  { height: 18%; animation: flick 5s linear infinite; }
.cx-bars-flat i:nth-child(7)  { height: 9%; }
.cx-bars-flat i:nth-child(8)  { height: 4%; opacity: .18; }
.cx-bars-flat i:nth-child(9)  { height: 22%; }
.cx-bars-flat i:nth-child(10) { height: 7%; }
.cx-bars-flat i:nth-child(11) { height: 4%; opacity: .18; }
.cx-bars-flat i:nth-child(12) { height: 14%; }

/* fila de métrica bajo las barras */
.cx-metric-row {
  display: flex; justify-content: space-between; align-items: baseline;
  border-top: 1px solid var(--line);
  margin-top: 14px; padding-top: 12px;
}
.cx-metric-label { font-family: var(--font-mono); font-size: .6rem; letter-spacing: .12em; color: var(--muted); }
.cx-metric { font-family: var(--font-mono); font-size: .92rem; font-weight: 700; letter-spacing: .04em; }
.cx-metric.up, .cx-metric.good { color: var(--green); }
.cx-metric.bad { color: var(--muted); }

/* vs-foot ahora es bloque */
.vs-foot { display: block; }
/* fin v0.9.1 */

/* ============================================================
   v0.9.2 · aire en el hero + consola compacta + barras vivas
   ============================================================ */

/* aire arriba y abajo: el hero respira, no se pega al menú */
.hero-page { min-height: 0; padding: clamp(76px, 9vw, 128px) 0 clamp(64px, 8vw, 108px); }
.hero-grid { align-items: center; }

/* consola compacta: alta como su contenido, sin espacios muertos */
.hero-console { align-self: center; justify-self: end; max-width: 432px; width: 100%; }
.hc-head { padding: 12px 20px; }
.hc-row { flex: 0 0 auto; padding: 11px 20px; font-size: .88rem; grid-template-columns: 88px 1fr auto; }
.hc-foot { padding: 14px 20px 16px; }
.hero-console .cx-bars { height: 46px; }
.hero-console .cx-metric-row { margin-top: 11px; padding-top: 10px; }

/* barras de acumulación: vivas tras crecer — onda de brillo recorriéndolas */
@keyframes barwave {
  0%, 100% { filter: brightness(1); transform: scaleY(1); }
  50% { filter: brightness(1.7); transform: scaleY(1.05); }
}
.cx-bars-up.on i { animation: barwave 3s ease-in-out infinite; }
.cx-bars-up.on i:nth-child(1)  { animation-delay: 0s; }
.cx-bars-up.on i:nth-child(2)  { animation-delay: .16s; }
.cx-bars-up.on i:nth-child(3)  { animation-delay: .32s; }
.cx-bars-up.on i:nth-child(4)  { animation-delay: .48s; }
.cx-bars-up.on i:nth-child(5)  { animation-delay: .64s; }
.cx-bars-up.on i:nth-child(6)  { animation-delay: .8s; }
.cx-bars-up.on i:nth-child(7)  { animation-delay: .96s; }
.cx-bars-up.on i:nth-child(8)  { animation-delay: 1.12s; }
.cx-bars-up.on i:nth-child(9)  { animation-delay: 1.28s; }
.cx-bars-up.on i:nth-child(10) { animation-delay: 1.44s; }
.cx-bars-up.on i:nth-child(11) { animation-delay: 1.6s; }
.cx-bars-up.on i:nth-child(12) { animation: barwave 3s ease-in-out 1.76s infinite, blinkdot 2.2s ease-in-out infinite; }
/* fin v0.9.2 */

/* ============================================================
   v0.10 · flecha subir + responsive móvil de componentes nuevos
   ============================================================ */

/* ---------- flecha flotante subir ---------- */
.to-top {
  position: fixed; right: 22px; bottom: 22px; z-index: 60;
  width: 46px; height: 46px; border-radius: 50%;
  border: 1px solid var(--line);
  background: color-mix(in srgb, var(--paper) 82%, transparent);
  backdrop-filter: blur(8px);
  color: var(--muted);
  font-family: var(--font-mono); font-size: 1.05rem;
  cursor: pointer;
  opacity: 0; visibility: hidden; transform: translateY(12px);
  transition: opacity .3s ease, visibility .3s ease, transform .3s ease, color .2s ease, border-color .2s ease;
}
.to-top.show { opacity: 1; visibility: visible; transform: none; }
.to-top:hover { color: var(--blue); border-color: var(--blue); transform: translateY(-2px); }

/* ---------- responsive móvil ---------- */
@media (max-width: 860px) {
  /* el timeline se desplaza lateralmente en vez de encogerse hasta lo ilegible */
  .diagram-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .diagram-tl { min-width: 880px; }
  .statement { font-size: clamp(1.25rem, 5vw, 1.6rem); }
  .panel-head { flex-wrap: wrap; row-gap: 6px; }
}

@media (max-width: 680px) {
  .diagram-tl text { font-size: 13px; } /* con scroll lateral, tamaño legible sin romper */
  .lead { font-size: 1.16rem; }
  .hero-ctas .btn { flex: 1 1 auto; justify-content: center; }
  .kpi .k-value { font-size: 2.1rem; }
  .vs-row { grid-template-columns: 50px 1fr auto; gap: 8px; padding: 12px 16px; }
  .vs-desc { font-size: .8rem; }
  .vs-head, .vs-foot { padding-left: 16px; padding-right: 16px; }
  .deliver-list { padding: 6px 16px 14px; }
  .deliver-list li { font-size: .95rem; gap: 10px; }
  .faq-acc summary { font-size: 1rem; padding: 16px 18px; }
  .faq-acc details p { padding: 0 18px 18px; }
  .to-top { right: 14px; bottom: 14px; width: 42px; height: 42px; }
  .idx-row .t { font-size: .95rem; }
  .fc-wordmark .giant-wordmark { font-size: clamp(2.2rem, 14vw, 3.4rem); }
}
/* fin v0.10 */

/* ============================================================
   v0.11 · Inteligencia Comercial: ops-rows, flujo, mesa de captación
   ============================================================ */

/* ---------- operaciones del departamento ---------- */
.ops-rows { border-top: 1px solid var(--line); }
.ops-row {
  display: grid;
  grid-template-columns: 72px minmax(0, 4fr) minmax(0, 6fr);
  gap: clamp(16px, 3vw, 40px);
  align-items: baseline;
  padding: clamp(22px, 3vw, 34px) 8px;
  border-bottom: 1px solid var(--line);
  transition: background .2s ease, padding-left .25s ease;
}
.ops-row:hover { background: var(--panel); padding-left: 20px; }
.ops-n { font-family: var(--font-mono); font-size: .78rem; color: var(--blue); letter-spacing: .1em; }
.ops-t { font-size: clamp(1.4rem, 2.6vw, 2rem); letter-spacing: -0.018em; margin: 0; }
.ops-d { margin: 0; color: var(--muted); font-size: 1.05rem; line-height: 1.5; }
.ops-row:hover .ops-t { color: var(--blue); }

/* ---------- flujo de compactación ---------- */
.diagram-cf { overflow: visible; }
.cf-noise circle { fill: var(--muted); opacity: .45; }
.cf-in path { stroke: var(--muted); stroke-width: 1; fill: none; opacity: .5; stroke-dasharray: 3 6; }
.cf-gate rect { fill: var(--panel); stroke: var(--blue); stroke-width: 1.6; }
.cf-gate-t { font-family: var(--font-mono); font-size: 15px; fill: var(--title); font-weight: 600; text-anchor: middle; letter-spacing: .14em; }
.cf-gate-s { font-family: var(--font-mono); font-size: 9px; fill: var(--blue); text-anchor: middle; letter-spacing: .12em; }
.cf-out line { stroke: var(--blue); stroke-width: 1.4; }
.cf-opp { fill: var(--ca-blue-light); animation: blinkdot 2.4s ease-in-out infinite; }
.cf-opp:nth-of-type(2) { animation-delay: .5s; }
.cf-brief rect { fill: var(--bg); stroke: color-mix(in srgb, var(--green) 55%, var(--line)); stroke-width: 1.4; }
.cf-brief-t { font-family: var(--font-mono); font-size: 11px; fill: var(--title); font-weight: 600; text-anchor: middle; letter-spacing: .1em; }
.cf-brief-l { stroke: var(--line); stroke-width: 5; stroke-linecap: round; opacity: .8; }
.cf-brief-s { font-family: var(--font-mono); font-size: 10px; fill: var(--green); text-anchor: middle; letter-spacing: .08em; }

/* ---------- mesa de captación ---------- */
.desk-body { grid-template-columns: 1.5fr 1fr; }
.bar-green { background: var(--green) !important; }

.lead-row {
  display: grid;
  grid-template-columns: 54px 1fr auto;
  gap: 14px;
  align-items: center;
  padding: 13px 0;
  border-bottom: 1px solid var(--line);
}
.lead-row:last-child { border-bottom: 0; }
.lead-row.new { animation: sigin .6s cubic-bezier(.25,.8,.3,1); }
.lead-score {
  font-family: var(--font-mono); font-size: .92rem; font-weight: 700;
  text-align: center; padding: 8px 0; border-radius: 0;
  border: 1px solid var(--line); font-variant-numeric: tabular-nums;
}
.lead-score.hot { color: var(--green); border-color: color-mix(in srgb, var(--green) 45%, var(--line)); }
.lead-score.warm { color: var(--ca-blue-light); border-color: color-mix(in srgb, var(--ca-blue-light) 40%, var(--line)); }
.lead-score.cool { color: var(--muted); }
.lead-info { min-width: 0; }
.lead-name { font-weight: 600; color: var(--ink); font-size: .95rem; }
.lead-why { font-size: .8rem; color: var(--muted); margin-top: 2px; }
.lead-state {
  font-family: var(--font-mono); font-size: .6rem; letter-spacing: .1em;
  padding: 3px 9px; border: 1px solid var(--line); border-radius: 0; white-space: nowrap;
}
.lead-state.hot { color: var(--green); }
.lead-state.warm { color: var(--ca-blue-light); }
.lead-state.cool { color: var(--muted); }

.term-rows { display: grid; gap: 9px; }
.term-row {
  display: flex; justify-content: space-between; align-items: baseline; gap: 12px;
  padding: 8px 10px; margin: 0 -10px; border-radius: 0;
  transition: background .2s ease;
}
.term-row:hover { background: var(--panel); }
.term-q { font-family: var(--font-mono); font-size: .78rem; color: var(--ink); }
.term-n { font-family: var(--font-mono); font-size: .78rem; color: var(--blue); font-variant-numeric: tabular-nums; }

.desk-gloss {
  display: flex; flex-wrap: wrap; gap: 8px 26px;
  padding: 14px 22px; border-top: 1px solid var(--line);
  background: var(--panel);
  font-family: var(--font-mono); font-size: .64rem; letter-spacing: .06em; color: var(--muted);
}
.desk-gloss b { color: var(--blue); font-weight: 600; margin-right: 5px; }

@media (max-width: 860px) {
  .ops-row { grid-template-columns: 48px 1fr; }
  .ops-d { grid-column: 2; }
  .desk-body { grid-template-columns: 1fr; }
  .diagram-cf { min-width: 880px; }
}
/* fin v0.11 */

/* ============================================================
   v0.12 · cursor de máquina de escribir en el kicker del hero
   ============================================================ */
.type-caret {
  display: inline-block;
  width: 9px; height: 1.05em;
  background: var(--blue);
  vertical-align: text-bottom;
  animation: caretblink 1s steps(1) infinite;
}
@keyframes caretblink { 50% { opacity: 0; } }
/* fin v0.12 */

/* ============================================================
   v0.12.1 · flujo de compactación v2: geometría de oficio
   ============================================================ */
.ta-s { text-anchor: start !important; }
.cf-sep { stroke: var(--line); stroke-width: 1; stroke-dasharray: 2 8; opacity: .7; }
.cf-score { font-family: var(--font-mono); font-size: 10px; fill: var(--ca-blue-light); letter-spacing: .1em; }
.cf-gate-t { font-size: 16px; letter-spacing: .18em; }
.cf-brief-t { font-size: 12px; }
.cf-brief-sep { stroke: var(--line); stroke-width: 1; }
.cf-brief-dot { fill: var(--blue); }
.cf-brief-l { stroke: var(--panel); stroke-width: 6; stroke-linecap: round; }
html[data-theme="light"] .cf-brief-l { stroke: var(--line); }
.cf-check-bg { fill: color-mix(in srgb, var(--green) 22%, transparent); stroke: var(--green); stroke-width: 1.2; }
.cf-check { font-size: 11px; fill: var(--green); font-weight: 700; }
.cf-brief-s { font-size: 10.5px; }
/* fin v0.12.1 */

/* ============================================================
   v0.13 · flujo v3: cuadrícula, cajas de zona, globo terráqueo
   ============================================================ */
.cf-grid-p { stroke: var(--line); stroke-width: 1; opacity: .35; }
.cf-bg { opacity: .55; }

/* cajas sutiles de etiqueta de zona */
.cf-boxlab rect { fill: var(--panel); stroke: var(--line); stroke-width: 1; opacity: .92; }
.cf-boxlab text {
  font-family: var(--font-mono); font-size: 10px; font-weight: 500;
  letter-spacing: .12em; fill: var(--muted); text-anchor: middle;
}
.cf-boxlab-on rect { stroke: color-mix(in srgb, var(--blue) 45%, var(--line)); }
.cf-boxlab-on text { fill: var(--blue); }

/* globo terráqueo wireframe */
.cf-globe > circle:first-child { fill: none; stroke: var(--muted); stroke-width: 1; opacity: .5; }
.cf-lat { fill: none; stroke: var(--line); stroke-width: 1; opacity: .8; }
.cf-mer { fill: none; stroke: var(--blue); stroke-width: 1; opacity: .3; }

/* señales del planeta · colores core Cortex */
.gdot { opacity: .9; }
.gd-blue   { fill: var(--blue); }
.gd-lblue  { fill: var(--ca-blue-light); }
.gd-violet { fill: var(--ca-violet); }
.gd-green  { fill: var(--green); }
.gdot { animation: blinkdot 2.4s ease-in-out infinite; }
.gdel1 { animation-delay: 0s; }
.gdel2 { animation-delay: .5s; }
.gdel3 { animation-delay: 1s; }
.gdel4 { animation-delay: 1.4s; animation-duration: 3s; }
.gdel5 { animation-delay: 1.9s; }
.gdel6 { animation-delay: 2.3s; animation-duration: 3.2s; }
/* fin v0.13 */

/* v0.13.1 · artefacto: cuadrícula azulada + procesos internos */
.cf-grid-p { stroke: var(--ca-blue-light); opacity: .14; }
.cf-proc { stroke: var(--blue); stroke-width: 2; stroke-linecap: round; opacity: .4; stroke-dasharray: 5 7; animation: flowdash 1.4s linear infinite; }
.cf-proc2 { animation-duration: 1.9s; opacity: .3; }
.cf-proc3 { animation-duration: 1.1s; opacity: .35; }
.cf-pbit { fill: var(--ca-blue-light); animation: blinkdot 1.8s ease-in-out infinite; }
.d-status.blink { animation: blinkdot 1.6s ease-in-out infinite; }

/* ============================================================
   v0.14 · landings sectoriales: espejo, bifurcación, enlaces suaves
   ============================================================ */
.link-soft {
  align-self: center;
  color: var(--muted); font-size: .95rem; font-weight: 500;
  border-bottom: 1px solid var(--line); padding-bottom: 2px;
  transition: color .2s ease, border-color .2s ease;
}
.link-soft:hover { color: var(--blue); border-color: var(--blue); }

/* lista espejo (¿se reconoce?) */
.mirror-list { display: grid; gap: 12px; }
.mirror-item {
  border: 1px solid var(--line); border-left: 2px solid var(--ca-violet);
  border-radius: 0; background: var(--bg);
  padding: 18px 22px;
  font-size: clamp(1.05rem, 1.8vw, 1.25rem); font-weight: 500; color: var(--ink);
  transition: border-color .25s ease, background .25s ease, padding-left .25s ease;
}
.mirror-item:hover { border-color: var(--blue); border-left-color: var(--blue); background: var(--panel); padding-left: 30px; }

/* bifurcación */
.cf-gate-s2 { font-family: var(--font-mono); font-size: 10px; fill: var(--muted); text-anchor: middle; letter-spacing: .08em; }
.bif-yes { stroke: var(--blue); stroke-width: 1.6; fill: none; }
.bif-no { stroke: var(--muted); stroke-width: 1.2; fill: none; opacity: .4; stroke-dasharray: 4 7; }
.bif-pill-yes rect { stroke: var(--blue); fill: var(--bg); }
.bif-pill-yes circle { fill: var(--blue); }
.bif-pill-no rect { stroke: var(--line); opacity: .7; }
.bif-pill-no text { fill: var(--muted); }
.bif-pill-no circle { fill: var(--muted); }
.bif-out-yes { font-family: var(--font-mono); font-size: 10px; fill: var(--ca-blue-light); letter-spacing: .1em; }
.bif-out-no { font-family: var(--font-mono); font-size: 10px; fill: var(--muted); letter-spacing: .1em; opacity: .8; }
.tl-pill text { font-size: 10.5px; }
/* fin v0.14 */

/* ============================================================
   v0.14.1 · balance tipográfico, indicadores latentes, caja dos
   tonos, artefacto chat IA
   ============================================================ */

/* doctrina: nunca palabras viudas en titulares */
h1, h2 { text-wrap: balance; }

/* cabecera de card con indicador latente */
.card-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 18px; }
.card-top .chip { margin-bottom: 0; }
.pulse-ind { width: 14px; height: 14px; border-radius: 0; background: none; box-shadow: none; background-color: var(--blue-text); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 96 96'%3E%3Cpath d='M77.2 28.7A35 35 0 1 1 67.3 18.8L52.03 34.07A14.5 14.5 0 1 0 61.93 43.97Z'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 96 96'%3E%3Cpath d='M77.2 28.7A35 35 0 1 1 67.3 18.8L52.03 34.07A14.5 14.5 0 1 0 61.93 43.97Z'/%3E%3C/svg%3E") center / contain no-repeat; flex: 0 0 auto; animation: cxlatido 2.6s ease-in-out infinite; }
.card:nth-child(2n) .pulse-ind { background-color: var(--green); box-shadow: none; animation-delay: .7s; }
.card:nth-child(3n) .pulse-ind { animation-delay: 1.3s; }

/* caja central dos tonos (bifurcación legal) */
.gate2 rect:first-of-type { fill: var(--bg); }
.gate2-head, .gate2-headfix { fill: var(--panel); stroke: none; }
.gate2-t { font-family: var(--font-mono); font-size: 11px; fill: var(--blue); letter-spacing: .14em; font-weight: 600; }
.gate2-s { font-family: var(--font-mono); font-size: 9px; fill: var(--muted); text-anchor: middle; letter-spacing: .06em; }

/* ---------- artefacto chat IA (tecnológico) ---------- */
.ia-chat {
  border: 1px solid var(--line); border-radius: 0;
  background: var(--paper); overflow: hidden;
  box-shadow: 0 12px 44px var(--glow-blue);
}
.section-soft .ia-chat { background: var(--bg); }
.ia-head {
  display: flex; align-items: center; gap: 8px;
  padding: 13px 20px; border-bottom: 1px solid var(--line);
  background: var(--panel);
  font-family: var(--font-mono); font-size: .66rem; letter-spacing: .12em; color: var(--muted);
}
.ia-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--line); }
.ia-title { margin-left: 10px; }
.ia-clock { margin-left: auto; color: var(--green); }

.ia-body { padding: clamp(20px, 3vw, 32px); display: grid; gap: 24px; }
.ia-tag {
  display: inline-block; font-family: var(--font-mono); font-size: .6rem;
  letter-spacing: .12em; color: var(--muted);
  border: 1px solid var(--line); border-radius: 0; padding: 2px 8px; margin-bottom: 10px;
}
.ia-tag-ai { color: var(--ca-blue-light); border-color: color-mix(in srgb, var(--ca-blue-light) 40%, var(--line)); }
.ia-q { max-width: 46em; }
.ia-q p {
  margin: 0; font-size: clamp(1.05rem, 1.8vw, 1.25rem); font-weight: 500;
  color: var(--ink); line-height: 1.5;
  border-left: 2px solid var(--line); padding-left: 18px;
}
.ia-list { display: grid; gap: 10px; }
.ia-item {
  display: grid; grid-template-columns: 34px 1fr auto;
  gap: 14px; align-items: center;
  border: 1px solid var(--line); border-radius: 0;
  padding: 14px 18px;
  transition: border-color .2s ease;
}
.ia-item:hover { border-color: var(--blue); }
.ia-win { border-color: color-mix(in srgb, var(--blue) 55%, var(--line)); background: color-mix(in srgb, var(--glow-blue) 60%, transparent); }
.ia-n {
  font-family: var(--font-mono); font-size: .8rem; color: var(--muted);
  width: 30px; height: 30px; border: 1px solid var(--line); border-radius: 0;
  display: grid; place-items: center;
}
.ia-win .ia-n { color: var(--blue); border-color: var(--blue); }
.ia-info { display: grid; gap: 2px; min-width: 0; }
.ia-info strong { color: var(--title); font-size: 1rem; }
.ia-why { font-size: .82rem; color: var(--muted); }
.ia-badge { font-family: var(--font-mono); font-size: .6rem; letter-spacing: .1em; padding: 3px 9px; border: 1px solid color-mix(in srgb, var(--green) 45%, var(--line)); border-radius: 0; color: var(--green); white-space: nowrap; }
.ia-badge-dim { color: var(--muted); border-color: var(--line); opacity: .7; }

.ia-foot {
  display: flex; flex-wrap: wrap; gap: 8px; align-items: center;
  padding: 14px 20px; border-top: 1px solid var(--line); background: var(--panel);
}
.ia-src { font-family: var(--font-mono); font-size: .6rem; letter-spacing: .12em; color: var(--muted); margin-right: 8px; }
.ia-chip { font-family: var(--font-mono); font-size: .6rem; letter-spacing: .08em; color: var(--ca-blue-light); border: 1px solid color-mix(in srgb, var(--ca-blue-light) 35%, var(--line)); border-radius: 0; padding: 3px 9px; }
.ia-chip-off { color: var(--muted); border-color: var(--line); text-decoration: line-through; opacity: .6; }

@media (max-width: 680px) {
  .ia-item { grid-template-columns: 30px 1fr; }
  .ia-badge { grid-column: 2; justify-self: start; }
}
/* fin v0.14.1 */

/* v0.14.2 · caja central v3: fix especificidad + capas UX */
.cf-gate .gate2-glow { fill: var(--bg); stroke: var(--blue); stroke-width: 1.6; filter: drop-shadow(0 0 16px var(--glow-blue)); }
.cf-gate .gate2-head, .cf-gate .gate2-headfix { fill: var(--panel); stroke: none; }
.cf-gate .gate2-scan { fill: var(--ca-blue-light); opacity: .14; stroke: none; }
.gate2-tick { fill: none; stroke: var(--ca-blue-light); stroke-width: 1.2; opacity: .5; }

/* ============================================================
   v0.15 · Radar de categoría (sector tech) + typewriter global
   ============================================================ */
.rad-panel { overflow: hidden; }
.rad-body {
  display: grid; grid-template-columns: 1.05fr .95fr; gap: 0;
}
.rad-scope {
  position: relative; padding: 26px;
  border-right: 1px solid var(--line);
  background-image:
  linear-gradient(color-mix(in srgb, var(--line) 40%, transparent) 1px, transparent 1px),
  linear-gradient(90deg, color-mix(in srgb, var(--line) 40%, transparent) 1px, transparent 1px);
  background-size: 44px 44px;
}
.rad-svg { display: block; width: 100%; height: auto; }
.rad-ring { fill: none; stroke: var(--line); stroke-width: 1; }
.rad-ring-out { stroke: color-mix(in srgb, var(--blue) 40%, var(--line)); stroke-dasharray: 3 6; }
.rad-axis { stroke: var(--line); stroke-width: 1; stroke-dasharray: 2 8; opacity: .8; }
.rad-needle { stroke: var(--ca-blue-light); stroke-width: 1.2; opacity: .8; }
.rad-sweep { transform-origin: 230px 230px; animation: radspin 7s linear infinite; }
@keyframes radspin { to { transform: rotate(360deg); } }
.rad-lab {
  font-family: var(--font-mono); font-size: 9.5px; letter-spacing: .14em;
  fill: var(--muted); text-anchor: middle;
}
.rad-lab-geo { fill: var(--ca-blue-light); }
.rad-blip text {
  font-family: var(--font-mono); font-size: 9.5px; letter-spacing: .1em; fill: var(--title);
}
.rad-core { fill: var(--blue); }
.rad-core-geo { fill: var(--green); }
.rad-ping {
  fill: none; stroke: var(--blue); stroke-width: 1.4;
  transform-box: fill-box; transform-origin: center;
  animation: radping 7s ease-out infinite; animation-delay: var(--d, 0s);
  opacity: 0;
}
@keyframes radping {
  0% { opacity: .9; transform: scale(.5); }
  18% { opacity: 0; transform: scale(3.4); }
  100% { opacity: 0; transform: scale(3.4); }
}
.rad-blip-off .rad-core { fill: var(--muted); opacity: .55; }
.rad-blip-off text { fill: var(--muted); opacity: .65; }
.rad-corner { position: absolute; width: 14px; height: 14px; pointer-events: none; }
.rad-corner.tl { top: 10px; left: 10px; border-top: 1px solid var(--blue); border-left: 1px solid var(--blue); }
.rad-corner.tr { top: 10px; right: 10px; border-top: 1px solid var(--blue); border-right: 1px solid var(--blue); }
.rad-corner.bl { bottom: 10px; left: 10px; border-bottom: 1px solid var(--blue); border-left: 1px solid var(--blue); }
.rad-corner.br { bottom: 10px; right: 10px; border-bottom: 1px solid var(--blue); border-right: 1px solid var(--blue); }

.rad-side { display: grid; align-content: start; gap: 0; }
.rad-block { padding: 18px 22px; border-bottom: 1px solid var(--line); }
.rad-block:last-child { border-bottom: 0; }
.rad-eng {
  display: grid; grid-template-columns: 10px 1fr auto auto; gap: 10px; align-items: center;
  padding: 8px 0; border-bottom: 1px dashed color-mix(in srgb, var(--line) 70%, transparent);
  font-size: .86rem;
}
.rad-eng:last-child { border-bottom: 0; }
.rad-eng .e-kind { font-family: var(--font-mono); font-size: .58rem; letter-spacing: .1em; color: var(--muted); }
.rad-eng .e-name { color: var(--title); font-weight: 500; }

#rad-feed { display: grid; gap: 7px; }
.rad-line {
  display: flex; gap: 10px; align-items: baseline;
  font-family: var(--font-mono); font-size: .64rem; letter-spacing: .04em; color: var(--muted);
  animation: radlinein .4s ease both;
}
@keyframes radlinein { from { opacity: 0; transform: translateY(4px); } }
.rad-line b { color: var(--ca-blue-light); font-weight: 600; }
.rad-line .ok { color: var(--green); }

.rad-foot {
  display: flex; flex-wrap: wrap; gap: 8px 26px;
  padding: 14px 22px; border-top: 1px solid var(--line); background: var(--panel);
  font-family: var(--font-mono); font-size: .64rem; letter-spacing: .06em; color: var(--muted);
}
.rad-foot b { color: var(--blue); font-weight: 600; margin-right: 5px; }

@media (max-width: 900px) {
  .rad-body { grid-template-columns: 1fr; }
  .rad-scope { border-right: 0; border-bottom: 1px solid var(--line); }
}

/* typewriter global en .label-tech: sin salto de layout */
.label-tech { min-height: 1.2em; }
.type-caret-fade { animation: caretout .5s ease forwards; }
@keyframes caretout { to { opacity: 0; } }

@media (prefers-reduced-motion: reduce) {
  .rad-sweep { animation: none; }
  .rad-ping { animation: none; opacity: 0; }
}
/* fin v0.15 */

/* ============================================================
   v0.16 · Megamenú Cortex (desktop) + drawer móvil
   Adaptado del prototipo /componentes/megamenu-cortex a tokens del tema.
   ============================================================ */
.mm-links { align-items: center; }
.mm-item { position: static; display: flex; align-items: center; height: 66px; }
.mm-trigger {
  border: 0; background: transparent; cursor: pointer; padding: 0;
  color: var(--muted); font: inherit; font-size: .92rem; font-weight: 500;
}
.mm-trigger::after {
  content: ""; display: inline-block; width: 5px; height: 5px; margin-left: 7px;
  border-right: 1px solid currentColor; border-bottom: 1px solid currentColor;
  transform: rotate(45deg) translateY(-2px); transition: transform .18s ease;
}
.mm-item:hover .mm-trigger, .mm-item.mm-open .mm-trigger, .mm-trigger:focus-visible { color: var(--title); }
.mm-item:hover .mm-trigger::after, .mm-item.mm-open .mm-trigger::after { transform: rotate(225deg) translateY(2px); }

.mm-panel {
  position: absolute; top: 66px; left: 50%;
  width: min(1080px, calc(100vw - 32px));
  padding: 22px;
  border: 1px solid var(--line); border-top: 0; border-radius: 0;
  background:
    radial-gradient(circle at var(--mx, 50%) var(--my, 0%), var(--glow-blue), transparent 34%),
    color-mix(in srgb, var(--bg) 97%, var(--panel));
  box-shadow: 0 28px 80px rgba(0, 0, 0, .28);
  backdrop-filter: blur(18px);
  opacity: 0; pointer-events: none;
  transform: translateX(-50%) translateY(8px);
  transition: opacity .18s ease, transform .18s ease;
}
.mm-panel-sm { width: min(480px, calc(100vw - 32px)); }
.mm-item:hover .mm-panel, .mm-item:focus-within .mm-panel, .mm-item.mm-open .mm-panel {
  opacity: 1; pointer-events: auto; transform: translateX(-50%) translateY(0);
}

.mm-grid { display: grid; grid-template-columns: 1.1fr .95fr .95fr; gap: 18px; }

.mm-feature {
  position: relative; overflow: hidden; padding: 18px;
  border: 1px solid var(--line); border-radius: 0;
  background: color-mix(in srgb, var(--panel) 60%, transparent);
}
.mm-feature::after {
  content: ""; position: absolute; left: 18px; right: 18px; bottom: 0; height: 1px;
  background: linear-gradient(90deg, var(--blue), transparent); opacity: .65;
}
.mm-kicker {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: var(--font-mono); font-size: .6rem; font-weight: 500;
  letter-spacing: .14em; color: var(--blue); text-transform: uppercase;
}
.mm-kicker::before { content: ""; width: 16px; height: 1px; background: var(--blue); }
.mm-feature strong { display: block; margin: 10px 0 8px; color: var(--title); font-size: 1rem; letter-spacing: -0.01em; }
.mm-feature p { margin: 0 0 16px; color: var(--muted); font-size: .86rem; line-height: 1.5; }
.mm-feature-btn { font-size: .84rem; }

.mm-colhead {
  display: block; margin-bottom: 8px;
  font-family: var(--font-mono); font-size: .6rem; font-weight: 500;
  letter-spacing: .14em; color: var(--muted);
}
.mm-col a {
  position: relative; display: block; padding: 9px 0 9px 18px;
  border-bottom: 1px solid color-mix(in srgb, var(--line) 55%, transparent);
}
.mm-col a:last-child { border-bottom: 0; }
.mm-col a::before {
  content: "→"; position: absolute; left: 0; top: 9px;
  color: var(--blue); opacity: .45; transition: transform .18s ease, opacity .18s ease;
}
.mm-col a:hover::before { opacity: 1; transform: translateX(3px); }
.mm-col a b { display: block; color: var(--title); font-size: .88rem; font-weight: 500; }
.mm-col a:hover b { color: var(--blue); }
.mm-col a em { display: block; color: var(--muted); font-style: normal; font-size: .74rem; line-height: 1.35; }

.mm-sector-head { display: flex; align-items: baseline; justify-content: space-between; gap: 18px; margin-bottom: 14px; flex-wrap: wrap; }
.mm-sector-note { color: var(--muted); font-size: .8rem; }
.mm-sector-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.mm-sector {
  position: relative; display: grid; gap: 3px; align-content: start;
  min-height: 56px; padding: 11px 12px; overflow: hidden;
  border: 1px solid var(--line); border-radius: 0;
  background: color-mix(in srgb, var(--panel) 45%, transparent);
  transition: transform .2s ease, border-color .2s ease;
}
.mm-sector > span { color: var(--title); font-size: .84rem; font-weight: 500; line-height: 1.25; }
.mm-sector > em { color: var(--muted); font-style: normal; font-size: .7rem; line-height: 1.3; }
a.mm-sector::after {
  content: "→"; position: absolute; top: 9px; right: 12px;
  color: var(--blue); opacity: .34; transition: transform .2s ease, opacity .2s ease;
}
a.mm-sector:hover {
  transform: translateY(-1px);
  border-color: color-mix(in srgb, var(--blue) 40%, var(--line));
  background:
    radial-gradient(circle at var(--mx, 50%) var(--my, 0%), var(--glow-blue), transparent 52%),
    color-mix(in srgb, var(--panel) 55%, transparent);
}
a.mm-sector:hover::after { opacity: 1; transform: translateX(3px); }
.mm-sector-soon { opacity: .55; }
.mm-sector-soon i {
  position: absolute; top: 10px; right: 12px; font-style: normal;
  font-family: var(--font-mono); font-size: .52rem; letter-spacing: .1em; color: var(--muted);
}

/* burger + drawer móvil */
.mm-burger { display: none; }
.mm-mobile { display: none; }

@media (max-width: 860px) {
  .mm-burger {
    display: grid; gap: 5px; place-content: center;
    width: 40px; height: 40px; margin-left: auto;
    border: 1px solid var(--line); border-radius: 0; background: transparent; cursor: pointer;
  }
  .mm-burger span { width: 16px; height: 1.5px; background: var(--title); transition: transform .2s ease, opacity .2s ease; }
  .mm-burger[aria-expanded="true"] span:first-child { transform: translateY(3.25px) rotate(45deg); }
  .mm-burger[aria-expanded="true"] span:last-child { transform: translateY(-3.25px) rotate(-45deg); }
  .header-cta { display: none; }

  .mm-mobile {
    display: block; position: absolute; top: 66px; left: 0; right: 0;
    max-height: calc(100vh - 66px); overflow-y: auto;
    background: color-mix(in srgb, var(--bg) 96%, var(--panel));
    border-bottom: 1px solid var(--line);
    backdrop-filter: blur(16px);
  }
  .mm-mobile[hidden] { display: none; }
  .mm-mobile-in { display: grid; gap: 22px; padding-top: 22px; padding-bottom: 26px; }
  .mm-mgroup { display: grid; }
  .mm-mgroup a {
    padding: 10px 0; color: var(--title); font-size: .95rem;
    border-bottom: 1px solid color-mix(in srgb, var(--line) 55%, transparent);
  }
  .mm-mgroup a:last-child { border-bottom: 0; }
  .mm-mcta { justify-self: start; }
}
/* fin v0.16 */

/* ============================================================
   v0.17 · Artefacto ia-chat vivo (sector tech) — Sentinel operando
   ============================================================ */
.ia-chat { position: relative; }

.ia-eq { display: inline-flex; gap: 2px; align-items: flex-end; height: 12px; margin-left: 10px; }
.ia-eq i { width: 3px; background: var(--blue); animation: iaeq 1.1s ease-in-out infinite; }
.ia-eq i:nth-child(1) { height: 5px; animation-delay: 0s; }
.ia-eq i:nth-child(2) { height: 10px; animation-delay: .18s; }
.ia-eq i:nth-child(3) { height: 7px; animation-delay: .36s; }
.ia-eq i:nth-child(4) { height: 11px; animation-delay: .54s; }
@keyframes iaeq { 0%,100% { transform: scaleY(.4); } 50% { transform: scaleY(1); } }

.ia-live {
  display: inline-flex; align-items: center; gap: 6px; margin-left: 12px;
  font-family: var(--font-mono); font-size: .58rem; letter-spacing: .12em; color: var(--green);
}
.ia-live-dot { width: 12px; height: 12px; border-radius: 0; background: none; box-shadow: none; background-color: var(--green); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 96 96'%3E%3Cpath d='M77.2 28.7A35 35 0 1 1 67.3 18.8L52.03 34.07A14.5 14.5 0 1 0 61.93 43.97Z'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 96 96'%3E%3Cpath d='M77.2 28.7A35 35 0 1 1 67.3 18.8L52.03 34.07A14.5 14.5 0 1 0 61.93 43.97Z'/%3E%3C/svg%3E") center / contain no-repeat; flex: 0 0 auto; animation: cxlatido 1.9s ease-in-out infinite; }
@keyframes iapulse { 50% { opacity: .3; } }

/* rotación de comprador y tarjetas */
.ia-q p { transition: opacity .3s ease; min-height: 3.2em; }
#ia-buyer-tag { transition: opacity .3s ease; }
.ia-item { transition: opacity .32s ease, transform .32s ease; }
.ia-item.ia-out { opacity: 0; transform: translateY(6px); }
.ia-fade { opacity: 0 !important; }

/* chips de fuentes fluctuando */
.ia-chips { display: inline-flex; flex-wrap: wrap; gap: 8px; }
.ia-chip { transition: opacity .35s ease, transform .35s ease; }
.ia-chip-geo { color: var(--violet); border-color: color-mix(in srgb, var(--violet) 40%, var(--line)); }
.ia-chip-green { color: var(--green); border-color: color-mix(in srgb, var(--green) 45%, var(--line)); }
.ia-chip.ia-out { opacity: 0; transform: translateY(4px); }

/* strip Sentinel de analítica en vivo */
.ia-sentinel {
  position: relative; overflow: hidden;
  display: flex; flex-wrap: wrap; gap: 8px 26px; align-items: center;
  padding: 12px 20px; border-top: 1px solid var(--line);
  background: color-mix(in srgb, var(--panel) 72%, transparent);
  font-family: var(--font-mono); font-size: .6rem; letter-spacing: .1em; color: var(--muted);
}
.ia-sent-brand { display: inline-flex; align-items: center; gap: 8px; color: var(--blue); font-weight: 600; }
.ia-stat b { color: var(--ca-blue-light); font-weight: 600; margin-left: 6px; }
.ia-stat .st-green { color: var(--green); }
.ia-stat .st-violet { color: var(--violet); }
.ia-scan {
  position: absolute; top: 0; bottom: 0; width: 60px; pointer-events: none;
  background: linear-gradient(90deg, transparent, var(--glow-blue), transparent);
  animation: iascan 5.5s linear infinite;
}
@keyframes iascan { from { left: -70px; } to { left: 100%; } }

@media (prefers-reduced-motion: reduce) {
  .ia-eq i, .ia-live-dot, .ia-scan { animation: none; }
}
/* fin v0.17 */

/* ============================================================
   v0.17b · Matriz de cobertura de demanda (sector industrial)
   ============================================================ */
.dm-panel { position: relative; overflow: hidden; }
.dm-table { display: grid; }
.dm-row {
  display: grid; grid-template-columns: 1.6fr .7fr .7fr 1.1fr;
  gap: 14px; align-items: center;
  padding: 14px 22px; border-bottom: 1px solid color-mix(in srgb, var(--line) 70%, transparent);
}
.dm-row:last-child { border-bottom: 0; }
.dm-head {
  font-family: var(--font-mono); font-size: .58rem; letter-spacing: .14em; color: var(--muted);
  background: color-mix(in srgb, var(--panel) 60%, transparent);
  border-bottom: 1px solid var(--line);
}
.dm-q { color: var(--title); font-size: .9rem; line-height: 1.4; }
.dm-exp {
  font-family: var(--font-mono); font-style: normal; font-size: .54rem; letter-spacing: .12em;
  color: var(--violet); border: 1px solid color-mix(in srgb, var(--violet) 40%, var(--line));
  border-radius: 0; padding: 2px 6px; margin-left: 8px; vertical-align: middle; white-space: nowrap;
}
.dm-cell {
  font-family: var(--font-mono); font-size: .6rem; letter-spacing: .1em; text-align: center;
  padding: 6px 4px; border-radius: 0; border: 1px solid var(--line);
  transition: color .5s ease, border-color .5s ease, background .5s ease, opacity .5s ease;
}
.dm-on {
  color: var(--green); border-color: color-mix(in srgb, var(--green) 45%, var(--line));
  background: color-mix(in srgb, var(--green) 8%, transparent);
}
.dm-off { color: var(--muted); opacity: .65; border-style: dashed; }
.dm-res { font-family: var(--font-mono); font-size: .58rem; letter-spacing: .08em; }
.dm-res-ok { color: var(--green); }
.dm-res-warn { color: var(--ca-amber); }
.dm-res-no { color: var(--muted); text-decoration: none; opacity: .8; }
html[data-theme="dark"] .dm-res-warn { color: #D9A85C; }

.dm-foot {
  display: flex; flex-wrap: wrap; gap: 8px 26px; align-items: center;
  padding: 12px 22px; border-top: 1px solid var(--line); background: var(--panel);
  font-family: var(--font-mono); font-size: .6rem; letter-spacing: .08em; color: var(--muted);
}
.dm-foot b { color: var(--blue); font-weight: 600; margin-right: 5px; }
.dm-live { display: inline-flex; align-items: center; gap: 6px; color: var(--green); margin-left: auto; }

@media (max-width: 760px) {
  .dm-row { grid-template-columns: 1fr 1fr; }
  .dm-q { grid-column: 1 / -1; }
  .dm-res { grid-column: 1 / -1; }
  .dm-head span:first-child, .dm-head span:last-child { display: none; }
}
/* fin v0.17b */

/* v0.18 · megamenú Sectores: cabecera limpia, filete inferior como el resto */
.mm-sector-head { position: relative; padding-bottom: 12px; margin-bottom: 14px; }
.mm-sector-head .mm-kicker::before { display: none; }
.mm-sector-head::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px;
  background: linear-gradient(90deg, var(--blue), transparent); opacity: .55;
}
/* fin v0.18 */

/* ============================================================
   v0.18 · Ruta de decisión (sector consultoría)
   ============================================================ */
.rt-panel { position: relative; overflow: hidden; }
.rt-track { position: relative; padding: 30px 26px 26px; }
.rt-line {
  position: absolute; top: 44px; left: 60px; right: 60px; height: 1px;
  background: var(--line);
}
.rt-line-fill {
  position: absolute; left: 0; top: -0.5px; height: 2px; width: 0%;
  background: linear-gradient(90deg, var(--blue), var(--ca-blue-light));
  box-shadow: 0 0 12px var(--glow-blue);
  transition: width 1.4s ease;
}
.rt-steps { position: relative; display: grid; grid-template-columns: repeat(5, 1fr); gap: 14px; }
.rt-step { display: grid; gap: 5px; align-content: start; text-align: left; padding-top: 26px; position: relative; opacity: .45; transition: opacity .5s ease; }
.rt-step.rt-on { opacity: 1; }
.rt-dot {
  position: absolute; top: 9px; left: 0; width: 11px; height: 11px; border-radius: 50%;
  border: 1px solid var(--line); background: var(--panel);
  transition: border-color .4s ease, background .4s ease, box-shadow .4s ease;
}
.rt-step.rt-on .rt-dot { border-color: var(--blue); background: var(--blue); box-shadow: 0 0 10px var(--glow-blue); }
.rt-k { font-family: var(--font-mono); font-size: .56rem; letter-spacing: .14em; color: var(--muted); }
.rt-step-key .rt-k { color: var(--blue); }
.rt-step strong { color: var(--title); font-size: .92rem; font-weight: 600; letter-spacing: -0.01em; }
.rt-step em { color: var(--muted); font-style: normal; font-size: .76rem; line-height: 1.4; }
.rt-step-key {
  border: 1px solid color-mix(in srgb, var(--blue) 35%, var(--line));
  border-radius: 0; padding: 26px 12px 12px; margin-top: -2px;
  background: color-mix(in srgb, var(--panel) 55%, transparent);
}
.rt-step-key .rt-dot { left: 12px; }
.rt-verdict {
  margin-top: 7px; justify-self: start;
  font-family: var(--font-mono); font-size: .58rem; letter-spacing: .1em;
  padding: 4px 9px; border-radius: 0;
  border: 1px solid color-mix(in srgb, var(--blue) 40%, var(--line));
  color: var(--ca-blue-light);
  transition: color .4s ease, border-color .4s ease;
}
.rt-verdict.rt-v-ok { color: var(--green); border-color: color-mix(in srgb, var(--green) 50%, var(--line)); }
.rt-verdict.rt-v-no { color: var(--muted); border-color: var(--line); text-decoration: line-through; opacity: .7; }

@media (max-width: 860px) {
  .rt-line { display: none; }
  .rt-steps { grid-template-columns: 1fr; gap: 10px; }
  .rt-step { padding-top: 0; padding-left: 26px; }
  .rt-dot { top: 4px; }
  .rt-step-key { padding: 12px 12px 12px 30px; }
  .rt-step-key .rt-dot { left: 12px; top: 16px; }
}
/* fin v0.18 ruta */

/* v0.19 · rotación de consultas en la matriz industrial */
.dm-row { transition: opacity .35s ease; }
.dm-row.dm-swapping { opacity: 0; }
.dm-row.dm-flash { animation: dmflash 1.6s ease; }
@keyframes dmflash {
  0% { background: color-mix(in srgb, var(--blue) 14%, transparent); }
  8% { background: color-mix(in srgb, var(--blue) 4%, transparent); }
  16% { background: color-mix(in srgb, var(--blue) 12%, transparent); }
  100% { background: transparent; }
}
.dm-flash .dm-q { animation: dmqflick .9s steps(2, end); }
@keyframes dmqflick { 0% { opacity: .3; } 30% { opacity: 1; } 45% { opacity: .55; } 60% { opacity: 1; } }
/* fin v0.19 matriz */

/* ============================================================
   v0.19 · Órbita de decisión (sector salud y belleza)
   ============================================================ */
.ob-panel { position: relative; overflow: hidden; }
.ob-wrap {
  padding: 26px;
  background-image:
    linear-gradient(color-mix(in srgb, var(--line) 40%, transparent) 1px, transparent 1px),
    linear-gradient(90deg, color-mix(in srgb, var(--line) 40%, transparent) 1px, transparent 1px);
  background-size: 44px 44px;
}
.ob-svg { display: block; width: 100%; max-width: 700px; height: auto; margin: 0 auto; overflow: visible; }
.ob-ring { fill: none; stroke: var(--line); stroke-width: 1; }
.ob-ring-spin {
  stroke-dasharray: 4 10;
  transform-origin: 230px 200px;
  animation: obspin 40s linear infinite;
  stroke: color-mix(in srgb, var(--blue) 40%, var(--line));
}
@keyframes obspin { to { transform: rotate(360deg); } }
.ob-link { stroke: var(--line); stroke-width: 1; opacity: .6; transition: stroke .5s ease, opacity .5s ease; }
.ob-link.ob-on { stroke: var(--blue); opacity: 1; filter: drop-shadow(0 0 6px var(--glow-blue)); }
.ob-core-glow { fill: var(--glow-blue); }
.ob-core { fill: var(--panel); stroke: var(--blue); stroke-width: 1.4; }
.ob-center { animation: obpulse 3.2s ease-in-out infinite; transform-origin: 230px 200px; }
@keyframes obpulse { 50% { transform: scale(1.03); } }
.ob-core-t1, .ob-core-t2 {
  font-family: var(--font-mono); font-size: 9.5px; letter-spacing: .12em;
  fill: var(--title); text-anchor: middle;
}
.ob-core-t2 { fill: var(--blue); }
.ob-node circle { fill: var(--panel); stroke: var(--line); stroke-width: 1.2; transition: stroke .4s ease, fill .4s ease; }
.ob-node text {
  font-family: var(--font-mono); font-size: 9.5px; letter-spacing: .1em;
  fill: var(--muted); text-anchor: middle; transition: fill .4s ease;
}
.ob-node[data-ob="1"] text, .ob-node[data-ob="2"] text { text-anchor: start; }
.ob-node[data-ob="4"] text, .ob-node[data-ob="5"] text { text-anchor: end; }
.ob-node.ob-on circle { stroke: var(--blue); fill: color-mix(in srgb, var(--blue) 25%, var(--panel)); }
.ob-node.ob-on text { fill: var(--title); }

.ob-readout {
  display: flex; flex-wrap: wrap; gap: 8px 22px; align-items: baseline; justify-content: center;
  margin-top: 16px; padding: 12px 16px;
  border: 1px solid var(--line); border-radius: 0;
  background: color-mix(in srgb, var(--panel) 70%, transparent);
  width: 100%;
}
.ob-ro-k { font-family: var(--font-mono); font-size: .62rem; letter-spacing: .12em; color: var(--blue); }
.ob-ro-v { font-family: var(--font-mono); font-size: .62rem; letter-spacing: .1em; color: var(--muted); transition: color .4s ease; }
.ob-ro-v.ob-v-ok { color: var(--green); }
.ob-ro-v.ob-v-no { color: var(--ca-amber); }
html[data-theme="dark"] .ob-ro-v.ob-v-no { color: #D9A85C; }

@media (prefers-reduced-motion: reduce) {
  .ob-ring-spin, .ob-center { animation: none; }
}
/* fin v0.19 órbita */

/* v0.20 · CTA del header: compacto, activo, con barrido de luz */
.header-cta {
  position: relative; overflow: hidden;
  padding: 8px 16px; font-size: .84rem; min-height: 0;
  border: 1px solid color-mix(in srgb, var(--blue) 55%, var(--line));
  box-shadow: 0 0 14px var(--glow-blue);
  transition: box-shadow .25s ease, transform .25s ease;
}
.header-cta::after {
  content: ""; position: absolute; top: 0; bottom: 0; width: 46px; left: -60px;
  background: linear-gradient(100deg, transparent, rgba(255,255,255,.28), transparent);
  transform: skewX(-18deg);
  animation: ctashine 4.2s ease-in-out infinite;
}
@keyframes ctashine { 0%, 62% { left: -60px; } 82%, 100% { left: 115%; } }
.header-cta:hover { box-shadow: 0 0 22px var(--glow-blue), 0 0 44px var(--glow-blue); transform: translateY(-1px); }
@media (prefers-reduced-motion: reduce) { .header-cta::after { animation: none; } }
/* fin v0.20 cta */

/* ============================================================
   v0.20 · Terminal de admisiones (sector educación)
   ============================================================ */
.ed-panel { position: relative; overflow: hidden; }
.ed-counters {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 0;
  border-bottom: 1px solid var(--line);
}
.ed-count { padding: 16px 22px; border-right: 1px solid var(--line); display: grid; gap: 4px; }
.ed-count:last-child { border-right: 0; }
.ed-c-label { font-family: var(--font-mono); font-size: .56rem; letter-spacing: .12em; color: var(--muted); }
.ed-c-value { font-family: var(--font-mono); font-size: 1.4rem; font-weight: 600; color: var(--ca-blue-light); letter-spacing: -0.01em; }
.ed-c-warn { color: var(--ca-amber); }
html[data-theme="dark"] .ed-c-warn { color: #D9A85C; }
.ed-c-ok { color: var(--green); }

.ed-stream {
  display: grid; gap: 0; min-height: 240px; align-content: start;
  padding: 10px 0;
  background-image: linear-gradient(color-mix(in srgb, var(--line) 30%, transparent) 1px, transparent 1px);
  background-size: 100% 44px;
}
.ed-line {
  display: grid; grid-template-columns: 74px 1fr auto; gap: 14px; align-items: baseline;
  padding: 10px 22px;
  animation: edin .5s ease both;
}
@keyframes edin { from { opacity: 0; transform: translateY(-6px); } }
.ed-t { font-family: var(--font-mono); font-size: .6rem; letter-spacing: .06em; color: var(--muted); }
.ed-q { color: var(--title); font-size: .9rem; line-height: 1.4; }
.ed-v {
  font-family: var(--font-mono); font-size: .58rem; letter-spacing: .1em; white-space: nowrap;
  padding: 3px 9px; border-radius: 0; border: 1px solid var(--line); color: var(--muted);
}
.ed-v-ok { color: var(--green); border-color: color-mix(in srgb, var(--green) 45%, var(--line)); }
.ed-v-no { opacity: .8; }

@media (max-width: 760px) {
  .ed-counters { grid-template-columns: 1fr; }
  .ed-count { border-right: 0; border-bottom: 1px solid var(--line); }
  .ed-line { grid-template-columns: 1fr; gap: 4px; }
  .ed-v { justify-self: start; }
}
/* fin v0.20 terminal */

/* ============================================================
   v0.21 · Doble escáner (sector agroalimentario y bodegas)
   ============================================================ */
.ag-panel { position: relative; overflow: hidden; }
.ag-split { display: grid; grid-template-columns: 1fr 1fr; }
.ag-side { position: relative; overflow: hidden; padding: 20px 22px; }
.ag-side:first-child { border-right: 1px solid var(--line); }
.ag-side::after {
  content: ""; position: absolute; top: 0; bottom: 0; width: 54px; left: -60px; pointer-events: none;
  background: linear-gradient(90deg, transparent, var(--glow-blue), transparent);
  animation: iascan 6s linear infinite;
}
.ag-side-ia::after { animation-delay: 3s; }
.ag-h { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.ag-eye {
  font-family: var(--font-mono); font-size: .54rem; letter-spacing: .12em;
  padding: 2px 7px; border-radius: 0; color: var(--green);
  border: 1px solid color-mix(in srgb, var(--green) 45%, var(--line));
}
.ag-eye-ia { color: var(--violet); border-color: color-mix(in srgb, var(--violet) 40%, var(--line)); }
.ag-rows { display: grid; }
.ag-row {
  display: grid; grid-template-columns: 22px 1fr; gap: 10px; align-items: baseline;
  padding: 10px 0; font-size: .88rem; color: var(--title); line-height: 1.4;
  border-bottom: 1px dashed color-mix(in srgb, var(--line) 70%, transparent);
}
.ag-row:last-child { border-bottom: 0; }
.ag-k { font-family: var(--font-mono); font-size: .8rem; text-align: center; }
.ag-ok { color: var(--green); }
.ag-no { color: var(--ca-amber); }
html[data-theme="dark"] .ag-no { color: #D9A85C; }
.ag-side-ia .ag-row span:last-child { color: var(--muted); }

.ag-verdict {
  display: flex; flex-wrap: wrap; gap: 8px 22px; align-items: baseline;
  padding: 14px 22px; border-top: 1px solid var(--line);
  background: color-mix(in srgb, var(--panel) 70%, transparent);
  transition: opacity .35s ease;
}
.ag-verdict.ag-fade { opacity: 0; }
.ag-v-k { font-family: var(--font-mono); font-size: .58rem; letter-spacing: .14em; color: var(--blue); }
.ag-v-q { color: var(--title); font-size: .88rem; }
.ag-v-r { font-family: var(--font-mono); font-size: .6rem; letter-spacing: .1em; color: var(--muted); margin-left: auto; }
.ag-v-r.ag-r-ok { color: var(--green); }

@media (max-width: 760px) {
  .ag-split { grid-template-columns: 1fr; }
  .ag-side:first-child { border-right: 0; border-bottom: 1px solid var(--line); }
  .ag-v-r { margin-left: 0; }
}
/* fin v0.21 */

/* ============================================================
   v0.22 · Planning de visibilidad (sector construcción e inmobiliaria)
   ============================================================ */
.gt-panel { position: relative; overflow: hidden; }
.gt-board { position: relative; padding: 22px; overflow: hidden; }
.gt-now {
  position: absolute; top: 10px; bottom: 34px; width: 1px; pointer-events: none;
  background: color-mix(in srgb, var(--blue) 65%, transparent);
  box-shadow: 0 0 10px var(--glow-blue);
  animation: gtnow 9s linear infinite;
}
@keyframes gtnow { from { left: 4%; } to { left: 96%; } }
.gt-row {
  display: grid; grid-template-columns: 250px 1fr 46px; gap: 14px; align-items: center;
  padding: 9px 0;
}
.gt-phase { font-family: var(--font-mono); font-size: .6rem; letter-spacing: .1em; color: var(--muted); }
.gt-track {
  height: 12px; border: 1px solid var(--line); border-radius: 0; overflow: hidden;
  background: color-mix(in srgb, var(--panel) 60%, transparent);
}
.gt-bar {
  height: 100%; width: 0;
  background: linear-gradient(90deg, color-mix(in srgb, var(--blue) 55%, transparent), var(--blue));
}
.gt-bar-warn { background: linear-gradient(90deg, color-mix(in srgb, var(--ca-amber) 45%, transparent), var(--ca-amber)); }
.gt-pct { font-family: var(--font-mono); font-size: .66rem; color: var(--ca-blue-light); text-align: right; }
.gt-gloss {
  margin: 12px 0 0; font-family: var(--font-mono); font-size: .56rem;
  letter-spacing: .1em; color: var(--muted);
}
@media (max-width: 760px) {
  .gt-row { grid-template-columns: 1fr 46px; }
  .gt-phase { grid-column: 1 / -1; }
}
@media (prefers-reduced-motion: reduce) { .gt-now { animation: none; left: 50%; } }
/* fin v0.22 */

/* v0.23 · triggers del megamenú: mutación azul + subrayado animado */
.mm-trigger { position: relative; padding-bottom: 5px; transition: color .2s ease; }
.mm-trigger::before {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px;
  background: var(--blue);
  transform: scaleX(0); transform-origin: left center;
  transition: transform .28s cubic-bezier(.25,.8,.3,1);
}
.mm-item:hover .mm-trigger, .mm-item.mm-open .mm-trigger, .mm-trigger:focus-visible { color: var(--blue); text-shadow: 0 0 18px var(--glow-blue); }
.mm-item:hover .mm-trigger::before, .mm-item.mm-open .mm-trigger::before { transform: scaleX(1); }
/* fin v0.23 triggers */

/* ============================================================
   v0.23 · Selector de decisor (sector energía y renovables)
   ============================================================ */
.en-panel { position: relative; overflow: hidden; }
.en-selector { display: grid; grid-template-columns: repeat(3, 1fr); }
.en-prof {
  display: grid; gap: 5px; align-content: start;
  padding: 20px 22px; border-right: 1px solid var(--line);
  opacity: .5; transition: opacity .5s ease, background .5s ease, box-shadow .5s ease;
}
.en-prof:last-child { border-right: 0; }
.en-prof.en-on {
  opacity: 1;
  background: color-mix(in srgb, var(--panel) 55%, transparent);
  box-shadow: inset 0 -2px 0 var(--blue), 0 0 24px var(--glow-blue);
}
.en-p-k { font-family: var(--font-mono); font-size: .56rem; letter-spacing: .14em; color: var(--muted); }
.en-prof.en-on .en-p-k { color: var(--blue); }
.en-prof strong { color: var(--title); font-size: 1rem; letter-spacing: -0.01em; }
.en-prof em { color: var(--muted); font-style: normal; font-size: .78rem; line-height: 1.35; }
.en-p-ch {
  justify-self: start; margin-top: 5px;
  font-family: var(--font-mono); font-size: .54rem; letter-spacing: .1em;
  padding: 3px 8px; border-radius: 0; border: 1px solid var(--line); color: var(--muted);
}
.en-prof.en-on .en-p-ch { color: var(--ca-blue-light); border-color: color-mix(in srgb, var(--blue) 40%, var(--line)); }
@media (max-width: 760px) {
  .en-selector { grid-template-columns: 1fr; }
  .en-prof { border-right: 0; border-bottom: 1px solid var(--line); }
  .en-prof:last-child { border-bottom: 0; }
}
/* fin v0.23 */

/* ============================================================
   v0.24 · Torre de control (sector logística y transporte)
   Tablero de expediciones: filas entrando con flip, estados en color.
   ============================================================ */
.lg-panel { position: relative; overflow: hidden; }
.lg-board { display: grid; }
.lg-row {
  display: grid; grid-template-columns: 1.5fr .8fr 1.1fr; gap: 14px; align-items: center;
  padding: 13px 22px; border-bottom: 1px solid color-mix(in srgb, var(--line) 70%, transparent);
}
.lg-row:last-child { border-bottom: 0; }
.lg-head {
  font-family: var(--font-mono); font-size: .58rem; letter-spacing: .14em; color: var(--muted);
  background: color-mix(in srgb, var(--panel) 60%, transparent);
  border-bottom: 1px solid var(--line);
}
.lg-q { color: var(--title); font-size: .9rem; line-height: 1.4; }
.lg-c {
  font-family: var(--font-mono); font-size: .58rem; letter-spacing: .1em; color: var(--ca-blue-light);
  border: 1px solid color-mix(in srgb, var(--blue) 35%, var(--line));
  border-radius: 0; padding: 4px 8px; text-align: center; white-space: nowrap;
}
.lg-w { font-family: var(--font-mono); font-size: .58rem; letter-spacing: .08em; }
.lg-w-ok { color: var(--green); }
.lg-w-no { color: var(--muted); opacity: .85; }
.lg-row.lg-flip { animation: lgflip .55s ease both; }
@keyframes lgflip {
  0% { opacity: 0; transform: perspective(600px) rotateX(-58deg); }
  60% { opacity: 1; transform: perspective(600px) rotateX(8deg); }
  100% { transform: perspective(600px) rotateX(0); }
}
.lg-row.lg-flash { animation: dmflash 1.6s ease; }
@media (max-width: 760px) {
  .lg-row { grid-template-columns: 1fr auto; }
  .lg-q { grid-column: 1 / -1; }
}
/* fin v0.24 */

/* ============================================================
   v0.25 · Itinerario de la IA (sector turismo y hostelería)
   ============================================================ */
.tr-panel { position: relative; overflow: hidden; }
.tr-req { padding: 20px 22px 8px; }
.tr-req p {
  margin: 10px 0 0; color: var(--title); font-size: 1.05rem; line-height: 1.5;
  border-left: 2px solid var(--blue); padding-left: 14px; min-height: 3em;
}
.tr-plan { display: grid; padding: 8px 0 14px; }
.tr-slot {
  display: grid; grid-template-columns: 120px 1fr auto; gap: 14px; align-items: baseline;
  padding: 12px 22px; border-bottom: 1px dashed color-mix(in srgb, var(--line) 70%, transparent);
}
.tr-slot:last-child { border-bottom: 0; }
.tr-k { font-family: var(--font-mono); font-size: .58rem; letter-spacing: .12em; color: var(--blue); }
.tr-v { color: var(--title); font-size: .92rem; line-height: 1.4; min-height: 1.4em; transition: opacity .3s ease; }
.tr-v.tr-fade { opacity: 0; }
.tr-s {
  font-family: var(--font-mono); font-size: .56rem; letter-spacing: .1em; white-space: nowrap;
  padding: 3px 9px; border-radius: 0; border: 1px solid var(--line);
  transition: color .4s ease, border-color .4s ease, opacity .3s ease;
}
.tr-s-no { color: var(--ca-amber); border-color: color-mix(in srgb, var(--ca-amber) 40%, var(--line)); }
html[data-theme="dark"] .tr-s-no { color: #D9A85C; }
.tr-s-ok { color: var(--green); border-color: color-mix(in srgb, var(--green) 50%, var(--line)); }
@media (max-width: 700px) {
  .tr-slot { grid-template-columns: 1fr; gap: 4px; }
  .tr-s { justify-self: start; }
}
/* fin v0.25 */

/* ============================================================
   v0.26 · Formulario de contacto Cortex
   ============================================================ */
.cx-form-panel { position: relative; overflow: hidden; }
.cx-form { padding: 24px 22px 26px; }
.cx-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 18px; }
.cx-field { display: grid; gap: 6px; }
.cx-field-full { grid-column: 1 / -1; }
.cx-field > span { font-family: var(--font-mono); font-size: .58rem; letter-spacing: .14em; color: var(--muted); }
.cx-field input, .cx-field select, .cx-field textarea {
  width: 100%; padding: 11px 13px; font: inherit; font-size: .92rem;
  color: var(--title); background: color-mix(in srgb, var(--panel) 70%, transparent);
  border: 1px solid var(--line); border-radius: 0;
  transition: border-color .2s ease, box-shadow .2s ease;
}
.cx-field textarea { resize: vertical; min-height: 96px; }
.cx-field input:focus, .cx-field select:focus, .cx-field textarea:focus {
  outline: none; border-color: color-mix(in srgb, var(--blue) 55%, var(--line));
  box-shadow: 0 0 0 3px var(--glow-blue);
}
.cx-field input::placeholder, .cx-field textarea::placeholder { color: color-mix(in srgb, var(--muted) 70%, transparent); }
.cx-hp { position: absolute; left: -9999px; opacity: 0; height: 0; }
.cx-privacy {
  display: flex; gap: 10px; align-items: flex-start; margin: 18px 0 20px;
  font-size: .82rem; color: var(--muted); line-height: 1.5; cursor: pointer;
}
.cx-privacy input { margin-top: 3px; accent-color: var(--blue); }
.cx-privacy a { color: var(--blue); text-decoration: underline; text-underline-offset: 3px; }
.cx-send {
  position: relative; overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--blue) 55%, var(--line));
  box-shadow: 0 0 14px var(--glow-blue);
  transition: box-shadow .25s ease, transform .25s ease;
}
.cx-send::after {
  content: ""; position: absolute; top: 0; bottom: 0; width: 46px; left: -60px;
  background: linear-gradient(100deg, transparent, rgba(255,255,255,.28), transparent);
  transform: skewX(-18deg);
  animation: ctashine 4.2s ease-in-out infinite;
}
.cx-send:hover { box-shadow: 0 0 22px var(--glow-blue), 0 0 44px var(--glow-blue); transform: translateY(-1px); }
.cx-form-msg {
  margin: 0; padding: 14px 22px; font-size: .9rem;
  border-bottom: 1px solid var(--line);
}
.cx-form-ok { color: var(--green); background: color-mix(in srgb, var(--green) 8%, transparent); }
.cx-form-err { color: var(--ca-amber); background: color-mix(in srgb, var(--ca-amber) 8%, transparent); }
html[data-theme="dark"] .cx-form-err { color: #D9A85C; }
@media (max-width: 700px) { .cx-grid { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) { .cx-send::after { animation: none; } }
/* fin v0.26 form */

/* ============================================================
   v0.26 · Cuenta atrás normativa (sector finanzas, seguros y gestorías)
   ============================================================ */
.fz-panel { position: relative; overflow: hidden; }
.fz-list { display: grid; }
.fz-row {
  display: grid; grid-template-columns: 1fr auto auto; gap: 18px; align-items: center;
  padding: 15px 22px; border-bottom: 1px solid color-mix(in srgb, var(--line) 70%, transparent);
}
.fz-row:last-child { border-bottom: 0; }
.fz-info { display: grid; gap: 3px; }
.fz-info strong { color: var(--title); font-size: .94rem; font-weight: 600; letter-spacing: -0.01em; }
.fz-info em { color: var(--muted); font-style: normal; font-size: .8rem; line-height: 1.4; }
.fz-count {
  display: grid; justify-items: center; gap: 1px; min-width: 84px;
  padding: 8px 12px; border: 1px solid color-mix(in srgb, var(--blue) 35%, var(--line));
  border-radius: 0; background: color-mix(in srgb, var(--panel) 60%, transparent);
  box-shadow: inset 0 0 18px var(--glow-blue);
}
.fz-count b {
  font-family: var(--font-mono); font-size: 1.3rem; font-weight: 600;
  color: var(--ca-blue-light); letter-spacing: .02em; animation: iapulse 2.4s ease-in-out infinite;
}
.fz-count span { font-family: var(--font-mono); font-size: .5rem; letter-spacing: .18em; color: var(--muted); }
.fz-w {
  font-family: var(--font-mono); font-size: .56rem; letter-spacing: .1em; white-space: nowrap;
  padding: 4px 9px; border-radius: 0; border: 1px solid var(--line);
}
.fz-w-no { color: var(--ca-amber); border-color: color-mix(in srgb, var(--ca-amber) 40%, var(--line)); }
html[data-theme="dark"] .fz-w-no { color: #D9A85C; }
.fz-w-ok { color: var(--green); border-color: color-mix(in srgb, var(--green) 50%, var(--line)); }
@media (max-width: 760px) {
  .fz-row { grid-template-columns: 1fr auto; }
  .fz-w { grid-column: 1 / -1; justify-self: start; }
}
/* fin v0.26 finanzas */

/* ============================================================
   v0.27 · Buscador a pie de máquina (sector repuestos)
   ============================================================ */
.rp-panel { position: relative; overflow: hidden; }
.rp-search {
  display: flex; align-items: center; gap: 12px;
  margin: 22px; padding: 14px 18px;
  border: 1px solid color-mix(in srgb, var(--blue) 40%, var(--line));
  border-radius: 0;
  background: color-mix(in srgb, var(--panel) 70%, transparent);
  box-shadow: 0 0 24px var(--glow-blue), inset 0 0 18px var(--glow-blue);
}
.rp-lens {
  flex: 0 0 auto; width: 15px; height: 15px; position: relative;
  border: 1.6px solid var(--blue); border-radius: 50%;
}
.rp-lens::after {
  content: ""; position: absolute; width: 7px; height: 1.6px;
  background: var(--blue); bottom: -3px; right: -5px; transform: rotate(45deg);
}
.rp-q {
  font-family: var(--font-mono); font-size: .95rem; color: var(--title);
  letter-spacing: .01em; min-height: 1.4em; word-break: break-word;
}
.rp-src {
  margin-left: auto; flex: 0 0 auto;
  font-family: var(--font-mono); font-size: .54rem; letter-spacing: .12em; color: var(--muted);
  border: 1px solid var(--line); border-radius: 0; padding: 3px 8px; white-space: nowrap;
}
.rp-result {
  display: flex; flex-wrap: wrap; gap: 8px 22px; align-items: baseline;
  margin: 0 22px 20px; padding: 14px 18px;
  border: 1px solid var(--line); border-radius: 0;
  background: color-mix(in srgb, var(--panel) 55%, transparent);
  transition: opacity .35s ease;
}
.rp-result.ag-fade { opacity: 0; }
.rp-r-k { font-family: var(--font-mono); font-size: .56rem; letter-spacing: .14em; color: var(--blue); }
.rp-result strong { color: var(--title); font-size: .94rem; font-weight: 600; }
.rp-r-v { font-family: var(--font-mono); font-size: .58rem; letter-spacing: .08em; color: var(--ca-amber); margin-left: auto; }
html[data-theme="dark"] .rp-r-v { color: #D9A85C; }
.rp-r-v.rp-ok { color: var(--green); }
@media (max-width: 700px) {
  .rp-src { display: none; }
  .rp-r-v { margin-left: 0; }
}
/* fin v0.27 */

/* ============================================================
   v0.28 · Taxímetro vs activo (retail y ecommerce) + fix select oscuro
   ============================================================ */
/* desplegables nativos acordes al tema (fondo del dropdown) */
html[data-theme="dark"] { color-scheme: dark; }
html[data-theme="light"] { color-scheme: light; }
.cx-field select option { background-color: var(--panel); color: var(--title); }

.ec-panel { position: relative; overflow: hidden; }
.ec-split { display: grid; grid-template-columns: 1fr 1fr; }
.ec-side { padding: 20px 22px; position: relative; overflow: hidden; }
.ec-side:first-child { border-right: 1px solid var(--line); }
.ec-side::after {
  content: ""; position: absolute; top: 0; bottom: 0; width: 54px; left: -60px; pointer-events: none;
  background: linear-gradient(90deg, transparent, var(--glow-blue), transparent);
  animation: iascan 6s linear infinite;
}
.ec-side-pay::after { animation-delay: 3s; }
.ec-h-pay { color: var(--ca-amber); }
html[data-theme="dark"] .ec-h-pay { color: #D9A85C; }
.ec-eye-pay { color: var(--ca-amber); border-color: color-mix(in srgb, var(--ca-amber) 40%, var(--line)); }
html[data-theme="dark"] .ec-eye-pay { color: #D9A85C; }
.ec-h-pay, .ec-h-org { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.ec-big { display: grid; gap: 3px; margin: 14px 0 16px; }
.ec-big b {
  font-family: var(--font-mono); font-size: 2rem; font-weight: 600;
  color: var(--ca-amber); letter-spacing: .01em; font-variant-numeric: tabular-nums;
}
html[data-theme="dark"] .ec-big b { color: #D9A85C; }
.ec-big b.ec-green { color: var(--green) !important; }
.ec-big span { font-family: var(--font-mono); font-size: .56rem; letter-spacing: .14em; color: var(--muted); }
.ec-rows { display: grid; }
.ec-row {
  display: flex; justify-content: space-between; gap: 14px; align-items: baseline;
  padding: 9px 0; font-size: .86rem; color: var(--title);
  border-bottom: 1px dashed color-mix(in srgb, var(--line) 70%, transparent);
}
.ec-row:last-child { border-bottom: 0; }
.ec-row b { font-family: var(--font-mono); font-size: .58rem; letter-spacing: .08em; font-weight: 600; white-space: nowrap; }
.ec-warn { color: var(--ca-amber); }
html[data-theme="dark"] .ec-warn { color: #D9A85C; }
.ec-ok { color: var(--green); }
@media (max-width: 760px) {
  .ec-split { grid-template-columns: 1fr; }
  .ec-side:first-child { border-right: 0; border-bottom: 1px solid var(--line); }
  .ec-row b { white-space: normal; text-align: right; }
}
/* fin v0.28 */

/* ============================================================
   v0.29 · Espectro de señal (sector seguridad y defensa)
   ============================================================ */
.sd-panel { position: relative; overflow: hidden; }
.sd-split { display: grid; grid-template-columns: 1fr 1fr; }
.sd-side { padding: 20px 22px; }
.sd-side:first-child { border-right: 1px solid var(--line); }
.sd-h { display: flex; align-items: center; justify-content: space-between; gap: 10px; }

.sd-spec {
  display: flex; align-items: flex-end; gap: 5px;
  height: 84px; margin: 16px 0;
  padding: 0 2px 6px; border-bottom: 1px solid var(--line);
}
.sd-spec i { flex: 1; border-radius: 0; }
.sd-spec-hot i {
  background: linear-gradient(180deg, var(--violet), var(--blue));
  box-shadow: 0 0 12px var(--glow-blue);
  animation: sdhot 1.6s ease-in-out infinite alternate;
}
.sd-spec-hot i:nth-child(1) { height: 46%; animation-delay: .0s; }
.sd-spec-hot i:nth-child(2) { height: 72%; animation-delay: .1s; }
.sd-spec-hot i:nth-child(3) { height: 58%; animation-delay: .2s; }
.sd-spec-hot i:nth-child(4) { height: 88%; animation-delay: .3s; }
.sd-spec-hot i:nth-child(5) { height: 64%; animation-delay: .4s; }
.sd-spec-hot i:nth-child(6) { height: 94%; animation-delay: .5s; }
.sd-spec-hot i:nth-child(7) { height: 70%; animation-delay: .6s; }
.sd-spec-hot i:nth-child(8) { height: 82%; animation-delay: .7s; }
.sd-spec-hot i:nth-child(9) { height: 56%; animation-delay: .8s; }
.sd-spec-hot i:nth-child(10) { height: 90%; animation-delay: .9s; }
.sd-spec-hot i:nth-child(11) { height: 66%; animation-delay: 1s; }
.sd-spec-hot i:nth-child(12) { height: 78%; animation-delay: 1.1s; }
.sd-spec-hot i:nth-child(13) { height: 52%; animation-delay: 1.2s; }
.sd-spec-hot i:nth-child(14) { height: 84%; animation-delay: 1.3s; }
@keyframes sdhot { to { transform: scaleY(.72); } }
.sd-spec-hot i { transform-origin: bottom; }

.sd-spec-flat i { height: 4%; background: var(--muted); opacity: .5; }
.sd-spec-flat i:nth-child(5) { animation: sdblip 9s ease-in-out infinite; transform-origin: bottom; background: var(--ca-amber); }
.sd-spec-flat i:nth-child(11) { animation: sdblip 9s ease-in-out infinite 4.5s; transform-origin: bottom; background: var(--ca-amber); }
@keyframes sdblip { 0%, 88%, 100% { transform: scaleY(1); } 92% { transform: scaleY(9); opacity: .9; } 96% { transform: scaleY(2); } }

.sd-feed { display: grid; gap: 7px; }
.sd-feed p { margin: 0; font-size: .82rem; color: var(--muted); line-height: 1.45; }
.sd-feed b { font-family: var(--font-mono); font-size: .58rem; letter-spacing: .1em; color: var(--ca-blue-light); margin-right: 6px; }
.sd-side-eu .sd-feed b { color: var(--muted); }
.sd-verdict-hot { font-family: var(--font-mono); font-size: .6rem !important; letter-spacing: .08em; color: var(--violet) !important; padding-top: 6px; }
.sd-verdict-flat { font-family: var(--font-mono); font-size: .6rem !important; letter-spacing: .08em; color: var(--ca-amber) !important; padding-top: 6px; }
html[data-theme="dark"] .sd-verdict-flat { color: #D9A85C !important; }

.sd-share { padding: 16px 22px; border-top: 1px solid var(--line); display: grid; gap: 8px; }
.sd-sh-k { font-family: var(--font-mono); font-size: .56rem; letter-spacing: .14em; color: var(--muted); }
.sd-sh-track { display: flex; height: 22px; border: 1px solid var(--line); border-radius: 0; overflow: hidden; }
.sd-sh-us {
  display: flex; align-items: center; padding: 0 10px;
  background: linear-gradient(90deg, color-mix(in srgb, var(--violet) 30%, transparent), color-mix(in srgb, var(--blue) 45%, transparent));
  font-family: var(--font-mono); font-size: .54rem; letter-spacing: .1em; color: var(--title); white-space: nowrap;
}
.sd-sh-eu {
  flex: 1; display: flex; align-items: center; justify-content: flex-end; padding: 0 10px;
  font-family: var(--font-mono); font-size: .54rem; letter-spacing: .1em; color: var(--muted);
}
@media (max-width: 760px) {
  .sd-split { grid-template-columns: 1fr; }
  .sd-side:first-child { border-right: 0; border-bottom: 1px solid var(--line); }
}
@media (prefers-reduced-motion: reduce) { .sd-spec-hot i, .sd-spec-flat i { animation: none; } }
/* fin v0.29 */

/* ============================================================
   v0.30 · Footer: mapa sectorial en grid numerado
   ============================================================ */
.fs-block {
  margin-top: 44px; padding-top: 28px;
  border-top: 1px solid var(--line);
}
.fs-head {
  display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between;
  gap: 8px 22px; margin-bottom: 6px;
}
.fs-count { color: var(--blue); }
.fs-note { font-size: .8rem; color: var(--muted); }
.fs-grid {
  display: grid; grid-template-columns: repeat(4, 1fr);
  column-gap: 34px;
}
.fs-link {
  display: grid; grid-template-columns: 26px 1fr auto; align-items: baseline; gap: 10px;
  padding: 10px 4px;
  border-bottom: 1px solid color-mix(in srgb, var(--line) 55%, transparent);
  text-decoration: none;
  transition: background .18s ease;
}
.fs-link:hover { background: color-mix(in srgb, var(--panel) 70%, transparent); }
.fs-n { font-family: var(--font-mono); font-size: .62rem; color: var(--muted); transition: color .18s ease; }
.fs-link:hover .fs-n { color: var(--blue); }
.fs-t { color: var(--muted) !important; font-size: .88rem !important; line-height: 1.35; transition: color .18s ease; }
.fs-link:hover .fs-t { color: var(--title) !important; }
.fs-a { color: var(--blue); font-size: .85rem; opacity: 0; transform: translateX(-4px); transition: opacity .18s ease, transform .18s ease; }
.fs-link:hover .fs-a { opacity: 1; transform: translateX(0); }

.fb-cols-3 { grid-template-columns: repeat(3, 1fr) !important; margin-top: 40px; }
.fb-cols-4 { grid-template-columns: repeat(4, 1fr) !important; margin-top: 40px; }   /* 0.123.1 · pie con columna «Legal» */

@media (max-width: 1000px) { .fs-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 760px) {
  .fs-grid { grid-template-columns: repeat(2, 1fr); column-gap: 22px; }
  .fb-cols-3 { grid-template-columns: 1fr !important; }
}
@media (max-width: 460px) { .fs-grid { grid-template-columns: 1fr; } }
@media (max-width: 1000px) { .fb-cols-4 { grid-template-columns: repeat(2, 1fr) !important; row-gap: 32px; } }   /* 0.123.1 */
@media (max-width: 560px) { .fb-cols-4 { grid-template-columns: 1fr !important; } }   /* 0.123.1 */
/* fin v0.30 */

/* ============================================================
   v0.20 · Sector automoción · la línea de nominación
   Cinta vertical de sourcing del OEM. Estructura propia, no clonada.
   ============================================================ */
.nm-panel { position: relative; overflow: hidden; }
.nm-belt { position: relative; padding: 24px 24px 20px 52px; }
.nm-query {
  font-family: var(--font-mono); font-size: .62rem; letter-spacing: .06em;
  color: var(--muted); margin-bottom: 20px; line-height: 1.5;
}
.nm-query::before {
  content: "▸ "; color: var(--blue);
}
/* raíl vertical + pieza viajera */
.nm-rail {
  position: absolute; left: 26px; top: 52px; bottom: 30px; width: 2px;
  background: linear-gradient(180deg, color-mix(in srgb, var(--blue) 40%, var(--line)), var(--line));
}
.nm-part {
  position: absolute; left: -4px; top: 0; width: 10px; height: 10px; border-radius: 50%;
  background: var(--blue); box-shadow: 0 0 12px var(--glow-blue);
  animation: nmtravel 6.5s cubic-bezier(.65,0,.35,1) infinite;
}
@keyframes nmtravel {
  0%   { top: 0; opacity: 0; }
  8%   { opacity: 1; }
  92%  { opacity: 1; }
  100% { top: 100%; opacity: 0; }
}
.nm-stations { list-style: none; margin: 0; padding: 0; display: grid; gap: 16px; }
.nm-station {
  position: relative; padding: 14px 16px; border-radius: 0;
  border: 1px solid var(--line); background: color-mix(in srgb, var(--panel) 55%, transparent);
  transition: border-color .5s ease, background .5s ease;
}
/* nodo de estación conectado al raíl */
.nm-station::before {
  content: ""; position: absolute; left: -33px; top: 20px; width: 12px; height: 12px;
  border-radius: 50%; border: 1px solid var(--line); background: var(--paper);
  transition: border-color .5s ease, background .5s ease, box-shadow .5s ease;
}
.nm-station.nm-hot::before {
  border-color: var(--blue); background: var(--blue); box-shadow: 0 0 10px var(--glow-blue);
}
.nm-st-k {
  font-family: var(--font-mono); font-size: .56rem; letter-spacing: .14em; color: var(--blue);
}
.nm-st-q { color: var(--title); font-size: .92rem; line-height: 1.4; margin: 6px 0 10px; }
.nm-lanes { display: flex; flex-wrap: wrap; gap: 8px; }
.nm-lane {
  font-family: var(--font-mono); font-size: .58rem; letter-spacing: .08em;
  padding: 4px 9px; border-radius: 0; border: 1px solid var(--line);
  color: var(--green); border-color: color-mix(in srgb, var(--green) 45%, var(--line));
  background: color-mix(in srgb, var(--green) 8%, transparent);
  transition: color .5s ease, border-color .5s ease, background .5s ease, opacity .5s ease;
}
.nm-lane.nm-off {
  color: var(--muted); border-color: var(--line); background: transparent;
  border-style: dashed; opacity: .7;
}
.nm-st-state {
  display: inline-block; margin-top: 10px;
  font-family: var(--font-mono); font-size: .58rem; letter-spacing: .08em;
}
.nm-st-state[data-state="ok"]   { color: var(--green); }
.nm-st-state[data-state="warn"] { color: var(--ca-amber); }
.nm-st-state[data-state="no"]   { color: var(--muted); opacity: .82; }
html[data-theme="dark"] .nm-st-state[data-state="warn"] { color: #D9A85C; }
/* estación final · nominación */
.nm-final { border-color: color-mix(in srgb, var(--blue) 32%, var(--line)); }
.nm-verdict {
  display: inline-block; margin-top: 10px;
  font-family: var(--font-mono); font-size: .64rem; letter-spacing: .08em;
  padding: 6px 12px; border-radius: 0;
  border: 1px solid var(--line); color: var(--muted);
  transition: color .5s ease, border-color .5s ease, background .5s ease;
}
.nm-verdict.nm-v-ok {
  color: var(--green); border-color: color-mix(in srgb, var(--green) 50%, var(--line));
  background: color-mix(in srgb, var(--green) 8%, transparent);
}
.nm-verdict.nm-v-no { color: var(--muted); border-style: dashed; opacity: .85; }
.nm-foot {
  display: flex; flex-wrap: wrap; gap: 8px 26px; align-items: center;
  padding: 12px 22px; border-top: 1px solid var(--line); background: var(--panel);
  font-family: var(--font-mono); font-size: .6rem; letter-spacing: .08em; color: var(--muted);
}
.nm-foot b { color: var(--blue); font-weight: 600; margin-right: 5px; }
.nm-live { display: inline-flex; align-items: center; gap: 6px; color: var(--green); margin-left: auto; }
@media (max-width: 760px) {
  .nm-belt { padding-left: 44px; }
  .nm-rail { left: 20px; }
  .nm-station::before { left: -30px; }
  .nm-lanes { gap: 6px; }
}
/* fin v0.20 automoción */

/* v0.23 · sector como ANTETÍTULO del H1 (jerarquía profesional) */
.h1-sector {
  display: block;
  -webkit-text-fill-color: var(--blue);
  text-fill-color: var(--blue);
  color: var(--blue);
  font-size: clamp(1.15rem, 1.85vw, 1.55rem);
  font-weight: 600;
  letter-spacing: -0.006em;
  line-height: 1.16;
  margin-bottom: .55em;
  text-wrap: balance;
}
/* ritmo del hero: aire real entre titular y lead, proporción de columna */
.hero-mesh .lead { margin-top: 1.5rem; max-width: 42em; }
.hero-ctas { margin-top: 2.4rem; }
@media (min-width: 1024px) and (max-height: 920px) {
  .h1-sector      { font-size: clamp(1.05rem, 1.5vw, 1.35rem); margin-bottom: .5em; }
  .hero-mesh .lead{ margin-top: 1.1rem; }
  .hero-ctas      { margin-top: 1.7rem; }
}
@media (min-width: 1024px) and (max-height: 760px) {
  .h1-sector      { font-size: 1.05rem; margin-bottom: .45em; }
  .hero-mesh .lead{ margin-top: .9rem; }
  .hero-ctas      { margin-top: 1.3rem; }
}
/* fin v0.23 */

/* ============================================================
   v0.22 · Hero a primera vista en portátil 15-16" + to-top sin tapar reloj
   ============================================================ */
.hero-mesh .lead { max-width: 44em; }
.hero-mesh h1 { text-wrap: balance; }
/* alturas de portátil (~700-900px útiles): escala el bloque para que entre entero */
@media (min-width: 1024px) and (max-height: 920px) {
  .hero-mesh h1   { font-size: clamp(2.3rem, 3.6vw, 3.4rem); }
  .hero-mesh .lead{ font-size: clamp(1.12rem, 1.5vw, 1.34rem); margin-top: 10px; }
  .hero-ctas      { margin-top: 1.7rem; }
}
@media (min-width: 1024px) and (max-height: 760px) {
  .hero-mesh h1   { font-size: clamp(2.1rem, 3vw, 2.9rem); }
  .hero-mesh .lead{ font-size: 1.1rem; margin-top: 8px; }
  .hero-ctas      { margin-top: 1.3rem; }
}
/* flecha "subir" elevada ~3cm para no tapar el reloj de la barra legal */
.to-top { bottom: 112px; }
@media (max-width: 680px) { .to-top { right: 14px; bottom: 88px; width: 42px; height: 42px; } }
/* fin v0.22 */


/* ============================================================
   v0.34 - Parche Emil Kowalski: press feedback + easing + perf
      12-jul-2026 - auditoria skills github.com/emilkowalski/skills
         ============================================================ */
         :root {
           --ease-out-strong: cubic-bezier(0.23, 1, 0.32, 1);
             --ease-in-out-strong: cubic-bezier(0.77, 0, 0.175, 1);
             }

             /* Todo elemento pulsable responde al press (regla nuclear Emil) */
             .btn {
               transition: background .18s ease, border-color .18s ease, color .18s ease, transform .18s var(--ease-out-strong);
               }
               .btn:active { transform: scale(0.97); }
               .btn:hover:active { transform: translateY(-1px) scale(0.97); }
               .filter-chip {
                 transition: color .18s ease, border-color .18s ease, background-color .18s ease, transform .18s var(--ease-out-strong);
                 }
                 .filter-chip:active { transform: scale(0.97); }
                 .to-top:active { transform: scale(0.94); }

                 /* Barras Sentinel: transform en lugar de width (solo GPU) */
                 .bar-fill {
                   width: 100%;
                     transform: scaleX(0);
                       transform-origin: left center;
                         transition: background .2s ease;
                         }
                         /* fin parche v0.34 */
                         

                         /* ============================================================
                            v0.35 - Pasada UX maxima: poda eyebrows + tipografia + a11y
                               12-jul-2026 - reglas taste-skill + emil-design-eng
                                  ============================================================ */

                                  /* Poda de eyebrows (max 1 de cada 3 secciones).
                                     Se conservan: hero, 01 el-cambio, 05 sentinel, 08 metodo — REVISADO 29-07-2026: rótulos de sección restaurados en la Home por decisión de Jesús; solo siguen ocultos contacto y fb-claim. */
                                     #contacto .label-tech,
                                     .fb-claim .label-tech { display: none; }

                                     /* Titulares sin viudas; parrafos con reparto de lineas */
                                     h1, h2, h3 { text-wrap: balance; }
                                     p { text-wrap: pretty; }

                                     /* Numeros tabulares en metricas, contadores y odometros */
                                     [data-count], [data-bar], .k-value, .b40-odo, .panel { font-variant-numeric: tabular-nums; }

                                     /* fin parche v0.35 */
                                     

                                     /* ============================================================
                                        v0.36 - Seccion 02 El Enfoque: declaracion apilada full-width
                                           12-jul-2026 - diversificacion de layout (taste-skill)
                                              ============================================================ */
                                              
                                              #enfoque .lead { max-width: 46ch; margin-top: 14px; }
                                              .enfoque-decl { margin-top: 3rem; }
                                              .ed-row {
                                                display: grid;
                                                  grid-template-columns: 240px 1fr;
                                                    gap: 6px 32px;
                                                      padding: 24px 0;
                                                        border-top: 1px solid var(--line);
                                                          align-items: baseline;
                                                          }
                                                          .ed-row:last-child { border-bottom: 1px solid var(--line); }
                                                          .ed-word {
                                                            margin: 0;
                                                              font-size: clamp(1.5rem, 2.4vw, 2rem);
                                                                font-weight: 700;
                                                                  letter-spacing: -.02em;
                                                                    color: var(--ink);
                                                                    }
                                                                    .ed-note { margin: 0; color: var(--muted); font-size: 1.02rem; }
                                                                    @media (max-width: 760px) {
                                                                      .ed-row { grid-template-columns: 1fr; gap: 4px; padding: 18px 0; }
                                                                      }
                                                                      /* fin parche v0.36 */
                                                                      

                                                                      /* v0.36b - fix: lead de #enfoque alineado bajo el titular (anula grid heredado) */
                                                                      /* 29-07-2026: retirada la excepción de #enfoque (lead estrecho bajo el h2); vuelve a la retícula estándar de sec-head */
                                                                              /* fin v0.36b */
                                                                              

                                                                              /* v0.37 · barra legal en móvil: firma en una línea, reloj debajo en línea propia */
                                                                              @media (max-width: 680px) {
                                                                                .footer-legal .right { width: 100%; }
                                                                                  .footer-legal .legal-sep { display: none; }
                                                                                    .footer-legal .legal-clock { display: block; margin-top: 4px; white-space: nowrap; }
                                                                                    }
                                                                                    

/* ============================================================
   BLOQUE 3 · JERARQUÍA DE LA HOME · v0.25
   Tipos de bloque: problema · sistema · dato/prueba · sector ·
   legitimación · método · cierre.
   El peso visual sigue la función, no la estética.
   ============================================================ */

/* Ritmo vertical por función */
.sec-sistema { padding-block: calc(var(--space-section) * 1.15); }
.sec-dato    { padding-block: calc(var(--space-section) * 1.1); }
.sec-sector,
.sec-legit   { padding-block: calc(var(--space-section) * .82); }

/* 1 · PROBLEMA — enunciado, no producto */
.sec-problema .label-tech { color: var(--ca-amber); }
.sec-problema .label-tech::before { background: var(--ca-amber); }
.sec-problema .card-big { background: transparent; border: 0; border-left: 2px solid var(--ca-amber); border-radius: 0; padding: 4px 0 4px 22px; }
.sec-problema .card-big:hover { transform: none; box-shadow: none; }
.sec-problema .card-big .chip { color: var(--ca-amber); }

/* 2 · SISTEMA — peso máximo */
.sec-sistema { border-top: 3px solid var(--blue); }
.sec-sistema .sec-head h2 { font-size: clamp(2.4rem, 1.8rem + 2.4vw, 3.7rem); }
.sec-sistema .card .chip { color: var(--blue); display: inline-block; border-bottom: 1px solid var(--line); padding-bottom: 6px; margin-bottom: 14px; }
.sec-sistema .ghost { opacity: .09; }

/* 3 · DATO Y PRUEBA — banda de tinta: la identidad, traducida */
.sec-dato { --paper: #1B1A18; --soft: #141413; --line: rgba(247,241,227,.16); --title: #FBF6EA; --muted: #B0AEA5; --blue: #9BB076; --blue-text: #9BB076; --green: #9BB076; --glow-blue: rgba(155,176,118,.12); --ca-white: #F7F1E3; --ca-section: #141413; --ca-box: #1B1A18; --ca-title: #FBF6EA; --ca-text: #B0AEA5; --ink: #FBF6EA; --panel: #211F1C; --bg: #1B1A18; background: #141413; color: var(--muted); border-top: 2px solid var(--blue); border-bottom: 1px solid #141413; }
.sec-dato .ghost { color: var(--title); opacity: .06; } html[data-theme="dark"] .sec-dato { --paper: #262420; --soft: #201F1C; --panel: #2B2925; --bg: #201F1C; --ca-section: #201F1C; --ca-box: #262420; background: #201F1C; border-bottom: 1px solid rgba(247,241,227,.16); }

/* 4 · SECTOR — directorio, no argumento */
.sec-sector .cards-3 { grid-template-columns: repeat(4, 1fr); }
.sec-sector .card-link { padding: 20px 18px; }
.sec-sector .card-link:hover { transform: none; box-shadow: none; background: var(--soft); }
.sec-sector .card-link .chip { font-size: .7rem; letter-spacing: .14em; color: var(--muted); }
.sec-sector .card-link h3 { font-size: 1.02rem; line-height: 1.25; }
.sec-sector .card-link p { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-size: .92rem; }
@media (max-width: 1080px) { .sec-sector .cards-3 { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 780px)  { .sec-sector .cards-3 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px)  { .sec-sector .cards-3 { grid-template-columns: 1fr; } }

/* 5 · LEGITIMACIÓN — editorial, voz baja */
.sec-legit .sec-head h2 { font-size: clamp(1.9rem, 1.5rem + 1.4vw, 2.6rem); }
.sec-legit .label-tech { color: var(--muted); }
.sec-legit .label-tech::before { background: var(--muted); }

/* 6 · MÉTODO — cadencia */
.sec-metodo .label-tech { color: var(--muted); }
.sec-metodo .label-tech::before { background: var(--muted); }

/* 7 · CIERRE — conversión */
.sec-cierre { background: var(--soft); border-top: 3px solid var(--blue); }
.sec-cierre h2 { font-size: clamp(2.3rem, 1.8rem + 2.2vw, 3.4rem); }
.sec-cierre .btn-primary { padding: 18px 34px; font-size: 1.02rem; }


/* ══════════════════════════════════════════════════════════════════
   PERÍMETRO ABIERTO · el anillo como instrumento
   El iconotipo deja de ser un dibujo fijo: la apertura permanece
   siempre en la diagonal de 45° y lo que varía es la longitud del
   arco. Sirve de indicador de estado, de progreso y de viñeta de
   sección sin dejar de ser la marca.
   ══════════════════════════════════════════════════════════════════ */

.cx-gauge {
  display: block;
  flex: 0 0 auto;
  width: var(--cx-gauge-size, 40px);
  height: var(--cx-gauge-size, 40px);
  color: var(--title);
}
.cx-gauge__track { fill: currentColor; opacity: .16; }
.cx-gauge__value { fill: var(--blue-text); }
.cx-gauge--mute .cx-gauge__value { fill: var(--muted-2); }
.cx-gauge--full .cx-gauge__track { opacity: 0; }

@keyframes cx-gauge-spin { to { transform: rotate(360deg); } }
.cx-gauge--run { animation: cx-gauge-spin 1.9s linear infinite; transform-origin: 50% 50%; }
@media (prefers-reduced-motion: reduce) { .cx-gauge--run { animation: none; } }

.cx-medida { display: flex; align-items: center; gap: var(--space-sm); }
.cx-medida__n {
  font-family: var(--font-data);
  font-size: var(--fs-xs);
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--muted-2-text);
}
.cx-vin { display: inline-flex; align-items: center; gap: var(--space-2xs); }
.cx-vin .cx-gauge { --cx-gauge-size: 18px; }


/* ==========================================================================
   PASADA UX 28-07-2026 · ritmo vertical y correcciones de espaciado
   Bloque acotado: para revertir, borrar de aquí al final del fichero.
   ========================================================================== */

/* 1 · La frase-manifiesto no tenía margen inferior (margin: 5xl 0 0), así que
       todo lo que iba detrás colisionaba con ella: Home, Autoridad Digital y
       las dieciséis páginas de sector. */
.statement { margin-bottom: var(--space-3xl); }
.statement:last-child { margin-bottom: 0; }
.statement + .statement { margin-top: var(--space-4xl); }
/* En móvil, 96 px de aire sobre cada manifiesto era casi una pantalla entera. */
@media (max-width: 860px) {
  .statement { margin-top: var(--space-3xl); margin-bottom: var(--space-2xl); }
  .statement:last-child { margin-bottom: 0; }
}

/* 2 · Formulario de contacto: las filas no tenían ni separación vertical ni
       margen inferior; el aire lo daban por accidente los márgenes de las
       etiquetas, con un ritmo distinto en cada fila. */
.f-2col { row-gap: var(--space-md); margin-bottom: var(--space-md); }
.f-2col:last-of-type { margin-bottom: var(--space-md); }
.f-field { margin-bottom: var(--space-md); }

/* 3 · El microcopy que quita fricción antes de convertir iba pegado al botón. */
.hero-microcopy {
  margin-top: var(--space-md) !important; /* gana al style en línea de las plantillas */
  font-size: .85rem;
  line-height: 1.55;
  color: var(--muted);
}

/* 4 · Cabecera fija: no descontaba la barra de administración de WordPress, de
       modo que el logotipo quedaba cortado durante la edición. Solo afecta a
       sesiones iniciadas; el visitante no lo veía. */
.admin-bar .site-header { top: 32px; }
@media screen and (max-width: 782px) { .admin-bar .site-header { top: 46px; } }

/* 5 · El anillo como medidor de lectura.
       La ranura permanece clavada en la diagonal de 45°: no se rota el
       iconotipo. Lo que avanza es la longitud del arco, que se tiñe de acento
       conforme se recorre la página. El trazado es el aprobado, incrustado
       como máscara — el mismo mecanismo de .status-dot. */
.brand-mark--gauge {
  --cx-arc: 0deg;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 96 96'%3E%3Cpath d='M77.2 28.7A35 35 0 1 1 67.3 18.8L52.03 34.07A14.5 14.5 0 1 0 61.93 43.97Z' fill='%23000'/%3E%3C/svg%3E") center / contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 96 96'%3E%3Cpath d='M77.2 28.7A35 35 0 1 1 67.3 18.8L52.03 34.07A14.5 14.5 0 1 0 61.93 43.97Z' fill='%23000'/%3E%3C/svg%3E") center / contain no-repeat;
  background: conic-gradient(from 56.5deg,
              var(--blue-text) 0 var(--cx-arc),
              currentColor var(--cx-arc) 360deg);
  border-radius: 0;
}
/* Giro de cortesía al pasar el ratón: UNA vuelta completa, no rotación
   continua. La ranura sale de los 45° y vuelve exactamente a los 45°, así que
   ninguna aplicación en reposo muestra el anillo girado — la prohibición del
   manual queda intacta. El arco del medidor gira solidario con la máscara. */
.brand-mark--gauge { transform: rotate(0deg); }
.brand-mark--gauge.is-spin { animation: cx-ring-turn 820ms cubic-bezier(.62,0,.28,1); }
@keyframes cx-ring-turn { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
  .brand-mark--gauge { background: currentColor; }
  .brand-mark--gauge.is-spin { animation: none; }
}


/* 6 · Ritmo entre secciones · 28-07-2026
   Medido en vivo sobre la Home: el vacío entre el último elemento de una sección
   y el primero de la siguiente iba de 230 px a 336 px EN LA MISMA PÁGINA. No era
   un ritmo: era el resultado de que los márgenes de cierre de cada bloque se
   sumaban al relleno de la sección, así que el hueco dependía de con qué
   elemento terminara cada una. Con un viewport de 770 px eso suponía entre un
   tercio y casi media pantalla de nada.

   a) Se anula el margen del último elemento de cada sección: todas cierran a la
      misma distancia y el ritmo pasa a ser constante y previsible.
   b) El relleno pasa a ser asimétrico. Arriba se conserva el aire — la etiqueta
      y el número fantasma lo necesitan —; abajo se reduce, porque el filete de
      1 px ya hace el trabajo de cerrar la sección y no hacen falta las dos
      cosas. El contenido queda más cerca de su propio rótulo que del de la
      sección siguiente, que es como debe agruparse.

   Resultado: 128 + 80 = 208 px constantes en escritorio (antes 230-336) y
   64 + 44 = 108 px en móvil. Se conserva el 10 % extra de .sec-dato. */

:root {
  --space-section-top: clamp(4rem, 2.4rem + 6.5vw, 8rem);
  --space-section-end: clamp(2.75rem, 1.984rem + 3.14vw, 5rem);
}

.section > .container > *:last-child { margin-bottom: 0; }

.section {
  padding-top: var(--space-section-top);
  padding-bottom: var(--space-section-end);
}
.sec-dato {
  padding-top: calc(var(--space-section-top) * 1.1);
  padding-bottom: calc(var(--space-section-end) * 1.1);
}


/* ══════════════════════════════════════════════════════════════════
   HOME v2 · MAESTRO v14 · 30-07-2026 · bloque acotado
   (para revertir: borrar desde este comentario hasta el final del
   fichero). Doctrina: titulares Cursor, arte orgánico animado en
   tema oscuro, datos activos con salida, Sentinel horizontal,
   cierre activo. Variables semánticas del tema en todo.
   ══════════════════════════════════════════════════════════════════ */

/* ── Titular Cursor (dos tonos, un solo bloque) ─────────────────── */
.hmix { max-width: 66ch; margin-top: var(--space-2xs); }
.hmix h1, .hmix h2, .hmix h3, .hmix p, .hmix b, .hmix span {
  display: inline; margin: 0; padding: 0;
  font-family: var(--font-sans); font-weight: 500;
  font-size: clamp(1.35rem, 1.05rem + 1.35vw, 2rem);
  line-height: 1.34; letter-spacing: -0.01em;
  background: none; -webkit-text-fill-color: currentColor;
}
.hmix h1, .hmix h2, .hmix h3, .hmix b { color: var(--title); }
.hmix p, .hmix span { color: var(--muted-2, var(--muted)); }
.hmix-gap { margin-top: var(--space-3xl); display: block; }
.hmix + .cards, .hmix + .split01, .hmix + .panel { margin-top: var(--space-xl); }
.hmix-sm h1, .hmix-sm h2, .hmix-sm h3, .hmix-sm p, .hmix-sm b, .hmix-sm span {
  font-size: clamp(1.1rem, 0.95rem + 0.7vw, 1.4rem); line-height: 1.45;
}

/* ── Arte orgánico (solo tema oscuro; el claro queda limpio) ────── */
.cx-has-art, .hero-v2 { position: relative; overflow: hidden; }
.cx-art { position: absolute; inset: 0; z-index: 0; pointer-events: none; display: none; }
html[data-theme="dark"] .cx-art { display: block; }
.cx-has-art .container, .hero-v2 .container { position: relative; z-index: 2; }
.cx-has-art .ghost { z-index: 1; }
.cx-art__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: right center; }
.cx-art__wave { transform: scale(1.03); }
html.cx-ready .cx-art__wave { filter: url(#cxWave); }
@media (prefers-reduced-motion: reduce) { .cx-art__wave { filter: none; transform: none; } }
.cx-art__left   { position: absolute; inset: 0; background: linear-gradient(90deg, var(--bg) 0%, rgba(20,20,19,.86) 34%, rgba(20,20,19,.25) 62%, rgba(20,20,19,.05) 100%); }
.cx-art__bottom { position: absolute; left: 0; right: 0; bottom: 0; height: 140px; background: linear-gradient(180deg, transparent, var(--bg)); }
.cx-art__veil   { position: absolute; inset: 0; background: linear-gradient(180deg, var(--bg) 0%, rgba(20,20,19,.55) 25%, rgba(20,20,19,.55) 75%, var(--bg) 100%); }
.sec-sistema .cx-art__img, .sec-sector .cx-art__img { opacity: .5; }
.cx-art__horizon { object-position: center bottom; top: auto; bottom: -6%; height: 72%; opacity: .9; }
.cx-art__top { position: absolute; inset: 0; background: linear-gradient(180deg, var(--bg) 0%, transparent 45%); }
.sec-cierre.cx-has-art { padding-bottom: clamp(10rem, 8rem + 8vw, 15rem); }
.sec-cierre .cta-trust { position: relative; z-index: 3; }

/* ── Hero v2 ────────────────────────────────────────────────────── */
.hero-v2 .hero-mix { max-width: 880px; }
.hero-v2 .hero-mix h1, .hero-v2 .hero-mix p {
  font-size: clamp(1.35rem, 1.05rem + 1.35vw, 2rem); line-height: 1.3; max-width: none;
}
.hero-stats { display: flex; gap: clamp(28px, 4vw, 60px); margin-top: var(--space-2xl); flex-wrap: wrap; }
.hstat { display: flex; flex-direction: column; align-items: flex-start; }
.hstat__n { font-family: var(--font-data); font-size: clamp(1.9rem, 1.5rem + 1.6vw, 2.6rem); font-weight: 500; color: var(--title); line-height: 1; }
.hstat__l { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted-2, var(--muted)); margin-top: 6px; }
.hstat__cta.link-arrow { border: 0; padding: 0; flex: 0 0 auto; margin-top: 10px; font-size: .92rem; color: var(--blue); }
.hstat__cta.link-arrow:hover { box-shadow: none; transform: none; text-decoration: underline; }

/* ── 01 · tarjetas apiladas junto al terminal ───────────────────── */
.split01 { display: grid; grid-template-columns: 1fr 1.15fr; gap: clamp(20px, 3vw, 44px); align-items: center; margin-top: var(--space-xl); }
.cards.cards-stack { grid-template-columns: 1fr; margin-top: 0; }
.split01 .cxp { margin-top: 0; }
@media (max-width: 900px) { .split01 { grid-template-columns: 1fr; } }

/* ── 02 · dos siglas en dos tonos ───────────────────────────────── */
.duotone { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(24px, 4vw, 48px);
  border-top: 1px solid var(--line); padding-top: 26px; margin-top: var(--space-2xl); }
.duotone-f { font-weight: 600; color: var(--title); margin-top: 18px; font-size: var(--fs-md); }
@media (max-width: 760px) { .duotone { grid-template-columns: 1fr; } }

/* ── 04 · Sentinel horizontal, una pantalla ─────────────────────── */
.panel-h { font-size: .94em; }
.panel-h .panel-body { display: grid; grid-template-columns: 2.1fr 1.05fr; gap: clamp(16px, 2vw, 26px); align-items: start; }
.panel-h .chart-zone { display: grid; grid-template-columns: 1.08fr 1fr; column-gap: clamp(16px, 2vw, 26px);
  grid-template-areas: "t t" "svg eng" "bars eng" "err err"; align-items: start; }
.panel-h .chart-zone > .panel-sub { grid-area: t; }
.panel-h .chart-zone > .spark { grid-area: svg; width: 100%; height: auto; }
.panel-h .chart-zone > .bars { grid-area: bars; }
.panel-h .chart-zone > .engines { grid-area: eng; margin-top: 0; }
.panel-h .chart-zone > .errors { grid-area: err; margin-top: 8px; }
.panel-h .errors .error-row { display: inline-flex; gap: 10px; margin: 4px 22px 4px 0; align-items: baseline; }
.panel-h .errors .error-sum { margin-top: 6px; }
.panel-h .kpi { padding-block: 14px; }
.panel-h .k-value { font-size: clamp(1.7rem, 1.4rem + 1vw, 2.3rem); }
.panel-h .signals { margin-top: 0; }
@media (max-width: 1020px) {
  .panel-h .panel-body, .panel-h .chart-zone { display: block; }
  .panel-h .engines, .panel-h .errors, .panel-h .signals { margin-top: var(--space-lg); }
}

/* ── Cierre activo ──────────────────────────────────────────────── */
.ctachips { display: flex; gap: 10px; justify-content: center; margin-top: var(--space-lg); flex-wrap: wrap; }
.ctachips span { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .13em;
  border: 1px solid var(--line); color: var(--muted); padding: 5px 14px; text-transform: uppercase; }
.btn-xl { padding: 20px 46px !important; font-size: 1.06rem !important; }
.btn-ar { display: inline-block; margin-left: 12px; transition: transform .25s; }
.btn:hover .btn-ar { transform: translateX(6px); }
.btn-glow { animation: cxCtaGlow 3.4s ease-in-out infinite; }
@keyframes cxCtaGlow {
  0%, 100% { box-shadow: 0 0 20px rgba(155,176,118,.10); }
  50%      { box-shadow: 0 0 46px rgba(155,176,118,.30); }
}
@media (prefers-reduced-motion: reduce) { .btn-glow { animation: none; } }

/* ── Varios ─────────────────────────────────────────────────────── */
.sub-anchor { position: relative; top: -90px; display: block; height: 0; }
.hero-v2 .hero-microcopy { max-width: 64ch; }

/* ── parche hero-mix (dos tonos e inline; faltaba en el bloque) ── */
.hero-mix h1, .hero-mix p { display: inline; margin: 0; padding: 0; font-family: var(--font-sans); font-weight: 500; letter-spacing: -0.015em; background: none; -webkit-text-fill-color: currentColor; text-wrap: initial; }
.hero-mix h1 { color: var(--title); }
.hero-mix p { color: var(--muted-2, var(--muted)); }
.hero-mix { display: block; }

/* ══════════════════════════════════════════════════════════════════
   FASE 2 · PÁGINAS INTERIORES · 30-07-2026 · bloque acotado
   Titulares Cursor (dos tonos en un solo bloque) + arte orgánico.
   Para revertir: borrar desde este comentario hasta el final.
   ══════════════════════════════════════════════════════════════════ */

/* ── Titular Cursor · hero de página interior ───────────────────── */
.cx-cursor .hero-page .container { padding-right: clamp(24px, 20vw, 330px); }
.cx-cursor .hero-page .container > h1.h1-sweep,
.cx-cursor .hero-page .container > p.lead {
  display: inline; margin: 0; padding: 0; max-width: none;
  font-family: var(--font-sans); font-weight: 500;
  font-size: clamp(1.4rem, 1.05rem + 1.45vw, 2.05rem);
  line-height: 1.3; letter-spacing: -0.012em;
  background: none; -webkit-text-fill-color: currentColor; text-wrap: initial;
}
.cx-cursor .hero-page .container > h1.h1-sweep { color: var(--title); }
.cx-cursor .hero-page .container > p.lead { color: var(--muted-2, var(--muted)); }
.cx-cursor .hero-page .container > h1.h1-sweep br { display: none; }
.cx-cursor .hero-page .hero-ctas { margin-top: var(--space-xl); }

/* ── Titular Cursor · cabeceras de sección ──────────────────────── */
.cx-cursor .sec-head { display: block; max-width: 68ch; }
.cx-cursor .sec-head > .label-tech { display: block; margin-bottom: 14px; }
.cx-cursor .sec-head > h1,
.cx-cursor .sec-head > h2,
.cx-cursor .sec-head > p.lead {
  display: inline; margin: 0; padding: 0; max-width: none;
  font-family: var(--font-sans); font-weight: 500;
  font-size: clamp(1.3rem, 1.02rem + 1.3vw, 1.95rem);
  line-height: 1.34; letter-spacing: -0.01em;
  background: none; -webkit-text-fill-color: currentColor; text-wrap: initial;
}
.cx-cursor .sec-head > h1, .cx-cursor .sec-head > h2 { color: var(--title); }
.cx-cursor .sec-head > p.lead { color: var(--muted-2, var(--muted)); }
.cx-cursor .sec-head > h1 br, .cx-cursor .sec-head > h2 br { display: none; }

/* ── Arte orgánico en interiores ─────────────────────────────────── */
.hero-page.cx-has-art { position: relative; overflow: hidden; }
.hero-page.cx-has-art #cortex-mesh { display: none; }
.hero-page.cx-has-art .cx-art__left { background: linear-gradient(90deg, var(--bg) 0%, rgba(20,20,19,.90) 24%, rgba(20,20,19,.46) 50%, rgba(20,20,19,0) 86%); }
.section.cx-has-art .cx-art__veil { background: linear-gradient(180deg, var(--bg) 0%, rgba(20,20,19,.48) 26%, rgba(20,20,19,.48) 74%, var(--bg) 100%); }
/*CSS3*/
/* ── Titular Cursor · pares h2 + lead sueltos (fuera de sec-head) ── */
.cx-cursor .section:not(.section-cta) .container > h2.h1-sweep:has(+ p.lead),
.cx-cursor .section:not(.section-cta) .container > h2.h1-sweep:has(+ p.lead) + p.lead,
.cx-cursor .section:not(.section-cta) .container > h1.h1-sweep:has(+ p.lead),
.cx-cursor .section:not(.section-cta) .container > h1.h1-sweep:has(+ p.lead) + p.lead {
  display: inline; margin: 0; padding: 0; max-width: none;
  font-family: var(--font-sans); font-weight: 500;
  font-size: clamp(1.3rem, 1.02rem + 1.3vw, 1.95rem);
  line-height: 1.34; letter-spacing: -0.01em;
  background: none; -webkit-text-fill-color: currentColor; text-wrap: initial;
}
.cx-cursor .section:not(.section-cta) .container > h1.h1-sweep:has(+ p.lead),
.cx-cursor .section:not(.section-cta) .container > h2.h1-sweep:has(+ p.lead) { color: var(--title); }
.cx-cursor .section:not(.section-cta) .container > h1.h1-sweep:has(+ p.lead) + p.lead,
.cx-cursor .section:not(.section-cta) .container > h2.h1-sweep:has(+ p.lead) + p.lead { color: var(--muted-2, var(--muted)); }

/* ── Arte en secciones interiores ────────────────────────────────── */
.section.cx-has-art { position: relative; overflow: hidden; }
.cx-has-art > .cortex-fmesh { display: none; }
/* ── Arreglo: heros sin .container (Artículos) — el texto por encima del arte ── */
.hero.cx-has-art > *:not(.cx-art) { position: relative; z-index: 2; }
.hero.cx-has-art { position: relative; overflow: hidden; }

/* ── Botón subir arriba: más presencia y aparición más temprana ── */
.to-top { width: 54px !important; height: 54px !important; right: 24px !important;
  background: var(--panel); border: 1px solid var(--line); color: var(--title);
  font-size: 1.05rem; box-shadow: 0 10px 30px rgba(0,0,0,.28); backdrop-filter: blur(6px); }
.to-top:hover { color: var(--blue); border-color: var(--blue); box-shadow: 0 0 26px rgba(155,176,118,.28); }
@media (max-width: 680px) { .to-top { width: 46px !important; height: 46px !important; right: 14px !important; } }


/* ── v0.63 · correcciones de responsive ─────────────────────────── */
@media (max-width: 1000px) {
  /* 1 · el titular Cursor recupera todo el ancho: fuera la reserva para el arte */
  .cx-cursor .hero-page .container { padding-right: 44px; }
  section.hero-mesh.hero-page { display: block !important; }
  .hero-page.cx-has-art .hero-readout, .hero-page .hero-readout { position: static !important; width: auto !important; max-width: none !important; margin-top: var(--space-lg); text-align: left; }
}
@media (max-width: 620px) {
  .cx-cursor .hero-page .container { padding-right: 22px; padding-left: 22px; }
}
@media (max-width: 900px) {
  /* 2 · el limbo del planeta baja y se aplana para no pegarse al CTA */
  .cx-art__img.cx-art__horizon { bottom: -12%; height: 48%;
    -webkit-mask-image: linear-gradient(180deg, transparent 0%, #000 42%, #000 100%);
    mask-image: linear-gradient(180deg, transparent 0%, #000 42%, #000 100%); }
  .sec-cierre.cx-has-art, .section-cta.cx-has-art { padding-bottom: clamp(11rem, 9rem + 12vw, 15rem); }
  /* 3 · la flecha sube para no montarse con el pie legal */
  .to-top { bottom: 168px !important; }
}
@media (max-width: 480px) {
  .to-top { bottom: 176px !important; }
}


/* ── v0.66 · pasada de espaciado en movil ──────────────────────── */
@media (max-width: 700px) {
  /* Cierre: composicion compacta, el limbo cerca del CTA y no a un palmo */
  .sec-cierre.cx-has-art, .section-cta.cx-has-art { padding-bottom: 7.5rem; }
  .cx-art__img.cx-art__horizon { bottom: -4%; height: 46%;
    -webkit-mask-image: linear-gradient(180deg, transparent 0%, #000 34%, #000 100%);
    mask-image: linear-gradient(180deg, transparent 0%, #000 34%, #000 100%); }
  .ctachips { margin-top: 18px; gap: 8px; }
  .ctachips span { padding: 5px 11px; font-size: 10px; }
  .btn-xl { padding: 17px 28px !important; font-size: 1rem !important; }
  .sec-cierre .cta-trust, .section-cta .cta-trust { margin-top: 14px; }
  /* Aire entre titulares encadenados, un punto mas ajustado */
  .hmix-gap { margin-top: 40px; }
  /* Boton de subir: mas pequeno, translucido y se aparta cuando lees */
  .to-top { width: 42px !important; height: 42px !important; right: 12px !important;
    bottom: 96px !important; font-size: .95rem; }
  .to-top.show { opacity: .72; }
  .to-top.show:hover, .to-top.show:active { opacity: 1; }
  .to-top.cx-tuck { opacity: 0 !important; pointer-events: none; }
}

/* ── Movimiento orgánico global: deriva muy lenta del arte (suma al filtro) ── */
@keyframes cxDrift {
  0%   { transform: scale(1.06) translate3d(0, 0, 0); }
  25%  { transform: scale(1.08) translate3d(-1.1%, 0.8%, 0); }
  50%  { transform: scale(1.07) translate3d(0.6%, -1.0%, 0); }
  75%  { transform: scale(1.09) translate3d(1.2%, 0.5%, 0); }
  100% { transform: scale(1.06) translate3d(0, 0, 0); }
}
html.cx-ready .cx-art__wave { animation: cxDrift 42s ease-in-out infinite; }
@media (prefers-reduced-motion: reduce) { .cx-art__wave { animation: none; filter: none; transform: none; } }

.cx-art__img { -webkit-mask-image: linear-gradient(180deg, transparent 0%, #000 12%, #000 88%, transparent 100%); mask-image: linear-gradient(180deg, transparent 0%, #000 12%, #000 88%, transparent 100%); }
.cx-art__img.cx-art__horizon { -webkit-mask-image: linear-gradient(180deg, transparent 0%, #000 30%, #000 100%); mask-image: linear-gradient(180deg, transparent 0%, #000 30%, #000 100%); }
.hero-v2 .cx-art__img { -webkit-mask-image: none; mask-image: none; }
.section.cx-has-art .container { position: relative; z-index: 2; }
.section.cx-has-art .ghost { z-index: 1; }
.section-cta.cx-has-art { padding-bottom: clamp(8rem, 6rem + 7vw, 13rem); }
.section-cta.cx-has-art .hero-ctas, .section-cta.cx-has-art .cta-trust { position: relative; z-index: 3; }

.hero-page.cx-has-art .container,
.hero-page.cx-has-art .hero-readout { position: relative; z-index: 3; }


/* Entrada de primer nivel sin desplegable · Proyectos
   .mm-trigger::after dibuja la flecha del panel. Sin anularla, «Proyectos»
   promete un desplegable que no existe: el usuario pasa el ratón, no se abre
   nada, y concluye que la web falla. */
.mm-directo{ text-decoration: none }
.mm-directo::after{ display: none }


/* ─────────────────────────────────────────────────────────────
   Registro de intervenciones · retícula unificada
   El archivo servía cuatro ejes verticales distintos en la misma
   página —cabecera 180, hero y filtros 220, contadores 244, y la
   lista de fichas en 0 por un margin-left:0—. Un ojo entrenado no
   lee «márgenes distintos»: lee «hecho por partes».
   Aquí el archivo adopta el contenedor del sitio, y punto.
   ───────────────────────────────────────────────────────────── */
.cgp-hero-contenido,
.cgp-contadores-pista,
.cgp-filtros,
.cgp-registro,
.cgp-confidencialidad{
  max-width: 1160px;
  margin-inline: auto;
  padding-inline: 44px;
  box-sizing: border-box;
}
.cgp-hero{ padding-inline: 0 }

/* La confidencialidad lleva borde propio: se descuenta para que su
   texto caiga en el mismo eje óptico que el resto, no dos píxeles
   más adentro. */
.cgp-confidencialidad{ padding-inline: calc(44px - 1px) }

/* Respiración vertical. La página venía apretada entre bloques que
   no tienen la misma jerarquía; el aire es lo que los separa. */
.cgp-contadores{ margin-block: clamp(48px, 6vw, 88px) }
.cgp-filtros{ margin-block-end: clamp(28px, 3vw, 44px) }
.cgp-confidencialidad{ margin-block: clamp(56px, 7vw, 104px) }

@media (max-width: 860px){
  .cgp-hero-contenido,
  .cgp-contadores-pista,
  .cgp-filtros,
  .cgp-registro,
  .cgp-confidencialidad{ padding-inline: 24px }
  .cgp-confidencialidad{ padding-inline: 23px }
}

/* Dos afinados que la regla general no alcanza:
   el registro llevaba un margin-left propio de mayor especificidad,
   y la primera cifra de la barra arrastraba el padding que separa
   las columnas entre si — y que en la primera solo la descuadra. */
.cgp .cgp-registro{ margin-inline: auto }
.cgp-contadores-pista .cgp-contador:first-child{ padding-inline-start: 0 }

/* Boton primario del registro · contraste medido 1.02:1 en produccion.
   Heredaba la tinta clara del contenedor sobre su propio fondo papel:
   texto practicamente invisible en la llamada principal de la pagina.
   Se fuerza la tinta oscura, que es el patron del boton primario. */
.cgp-boton.cgp-boton--primario{
  background: var(--cx-papel, #FAF9F5);
  color: #141413;
}
.cgp-boton.cgp-boton--primario:hover,
.cgp-boton.cgp-boton--primario:focus-visible{ background:#FFFFFF; color:#141413 }

/* La nota del hero salia pegada al borde inferior de los botones, como
   si fuera un pie del boton y no una aclaracion de la llamada. */
.cgp-hero-acciones{ margin-block-start: clamp(28px, 3vw, 40px) }
.cgp-hero-nota{ margin-block-start: 18px; max-width: 62ch }


/* ---------- Pie · enlace externo · la línea de ciberinteligencia (CiberCom) ---------- */
.f-ext::after { content: " ↗"; font-size: .85em; opacity: .7; }


/* ══════════════════════════════════════════════════════════════════
   HOME v3 · SISTEMA DE AUTORIDAD DIGITAL · 05-09-2026 · bloque acotado
   Ámbito: .home-v3 (front-page.php). Para revertir: borrar desde este
   comentario hasta el final del fichero. Ritmo vertical por sistema:
   --space-block entre bloques mayores, --space-md entre bloque y su
   pie/leyenda; nada de márgenes sueltos por pieza.
   ══════════════════════════════════════════════════════════════════ */

/* ── Ritmo vertical (un solo sistema) ────────────────────────────── */
.home-v3 .section > .container > * + * { margin-top: var(--space-block); }
.home-v3 .section > .container > .label-tech + * { margin-top: var(--space-md); }
.home-v3 .section > .container > .hero-microcopy,
.home-v3 .section > .container > .card-fuente { margin-top: var(--space-md); }
.home-v3 .section > .container > .hero-microcopy + .link-row { margin-top: var(--space-md); }
.home-v3 .section > .container > .statement { margin-top: calc(var(--space-block) * 1.15); margin-bottom: 0; }
.home-v3 .section > .container > .statement + .hmix { margin-top: calc(var(--space-block) * 1.15); }
.home-v3 .hmix, .home-v3 .hmix-gap { margin-top: 0; }
.home-v3 .section > .container > .label-tech { margin-bottom: 0; }
.home-v3 .steps { margin-top: var(--space-block); }
.home-v3 .hero-microcopy { max-width: 70ch; }
.home-v3 .label-center { justify-content: center; }
.home-v3 .section-cta .hero-ctas { margin-top: 0; }
.home-v3 .statement-sm { font-size: var(--fs-lg); max-width: 40ch; }
.home-v3 .sec-caso .cards-3 .card h3 { font-size: var(--fs-md); }
html:has(.home-v3) { scroll-behavior: smooth; scroll-padding-top: 84px; }

/* ── Índice de la página (hero) ──────────────────────────────────── */
.home-v3 .cxidx { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: 22px 0; margin: var(--space-xl) 0 0; }
.home-v3 .cxidx__k { font-family: var(--font-mono); font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--blue); margin: 0 0 14px; }
.home-v3 .cxidx__l { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px 28px; }
.home-v3 .cxidx__l li { font-size: 14.5px; line-height: 1.5; color: var(--muted); display: flex; gap: 10px; }
.home-v3 .cxidx__l li span { font-family: var(--font-mono); font-size: 11px; color: var(--blue); padding-top: 3px; flex: 0 0 auto; }
.home-v3 .cxidx__l li a { color: var(--muted); text-decoration: none; border-bottom: 1px solid transparent; }
.home-v3 .cxidx__l li a:hover { color: var(--title); border-bottom-color: var(--blue); }
@media (max-width: 900px) { .home-v3 .cxidx__l { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .home-v3 .cxidx__l { grid-template-columns: 1fr; } }

/* ── Piezas de texto: prompt copiable, ciclo, llamada ────────────── */
.home-v3 .cxp { border: 1px solid var(--line); background: var(--paper); border-radius: 0; overflow: hidden; }
.home-v3 .cxp__head { display: flex; align-items: center; gap: 10px; padding: 11px 18px; border-bottom: 1px solid var(--line); }
.home-v3 .cxp__dot { width: 7px; height: 7px; border-radius: 50%; background: var(--blue); flex: 0 0 auto; }
.home-v3 .cxp__ttl { font-family: var(--font-mono); font-size: 11px; letter-spacing: .1em; color: var(--muted); text-transform: uppercase; }
.home-v3 .cxp__tag { margin-left: auto; font-family: var(--font-mono); font-size: 10px; letter-spacing: .14em; color: var(--blue); border: 1px solid var(--blue); border-radius: 0; padding: 2px 10px; flex: 0 0 auto; }
.home-v3 .cxp__txt { font-family: var(--font-mono); font-size: 14px; line-height: 1.75; color: var(--title); padding: 22px 18px; margin: 0; }
.home-v3 .cxp__foot { display: flex; align-items: center; gap: 14px; padding: 13px 18px; border-top: 1px solid var(--line); flex-wrap: wrap; }
.home-v3 .cxp__hint { font-size: 13.5px; color: var(--muted); flex: 1 1 240px; }
.home-v3 .cxp__btn { font-family: var(--font-mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; background: var(--blue); color: var(--bg); border: 0; border-radius: 0; padding: 10px 20px; cursor: pointer; transition: opacity .18s, background .18s; flex: 0 0 auto; }
.home-v3 .cxp__btn:hover { opacity: .86; }
.home-v3 .cxp__btn.ok { background: var(--green); color: var(--bg); }
.home-v3 .cxp__note { font-size: 13px; line-height: 1.6; color: var(--muted); border-top: 1px solid var(--line); padding: 12px 18px; margin: 0; background: var(--soft); }
@media (max-width: 560px) { .home-v3 .cxp__btn { width: 100%; } }
.home-v3 .cxmc { border: 1px solid var(--line); border-left: 3px solid var(--blue); border-radius: 0; padding: 22px 24px; background: var(--paper); }
.home-v3 .cxmc__k, .home-v3 .cxcall__k { font-family: var(--font-mono); font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--blue); margin: 0 0 14px; }
.home-v3 .cxmc__l { margin: 0 0 10px; font-size: 15.5px; line-height: 1.65; color: var(--muted); max-width: 70ch; }
.home-v3 .cxmc__l:last-child { margin-bottom: 0; }
.home-v3 .cxmc__l span { display: inline-block; min-width: 132px; font-family: var(--font-mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--title); }
@media (max-width: 640px) { .home-v3 .cxmc__l span { display: block; min-width: 0; margin-bottom: 2px; } }
.home-v3 .cxcall { border: 1px solid var(--line); border-left: 2px solid var(--blue); padding: 18px 22px; }
.home-v3 .cxcall__k { margin-bottom: 8px; }
.home-v3 .cxcall__t { margin: 0; line-height: 1.65; color: var(--title); max-width: 80ch; }

/* ── 03 · caso: tarjeta de datos ─────────────────────────────────── */
.home-v3 .card-dato .fit-list b { font-family: var(--font-mono); font-size: 1.15em; color: var(--title); margin-right: .35em; }
.home-v3 .card-fuente { font-family: var(--font-mono); font-size: 11px; line-height: 1.5; letter-spacing: .04em; color: var(--muted-2, var(--muted)); margin: 14px 0 0; }

/* ── 02 · cinco frentes (3 + 2 sobre rejilla de seis) ────────────── */
.home-v3 .cards.cards-5 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.home-v3 .cards.cards-5 .card:nth-child(-n+3) { grid-column: span 2; }
.home-v3 .cards.cards-5 .card:nth-child(n+4) { grid-column: span 3; }
@media (max-width: 900px) {
  .home-v3 .cards.cards-5 { grid-template-columns: 1fr 1fr; }
  .home-v3 .cards.cards-5 .card { grid-column: auto; }
  .home-v3 .cards.cards-5 .card:last-child { grid-column: 1 / -1; }
}
@media (max-width: 520px) { .home-v3 .cards.cards-5 { grid-template-columns: 1fr; } .home-v3 .cards.cards-5 .card:last-child { grid-column: auto; } }

/* ── 02 · vídeo (portada, YouTube al pulsar) ─────────────────────── */
.home-v3 .cx-video { max-width: 960px; margin-left: auto; margin-right: auto; }
.home-v3 .cx-video__poster { position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; padding: 0; border: 1px solid var(--line); background: var(--soft); cursor: pointer; overflow: hidden; text-align: left; }
.home-v3 .cx-video__poster img, .home-v3 .cx-video__poster iframe { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; border: 0; }
.home-v3 .cx-video__poster img { transition: transform .6s ease; }
.home-v3 .cx-video__poster:hover img { transform: scale(1.02); }
.home-v3 .cx-video__poster:focus-visible { outline: 2px solid var(--blue); outline-offset: 3px; }
.home-v3 .cx-video__play { position: absolute; right: 8.2%; bottom: 13.5%; display: inline-flex; align-items: center; gap: 12px; font-family: var(--font-mono); font-size: 12px; letter-spacing: .1em; text-transform: uppercase; color: #F8FAFC; background: rgba(20, 20, 19, .72); border: 1px solid rgba(255, 255, 255, .28); padding: 12px 18px; backdrop-filter: blur(6px); transition: background .2s ease; }
.home-v3 .cx-video__poster:hover .cx-video__play { background: rgba(20, 20, 19, .9); }
.home-v3 .cx-video__play span { display: inline-grid; place-items: center; width: 34px; height: 34px; background: var(--blue); color: #141413; font-size: 12px; }
.home-v3 .cx-video__cap { font-family: var(--font-mono); font-size: 11px; letter-spacing: .06em; color: var(--muted-2, var(--muted)); margin: 12px 0 0; }
@media (max-width: 560px) { .home-v3 .cx-video__play { padding: 9px 12px; font-size: 11px; right: 6%; bottom: 10%; } }

/* ── 04 · sectores en la home (rejilla del pie, reutilizada) ─────── */
.home-v3 .fs-grid-home { column-gap: 40px; }
.home-v3 .fs-grid-home .fs-link { padding: 12px 4px; }
.home-v3 .fs-grid-home .fs-t { font-size: .95rem !important; }

/* ── 05 · comparativa y 06 · curva (gráficas interactivas) ───────── */
.home-v3 .cx-comp, .home-v3 .cx-curve { border: 1px solid var(--line); background: var(--paper); padding: clamp(22px, 3vw, 36px); }
.home-v3 .section-soft .cx-comp, .home-v3 .section-soft .cx-curve { background: var(--bg); }
.home-v3 .cx-comp__head { display: grid; gap: 16px; margin-bottom: 28px; }
.home-v3 .cx-comp__head .cxcall__k { margin-bottom: 0; }
.home-v3 .cx-comp__ctl { display: grid; gap: 10px; font-size: 15px; color: var(--muted); line-height: 1.5; }
.home-v3 .cx-comp__ctl b { font-family: var(--font-mono); color: var(--title); font-weight: 500; margin-left: .4em; font-variant-numeric: tabular-nums; }
.home-v3 .cx-comp__ctl input[type=range] { width: 100%; max-width: 520px; accent-color: var(--blue); height: 24px; margin: 0; cursor: pointer; }
.home-v3 .cx-comp__bars { display: grid; gap: 22px; }
.home-v3 .cx-bar { display: grid; grid-template-columns: 200px 1fr 150px; grid-template-areas: "l t v" "l n n"; gap: 6px 20px; align-items: center; }
.home-v3 .cx-bar__l { grid-area: l; font-family: var(--font-mono); font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--title); align-self: start; padding-top: 8px; }
.home-v3 .cx-bar__t { grid-area: t; height: 26px; background: var(--soft); border: 1px solid var(--line); position: relative; overflow: hidden; }
.home-v3 .cx-bar__f { height: 100%; background: var(--muted-2, var(--muted)); transition: width .5s cubic-bezier(.2, .7, .2, 1); }
.home-v3 .cx-bar--yes .cx-bar__f { background: var(--blue); }
.home-v3 .cx-bar__v { grid-area: v; font-family: var(--font-mono); font-size: 15px; color: var(--title); font-variant-numeric: tabular-nums; white-space: nowrap; }
.home-v3 .cx-bar--yes .cx-bar__v { color: var(--blue); }
.home-v3 .cx-bar__n { grid-area: n; font-size: 13.5px; line-height: 1.5; color: var(--muted-2, var(--muted)); max-width: 62ch; }
.home-v3 .cx-comp__sum { margin: 26px 0 0; padding-top: 18px; border-top: 1px solid var(--line); font-size: var(--fs-md); color: var(--muted); line-height: 1.5; }
.home-v3 .cx-comp__sum b { color: var(--title); font-weight: 600; }
@media (max-width: 760px) { .home-v3 .cx-bar { grid-template-columns: 1fr auto; grid-template-areas: "l v" "t t" "n n"; gap: 6px 12px; } .home-v3 .cx-bar__l { padding-top: 0; } }
.home-v3 .cx-curve__svg { width: 100%; height: auto; display: block; overflow: visible; }
.home-v3 .cx-grid { stroke: var(--line); stroke-width: 1; }
.home-v3 .cx-ax { font-family: var(--font-mono); font-size: 10px; fill: var(--muted-2, var(--muted)); letter-spacing: .08em; }
.home-v3 .cx-pub { fill: none; stroke: var(--muted-2, var(--muted)); stroke-width: 2; stroke-dasharray: 5 5; }
.home-v3 .cx-sis { fill: none; stroke: var(--blue); stroke-width: 3; stroke-linecap: round; }
.home-v3 .cx-dot { fill: var(--blue); }
.home-v3 .cx-curve__leg { display: flex; flex-wrap: wrap; gap: 10px 28px; margin-top: 16px; font-size: 13.5px; color: var(--muted); }
.home-v3 .cx-leg { display: inline-block; width: 22px; height: 0; border-top: 3px solid var(--blue); vertical-align: middle; margin-right: 10px; }
.home-v3 .cx-leg--pub { border-top: 2px dashed var(--muted-2, var(--muted)); }

/* ── 08 · empezar: dos columnas (agenda · escribir) ──────────────── */
.home-v3 .sec-cierre .container { max-width: 1160px; }
.home-v3 .section-cta h2 { max-width: 16em; margin-left: auto; margin-right: auto; }
.home-v3 .section-cta .ctachips { margin-top: var(--space-md); justify-content: center; }
.home-v3 .cx-close { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(28px, 4vw, 56px); align-items: start; text-align: left; position: relative; z-index: 3; }
.home-v3 .cx-close__col { display: grid; gap: 22px; align-content: start; }
.home-v3 .cx-close__k { font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--blue); margin: 0; padding-bottom: 12px; border-bottom: 1px solid var(--line); }
.home-v3 .cx-close__h { font-size: var(--fs-lg); line-height: 1.25; margin: 0; color: var(--title); text-wrap: balance; }
.home-v3 .cx-checks { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.home-v3 .cx-checks li { padding-left: 26px; position: relative; color: var(--muted); line-height: 1.55; }
.home-v3 .cx-checks li::before { content: "✓"; position: absolute; left: 0; top: 0; color: var(--blue); font-family: var(--font-mono); }
.home-v3 .cx-close .hero-ctas { justify-content: flex-start; margin: 6px 0 0; }
.home-v3 .cx-close .cta-trust { text-align: left; margin: 0; max-width: 44ch; }
.home-v3 .cx-form-mini { border: 1px solid var(--line); padding: clamp(20px, 2.5vw, 28px); background: var(--paper); text-align: left; }
.home-v3 .cx-form-mini .cx-form-msg { margin: 0 0 16px; }
.home-v3 .cx-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 18px; }
.home-v3 .cx-form-grid label { display: grid; gap: 6px; font-family: var(--font-mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted-2, var(--muted)); }
.home-v3 .cx-form-grid input:not([type=checkbox]), .home-v3 .cx-form-grid textarea { font: inherit; font-family: var(--font-sans); font-size: 15px; letter-spacing: 0; text-transform: none; color: var(--title); background: var(--bg); border: 1px solid var(--line); border-radius: 0; padding: 11px 12px; width: 100%; }
.home-v3 .cx-form-grid input:focus, .home-v3 .cx-form-grid textarea:focus { outline: 2px solid var(--blue); outline-offset: 1px; }
.home-v3 .cx-form-full { grid-column: 1 / -1; }
.home-v3 .cx-form-grid .cx-privacy { display: flex; gap: 10px; align-items: flex-start; font-family: var(--font-sans); font-size: 13px; letter-spacing: 0; text-transform: none; color: var(--muted); line-height: 1.5; }
.home-v3 .cx-form-grid button { grid-column: 1 / -1; justify-self: start; margin-top: 4px; }
.home-v3 .cx-form-mini .hero-microcopy { margin: 14px 0 0; text-align: left; }
@media (max-width: 640px) { .home-v3 .cx-form-grid { grid-template-columns: 1fr; } }
@media (max-width: 900px) { .home-v3 .cx-close { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) { .home-v3 .cx-bar__f, .home-v3 .cx-video__poster img { transition: none; } }

/* ── HOME v3.1 · hero partido con reproductor propio (05-09-2026) ───
   Izquierda: titular y CTA para quien lee. Derecha: el vídeo para quien
   escucha. Sin autoplay; el MP4 solo se carga al pulsar. ──────────── */
.home-v3 .cx-hero-grid { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: clamp(32px, 4vw, 72px); align-items: center; }
.home-v3 .cx-hero-copy > * + * { margin-top: var(--space-lg); }
.home-v3 .cx-hero-copy .label-tech { margin-bottom: 0; }
.home-v3 .cx-hero-copy .hero-ctas { margin-top: var(--space-xl); }
.home-v3 .hero-v2 .cx-hero-copy .hero-mix { max-width: none; }
.home-v3 .hero-v2 .cx-hero-copy .hero-mix h1, .home-v3 .hero-v2 .cx-hero-copy .hero-mix p { font-size: clamp(1.3rem, 1rem + 1.15vw, 1.8rem); line-height: 1.32; }
.home-v3 .hero-v2 .hero-stats { margin-top: clamp(40px, 5vw, 64px); }
@media (max-width: 1000px) {
  .home-v3 .cx-hero-grid { grid-template-columns: 1fr; gap: var(--space-xl); }
  .home-v3 .cx-hero-media { order: 2; }
}
/* reproductor */
.home-v3 .cx-player { position: relative; z-index: 3; }
.home-v3 .cx-player__frame { position: relative; aspect-ratio: 16 / 9; background: var(--soft); border: 1px solid var(--line); overflow: hidden; box-shadow: 0 30px 80px rgba(0, 0, 0, .35); }
.home-v3 .cx-player__poster { position: absolute; inset: 0; width: 100%; height: 100%; padding: 0; border: 0; background: var(--soft); cursor: pointer; text-align: left; }
.home-v3 .cx-player__poster img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .6s ease; }
.home-v3 .cx-player__poster:hover img { transform: scale(1.02); }
.home-v3 .cx-player__poster:focus-visible { outline: 2px solid var(--blue); outline-offset: 3px; }
.home-v3 .cx-player__play { position: absolute; right: 4.5%; bottom: 14%; display: inline-flex; align-items: center; gap: 12px; font-family: var(--font-mono); font-size: 11.5px; letter-spacing: .1em; text-transform: uppercase; color: #F8FAFC; background: rgba(20, 20, 19, .74); border: 1px solid rgba(255, 255, 255, .28); padding: 11px 16px; backdrop-filter: blur(6px); transition: background .2s ease; white-space: nowrap; }
.home-v3 .cx-player__poster:hover .cx-player__play { background: rgba(20, 20, 19, .92); }
.home-v3 .cx-player__play span { display: inline-grid; place-items: center; width: 32px; height: 32px; background: var(--blue); color: #141413; font-size: 11px; }
.home-v3 .cx-player__video { position: absolute; inset: 0; width: 100%; height: 100%; display: block; background: #0b0b0a; }
.home-v3 .cx-player__video[hidden] { display: none; }
.home-v3 .cx-player__video::cue { background: rgba(20, 20, 19, .82); color: #F8FAFC; font-family: var(--font-sans), sans-serif; font-size: 1em; line-height: 1.35; }
.home-v3 .cx-player__end { position: absolute; inset: 0; display: grid; place-content: center; justify-items: center; gap: 18px; padding: 24px; text-align: center; background: rgba(20, 20, 19, .9); backdrop-filter: blur(4px); }
.home-v3 .cx-player__end[hidden] { display: none; }
.home-v3 .cx-player__end-k { margin: 0; font-size: var(--fs-md); color: var(--title); max-width: 28ch; text-wrap: balance; }
.home-v3 .cx-player__again { background: none; border: 0; color: var(--muted); font-family: var(--font-mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; cursor: pointer; padding: 6px 0; border-bottom: 1px solid var(--line); }
.home-v3 .cx-player__again:hover { color: var(--title); border-bottom-color: var(--blue); }
.home-v3 .cx-player__chapters { list-style: none; margin: 14px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 8px; }
.home-v3 .cx-player__chapters button { display: inline-flex; align-items: center; gap: 8px; font: inherit; font-size: 12.5px; color: var(--muted); background: none; border: 1px solid var(--line); border-radius: 0; padding: 6px 10px 6px 8px; cursor: pointer; transition: border-color .18s ease, color .18s ease; }
.home-v3 .cx-player__chapters button span { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .06em; color: var(--muted-2, var(--muted)); font-variant-numeric: tabular-nums; }
.home-v3 .cx-player__chapters button:hover, .home-v3 .cx-player__chapters button.is-on { color: var(--title); border-color: var(--blue); }
.home-v3 .cx-player__chapters button.is-on span { color: var(--blue); }
.home-v3 .cx-player__cap { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .06em; color: var(--muted-2, var(--muted)); margin: 12px 0 0; }
@media (max-width: 560px) { .home-v3 .cx-player__play { right: 5%; bottom: 9%; padding: 8px 11px; font-size: 10.5px; } .home-v3 .cx-player__chapters button { font-size: 12px; } }
@media (prefers-reduced-motion: reduce) { .home-v3 .cx-player__poster img { transition: none; } }

/* ── HOME v3.2 · reproductor: modo grande (teatro) con vuelta a la vista pequeña ───────────── */
.home-v3 .cx-player__bar { display: none; }
.home-v3 .cx-player__foot { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.home-v3 .cx-player__foot .cx-player__cap { flex: 1 1 auto; }
.home-v3 .cx-player__expand, .home-v3 .cx-player__mini { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); background: none; border: 1px solid var(--line); border-radius: 0; padding: 7px 10px; cursor: pointer; white-space: nowrap; transition: color .18s ease, border-color .18s ease; }
.home-v3 .cx-player__expand:hover, .home-v3 .cx-player__mini:hover { color: var(--title); border-color: var(--blue); }
.home-v3 .cx-player__expand:focus-visible, .home-v3 .cx-player__mini:focus-visible { outline: 2px solid var(--blue); outline-offset: 3px; }
.home-v3 .cx-player__expand[hidden] { display: none; }
.home-v3 .cx-player__expand { margin-top: 12px; }

html.cx-theater-open, html.cx-theater-open body { overflow: hidden; }
.home-v3 .cx-player.is-theater { position: fixed; inset: 0; z-index: 900; margin: 0; display: grid; grid-template-rows: auto minmax(0, 1fr) auto auto; align-content: center; justify-items: center; row-gap: clamp(12px, 2vh, 22px); padding: clamp(14px, 3vh, 28px) clamp(16px, 4vw, 48px); background: #0E0E0D; }
.home-v3 .cx-player.is-theater > * { width: min(100%, 1600px, calc((100vh - 310px) * 16 / 9)); } /* el JS ajusta el ancho exacto al alto disponible */
.home-v3 .cx-player.is-theater .cx-player__bar { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.home-v3 .cx-player__bar-t { margin: 0; font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }
.home-v3 .cx-player.is-theater .cx-player__frame { box-shadow: 0 40px 120px rgba(0, 0, 0, .6); border-color: rgba(255, 255, 255, .12); }
.home-v3 .cx-player.is-theater .cx-player__chapters { margin: 0; justify-content: center; }
.home-v3 .cx-player.is-theater .cx-player__foot { justify-content: center; }
.home-v3 .cx-player.is-theater .cx-player__expand { display: none; }
.home-v3 .cx-player.is-theater .cx-player__cap { margin: 0; text-align: center; }
.home-v3 .cx-player.is-theater .cx-player__video::cue { font-size: 1.15em; }
@media (max-width: 760px) {
  .home-v3 .cx-player.is-theater { padding: 12px 12px 16px; row-gap: 12px; align-content: start; grid-template-rows: auto auto auto auto; }
  .home-v3 .cx-player.is-theater > * { width: 100%; }
  .home-v3 .cx-player.is-theater .cx-player__bar-t { display: none; }
  .home-v3 .cx-player.is-theater .cx-player__bar { justify-content: flex-end; }
  .home-v3 .cx-player.is-theater .cx-player__chapters { justify-content: flex-start; flex-wrap: nowrap; overflow-x: auto; padding-bottom: 6px; }
  .home-v3 .cx-player.is-theater .cx-player__chapters button { flex: 0 0 auto; white-space: nowrap; }
  .home-v3 .cx-player.is-theater .cx-player__cap { display: none; }
}
@media (max-width: 760px) and (orientation: landscape) {
  .home-v3 .cx-player.is-theater { grid-template-rows: auto minmax(0, 1fr); }
  .home-v3 .cx-player.is-theater .cx-player__chapters, .home-v3 .cx-player.is-theater .cx-player__foot { display: none; }
  .home-v3 .cx-player.is-theater .cx-player__frame { aspect-ratio: auto; height: 100%; }
  .home-v3 .cx-player.is-theater > * { width: min(100%, calc((100vh - 70px) * 16 / 9)); }
}
/* el contenedor del hero anula pointer-events (solo los <a> los recuperan): el reproductor y cualquier control del hero deben recibirlos */
.hero-mesh .container button, .hero-mesh .container video, .hero-mesh .container input, .hero-mesh .container label, .hero-mesh .container .cx-player, .hero-mesh .container .cx-player * { pointer-events: auto; }
@media (min-width: 761px) and (max-height: 760px) { .home-v3 .cx-player.is-theater .cx-player__foot { display: none; } .home-v3 .cx-player.is-theater { row-gap: 12px; padding-top: 12px; padding-bottom: 12px; } }

/* ── HOME v3.3 · hero limpio: un mensaje, una acción, un vídeo ───────────────────────────────── */
.home-v3 .cx-hero-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(36px, 5vw, 88px); }
.home-v3 .hero-v2 .cx-hero-copy .hero-mix { max-width: 34ch; }
.home-v3 .hero-v2 .cx-hero-copy .hero-mix h1, .home-v3 .hero-v2 .cx-hero-copy .hero-mix p { font-size: clamp(1.45rem, 1.05rem + 1.35vw, 2.05rem); line-height: 1.28; }
.home-v3 .cx-hero-copy .hero-ctas { margin-top: var(--space-lg); }
.home-v3 .cx-hero-note { font-family: var(--font-mono); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted-2, var(--muted)); margin-top: var(--space-md); max-width: none; }
.home-v3 .cx-btn-video { display: inline-flex; align-items: center; gap: 10px; }
.home-v3 .cx-btn-video__i { display: inline-grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; background: var(--blue); color: #141413; font-size: 8px; padding-left: 1px; }
.home-v3 .hero-v2 .hero-stats { margin-top: clamp(44px, 6vw, 80px); }

/* reproductor en reposo: portada limpia + botón circular; capítulos y leyenda solo en modo grande */
.home-v3 .cx-player__frame { border-color: rgba(255, 255, 255, .1); }
.home-v3 .cx-player__poster::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(14, 14, 13, 0) 55%, rgba(14, 14, 13, .35) 100%); pointer-events: none; }
.home-v3 .cx-player__play { right: 9%; bottom: auto; top: 50%; transform: translateY(-50%); display: grid; justify-items: center; gap: 12px; padding: 0; background: none; border: 0; backdrop-filter: none; font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .1em; text-transform: uppercase; color: #F8FAFC; white-space: nowrap; z-index: 1; }
.home-v3 .cx-player__play-i { display: grid; place-items: center; width: clamp(56px, 6vw, 80px); height: clamp(56px, 6vw, 80px); border-radius: 50%; background: var(--blue); color: #141413; font-size: clamp(16px, 1.6vw, 22px); padding-left: 4px; box-shadow: 0 16px 48px rgba(0, 0, 0, .5), 0 0 0 0 rgba(155, 176, 118, .35); transition: transform .25s ease, box-shadow .35s ease; }
.home-v3 .cx-player__poster:hover .cx-player__play-i { transform: scale(1.06); box-shadow: 0 16px 48px rgba(0, 0, 0, .5), 0 0 0 10px rgba(155, 176, 118, .18); }
.home-v3 .cx-player__poster:hover .cx-player__play { background: none; }
.home-v3 .cx-player__play-t { opacity: .92; }
.home-v3 .cx-player__poster img { transition: transform .8s ease, filter .4s ease; }
.home-v3 .cx-player__poster:hover img { transform: scale(1.015); }
.home-v3 .cx-player:not(.is-theater) .cx-player__chapters, .home-v3 .cx-player:not(.is-theater) .cx-player__cap { display: none; }
.home-v3 .cx-player:not(.is-theater) .cx-player__foot { justify-content: flex-end; }
@media (max-width: 1000px) { .home-v3 .hero-v2 .cx-hero-copy .hero-mix { max-width: 40ch; } }
@media (max-width: 560px) { .home-v3 .cx-player__play { right: 5%; } .home-v3 .cx-player__play-t { display: none; } }
@media (prefers-reduced-motion: reduce) { .home-v3 .cx-player__play-i, .home-v3 .cx-player__poster img { transition: none; } }
/* el hero partido usa el mismo eje óptico que el resto de secciones (contenedor y medianil del sitio), no el sangrado ancho del hero antiguo */
.home-v3 .hero-v2 .container { padding-inline: var(--gutter); }
.home-v3 .cx-player__play .cx-player__play-t { display: inline; width: auto; height: auto; background: none; color: #F8FAFC; font-size: 10.5px; }
.home-v3 .cx-player__play .cx-player__play-i { width: clamp(56px, 6vw, 80px); height: clamp(56px, 6vw, 80px); font-size: clamp(16px, 1.6vw, 22px); }
@media (max-width: 1000px) { .home-v3 .cx-hero-grid { grid-template-columns: 1fr; gap: var(--space-xl); } .home-v3 .cx-hero-media { order: 2; } }
body.admin-bar .home-v3 .cx-player.is-theater { top: 32px; }
@media (max-width: 782px) { body.admin-bar .home-v3 .cx-player.is-theater { top: 46px; } }

/* ── HOME v3.4 · vídeo vertical (9:16) en móvil en retrato ───────────────────────────────────── */
.home-v3 .cx-player.is-vertical .cx-player__frame { aspect-ratio: 9 / 16; }
.home-v3 .cx-player.is-vertical .cx-player__video { object-fit: contain; }
.home-v3 .cx-player.is-vertical:not(.is-theater) .cx-player__frame { max-width: 62vw; margin-inline: auto; }
@media (max-width: 760px) {
  /* en el modo grande el vídeo vertical ocupa el alto disponible; capítulos y pie fuera */
  .home-v3 .cx-player.is-vertical.is-theater { grid-template-rows: auto minmax(0, 1fr); align-content: start; }
  .home-v3 .cx-player.is-vertical.is-theater .cx-player__chapters, .home-v3 .cx-player.is-vertical.is-theater .cx-player__foot { display: none; }
  .home-v3 .cx-player.is-vertical.is-theater .cx-player__frame { height: calc(100vh - 70px); height: calc(100dvh - 70px); width: auto; max-width: 100%; aspect-ratio: 9 / 16; justify-self: center; }
  .home-v3 .cx-player__video::cue { font-size: .95em; }
}
/* ajustes 0.81.0 tras prueba en vivo */
@media (max-width: 760px) {
  .home-v3 .cx-player.is-vertical.is-theater .cx-player__frame { height: calc(100vh - 84px); height: calc(100dvh - 84px); }
  body.admin-bar .home-v3 .cx-player.is-vertical.is-theater .cx-player__frame { height: calc(100dvh - 130px); }
}
@media (max-width: 560px) { .home-v3 .cx-player__play .cx-player__play-t { display: none; } }
/* el arte del hero de la home no pasa por el filtro SVG (no se emite en la portada y Firefox ocultaría el elemento); se anima solo con la deriva */
.home-v3 .hero-v2 .cx-art__wave { filter: none; }


/* ══════════════════════════════════════════════════════════════════
   SISTEMA DE VISIBILIDAD DIGITAL · 10-09-2026 · bloque acotado
   Ámbito: .vis-digital (page-visibilidad-digital.php). La página monta
   sobre el sistema de página v3 (.home-v3), del que hereda ritmo
   vertical, cxidx, cxcall, cx-close y formulario; aquí va solo lo
   propio: ritmo 64/96, doctrina de acento de esta página, la pieza de
   apertura de las dos siglas y la rejilla comparativa del bloque 06.
   Para revertir: borrar desde este comentario hasta el final del fichero.
   ══════════════════════════════════════════════════════════════════ */

.vis-digital { --space-block: clamp(4rem, 2.6rem + 3.2vw, 6rem); }

.vis-digital .lead { max-width: 62ch; }
.vis-digital .sec-head .lead { max-width: 40ch; }
.vis-digital .hero-microcopy { max-width: 70ch; }

.vis-digital .hero-page > .container > * + * { margin-top: var(--space-md); }
.vis-digital .hero-page > .container > .hero-stats,
.vis-digital .hero-page > .container > .hero-ctas { margin-top: var(--space-xl); }
.vis-digital .hero-page > .container > .cxidx { margin-top: var(--space-block); }

/* Doctrina de acento · máximo tres elementos por pantalla */
.vis-digital .cxidx__l li span { color: var(--muted-2, var(--muted)); }
.vis-digital .d-check { color: var(--title); }
.vis-digital .cxcall__k { color: var(--muted-2, var(--muted)); }
.vis-digital .cx-close__k { color: var(--muted-2, var(--muted)); }
.vis-digital .vis-limites .chip { color: var(--muted-2, var(--muted)); }
.vis-digital .vis-limites .statement { border-left-color: var(--line); }

.vis-digital .chip { letter-spacing: .18em; }

.vis-digital .vis-cond { margin-top: var(--space-block); }
.vis-digital .vis-cond .ed-word { font-size: clamp(1.15rem, 1.5vw, 1.4rem); font-weight: 600; }

/* 06 · comparativa a dos columnas, filas alineadas por filete */
.vis-digital .vis-cmp { border-top: 1px solid var(--line); margin-top: var(--space-block); }
.vis-digital .vis-cmp__head,
.vis-digital .vis-cmp__row {
  display: grid;
  grid-template-columns: minmax(0, 230px) minmax(0, 1fr) minmax(0, 1fr);
  gap: 8px 32px; padding: 18px 0;
  border-bottom: 1px solid var(--line);
  align-items: baseline;
}
.vis-digital .vis-cmp__head { padding: 14px 0; }
.vis-digital .vis-cmp__head .vis-cmp__c {
  font-family: var(--font-mono); font-size: 11px; font-weight: 500;
  letter-spacing: .18em; text-transform: uppercase; color: var(--title);
}
.vis-digital .vis-cmp__k {
  font-family: var(--font-mono); font-size: 11px; font-weight: 500;
  letter-spacing: .18em; text-transform: uppercase; color: var(--muted-2, var(--muted));
}
.vis-digital .vis-cmp__v { font-size: 1.02rem; line-height: 1.5; color: var(--muted); }
.vis-digital .vis-cmp__m { display: none; }
@media (max-width: 760px) {
  .vis-digital .vis-cmp__head { display: none; }
  .vis-digital .vis-cmp__row { grid-template-columns: 1fr; gap: 6px; padding: 16px 0; }
  .vis-digital .vis-cmp__m {
    display: block; font-family: var(--font-mono); font-size: 10.5px; font-weight: 500;
    letter-spacing: .18em; text-transform: uppercase; color: var(--muted-2, var(--muted));
    margin-bottom: 2px;
  }
}

.vis-digital .vis-cierre { text-align: center; max-width: 48ch; margin-left: auto; margin-right: auto; }

/* 06 · enlace de texto al escalón de arriba · nunca botón */
.vis-digital .vis-link {
  display: inline-block; color: var(--title); text-decoration: none;
  border-bottom: 1px solid var(--line); padding-bottom: 2px;
}
.vis-digital .vis-link::after { content: " →"; }
.vis-digital .vis-link:hover { border-bottom-color: var(--title); }

/* Hero · titular y continuación al mismo cuerpo, la continuación en gris */
.vis-digital .hero-page .hero-mix h1,
.vis-digital .hero-page .hero-mix p {
  font-size: clamp(2.2rem, 1.6rem + 2.6vw, 3.6rem);
  line-height: 1.14; letter-spacing: var(--ls-h1);
}
.vis-digital .hero-page .hero-mix p { color: var(--muted-2, var(--muted)); }

/* 05 · caja de la cuota */
.vis-digital .vis-precio { margin-top: var(--space-block); }
.vis-digital .vis-precio__cifras {
  display: flex; flex-wrap: wrap; gap: clamp(24px, 4vw, 56px);
  padding: 24px 22px; border-bottom: 1px solid var(--line);
}
.vis-digital .vis-precio__pie {
  margin: 0; padding: 16px 22px 20px; border-top: 1px solid var(--line);
  font-size: .95rem; line-height: 1.5; color: var(--muted-2, var(--muted));
}

.vis-digital .vis-rezagado { margin-top: var(--space-md); }
.vis-digital .vis-rezagado a { color: var(--title); text-decoration: none; border-bottom: 1px solid var(--line); }
.vis-digital .vis-rezagado a:hover { border-bottom-color: var(--title); }

/* 00 · LAS DOS SIGLAS · pieza de apertura */
.vis-digital .vis-siglas {
  display: grid; grid-template-columns: 1fr 1fr;
  margin-top: var(--space-block);
  border-top: 1px solid var(--line); border-bottom: 1px solid var(--line);
}
.vis-digital .vis-sigla { padding: clamp(32px, 3.6vw, 52px) clamp(26px, 3.2vw, 44px); }
.vis-digital .vis-sigla + .vis-sigla { border-left: 1px solid var(--line); }
.vis-digital .vis-sigla__e {
  margin: 0; font-family: var(--font-mono); font-size: 11px; font-weight: 500;
  letter-spacing: .18em; text-transform: uppercase; color: var(--muted-2, var(--muted));
}
.vis-digital .vis-sigla__k {
  margin: 12px 0 18px; font-family: var(--font-mono); font-weight: 500;
  font-size: clamp(4rem, 2.6rem + 6vw, 7rem); line-height: .92;
  letter-spacing: .04em; color: var(--title);
}
.vis-digital .vis-sigla__d {
  margin: 0; font-size: clamp(1.12rem, 1rem + .55vw, 1.45rem); line-height: 1.45;
  color: var(--muted); max-width: 32ch;
}
.vis-digital .vis-sigla__d b { color: var(--title); font-weight: 500; }
.vis-digital .vis-apertura .statement { max-width: 42ch; }
@media (max-width: 760px) {
  .vis-digital .vis-siglas { grid-template-columns: 1fr; }
  .vis-digital .vis-sigla + .vis-sigla { border-left: 0; border-top: 1px solid var(--line); }
}


/* ── Modo grande del vídeo en esta página ─────────────────────────
   El reproductor es el mismo de la portada, pero aquí va sin capítulos:
   la rejilla queda en tres filas y el fotograma se centra en el alto
   sobrante en vez de quedarse arriba.                               */
@media (min-width: 761px) {
  .home-v3.vis-digital .cx-player.is-theater { grid-template-rows: auto minmax(0, 1fr) auto; }
  .home-v3.vis-digital .cx-player.is-theater .cx-player__frame { align-self: center; }
}


/* ── Hero · maquetación A · 10-09-2026 ────────────────────────────
   El hero reservaba hasta 330 px de guarda al arte y encajonaba el
   titular en 741 px: siete líneas a cuerpo de titular en una medida
   de 45 caracteres, con dos párrafos largos debajo. Aquí el texto
   recupera el ancho del contenedor, el arte pasa a fondo de toda la
   sección con más velo, y las tres cifras forman una franja con
   filete en vez de una fila suelta.
   Para revertir: borrar desde este comentario hasta el final.       */
.vis-digital .hero-page .container { padding-right: var(--gutter); }
.vis-digital .hero-page .hero-mix,
.vis-digital .hero-page .hero-mix h1 { max-width: none; }
.vis-digital .hero-page .hero-mix h1,
.vis-digital .hero-page .hero-mix p { font-size: clamp(2.3rem, 1.5rem + 3vw, 3.9rem); line-height: 1.08; }
.vis-digital .hero-page.cx-has-art .cx-art__left { background: linear-gradient(90deg, var(--bg) 0%, rgba(20, 20, 19, .95) 40%, rgba(20, 20, 19, .74) 66%, rgba(20, 20, 19, .34) 100%); }
.vis-digital .hero-page .vis-apoyo { max-width: 62ch; }
.vis-digital .hero-page .hero-stats {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0;
  border-top: 1px solid var(--line); border-bottom: 1px solid var(--line);
}
.vis-digital .hero-page .hstat { padding: 26px 32px; }
.vis-digital .hero-page .hstat:first-child { padding-left: 0; }
.vis-digital .hero-page .hstat + .hstat { border-left: 1px solid var(--line); }
@media (max-width: 700px) {
  .vis-digital .hero-page .hero-stats { grid-template-columns: 1fr; }
  .vis-digital .hero-page .hstat { padding: 18px 0; }
  .vis-digital .hero-page .hstat + .hstat { border-left: 0; border-top: 1px solid var(--line); }
}

/* El titular con cursor pierde el espacio entre la frase en tinta y su
   continuación en gris: el salto de línea del marcado se come al colapsar
   entre dos elementos en línea. Separación explícita, en el componente
   (afecta a todas las páginas que montan el patrón). */
.hero-mix p::before { content: ""; display: inline-block; width: .3em; }

/* ── MENÚ v2 · panel «Qué hacemos» y subbarra de página (10-09-2026) ────── */
.mm-colstack { display: grid; gap: 16px; align-content: start; }
.mm-foot { margin: 16px 0 0; padding-top: 14px; border-top: 1px solid var(--line); font-size: .8rem; color: var(--muted); }
.mm-foot a { color: var(--title); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--blue); margin-left: .4em; }
.mm-feature .btn-primary { color: var(--bg); }
.mm-feature .btn-primary:hover { color: #fff; }
.mm-col a.f-ext::after { content: none; }
.mm-col a.f-ext b::after { content: " ↗"; font-size: .85em; opacity: .7; }

.cx-subnav { display: none; border-bottom: 1px solid var(--line); background: color-mix(in srgb, var(--bg) 92%, var(--panel)); }
.cx-subnav__in { display: flex; align-items: center; gap: 22px; min-height: 46px; overflow-x: auto; scrollbar-width: none; }
.cx-subnav__in::-webkit-scrollbar { display: none; }
.cx-subnav__t { flex: 0 0 auto; font-family: var(--font-mono); font-size: .6rem; letter-spacing: .14em; text-transform: uppercase; color: var(--blue); white-space: nowrap; }
.cx-subnav__l { display: flex; align-items: center; gap: 20px; margin: 0; padding: 0; list-style: none; }
.cx-subnav__l a { display: block; padding: 4px 0; font-size: .82rem; color: var(--muted); white-space: nowrap; border-bottom: 1px solid transparent; transition: color .18s ease, border-color .18s ease; }
.cx-subnav__l a:hover, .cx-subnav__l a:focus-visible { color: var(--title); border-bottom-color: var(--blue); }
@media (min-width: 1000px) { .cx-subnav { display: block; } }

/* ══ MENÚ v3 · pasada UX (10-09-2026) ═══════════════════════════════════════
   Escala del menú, unificada: rótulo 10.5/.14em · nombre 15.5/500 · descriptor
   13/1.45 · cifra en mono tabular. Tres tamaños, no siete.                    */
.mm-item.is-here > .mm-trigger { color: var(--title); }
.mm-item.is-here > .mm-trigger::before { content: ""; position: absolute; left: 0; right: 14px; bottom: -2px; height: 1px; background: var(--blue); }
.mm-trigger { position: relative; }
.mm-trigger:focus-visible { outline: 2px solid var(--blue); outline-offset: 4px; }
.mm-panel-qh  { width: min(880px, calc(100vw - 32px)); padding: 24px; }
.mm-panel-sec { width: min(920px, calc(100vw - 32px)); padding: 24px; }
.mm-h { margin: 0 0 12px; font-family: var(--font-mono); font-size: 10.5px; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; color: var(--blue); }
.mm-h span { margin-left: .7em; letter-spacing: .02em; text-transform: none; color: var(--muted-2, var(--muted)); }
.mm-h--2 { margin-top: 20px; }
.mm-qh { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 32px; align-items: start; }
.mm-esc { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.mm-plan { position: relative; display: flex; flex-direction: column; gap: 6px; padding: 16px 16px 14px; border: 1px solid var(--line); background: color-mix(in srgb, var(--panel) 42%, transparent); transition: border-color .18s ease, background .18s ease, transform .18s ease; }
.mm-plan--core { border-color: color-mix(in srgb, var(--blue) 46%, var(--line)); border-top-width: 2px; border-top-color: var(--blue); }
.mm-plan:hover { transform: translateY(-1px); border-color: color-mix(in srgb, var(--blue) 60%, var(--line)); background: color-mix(in srgb, var(--panel) 62%, transparent); }
.mm-plan[aria-current="page"] { background: color-mix(in srgb, var(--blue) 10%, transparent); border-color: var(--blue); }
.mm-plan[aria-current="page"] .mm-plan__tag::after { content: " · ESTÁ AQUÍ"; color: var(--muted-2, var(--muted)); }
.mm-plan__tag { font-family: var(--font-mono); font-size: 9.5px; letter-spacing: .14em; color: var(--blue); }
.mm-plan__n { font-size: 15.5px; font-weight: 500; line-height: 1.2; color: var(--title); letter-spacing: -.005em; }
.mm-plan__p { font-family: var(--font-mono); font-size: 13px; color: var(--muted); font-variant-numeric: tabular-nums; }
.mm-plan__p b { font-size: 19px; font-weight: 500; color: var(--title); letter-spacing: -.01em; }
.mm-plan__p i { font-style: normal; font-size: 11px; }
.mm-plan__d { font-size: 13px; line-height: 1.45; color: var(--muted); }
.mm-plan__go { margin-top: auto; padding-top: 10px; font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--blue); }
.mm-plan__go::after { content: " →"; display: inline-block; transition: transform .18s ease; }
.mm-plan:hover .mm-plan__go::after { transform: translateX(3px); }
.mm-qh__note { margin: 14px 0 0; font-size: 12.5px; line-height: 1.5; color: var(--muted-2, var(--muted)); max-width: 46ch; }
.mm-qh__otras { border-left: 1px solid var(--line); padding-left: 28px; }
/* 0.122.2 · Megamenú «Qué hacemos» (Jesús, 15-10-2026: «más ancho, casi el 80 % del ancho de página… añadir artículos técnicos y sectores o Kit Digital más amplio, un mega menú más consistente y contundente»).
   Tres zonas: a la izquierda los dos sistemas y los servicios concretos (Ley IA en ámbar = inteligencia artificial); a la derecha los 16 sectores por familias y el Kit Digital;
   abajo, los últimos artículos técnicos y las otras vías. Los sectores, en dos columnas por orden alfabético con nombre corto (el panel «Sectores» conserva las familias). Cuadra en la pantalla: si no cabe en alto, el panel se desplaza por dentro. */
.mm-panel-qh { width: min(80vw, 1560px); max-height: calc(100vh - 82px); overflow-y: auto; overscroll-behavior: contain; padding: 28px 32px 22px; }
.mm-qh.mm-qh--mega { display: grid; grid-template-columns: minmax(0, 2.15fr) minmax(0, 1fr); grid-template-areas: "main lado" "art art"; gap: 26px 34px; }
.mm-qh__main { grid-area: main; min-width: 0; }
.mm-qh__lado { grid-area: lado; min-width: 0; border-left: 1px solid var(--line); padding-left: 30px; }
.mm-qh__art { grid-area: art; border-top: 1px solid var(--line); padding-top: 18px; }
.mm-h--srv { margin-top: 22px; }
.mm-esc--srv { grid-template-columns: repeat(2, minmax(0, 1fr)); } /* 0.123.0: cuatro servicios (Ley IA, Inteligencia Comercial, Presencia Web, Activación Digital) en 2 × 2 */
.mm-plan--li { border-color: color-mix(in srgb, var(--c-ia) 42%, var(--line)); border-top: 2px solid var(--c-ia); }
.mm-plan--li:hover { border-color: color-mix(in srgb, var(--c-ia) 62%, var(--line)); border-top-color: var(--c-ia); }
.mm-plan--li .mm-plan__tag { color: var(--c-ia); }
.mm-plan--li[aria-current="page"] { background: color-mix(in srgb, var(--c-ia) 9%, transparent); border-color: var(--c-ia); }
.mm-qh__secs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 18px; margin-bottom: 20px; }
.mm-qh__secs a { display: block; padding: 6px 0 6px 14px; position: relative; font-size: 13px; line-height: 1.35; color: var(--muted); border-bottom: 1px solid color-mix(in srgb, var(--line) 60%, transparent); transition: color .16s ease; }
.mm-qh__secs a::before { content: ""; position: absolute; left: 0; top: 14px; width: 7px; height: 1px; background: var(--blue); opacity: .4; transition: opacity .16s ease, width .16s ease; }
.mm-qh__secs a:hover, .mm-qh__secs a:focus-visible, .mm-qh__secs a[aria-current="page"] { color: var(--title); }
.mm-qh__secs a:hover::before { opacity: 1; width: 10px; }
.mm-plan--kd { margin-top: 2px; }
.mm-art { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.mm-art a { display: grid; gap: 6px; align-content: start; padding: 12px 14px; border: 1px solid var(--line); background: color-mix(in srgb, var(--panel) 30%, transparent); transition: border-color .18s ease, background .18s ease; }
.mm-art a:hover, .mm-art a:focus-visible { border-color: color-mix(in srgb, var(--blue) 55%, var(--line)); background: color-mix(in srgb, var(--panel) 55%, transparent); }
.mm-art__m { font-family: var(--font-mono); font-size: 9.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted-2, var(--muted)); }
.mm-art b { font-size: 13.5px; font-weight: 500; line-height: 1.35; color: var(--title); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.mm-qh__pie { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px 14px; margin-top: 14px; font-size: 13px; }
.mm-qh__pie .mm-h { margin: 0 0 0 auto; }
.mm-qh__pie a { color: var(--title); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--line-2, var(--line)); }
.mm-qh__pie a:hover, .mm-qh__pie a:focus-visible { text-decoration-color: var(--blue); }
.mm-qh__pie a.f-ext::after { content: " ↗"; font-size: .85em; opacity: .7; }
.mm-qh__pie .mm-art__todos { font-weight: 500; }
.mm-qh__pie .mm-art__todos::after { content: " →"; }
.mm-qh__pie .mm-sec-todos { color: var(--muted); }
.mm-mesc .mm-h--srv { margin: 8px 0 0; }
/* anomalía vista el 15-10-2026: entre 861 y 1080 px los enlaces del menú se partían en dos líneas («Casos de / éxito») y la flecha caía debajo */
.mm-trigger, .mm-links > li > a { white-space: nowrap; }
@media (min-width: 861px) and (max-width: 1100px) {
  .header-inner { gap: 16px; }
  .nav-links.mm-links { gap: 16px; }
  .mm-trigger, .mm-links > li > a { font-size: .86rem; }
  .brand-analytica { display: none; }
  .header-cta { flex-shrink: 0; padding: 8px 12px; }
}
@media (max-width: 1280px) {
  .mm-panel-qh { width: 92vw; padding: 24px 26px 20px; }
  .mm-qh.mm-qh--mega { gap: 22px 26px; }
  .mm-qh__lado { padding-left: 24px; }
}
@media (max-width: 1080px) {
  .mm-qh.mm-qh--mega { grid-template-columns: 1fr; grid-template-areas: "main" "lado" "art"; }
  .mm-qh__lado { border-left: 0; padding-left: 0; border-top: 1px solid var(--line); padding-top: 18px; display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 0 26px; align-items: start; }
  .mm-qh__lado > .mm-h:first-child, .mm-qh__lado > .mm-qh__secs { grid-column: 1; }
  .mm-qh__lado > .mm-h--2 { grid-column: 2; grid-row: 1; margin-top: 0; }
  .mm-qh__lado > .mm-plan--kd { grid-column: 2; grid-row: 2; }
  .mm-art { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.mm-fams { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 26px; }
.mm-fam__t { margin: 0 0 8px; padding-bottom: 7px; border-bottom: 1px solid var(--line); font-size: 12px; font-weight: 500; line-height: 1.3; color: var(--title); }
.mm-fam a { display: block; padding: 6px 0 6px 14px; position: relative; font-size: 13px; line-height: 1.35; color: var(--muted); transition: color .16s ease; }
.mm-fam a::before { content: ""; position: absolute; left: 0; top: 13px; width: 7px; height: 1px; background: var(--blue); opacity: .4; transition: opacity .16s ease, width .16s ease; }
.mm-fam a:hover, .mm-fam a:focus-visible { color: var(--title); }
.mm-fam a:hover::before { opacity: 1; width: 10px; }
.mm-secfoot { margin: 20px 0 0; padding-top: 14px; border-top: 1px solid var(--line); font-size: 12.5px; color: var(--muted); }
.mm-secfoot a { color: var(--title); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--blue); margin-left: .3em; }
.mm-col a.f-ext::after { content: none; }
.mm-col a.f-ext b::after { content: " ↗"; font-size: .85em; opacity: .7; }
.cx-subnav__l a.is-on { color: var(--title); border-bottom-color: var(--blue); }

/* móvil: escalera arriba, el resto plegado */
.mm-mesc { display: grid; gap: 10px; margin-bottom: 18px; }
.mm-mesc .mm-plan { padding: 14px; }
.mm-acc { border-top: 1px solid var(--line); }
.mm-acc__t { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; min-height: 52px; padding: 0; border: 0; background: none; cursor: pointer; font-family: var(--font-sans); font-size: 15px; font-weight: 500; color: var(--title); text-align: left; }
.mm-acc__t span { position: relative; width: 12px; height: 12px; flex: 0 0 auto; }
.mm-acc__t span::before, .mm-acc__t span::after { content: ""; position: absolute; inset: 50% 0 auto 0; height: 1.5px; background: var(--blue); transition: transform .22s ease, opacity .22s ease; }
.mm-acc__t span::after { transform: rotate(90deg); }
.mm-acc__t[aria-expanded="true"] span::after { transform: rotate(90deg) scaleX(0); opacity: 0; }
.mm-acc__p { padding-bottom: 14px; display: grid; }
.mm-acc__p[hidden] { display: none; }
.mm-acc__p a { display: block; min-height: 44px; padding: 11px 0 11px 14px; position: relative; font-size: 14.5px; line-height: 1.4; color: var(--muted); }
.mm-acc__p a::before { content: ""; position: absolute; left: 0; top: 21px; width: 7px; height: 1px; background: var(--blue); opacity: .45; }
.mm-acc__p--fam .mm-fam__t { margin-top: 12px; }
.mm-acc__p--fam .mm-fam__t:first-child { margin-top: 0; }
.mm-mlinks { display: grid; border-top: 1px solid var(--line); padding-top: 6px; }
.mm-mlinks a { min-height: 48px; display: flex; align-items: center; font-size: 15px; color: var(--title); }

/* subbarra persistente: se quedaba estática y desaparecía al bajar */
.cx-subnav { position: sticky; top: 66px; z-index: 45; background: color-mix(in srgb, var(--bg) 96%, var(--panel)); }
.admin-bar .cx-subnav { top: 98px; }
@media screen and (max-width: 782px) { .admin-bar .cx-subnav { top: 112px; } }
.cx-subnav.is-stuck { box-shadow: 0 10px 28px rgba(0, 0, 0, .16); backdrop-filter: blur(14px); background: color-mix(in srgb, var(--bg) 88%, var(--panel)); }
.cx-subnav.is-stuck .cx-subnav__in { min-height: 42px; }
.cx-subnav.is-stuck .cx-subnav__t { opacity: .78; }
.cx-subnav__in, .cx-subnav__t { transition: min-height .2s ease, opacity .2s ease; }

@media (max-width: 1080px) {
  .mm-fams { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px 26px; }
  .mm-qh { grid-template-columns: 1fr; gap: 22px; }
  .mm-qh__otras { border-left: 0; border-top: 1px solid var(--line); padding-left: 0; padding-top: 18px; }
}
@media (max-width: 560px) { .mm-esc { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) {
  .mm-plan, .mm-plan__go::after, .mm-acc__t span::before, .mm-acc__t span::after, .cx-subnav__in, .cx-subnav__t { transition: none; }
}

/* ═══════════════════════════════════════════════════════════════
   HX · sistema de páginas de conversión · 0.94.0 · 26-09-2026
   Antes en línea en front-page.php (portada v4). Lo comparten la portada
   y las páginas de sistema rediseñadas (/autoridad-digital/).
   ═══════════════════════════════════════════════════════════════ */
.hx{--s0:var(--bg);--s1:var(--paper);--s2:var(--soft);--s3:var(--panel);--ink1:var(--title);--ink2:var(--ink);--ink3:var(--muted);--ink4:var(--muted-2);--line2:var(--line-2);
  --propio:var(--c-propio);--google:var(--c-google);--ia:var(--c-ia);--otros:var(--c-otros);--propio-soft:var(--c-propio-soft);--otros-soft:var(--c-otros-soft);
  --sig:var(--c-propio);--sig-ink:var(--bg);--sans:var(--font-sans);--mono:var(--font-mono);
  background:var(--s0);color:var(--ink2);font:400 17px/1.55 var(--sans);-webkit-font-smoothing:antialiased}
.hx *{box-sizing:border-box;border-radius:0}
.hx a{color:inherit}.hx button{font:inherit;color:inherit;cursor:pointer}
.hx :focus-visible{outline:2px solid var(--sig);outline-offset:3px}
.hx .wrap{max-width:1240px;margin:0 auto;padding-inline:clamp(16px,4vw,48px)}
.hx section{position:relative;padding-block:clamp(56px,7vw,96px);border-bottom:1px solid var(--line)}
.hx section>.wrap{display:grid;gap:28px}
.hx .k{display:flex;align-items:center;gap:12px;margin:0;font:500 11.5px/1 var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ink3)}
.hx .k::before{content:"";width:22px;height:1px;background:var(--ink3)}
.hx .k b{font-weight:500;color:var(--ink4)}
.hx .cur{margin:0;color:var(--ink1);font-weight:500;letter-spacing:-.018em;line-height:1.14;text-wrap:balance;font-family:var(--sans);text-transform:none}
.hx .cur span{color:var(--ink3)}
.hx h2.cur{font-size:clamp(28px,3.3vw,44px);max-width:24ch}
.hx .p{margin:0;max-width:58ch;color:var(--ink2);text-wrap:pretty}
.hx .lab{font:500 11px/1.3 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink4)}
.hx .foot{font-size:12.5px;color:var(--ink4);margin:0}
.hx .btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;border:1px solid var(--line2);background:var(--s1);padding:14px 20px;font:500 13.5px/1.2 var(--mono);letter-spacing:.04em;color:var(--ink1);text-decoration:none;text-transform:none;box-shadow:none;min-height:0;transition:border-color .2s,transform .15s}
.hx .btn:hover{border-color:var(--ink3);transform:translateY(-1px)}
.hx .btn.sig{background:var(--sig);border-color:var(--sig);color:var(--sig-ink)}
.hx .btn.wa{border-color:var(--propio)}
.hx .btn.wa svg{width:18px;height:18px;fill:var(--propio);flex:0 0 18px}
.hx .btn.big{padding:17px 24px;font-size:14.5px}
.hx .tlink{font:500 13px/1.3 var(--mono);letter-spacing:.04em;color:var(--ink3);text-decoration:none;border-bottom:1px solid var(--line2);padding-bottom:2px}
.hx .tlink:hover{color:var(--ink1);border-color:var(--ink1)}
.hx .acts{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.hx .picto .i{fill:var(--ink1)}.hx .picto .a,.hx .picto .ab{fill:var(--propio)}
.hx .picto .r{fill:none;stroke:var(--ink1);stroke-width:4}.hx .picto .am{stroke:var(--propio);stroke-width:5;stroke-linecap:round;fill:none}
.hx .picto.sm .i{fill:var(--ink3)}
.hx .vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.hx .two{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,5vw,72px);align-items:center}
.hx .two.r .head{order:2}.hx .two.r .body{order:1}
.hx .head{display:grid;gap:22px;align-content:center}
/* banners con figura */
.hx section.banner{background:var(--s1);overflow:hidden}
.hx section.banner .bgfig{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;color:var(--ink1)}
.hx section.banner .bgfig .b{opacity:.032}
.hx section.banner .bg-nodos .b{opacity:.04}.hx section.banner .bg-senal .b{opacity:.05}
.hx section.banner .bgfig .a{fill:var(--propio);stroke:none;opacity:.26}
.hx section.banner .bg-senal .a{fill:none;stroke:var(--propio);stroke-width:1.6;opacity:.32}
/* fundido: la figura nace en el lado contrario al texto y se apaga hacia arriba, abajo y el titular */
.hx section.banner .bgfig{-webkit-mask-image:linear-gradient(90deg,transparent 0%,transparent 22%,#000 72%),linear-gradient(180deg,transparent 0%,#000 26%,#000 70%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0%,transparent 22%,#000 72%),linear-gradient(180deg,transparent 0%,#000 26%,#000 70%,transparent 100%);-webkit-mask-composite:source-in;mask-composite:intersect}
.hx section.banner>.wrap{position:relative}

/* ===== HERO ===== */
.hx .hero{padding-block:clamp(56px,7vw,104px) clamp(56px,7vw,96px);overflow:hidden}
.hx .hero .art{position:absolute;inset:0;z-index:0;pointer-events:none}
.hx .hero .art img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:right center}
.hx .hero .art i{position:absolute;inset:0;background:linear-gradient(90deg,var(--bg) 0%,color-mix(in srgb,var(--bg) 90%,transparent) 55%,color-mix(in srgb,var(--bg) 45%,transparent) 82%,color-mix(in srgb,var(--bg) 15%,transparent))}
.hx .hero .art b{position:absolute;left:0;right:0;bottom:0;height:120px;background:linear-gradient(180deg,transparent,var(--bg))}
:root[data-theme="light"] .hx .hero .art{display:none}
@media (prefers-color-scheme:light){:root:not([data-theme="dark"]) .hx .hero .art{display:none}}
.hx .hero>.wrap{position:relative;z-index:2;gap:24px}
.hx .hero h1.cur{font-size:clamp(34px,4.1vw,60px);max-width:none;line-height:1.08;letter-spacing:-.026em}
.hx .hero .sub{margin:0;font-size:15px;color:var(--ink4)}
.hx .proof{display:flex;flex-wrap:wrap;gap:8px 28px;font:500 12px/1.4 var(--mono);letter-spacing:.05em;color:var(--ink3)}
.hx .proof b{color:var(--ink1);font-weight:500}
.hx .vthumb{display:inline-flex;align-items:center;gap:12px;border:1px solid var(--line2);background:var(--s1);padding:6px 14px 6px 6px;font:500 12.5px/1.3 var(--mono);letter-spacing:.03em;color:var(--ink1);text-align:left}
.hx .vthumb i{display:grid;place-items:center;width:52px;height:38px;background:var(--ink1);color:var(--s0);font-size:12px;font-style:normal}
.hx .vthumb small{display:block;font-weight:400;color:var(--ink4);font-size:11px}

/* ===== 02 ¿LE SUENA? ===== */
.hx .dol{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .dol div{background:var(--s1);padding:20px 22px;display:grid;gap:10px}
.hx .dol svg{width:56px;height:28px;display:block}
.hx .dol b{font-weight:500;color:var(--ink1);font-size:17px}
.hx .dol p{margin:0;font-size:14.5px;color:var(--ink3)}

/* ===== 03 QUÉ HACEMOS ===== */
.hx .res3{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .res3>div{background:color-mix(in srgb,var(--s0) 55%,var(--s1));padding:26px 24px 24px;display:grid;gap:12px;align-content:start}
.hx .res3 .picto{width:64px;height:64px}
.hx .res3 b{font:500 21px/1.2 var(--sans);color:var(--ink1);letter-spacing:-.01em}
.hx .res3 p{margin:0;font-size:15px;color:var(--ink3)}
.hx .res3 .n{font:500 11px/1 var(--mono);letter-spacing:.14em;color:var(--ink4)}
.hx .incl{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.hx .incl span{padding:7px 11px;border:1px solid var(--line2);font:500 12px/1 var(--mono);color:var(--ink2);background:var(--s1)}
.hx .incl .lab{border:0;background:none;padding:0 4px 0 0}
.hx .vstrip{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:center;padding:14px 18px;border:1px solid var(--line);background:var(--s1)}
.hx .vstrip p{margin:0;font-size:14.5px;color:var(--ink3)}

/* ===== 04 CASO ===== */
.hx .frame{border:1px solid var(--line);background:var(--s1);padding:14px;display:grid;gap:10px}
.hx .frame svg{display:block;width:100%;height:auto}
.hx .frame .lab{display:flex;justify-content:space-between;gap:10px}
.hx .kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .kpis div{background:var(--s1);padding:16px 18px;display:grid;gap:6px;min-width:0}
.hx .big{font:500 clamp(30px,2.8vw,40px)/1 var(--sans);letter-spacing:-.025em;color:var(--ink1);font-variant-numeric:tabular-nums;white-space:nowrap}
.hx .big.g{color:var(--propio)}
.hx .kpis .lab{color:var(--ink3)}

/* ===== 05 CUÁNTO Y CÓMO ===== */
.hx .inv{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:clamp(24px,4vw,56px);align-items:center}
.hx .precio{display:grid;gap:14px}
.hx .precio h2.cur em.g{font-style:normal;color:var(--propio)}
.hx .bars{display:grid;gap:12px;padding:20px;background:var(--s1);border:1px solid var(--line)}
.hx .bars div{display:grid;grid-template-columns:150px 1fr 96px;gap:14px;align-items:center;font-size:15px;color:var(--ink2)}
.hx .bars i{display:block;height:18px}
.hx .bars em{font:500 13px var(--mono);color:var(--ink3);text-align:right;font-style:normal}
.hx .bars div.me{color:var(--ink1)}.hx .bars div.me em{color:var(--propio)}
.hx .bg-otros{background:repeating-linear-gradient(135deg,var(--otros) 0 3px,transparent 3px 6px)}
.hx .pasos3{display:grid;grid-template-columns:repeat(3,1fr);gap:0;counter-reset:p;margin:0;padding:0;list-style:none;border-top:1px solid var(--line2)}
.hx .pasos3 li{position:relative;padding:22px 22px 4px 0;display:grid;gap:6px}
.hx .pasos3 li::before{counter-increment:p;content:counter(p);position:absolute;top:-14px;left:0;width:28px;height:28px;display:grid;place-items:center;background:var(--s0);border:1px solid var(--line2);font:500 12px/1 var(--mono);color:var(--ink3)}
.hx .pasos3 li:first-child::before{background:var(--propio);border-color:var(--propio);color:var(--sig-ink)}
.hx .pasos3 b{font:500 18px/1.25 var(--sans);color:var(--ink1);padding-top:10px}
.hx .pasos3 span{font-size:14.5px;color:var(--ink3)}
.hx .cta-row{display:grid;grid-template-columns:1fr auto;gap:18px;align-items:center;padding:22px 26px;border:1px solid var(--line);background:var(--s2);border-left:3px solid var(--propio)}
.hx .cta-row b{display:block;font:500 20px/1.3 var(--sans);color:var(--ink1);letter-spacing:-.01em}
.hx .cta-row p{margin:4px 0 0;font-size:14.5px;color:var(--ink3)}

/* ===== 06 HABLE CON JESÚS ===== */
.hx .cierre>.wrap{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:clamp(28px,5vw,64px);align-items:start}
.hx .quien{display:grid;grid-template-columns:150px 1fr;gap:20px;align-items:end}
.hx .retrato{aspect-ratio:4/5;overflow:hidden;border:1px solid var(--line);background:var(--s2)}
.hx .retrato img{width:100%;height:100%;object-fit:cover;object-position:50% 25%;display:block;filter:grayscale(1)}
.hx .quien .nm b{display:block;font:500 18px/1.2 var(--sans);color:var(--ink1)}
.hx .quien .nm span{font:500 11px/1.5 var(--mono);letter-spacing:.08em;color:var(--ink4)}
.hx .garant{display:grid;gap:10px;margin:0;padding:0;list-style:none}
.hx .garant li{display:grid;grid-template-columns:18px 1fr;gap:10px;font-size:15.5px;color:var(--ink2)}
.hx .garant li::before{content:"";width:8px;height:8px;background:var(--propio);margin-top:9px}
.hx .garant b{color:var(--ink1);font-weight:500}
.hx .salidas{display:grid;gap:12px;background:color-mix(in srgb,var(--s1) 94%,transparent);border:1px solid var(--line2);padding:clamp(18px,2.4vw,28px)}
.hx .salidas .btn{width:100%}
.hx .salidas .o{display:flex;align-items:center;gap:12px;font:500 11px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink4)}
.hx .salidas .o::before,.hx .salidas .o::after{content:"";flex:1;height:1px;background:var(--line2)}
.hx .cb{display:grid;gap:10px}
.hx .cb .row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.hx .cb input[type=text],.hx .cb input[type=tel]{min-width:0;width:100%;border:1px solid var(--line2);background:var(--s0);color:var(--ink1);font:inherit;font-size:16px;padding:12px}
.hx .cb .priv{display:grid;grid-template-columns:18px 1fr;gap:10px;font-size:12.5px;line-height:1.45;color:var(--ink4)}
.hx .cb .priv input{margin:2px 0 0;accent-color:var(--sig)}
.hx .cb .ok{padding:14px;border:1px solid var(--propio);color:var(--ink1);font-size:15px}
.hx .salidas .foot{text-align:center}

/* ===== sectores (tira final) ===== */
.hx .sect{padding-block:clamp(40px,5vw,64px)}
.hx .sect>.wrap{grid-template-columns:auto 1fr;gap:18px 40px;align-items:start}
.hx .sect nav{display:flex;flex-wrap:wrap;gap:6px}
.hx .sect nav a{padding:8px 11px;border:1px solid var(--line2);background:var(--s1);font:500 12px/1.2 var(--mono);color:var(--ink3);text-decoration:none}
.hx .sect nav a:hover{color:var(--ink1);border-color:var(--ink1)}

/* ===== cine ===== */
.hx .cine{position:fixed;inset:0;z-index:100000;background:#141413;display:grid;grid-template-rows:auto 1fr auto;gap:12px;padding:calc(env(safe-area-inset-top,0px) + 16px) 24px 24px;color:#FBF6EA}
.hx .cine[hidden]{display:none}
.hx .cine .ct{display:flex;justify-content:space-between;align-items:center;gap:12px}
.hx .cine .ct .lab{color:#A9A396}
.hx .cine .cx{border:1px solid #3D3B36;background:none;color:#FBF6EA;padding:10px 14px;font:500 12px var(--mono);letter-spacing:.08em}
.hx .cine .screen{align-self:center;justify-self:center;width:min(100%,1200px);aspect-ratio:16/9;background:#1F1E1B;border:1px solid #2E2D29;position:relative;overflow:hidden;display:grid;place-items:center;color:#7B766B;font:500 12px var(--mono)}
.hx .cine .screen video{position:absolute;inset:0;width:100%;height:100%;background:#000}
.hx .cine .caps{display:flex;flex-wrap:wrap;gap:6px 18px;justify-content:center;margin:0;padding:0;list-style:none}
.hx .cine .caps button{border:0;background:none;padding:4px 0;display:inline-flex;gap:8px;color:#DED8C9;font-size:13px}
.hx .cine .caps button span{color:#969082;font-family:var(--mono)}
.hx .cine .caps button.on{color:#FBF6EA}.hx .cine .caps button.on span{color:#9BB076}
.hx .cine.is-v .screen{aspect-ratio:9/16;width:auto;height:100%;max-height:calc(100dvh - 90px)}
.hx .cine.is-v .caps{display:none}
html.cx-theater-open{overflow:hidden}

/* ===== barra fija en móvil ===== */
.hx .mcta{display:none}
@media (max-width:900px){
  .hx .two,.hx .inv,.hx .cierre>.wrap,.hx .sect>.wrap{grid-template-columns:1fr}
  .hx .two.r .head{order:1}.hx .two.r .body{order:2}
  .hx .dol{grid-template-columns:1fr 1fr}
  .hx .res3,.hx .pasos3{grid-template-columns:1fr}
  .hx .res3>div{grid-template-columns:52px 1fr;column-gap:16px;padding:18px}
  .hx .res3 .picto{width:52px;height:52px;grid-row:1/4}.hx .res3 .n{display:none}
  .hx .kpis{grid-template-columns:repeat(3,1fr)}.hx .kpis div{padding:12px 10px}.hx .kpis .big{font-size:26px}.hx .kpis .lab{font-size:9.5px;letter-spacing:.08em}
  .hx .pasos3{border-top:0;gap:26px}.hx .pasos3 li{border-top:1px solid var(--line2)}
  .hx .bars div{grid-template-columns:110px 1fr 80px}
  .hx .cta-row{grid-template-columns:1fr}
  .hx .vstrip{grid-template-columns:1fr}
  .hx .quien{grid-template-columns:110px 1fr}
  .hx .mcta{display:grid;grid-template-columns:1fr auto auto;gap:8px;position:fixed;left:0;right:0;bottom:0;z-index:30;padding:10px 12px calc(env(safe-area-inset-bottom,0px) + 10px);background:color-mix(in srgb,var(--s0) 94%,transparent);backdrop-filter:blur(10px);border-top:1px solid var(--line);align-items:center;transition:transform .3s}
  .hx .mcta.fuera{transform:translateY(110%)}
  .hx .mcta span{font:500 11px/1.3 var(--mono);letter-spacing:.04em;color:var(--ink3)}
  .hx .mcta .btn{padding:12px 14px;font-size:12.5px}
  .hx{padding-bottom:72px}
}
@media (max-width:700px){
  .hx .cb .row{grid-template-columns:1fr}
}
@keyframes hxentra{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.hx *{animation:none!important;transition:none!important}.hx .txt .w,.hx .sube{opacity:1;transform:none}}
/* ── /autoridad-digital/ · ficha de producto (0.94.0) ── */
.hx section.banner .bg-estratos .b{opacity:.07}.hx section.banner .bg-puntos .b{opacity:.075}.hx section.banner .bg-ondas .b{opacity:.06}
.hx section.banner .bg-estratos .a,.hx section.banner .bg-ondas .a{fill:none;stroke:var(--propio);stroke-width:1.8;opacity:.34}
.hx section.banner .bg-puntos .a{opacity:.34}

/* hero con mapa del sistema */
.hx .adhero>.wrap{grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);gap:clamp(28px,4vw,64px);align-items:center}
.hx .adhero h1.cur{font-size:clamp(34px,3.9vw,56px);line-height:1.08;letter-spacing:-.026em;max-width:18ch}
.hx .adhero h1.cur span{display:block;margin-top:14px;font-size:.5em;line-height:1.3;letter-spacing:-.01em;max-width:34ch}
.hx .adhero .txt{display:grid;gap:24px}
.hx .facts{display:flex;flex-wrap:wrap;gap:0;border:1px solid var(--line);width:max-content;max-width:100%}
.hx .facts div{padding:12px 16px;display:grid;gap:4px;border-right:1px solid var(--line);background:var(--s1)}
.hx .facts div:last-child{border-right:0}
.hx .facts b{font:500 19px/1 var(--sans);color:var(--ink1);letter-spacing:-.01em}
.hx .mapa{width:100%;height:auto;display:block;overflow:visible}
.hx .mapa .ln{stroke:var(--line2);stroke-width:1.2;fill:none}
.hx .mapa .fl{fill:none;stroke-width:2;stroke-dasharray:3 13;animation:adflow 2.6s linear infinite}
.hx .mapa .fl.in{animation-direction:reverse}
.hx .mapa .fl.p{stroke:var(--propio)}.hx .mapa .fl.g{stroke:var(--google)}.hx .mapa .fl.i{stroke:var(--ia)}
.hx .mapa .sat rect{fill:var(--s1);stroke:var(--line2)}
.hx .mapa .sat text{font:500 12px var(--mono);letter-spacing:.06em;fill:var(--ink1)}
.hx .mapa .sat text.s{font-size:10px;fill:var(--ink4);letter-spacing:.1em}
.hx .mapa .sat .dot{r:4}
.hx .mapa .core rect{fill:var(--ink1)}
.hx .mapa .core text{font:500 13px var(--mono);letter-spacing:.14em;fill:var(--s0)}
.hx .mapa .core text.s{font-size:10px;letter-spacing:.1em;opacity:.7}
.hx .mapa .halo{fill:none;stroke:var(--propio);stroke-width:1.2;opacity:0;transform-origin:260px 215px;animation:adhalo 3.2s ease-out infinite}
.hx .mapa .halo.b{animation-delay:1.6s}
@keyframes adflow{to{stroke-dashoffset:-32}}
@keyframes adhalo{0%{opacity:.5;transform:scale(1)}100%{opacity:0;transform:scale(2.1)}}
.hx .leyenda{display:flex;flex-wrap:wrap;gap:6px 18px;font:500 11px/1.3 var(--mono);letter-spacing:.06em;color:var(--ink4);margin:6px 0 0}
.hx .leyenda i{display:inline-block;width:18px;height:2px;margin-right:7px;vertical-align:middle}

/* 01 · explorador de qué incluye */
.hx .xpl{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.4fr);border:1px solid var(--line);background:var(--line);gap:1px}
.hx .xpl [role=tablist]{display:grid;background:var(--s1);align-content:start}
.hx .xpl [role=tab]{display:grid;grid-template-columns:34px 1fr auto;gap:10px;align-items:center;text-align:left;border:0;border-bottom:1px solid var(--line);background:none;padding:14px 18px;font:500 15.5px/1.25 var(--sans);color:var(--ink3)}
.hx .xpl [role=tab]:last-child{border-bottom:0}
.hx .xpl [role=tab] .n{font:500 11px/1 var(--mono);letter-spacing:.12em;color:var(--ink4)}
.hx .xpl [role=tab] .t{font:500 10px/1 var(--mono);letter-spacing:.1em;color:var(--ink4);text-transform:uppercase}
.hx .xpl [role=tab][aria-selected=true]{background:var(--s0);color:var(--ink1);box-shadow:inset 3px 0 0 var(--propio)}
.hx .xpl [role=tab][aria-selected=true] .n{color:var(--propio)}
.hx .xpl [role=tab]:hover{color:var(--ink1)}
.hx .xpl .pan{background:var(--s0);padding:clamp(22px,3vw,36px);display:grid;gap:20px;align-content:start}
.hx .xpl .pan[hidden]{display:none}
.hx .xpl .pan h3{margin:0;font:500 clamp(22px,2.2vw,28px)/1.2 var(--sans);letter-spacing:-.015em;color:var(--ink1)}
.hx .xpl .pan>p{margin:0;color:var(--ink2);max-width:52ch}
.hx .xpl dl{margin:0;display:grid;gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .xpl dl div{display:grid;grid-template-columns:150px 1fr;gap:16px;padding:14px 16px;background:var(--s1)}
.hx .xpl dt{font:500 11px/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink4);padding-top:3px}
.hx .xpl dd{margin:0;font-size:15.5px;color:var(--ink2)}
.hx .xpl dd.u{color:var(--ink1)}
.hx .xpl dd.u b{font-weight:500;color:var(--propio)}
.hx .xpl .nota{font-size:13px;color:var(--ink4);margin:0}
.hx .reparto{display:grid;grid-template-columns:auto 1fr;gap:14px 22px;align-items:center;padding:16px 20px;border:1px solid var(--line);background:var(--s1)}
.hx .reparto .antes{display:flex;flex-wrap:wrap;gap:6px}
.hx .reparto .antes span{padding:6px 9px;border:1px dashed var(--line2);font:500 11.5px/1 var(--mono);color:var(--ink4)}
.hx .reparto p{margin:0;font-size:15px;color:var(--ink2)}
.hx .reparto p b{color:var(--ink1);font-weight:500}

/* 02 · mecanismo */
.hx .fases{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);counter-reset:f}
.hx .fases>div{background:color-mix(in srgb,var(--s0) 55%,var(--s1));padding:24px 22px;display:grid;gap:12px;align-content:start}
.hx .fases .n{font:500 11px/1 var(--mono);letter-spacing:.14em;color:var(--ink4)}
.hx .fases b{font:500 22px/1.15 var(--sans);color:var(--ink1);letter-spacing:-.01em}
.hx .fases p{margin:0;font-size:14.5px;color:var(--ink3)}
.hx .fases .pr{padding-top:12px;border-top:1px solid var(--line);font-size:14px;color:var(--ink2)}
.hx .fases .pr::before{content:"En la práctica · ";font:500 10.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--propio)}
.hx .fases .cero{background:var(--s1)}
.hx .fases .cero ul{margin:0;padding:0;list-style:none;display:grid;gap:8px}
.hx .fases .cero li{display:grid;grid-template-columns:16px 1fr;gap:8px;font-size:14px;color:var(--ink2)}
.hx .fases .cero li::before{content:"";width:7px;height:7px;margin-top:8px;border:1px solid var(--propio)}
.hx .ciclo{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font:500 12.5px/1 var(--mono);letter-spacing:.06em;color:var(--ink3)}
.hx .ciclo span{padding:8px 11px;border:1px solid var(--line2);background:var(--s1);color:var(--ink1)}
.hx .ciclo i{font-style:normal;color:var(--propio)}

/* 03 · simulador de meses */
.hx .sim{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);border:1px solid var(--line);background:var(--line);gap:1px}
.hx .sim>div{background:var(--s1);padding:clamp(20px,2.6vw,30px);display:grid;gap:18px;align-content:start}
.hx .sim .ctl{display:grid;gap:10px}
.hx .sim .ctl label{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.hx .sim .ctl output{font:500 clamp(30px,3vw,42px)/1 var(--sans);letter-spacing:-.02em;color:var(--ink1)}
.hx .sim input[type=range]{width:100%;accent-color:var(--propio);margin:0}
.hx .meses{display:grid;grid-template-columns:repeat(12,1fr);gap:3px}
.hx .meses i{height:38px;background:var(--s2);border:1px solid var(--line);position:relative;transition:background .25s}
.hx .meses i.on{background:var(--propio-soft);border-color:color-mix(in srgb,var(--propio) 45%,var(--line))}
.hx .meses i.hoy{background:var(--propio);border-color:var(--propio)}
.hx .tiempos{display:grid;grid-template-columns:repeat(4,1fr);gap:3px}
.hx .tiempos span{font:500 10.5px/1.3 var(--mono);letter-spacing:.06em;color:var(--ink4);padding-top:6px;border-top:2px solid var(--line2);text-transform:uppercase}
.hx .tiempos span.on{color:var(--ink1);border-color:var(--propio)}
.hx .fase-txt{margin:0;font-size:15.5px;color:var(--ink2);min-height:3.2em}
.hx .fase-txt b{color:var(--ink1);font-weight:500}
.hx .cont{display:grid;gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .cont div{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:baseline;padding:13px 16px;background:var(--s0)}
.hx .cont span{font-size:14.5px;color:var(--ink3)}
.hx .cont b{font:500 22px/1 var(--sans);color:var(--ink1);font-variant-numeric:tabular-nums;letter-spacing:-.01em;white-space:nowrap}
.hx .cont b.g{color:var(--propio)}
.hx .cont b.t{font-size:16px;color:var(--ink2)}
.hx .cont div.tu{background:var(--s2)}
.hx .sim .foot{grid-column:1/-1;background:var(--s1);padding:12px clamp(20px,2.6vw,30px)}

/* 04 · publicidad frente a autoridad */
.hx .dual{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .dual div{background:color-mix(in srgb,var(--s0) 55%,var(--s1));padding:20px;display:grid;gap:8px;align-content:start}
.hx .dual b{font:500 17px/1.25 var(--sans);color:var(--ink1)}
.hx .dual p{margin:0;font-size:14.5px;color:var(--ink3)}
.hx .vs{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .vs>div{background:var(--s1);padding:18px;display:grid;gap:14px;align-content:start}
.hx .vs svg{width:100%;height:auto;display:block}
.hx .vs .ax{stroke:var(--line2);stroke-width:1}
.hx .vs .tx{font:500 11px var(--mono);fill:var(--ink4);letter-spacing:.06em}
.hx .vs .pub{fill:none;stroke:var(--otros);stroke-width:2.5;stroke-dasharray:5 4}
.hx .vs .aut{fill:none;stroke:var(--propio);stroke-width:3}
.hx .vs .autA{fill:var(--propio);opacity:.1}
.hx .vs .corte{stroke:var(--ink3);stroke-width:1;stroke-dasharray:2 3}
.hx .vs .res{display:grid;gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .vs .res div{background:var(--s0);padding:14px 16px;display:grid;gap:6px}
.hx .vs .res .big{font-size:34px}
.hx .vs .res .big.o{color:var(--otros)}
.hx .vs .ctl2{display:grid;gap:8px}
.hx .vs .ctl2 label{display:flex;justify-content:space-between;gap:10px}
.hx .vs .ctl2 input{width:100%;accent-color:var(--propio);margin:0}
.hx .vs .ctl2 output{font:500 13px var(--mono);color:var(--ink1)}
.hx .frase{margin:0;font:500 clamp(20px,2vw,26px)/1.3 var(--sans);color:var(--ink1);letter-spacing:-.01em;max-width:40ch}
.hx .frase span{color:var(--propio)}

/* 05 · Sentinel */
.hx .snt{border:1px solid var(--line2);background:var(--s1);display:grid;gap:1px}
.hx .snt .top{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 18px;background:var(--s2);font:500 11px/1 var(--mono);letter-spacing:.12em;color:var(--ink3)}
.hx .snt .top .v{display:inline-flex;align-items:center;gap:8px;color:var(--propio)}
.hx .snt .top .v::before{content:"";width:7px;height:7px;background:var(--propio);border-radius:50%!important;animation:adlat 1.6s ease-in-out infinite}
@keyframes adlat{50%{opacity:.25}}
.hx .snt .g3{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line)}
.hx .snt .g3>div{background:var(--s1);padding:16px 18px;display:grid;gap:6px}
.hx .snt .up{font:500 12px var(--mono);color:var(--propio)}
.hx .snt .g2{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line)}
.hx .snt .g2>div{background:var(--s1);padding:16px 18px;display:grid;gap:10px;align-content:start}
.hx .snt .mot{display:grid;grid-template-columns:96px 1fr 44px;gap:10px;align-items:center;font-size:14px;color:var(--ink2)}
.hx .snt .mot i{display:block;height:8px;background:var(--s2);position:relative}
.hx .snt .mot i::after{content:"";position:absolute;inset:0 auto 0 0;width:var(--w);background:var(--c,var(--propio))}
.hx .snt .mot em{font:500 12px var(--mono);font-style:normal;color:var(--ink3);text-align:right}
.hx .snt .feed{margin:0;padding:0;list-style:none;display:grid;gap:0;max-height:196px;overflow:hidden}
.hx .snt .feed li{display:grid;grid-template-columns:44px 42px 1fr;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);font-size:13.5px;color:var(--ink2);animation:adin .5s ease both}
.hx .snt .feed li span{font:500 11px/1.6 var(--mono);color:var(--ink4)}
.hx .snt .feed li em{font:500 10px/1.8 var(--mono);font-style:normal;letter-spacing:.08em}
.hx .snt .feed li em.seo{color:var(--google)}.hx .snt .feed li em.geo{color:var(--ia)}.hx .snt .feed li em.web{color:var(--propio)}
@keyframes adin{from{opacity:0;transform:translateY(-6px)}}
.hx .snt .pie{padding:10px 18px;font-size:12.5px;color:var(--ink4);background:var(--s1)}

/* 06 · para quién + autodiagnóstico */
.hx .encaje{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .encaje>div{background:color-mix(in srgb,var(--s1) 94%,transparent);padding:clamp(20px,2.6vw,30px);display:grid;gap:14px;align-content:start}
.hx .chk{display:grid;gap:8px}
.hx .chk label{display:grid;grid-template-columns:22px 1fr;gap:12px;align-items:start;padding:12px 14px;border:1px solid var(--line);background:var(--s0);font-size:15px;color:var(--ink2);cursor:pointer;transition:border-color .2s}
.hx .chk input{margin:3px 0 0;width:17px;height:17px;accent-color:var(--propio)}
.hx .chk label:has(input:checked){border-color:var(--propio);color:var(--ink1)}
.hx .veredicto{display:grid;gap:12px;padding:16px 18px;border:1px solid var(--line2);background:var(--s2);border-left:3px solid var(--line2);transition:border-color .3s}
.hx .veredicto.si{border-left-color:var(--propio)}
.hx .veredicto b{font:500 19px/1.3 var(--sans);color:var(--ink1)}
.hx .veredicto p{margin:0;font-size:14.5px;color:var(--ink3)}
.hx .veredicto .btn{justify-self:start}
.hx .noes{margin:0;padding:0;list-style:none;display:grid;gap:10px}
.hx .noes li{display:grid;grid-template-columns:18px 1fr;gap:10px;font-size:15px;color:var(--ink3)}
.hx .noes li::before{content:"×";font:500 15px/1.5 var(--mono);color:var(--ink4)}
.hx .perfiles{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.hx .perfiles a{padding:7px 10px;border:1px solid var(--line2);background:var(--s0);font:500 12px/1 var(--mono);color:var(--ink3);text-decoration:none}
.hx .perfiles a:hover{color:var(--ink1);border-color:var(--ink1)}

/* 07 · precio compacto */
.hx .precio2{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:clamp(24px,4vw,56px);align-items:center}
.hx .precio2 h2.cur em{font-style:normal;color:var(--propio)}
.hx .cond{margin:0;padding:0;list-style:none;display:grid;gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .cond li{display:grid;grid-template-columns:130px 1fr;gap:14px;padding:13px 16px;background:var(--s1);font-size:15px;color:var(--ink2)}
.hx .cond li span{font:500 11px/1.5 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink4)}

/* 08 · preguntas */
.hx .faq{display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(24px,4vw,56px)}
.hx .faq details{border-top:1px solid var(--line)}
.hx .faq summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:1fr 20px;gap:12px;padding:16px 0;font:500 17px/1.35 var(--sans);color:var(--ink1)}
.hx .faq summary::-webkit-details-marker{display:none}
.hx .faq summary::after{content:"+";font:400 20px/1 var(--mono);color:var(--ink4);text-align:right}
.hx .faq details[open] summary::after{content:"−";color:var(--propio)}
.hx .faq details p{margin:0 0 18px;font-size:15.5px;color:var(--ink3);max-width:60ch}
.hx .faq details p a{color:var(--ink1)}
/* 0.123.0 · el fondo de la celda (hover y abierta) necesita aire a izquierda y derecha: el texto ya no toca el borde de la caja.
   La celda sangra hacia fuera lo mismo que gana por dentro, así el texto sigue alineado con la columna. En móvil no sangra. */
.hx .faq{--faq-pad:clamp(12px,1.3vw,18px)}
.hx .faq details{padding-inline:var(--faq-pad);margin-inline:calc(var(--faq-pad) * -1)}
@media (max-width:560px){.hx .faq details{margin-inline:0}}

@media (max-width:900px){
  .hx .adhero>.wrap,.hx .xpl,.hx .sim,.hx .vs,.hx .encaje,.hx .precio2,.hx .faq{grid-template-columns:1fr}
  .hx .adhero .mapwrap{max-width:460px}
  .hx .fases,.hx .dual{grid-template-columns:1fr 1fr}
  .hx .xpl [role=tablist]{grid-template-columns:1fr 1fr;display:grid}
  .hx .xpl [role=tab]{grid-template-columns:28px 1fr;padding:11px 12px;font-size:14px;border-right:1px solid var(--line)}
  .hx .xpl [role=tab] .t{display:none}
  .hx .xpl dl div{grid-template-columns:1fr;gap:4px}
  .hx .reparto{grid-template-columns:1fr}
  .hx .snt .g3{grid-template-columns:1fr 1fr 1fr}.hx .snt .g3 .big{font-size:24px}
  .hx .snt .g2{grid-template-columns:1fr}
  .hx .facts{width:auto}
}
@media (max-width:560px){
  .hx .fases,.hx .dual{grid-template-columns:1fr}
  .hx .meses i{height:28px}.hx .tiempos span{font-size:8.5px;letter-spacing:.02em}
  .hx .cond li{grid-template-columns:1fr;gap:2px}
  .hx .facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}.hx .facts div{padding:10px}.hx .facts b{font-size:14.5px}.hx .facts .lab{font-size:9.5px;letter-spacing:.08em}
}
@media (prefers-reduced-motion:reduce){.hx .mapa .fl,.hx .mapa .halo{animation:none!important}.hx .mapa .halo{display:none}}

/* ── /visibilidad-digital/ · escalón de entrada (0.95.0) ── */
.hx section.banner .bg-calles .b{opacity:.06}.hx section.banner .bg-topo .b{opacity:.065}.hx section.banner .bg-renglones .b{opacity:.05}
.hx section.banner .bg-calles .a{opacity:.3}.hx section.banner .bg-calles .a .an{fill:none;stroke:var(--propio);stroke-width:1.6}
.hx section.banner .bg-topo .a{fill:none;stroke:var(--propio);stroke-width:1.8;opacity:.34}
.hx section.banner .bg-renglones .a{opacity:.3}
/* hero con buscador de ejemplo */
.hx .vdhero>.wrap{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(28px,4vw,64px);align-items:center}
.hx .vdhero h1.cur{font-size:clamp(34px,3.8vw,54px);line-height:1.08;letter-spacing:-.026em;max-width:19ch}
.hx .vdhero h1.cur>span:not(.cx-w){display:block;margin-top:14px;font-size:.5em;line-height:1.3;letter-spacing:-.01em;max-width:36ch}
.hx .vdhero .txt{display:grid;gap:24px}
.hx .serp{border:1px solid var(--line2);background:var(--s1);display:grid;gap:14px;padding:16px;align-content:start}
.hx .serp-top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.hx .seg{display:flex;border:1px solid var(--line2)}
.hx .seg button{border:0;background:none;padding:8px 14px;font:500 12px/1 var(--mono);letter-spacing:.06em;color:var(--ink3)}
.hx .seg button[aria-selected=true]{background:var(--ink1);color:var(--s0)}
.hx .sw{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font:500 12px/1 var(--mono);letter-spacing:.04em;color:var(--ink3)}
.hx .sw input{position:absolute;opacity:0;width:1px;height:1px}
.hx .sw span{width:38px;height:20px;border:1px solid var(--line2);background:var(--s2);position:relative;transition:background .25s}
.hx .sw span::after{content:"";position:absolute;top:3px;left:3px;width:12px;height:12px;background:var(--ink3);transition:transform .25s,background .25s}
.hx .sw input:checked+span{background:var(--propio-soft);border-color:var(--propio)}
.hx .sw input:checked+span::after{transform:translateX(18px);background:var(--propio)}
.hx .sw input:focus-visible+span{outline:2px solid var(--sig);outline-offset:2px}
.hx .sw em{font-style:normal}
.hx .serp .q{display:flex;align-items:center;gap:10px;padding:11px 14px;border:1px solid var(--line2);background:var(--s0);font-size:15.5px;color:var(--ink1);min-height:46px}
.hx .serp .q svg{width:18px;height:18px;color:var(--ink4);flex:0 0 18px}
.hx .serp .caret{display:inline-block;width:1px;height:18px;background:var(--ink2);animation:vdcaret 1s steps(1) infinite}
@keyframes vdcaret{50%{opacity:0}}
.hx .serp .res{display:grid;gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .serp .res[hidden]{display:none}
.hx .serp .r{background:var(--s0);padding:12px 14px;display:grid;gap:6px}
.hx .serp .r .u{font:500 11px/1.2 var(--mono);color:var(--ink4);letter-spacing:.04em}
.hx .serp .r b{font:500 16px/1.3 var(--sans);color:var(--google)}
.hx .serp .r p{margin:0;font-size:13.5px;color:var(--ink3)}
.hx .serp .r i{display:block;height:8px;background:var(--s2);width:78%}
.hx .serp .r i.c{width:52%}
.hx .serp .r.su{box-shadow:inset 3px 0 0 var(--propio);background:color-mix(in srgb,var(--propio-soft) 40%,var(--s0))}
.hx .serp .r.su .u{color:var(--propio)}
.hx .serp .ia{background:var(--s0);padding:14px;gap:12px}
.hx .serp .ia .yo{justify-self:end;max-width:86%;margin:0;padding:10px 12px;background:var(--s2);font-size:14px;color:var(--ink1)}
.hx .serp .ia .resp{display:grid;gap:8px}
.hx .serp .ia .resp i{display:block;height:8px;background:var(--s2);width:92%}
.hx .serp .ia .resp i.c{width:60%}
.hx .serp .ia .resp p{margin:0;font-size:14.5px;color:var(--ink2)}
.hx .serp .ia .resp p b{color:var(--ink1);font-weight:500}
.hx .serp .ia .fuente{justify-self:start;padding:5px 9px;border:1px solid var(--propio);font:500 11px/1 var(--mono);color:var(--propio)}
.hx .serp .su{transition:opacity .45s,transform .45s}
.hx .serp.sin .su{opacity:0;transform:translateY(-6px);height:0;padding-block:0;overflow:hidden;border:0;margin:0}
/* 01 */
.hx .dol.dol3{grid-template-columns:repeat(3,1fr)}
/* 02 · siglas */
.hx .siglas{display:grid;grid-template-columns:1fr auto 1fr;gap:18px;align-items:stretch}
.hx .siglas>div:not(.mas){border:1px solid var(--line);background:color-mix(in srgb,var(--s0) 55%,var(--s1));padding:22px 24px;display:grid;gap:10px;align-content:start}
.hx .siglas .sg{font:500 clamp(44px,5vw,68px)/1 var(--sans);letter-spacing:-.03em;color:var(--ink1)}
.hx .siglas p{margin:0;color:var(--ink2);font-size:16px}
.hx .siglas strong{font-weight:500;color:var(--ink1)}
.hx .siglas .mas{align-self:center;font:300 40px/1 var(--sans);color:var(--propio)}
/* 03 · cada mes */
.hx .cadames{margin:0;padding:0;list-style:none;display:grid;gap:8px}
.hx .cadames li{display:grid;grid-template-columns:16px 1fr;gap:10px;font-size:14.5px;color:var(--ink3)}
.hx .cadames li::before{content:"";width:7px;height:7px;margin-top:8px;background:var(--propio)}
.hx .cadames b{font-weight:500;color:var(--ink1)}
.hx .flujo{display:grid;gap:12px}
.hx .fl{display:grid;grid-template-columns:1fr auto 1.2fr auto 1fr;gap:14px;align-items:stretch}
.hx .fl>div{border:1px solid var(--line);background:var(--s1);padding:18px;display:grid;gap:8px;align-content:start}
.hx .fl>i{align-self:center;font-style:normal;font:400 22px/1 var(--mono);color:var(--propio)}
.hx .fl b{font:500 17px/1.25 var(--sans);color:var(--ink1)}
.hx .fl p{margin:0;font-size:14.5px;color:var(--ink3)}
.hx .fl .n1{background:var(--s0);border-color:color-mix(in srgb,var(--propio) 45%,var(--line))}
.hx .fl .n1 p{color:var(--ink2)}.hx .fl .n1 b{font-size:15px;color:var(--propio)}
/* 04 · límites */
.hx .lim{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .lim>div{background:color-mix(in srgb,var(--s0) 55%,var(--s1));padding:22px;display:grid;gap:10px;grid-template-rows:auto 1fr auto}
.hx .lim b{font:500 18px/1.25 var(--sans);color:var(--ink1)}
.hx .lim p{margin:0;font-size:14.5px;color:var(--ink3)}
.hx .lim .donde{font:500 10.5px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--propio);padding-top:10px;border-top:1px solid var(--line)}
/* 06 · escalera */
.hx .esc{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .esc>div{background:var(--s1);padding:clamp(20px,2.6vw,30px);display:grid;gap:14px;align-content:start}
.hx .quiz fieldset{border:0;margin:0;padding:0;display:grid;gap:6px}
.hx .quiz legend{padding:0 0 6px;font:500 15.5px/1.3 var(--sans);color:var(--ink1)}
.hx .quiz label{display:grid;grid-template-columns:20px 1fr;gap:10px;align-items:start;padding:10px 12px;border:1px solid var(--line);background:var(--s0);font-size:14.5px;color:var(--ink2);cursor:pointer;transition:border-color .2s}
.hx .quiz input{margin:3px 0 0;accent-color:var(--propio)}
.hx .quiz label:has(input:checked){border-color:var(--propio);color:var(--ink1)}
.hx .tabla{gap:0!important}
.hx .tabla>div{display:grid;grid-template-columns:120px 1fr 1fr;gap:12px;padding:11px 0;border-bottom:1px solid var(--line);font-size:14px;color:var(--ink2);align-items:baseline}
.hx .tabla>div>span:first-child{font:500 10.5px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink4)}
.hx .tabla .th span{font:500 12px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink1)}
.hx .tabla .pr span.cv,.hx .tabla .pr span.ca{font:500 17px/1 var(--sans);color:var(--ink1)}
.hx .tabla .cv,.hx .tabla .ca{transition:color .3s,background-color .3s;padding:4px 6px;margin:-4px -6px}
.hx .tabla.elige-v .cv,.hx .tabla.elige-a .ca{background:color-mix(in srgb,var(--propio-soft) 60%,transparent);color:var(--ink1)}
.hx .tabla.elige-v .ca,.hx .tabla.elige-a .cv{opacity:.55}
.hx .tabla .foot{padding-top:14px}
@media (max-width:900px){
  .hx .vdhero>.wrap,.hx .esc{grid-template-columns:1fr}
  .hx .dol.dol3{grid-template-columns:1fr}
  .hx .siglas{grid-template-columns:1fr}.hx .siglas .mas{justify-self:center}
  .hx .fl{grid-template-columns:1fr}.hx .fl>i{justify-self:center;transform:rotate(90deg)}
  .hx .lim{grid-template-columns:1fr 1fr}
  .hx .tabla>div{grid-template-columns:92px 1fr 1fr;gap:8px;font-size:13px}
}
@media (max-width:560px){.hx .lim{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.hx .serp .caret{animation:none}.hx .serp .su{transition:none}}
/* antetítulo: una sola línea de texto que puede partir (antes, flex: el <b> se iba a otra columna en móvil) · afecta a todas las páginas HX */
.hx .k{display:block;position:relative;padding-left:34px;line-height:1.5}
.hx .k::before{position:absolute;left:0;top:.72em}
/* reparto izquierda / derecha: la cabecera de sección alterna de lado; titulares más anchos (26-09-2026, Jesús) */
.hx h2.cur{max-width:30ch}
.hx .cab{display:grid;gap:22px;width:min(100%,780px)}
.hx .cab h2.cur{max-width:none}
.hx .cab.d,.hx .frase.d{justify-self:end}
.hx .cab.d .k{justify-self:start}
.hx .vdhero>.wrap{grid-template-columns:minmax(0,1.22fr) minmax(0,.78fr)}
.hx .vdhero h1.cur{max-width:none;font-size:clamp(34px,4.2vw,62px)}
.hx .vdhero h1.cur>span:not(.cx-w){max-width:44ch}
.hx .adhero>.wrap{grid-template-columns:minmax(0,1.22fr) minmax(0,.78fr)}
.hx .adhero h1.cur{max-width:none;font-size:clamp(34px,4.2vw,62px)}
@media (max-width:900px){.hx .cab.d,.hx .frase.d{justify-self:start}.hx .vdhero>.wrap,.hx .adhero>.wrap{grid-template-columns:1fr}}
/* hero: el titular ocupa todo el ancho; debajo, a la izquierda el texto y a la derecha el artefacto */
@media (min-width:901px){
  .hx .vdhero>.wrap,.hx .adhero>.wrap{grid-template-columns:minmax(0,1fr) minmax(0,.82fr);grid-template-rows:auto auto auto auto auto 1fr;row-gap:22px;align-items:start}
  .hx .vdhero .txt,.hx .adhero .txt{display:contents}
  .hx .vdhero .txt>.k,.hx .vdhero .txt>h1,.hx .adhero .txt>.k,.hx .adhero .txt>h1{grid-column:1/-1}
  .hx .vdhero .txt>*:not(.k):not(h1),.hx .adhero .txt>*:not(.k):not(h1){grid-column:1}
  .hx .vdhero .serp,.hx .adhero .mapwrap{grid-column:2;grid-row:3/span 4;align-self:start}
  .hx .vdhero h1.cur,.hx .adhero h1.cur{font-size:clamp(40px,4.6vw,66px);max-width:22ch}
  .hx .vdhero h1.cur>span:not(.cx-w),.hx .adhero h1.cur>span:not(.cx-w){max-width:52ch}
}
/* hero sin artefacto (Jesús, 26-09-2026): una sola columna, alineada a la izquierda */
.hx .vdhero>.wrap{grid-template-columns:minmax(0,1fr)!important;grid-template-rows:none!important}
.hx .vdhero .txt{display:grid!important;gap:24px;max-width:1040px}
.hx .vdhero .txt>*{grid-column:auto!important}
/* bloque del vídeo, visible en la página (Jesús: «falta el vídeo») */
.hx .vdvideo{background:var(--s1)}
.hx .vposter{position:relative;display:block;width:100%;max-width:none;aspect-ratio:16/9;padding:0;border:1px solid var(--line2);background:#141413;overflow:hidden;cursor:pointer}
.hx .vposter img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.7,.2,1),opacity .3s}
.hx .vposter:hover img{transform:scale(1.03)}
.hx .vposter i{position:absolute;left:50%;top:50%;width:84px;height:84px;margin:-42px 0 0 -42px;display:grid;place-items:center;background:var(--propio);color:#141413;font-style:normal;font-size:24px;transition:transform .25s}
.hx .vposter:hover i{transform:scale(1.08)}
.hx .vposter span{position:absolute;left:0;bottom:0;padding:10px 14px;background:rgba(20,20,19,.82);color:#FBF6EA;font:500 12px/1.2 var(--mono);letter-spacing:.06em}
@media (max-width:600px){.hx .vposter i{width:64px;height:64px;margin:-32px 0 0 -32px}}
.hx .vmod{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .vmod .vposter{max-width:none;border:0}
.hx .vside{background:var(--s0);padding:clamp(20px,2.6vw,32px);display:grid;gap:16px;align-content:center}
.hx .vside ol{margin:0;padding:0;list-style:none;counter-reset:v;display:grid;gap:12px}
.hx .vside li{counter-increment:v;display:grid;grid-template-columns:30px 1fr;gap:10px;font-size:16px;color:var(--ink3)}
.hx .vside li::before{content:counter(v,decimal-leading-zero);font:500 12px/1.9 var(--mono);color:var(--propio)}
.hx .vside li b{font-weight:500;color:var(--ink1)}
.hx .vside .btn{justify-self:start}
@media (max-width:900px){.hx .vmod{grid-template-columns:1fr}}
.hx .vmod .vposter{height:100%;aspect-ratio:16/9;min-height:100%}@media (max-width:900px){.hx .vmod .vposter{height:auto}}
/* 03 · la base: superoptimización + cadencias (Jesús, 26-09-2026) */
.hx .base3{display:grid;grid-template-columns:minmax(0,1.5fr) repeat(3,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .base3>div{background:var(--s1);padding:22px;display:grid;gap:10px;align-content:start}
.hx .base3 .b0{background:color-mix(in srgb,var(--propio-soft) 55%,var(--s1));box-shadow:inset 3px 0 0 var(--propio)}
.hx .base3 .b0 b{font:500 clamp(20px,1.9vw,24px)/1.2 var(--sans);letter-spacing:-.01em;color:var(--ink1)}
.hx .base3 b{font:500 17px/1.25 var(--sans);color:var(--ink1)}
.hx .base3 p{margin:0;font-size:14.5px;color:var(--ink3)}
.hx .base3 .b0 p{color:var(--ink2)}
.hx .base3 .n{font:500 10.5px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--propio)}
@media (max-width:1000px){.hx .base3{grid-template-columns:1fr 1fr}.hx .base3 .b0{grid-column:1/-1}}
@media (max-width:560px){.hx .base3{grid-template-columns:1fr}}

/* ── /activacion-digital/ · servicios sueltos (0.96.0) ── */
.hx section.banner .bg-wire .b{opacity:.06}.hx section.banner .bg-escalones .b{opacity:.06}.hx section.banner .bg-diagonales .b{opacity:.045}
.hx section.banner .bg-wire .a{fill:var(--propio);opacity:.3}
.hx section.banner .bg-escalones .a,.hx section.banner .bg-diagonales .a{fill:none;stroke:var(--propio);stroke-width:1.8;opacity:.34}
/* 04 · proyectos */
/* ── HX · proyectos (0.109.0, 27-09-2026) ── Jesús: «en todas las capturas de clientes no estás guardando espacios en la cuadrícula y queda muy mal».
   Tarjetas separadas (hueco, no filete de 1 px), captura enmarcada dentro de un paspartú con barra de navegador,
   etiqueta de sector en la barra y no encima de la web del cliente, recorte desde la esquina superior izquierda (se ve el logotipo y el titular). */
.hx .proy{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,1.8vw,24px);background:none;border:0}
.hx .proy a{background:var(--s1);border:1px solid var(--line);display:grid;grid-template-rows:auto 1fr;text-decoration:none;color:inherit;overflow:hidden;transition:border-color .3s}
.hx .proy a:hover,.hx .proy a:focus-visible{border-color:var(--ink4)}
.hx .proy .im{position:relative;aspect-ratio:auto;overflow:hidden;padding:30px 12px 0;background:var(--s2);border-bottom:1px solid var(--line)}
.hx .proy .im img{width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;object-position:left top;display:block;border:1px solid var(--line);border-bottom:0;filter:grayscale(1) contrast(1.08) brightness(.96);transform:none;transition:filter .5s}
.hx .proy a:hover .im img{filter:none;transform:none}
.hx .proy .im .tono{position:absolute;left:13px;right:13px;top:31px;bottom:0;background:var(--propio);mix-blend-mode:color;opacity:.9;transition:opacity .5s;pointer-events:none}
.hx .proy a:hover .im .tono{opacity:0}
.hx .proy .im::after{content:"";position:absolute;left:13px;right:13px;top:31px;bottom:0;pointer-events:none;background:repeating-linear-gradient(0deg,rgba(20,20,19,.07) 0 1px,transparent 1px 3px);mix-blend-mode:multiply}
.hx .proy .im::before{content:"";position:absolute;right:13px;top:12px;width:36px;height:6px;background:radial-gradient(circle,var(--ink4) 0 2px,transparent 2.5px) 0 0/12px 6px repeat-x;opacity:.55}
.hx .proy .im .cod{position:absolute;left:13px;top:9px;padding:0;background:none;color:var(--ink4);font:500 10px/12px var(--mono);letter-spacing:.12em}
.hx .proy .tx{padding:16px 18px 18px;display:grid;gap:6px;align-content:start}
.hx .proy b{font:500 18px/1.25 var(--sans);color:var(--ink1)}
.hx .proy p{margin:0;font-size:14px;color:var(--ink3);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.hx .proy .ver{font:500 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--propio);padding-top:6px}
@media (max-width:900px){.hx .proy{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.hx .proy{grid-template-columns:1fr}}
/* 05 · escalera */
.hx .escala{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:end}
.hx .escala a{display:grid;gap:8px;align-content:start;padding:20px 22px;border:1px solid var(--line2);background:color-mix(in srgb,var(--s0) 60%,var(--s1));text-decoration:none;color:inherit;transition:border-color .25s,transform .25s}
.hx .escala a:hover{border-color:var(--propio);transform:translateY(-3px)}
.hx .escala .e1{min-height:170px}.hx .escala .e2{min-height:230px}.hx .escala .e3{min-height:290px;border-color:color-mix(in srgb,var(--propio) 50%,var(--line2))}
.hx .escala b{font:500 22px/1.2 var(--sans);letter-spacing:-.01em;color:var(--ink1)}
.hx .escala p{margin:0;font-size:14.5px;color:var(--ink3)}
.hx .escala i{font-style:normal;font:500 12px/1 var(--mono);color:var(--propio);align-self:end}
/* 06 · arme su encargo */
.hx .arma{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .arma>div{background:var(--s1);padding:clamp(20px,2.6vw,30px);display:grid;gap:14px;align-content:start}
.hx .arma .chk{grid-template-columns:1fr 1fr}
.hx .cuando{display:flex;flex-wrap:wrap;gap:8px}
.hx .cuando label{display:inline-flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid var(--line);background:var(--s0);font-size:14.5px;color:var(--ink2);cursor:pointer}
.hx .cuando input{accent-color:var(--propio);margin:0}
.hx .cuando label:has(input:checked){border-color:var(--propio);color:var(--ink1)}
.hx .resumen{background:var(--s0)!important;box-shadow:inset 3px 0 0 var(--line2);transition:box-shadow .3s}
.hx .resumen.si{box-shadow:inset 3px 0 0 var(--propio)}
.hx .resumen b{font:500 21px/1.3 var(--sans);color:var(--ink1)}
.hx .resumen ul{margin:0;padding:0;list-style:none;display:grid;gap:6px}
.hx .resumen li{display:grid;grid-template-columns:16px 1fr;gap:8px;font-size:15px;color:var(--ink2);animation:adin .35s ease both}
.hx .resumen li::before{content:"";width:7px;height:7px;margin-top:8px;background:var(--propio)}
.hx .resumen p{margin:0;font-size:14.5px;color:var(--ink3)}
.hx .resumen .acts .btn{padding:12px 16px}
@media (max-width:900px){
  .hx .proy{grid-template-columns:1fr 1fr}
  .hx .escala{grid-template-columns:1fr}.hx .escala a{min-height:0!important}
  .hx .arma{grid-template-columns:1fr}
}
@media (max-width:560px){.hx .proy{grid-template-columns:1fr}.hx .arma .chk{grid-template-columns:1fr}}
/* fondos tech con micro-elementos (Jesús: «más tech, más micro imágenes, líneas o figuras») */
.hx.act .vdhero.banner{background:var(--s0)}
.hx section.banner .bg-circuito .b{opacity:.1}.hx section.banner .bg-telemetria .b{opacity:.1}.hx section.banner .bg-malla .b{opacity:.09}.hx section.banner .bg-wire2 .b{opacity:.085}
.hx section.banner .bg-circuito .a,.hx section.banner .bg-telemetria .a,.hx section.banner .bg-malla .a,.hx section.banner .bg-wire2 .a{fill:var(--propio);stroke:var(--propio);opacity:.6}
.hx .bgfig .pulso{fill:none;stroke-dasharray:10 90;animation:cxpulso 3.6s linear infinite}
.hx .bgfig .pulso:nth-child(2n){animation-duration:5.2s;animation-delay:-1.4s}
.hx .bgfig .traza{fill:none;stroke-dasharray:900;stroke-dashoffset:900;animation:cxtraza 6s cubic-bezier(.4,0,.2,1) infinite}
.hx .bgfig .late{animation:cxlate 2.4s ease-in-out infinite}
.hx .bgfig .onda{fill:none;transform-box:fill-box;transform-origin:center;animation:cxonda 2.6s ease-out infinite}
@keyframes cxpulso{to{stroke-dashoffset:-100}}
@keyframes cxtraza{0%{stroke-dashoffset:900}55%,100%{stroke-dashoffset:0}}
@keyframes cxlate{50%{opacity:.25}}
@keyframes cxonda{0%{opacity:.9;transform:scale(.4)}100%{opacity:0;transform:scale(2.2)}}
@media (prefers-reduced-motion:reduce){.hx .bgfig .pulso,.hx .bgfig .traza,.hx .bgfig .late,.hx .bgfig .onda{animation:none;stroke-dashoffset:0}}
/* hero: texto más estirado */
@media (min-width:901px){.hx.act .vdhero .txt{max-width:1180px}.hx.act .vdhero h1.cur{max-width:30ch}.hx.act .vdhero h1.cur>span:not(.cx-w){max-width:72ch}}
/* capturas de proyectos: duotono en la piel Cortex; al pasar, color real */
.hx section.banner .bg-circuito .b,.hx section.banner .bg-telemetria .b{opacity:.13}.hx section.banner .bg-malla .b{opacity:.11}
.hx.act .vdhero .bg-wire2 .b{opacity:.055}
.hx.act .vdhero .bgfig{-webkit-mask-image:linear-gradient(90deg,transparent 0%,transparent 45%,#000 85%),linear-gradient(180deg,transparent 0%,#000 20%,#000 75%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0%,transparent 45%,#000 85%),linear-gradient(180deg,transparent 0%,#000 20%,#000 75%,transparent 100%)}
@media (min-width:901px){.hx.act .vdhero h1.cur{max-width:none}}

/* ── /cuanto-cuesta-marketing-digital/ · calculadora (0.97.0) ── */
.hx section.banner .bg-datos .b{opacity:.14}.hx section.banner .bg-mosaico .b{opacity:.7}.hx section.banner .bg-dither .b{fill:currentColor;opacity:.07}
.hx section.banner .bg-datos .a{fill:var(--propio);opacity:.8}
.hx section.banner .bg-mosaico .t0{fill:currentColor;opacity:.03}.hx section.banner .bg-mosaico .t1{fill:currentColor;opacity:.05}.hx section.banner .bg-mosaico .t2{fill:currentColor;opacity:.075}.hx section.banner .bg-mosaico .t3{fill:currentColor;opacity:.1}.hx section.banner .bg-mosaico .t4{fill:currentColor;opacity:.13}
.hx section.banner .bg-mosaico rect[fill=none]{opacity:.08}
.hx section.banner .bg-mosaico .a{fill:var(--propio);opacity:.5}
.hx section.banner .bg-dither .a{fill:var(--propio);opacity:.35}
.hx.cc .vdhero.banner{background:var(--s0)}
/* 01 · la cita */
.hx .cita{margin:0;padding:22px 26px;border-left:3px solid var(--propio);background:var(--s1);display:grid;gap:10px;max-width:860px}
.hx .cita p{margin:0;font:400 clamp(24px,2.6vw,34px)/1.25 var(--sans);letter-spacing:-.015em;color:var(--ink1);font-style:italic}
/* 02 · calculadora */
.hx .calc{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.35fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .calc>div{background:var(--s1);padding:clamp(20px,2.6vw,30px);display:grid;gap:18px;align-content:start}
.hx .calc .campo{display:grid;gap:10px}
.hx .calc .campo label{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:14.5px;color:var(--ink2)}
.hx .calc .campo .lbl{font-size:14.5px;color:var(--ink2)}
.hx .calc output{font:500 24px/1 var(--sans);color:var(--ink1);font-variant-numeric:tabular-nums;white-space:nowrap}
.hx .calc input[type=range]{width:100%;margin:0;accent-color:var(--propio)}
.hx .calc .hint{font-size:12.5px;color:var(--ink4)}
.hx .chips{display:flex;flex-wrap:wrap;gap:6px}
.hx .chips label{display:inline-flex;align-items:center;gap:8px;padding:8px 11px;border:1px solid var(--line);background:var(--s0);font-size:13.5px;color:var(--ink2);cursor:pointer}
.hx .chips input{margin:0;accent-color:var(--propio)}
.hx .chips label:has(input:checked){border-color:var(--propio);color:var(--ink1)}
.hx .calc .res{background:var(--s0)}
.hx .fila{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.3fr) 118px 62px;gap:14px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}
.hx .fila .nom b{display:block;font:500 16px/1.2 var(--sans);color:var(--ink1)}
.hx .fila .nom span{font-size:12.5px;color:var(--ink4)}
.hx .fila .bar{height:14px;background:var(--s2);position:relative}
.hx .fila .bar i{position:absolute;inset:0 auto 0 0;width:0;background:repeating-linear-gradient(135deg,var(--otros) 0 3px,transparent 3px 6px);transition:width .9s cubic-bezier(.2,.7,.2,1)}
.hx .fila.yo .bar i{background:var(--propio)}
.hx .fila .cif{text-align:right;display:grid;gap:2px}
.hx .fila .cif b{font:500 20px/1 var(--sans);color:var(--ink1);font-variant-numeric:tabular-nums;white-space:nowrap}
.hx .fila .cif span{font-size:11px;color:var(--ink4)}
.hx .fila.yo{border-bottom:0}.hx .fila.yo .cif b,.hx .fila.yo .nom b{color:var(--propio)}
.hx .esp{display:flex;gap:3px;justify-content:flex-end}
.hx .esp i{width:8px;height:8px;border:1px solid var(--line2)}
.hx .esp i.on{background:var(--ink3);border-color:var(--ink3)}
.hx .fila.yo .esp i.on{background:var(--propio);border-color:var(--propio)}
.hx .leyenda-esp{margin:0;font-size:12px;color:var(--ink4);display:flex;align-items:center;gap:8px}
.hx .leyenda-esp i{width:8px;height:8px;background:var(--ink3);display:inline-block}
.hx .dif{display:grid;gap:6px;padding:16px 18px;border:1px solid var(--line);background:var(--s1);border-left:3px solid var(--propio)}
.hx .dif b{font:500 clamp(28px,3vw,40px)/1 var(--sans);letter-spacing:-.02em;color:var(--propio);font-variant-numeric:tabular-nums}
.hx .dif p{margin:0;font-size:14.5px;color:var(--ink2)}
.hx .desg{border:1px solid var(--line);background:var(--s1)}
.hx .desg summary{cursor:pointer;padding:14px 18px;font:500 13px/1.3 var(--mono);letter-spacing:.04em;color:var(--ink2)}
.hx .desg table{width:100%;border-collapse:collapse;font-size:14px}
.hx .desg td{padding:9px 18px;border-top:1px solid var(--line);color:var(--ink2)}
.hx .desg td:last-child{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.hx .desg tr.tot td{color:var(--ink1);font-weight:500}
/* 03 */
.hx .dual.d3{grid-template-columns:repeat(3,1fr)}
/* 04 · fuentes */
.hx .fts{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .fts a{background:var(--s1);padding:18px;display:grid;gap:6px;align-content:start;text-decoration:none;color:inherit;transition:background-color .25s}
.hx .fts a:hover{background:var(--s2)}
.hx .fts b{font:500 15.5px/1.25 var(--sans);color:var(--ink1)}
.hx .fts p{margin:0;font-size:13px;color:var(--ink3)}
@media (max-width:900px){
  .hx .calc{grid-template-columns:1fr}
  .hx .fila{grid-template-columns:1fr 96px;row-gap:8px}.hx .fila .bar{grid-column:1/-1;grid-row:2}.hx .fila .esp{grid-column:1/-1;justify-content:flex-start}
  .hx .dual.d3{grid-template-columns:1fr}
  .hx .fts{grid-template-columns:1fr 1fr}
}
@media (max-width:560px){.hx .fts{grid-template-columns:1fr}}
.hx.cc .vdhero .bgfig{-webkit-mask-image:linear-gradient(90deg,transparent 0%,transparent 42%,#000 82%),linear-gradient(180deg,transparent 0%,#000 18%,#000 80%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0%,transparent 42%,#000 82%),linear-gradient(180deg,transparent 0%,#000 18%,#000 80%,transparent 100%);-webkit-mask-composite:source-in;mask-composite:intersect}
/* HX · hero común a todas las páginas (0.97.0, Jesús 26-09-2026: «la escala como las páginas anteriores, todas igual»)
   Primer bloque a todo el ancho de la caja y a la izquierda; titular 40–66 px, entradilla a media escala. Portada incluida. */
.hx .hero h1.cur>span:not(.cx-w){display:block;margin-top:14px;font-size:.5em;line-height:1.3;letter-spacing:-.01em}
@media (min-width:901px){
  .hx .vdhero .txt{max-width:1180px}
  .hx :is(.hero,.vdhero,.adhero) h1.cur{font-size:clamp(40px,4.6vw,66px);line-height:1.08;letter-spacing:-.026em;max-width:none;text-wrap:pretty}
  .hx :is(.hero,.vdhero,.adhero) h1.cur>span:not(.cx-w){max-width:72ch;text-wrap:pretty}
}

/* ── /inteligencia-comercial/ · departamento de inteligencia comercial (0.98.0) ── */
/* conceptos: azul = búsquedas y web (Google) · ámbar = señales de mercado que lee la IA · rayas = ruido y competencia · verde = su oportunidad */
.hx .bgfig .lg{fill:none;stroke:var(--google)}.hx .bgfig .li{fill:none;stroke:var(--ia)}.hx .bgfig .lp{fill:none;stroke:var(--propio)}
.hx .bgfig .dg{fill:var(--google)}.hx .bgfig .di{fill:var(--ia)}.hx .bgfig .dp{fill:var(--propio)}
.hx section.banner .bg-red .b,.hx section.banner .bg-flujo .b{opacity:.13}.hx section.banner .bg-radar .b{opacity:.12}.hx section.banner .bg-puntos .b{opacity:.14}.hx section.banner .bg-gente .b{opacity:.11}
.hx section.banner :is(.bg-red,.bg-flujo,.bg-radar,.bg-puntos,.bg-gente) .a{opacity:.75}
.hx .bgfig .barre{fill:var(--google);opacity:.1;transform-origin:760px 150px;animation:cxgira 7s linear infinite}
@keyframes cxgira{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.hx .bgfig .barre{animation:none}}
.hx.ic .vdhero.banner{background:var(--s0)}
.hx.ic .vdhero .bgfig{-webkit-mask-image:linear-gradient(90deg,transparent 0%,transparent 40%,#000 80%);mask-image:linear-gradient(90deg,transparent 0%,transparent 40%,#000 80%)}
.hx .vivo{display:inline-flex;align-items:center;gap:7px;font:500 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink3)}
.hx .vivo i{width:7px;height:7px;border-radius:50%;background:var(--propio);animation:cxlate 1.6s ease-in-out infinite}
.hx .tag{display:inline-block;padding:4px 7px;font:500 10.5px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;border:1px solid currentColor;white-space:nowrap}
.hx .tag.g{color:var(--google)}.hx .tag.i{color:var(--ia)}.hx .tag.p{color:var(--propio)}
/* 01 · horas */
.hx .horas{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .horas>div{background:var(--s1);padding:clamp(20px,2.6vw,30px);display:grid;gap:18px;align-content:start}
.hx .horas .campo{display:grid;gap:10px}
.hx .horas .campo label{display:flex;justify-content:space-between;align-items:baseline;gap:14px;font-size:14.5px;color:var(--ink2)}
.hx .horas output{font:500 24px/1 var(--sans);color:var(--ink1);font-variant-numeric:tabular-nums;white-space:nowrap}
.hx .horas input[type=range]{width:100%;margin:0;accent-color:var(--ia)}
.hx .horas .res{background:var(--s0)}
.hx .horas .dos{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.hx .horas .dos b{display:block;font:500 clamp(34px,4vw,52px)/1 var(--sans);letter-spacing:-.025em;color:var(--ia);font-variant-numeric:tabular-nums}
.hx .horas .dos span{font:500 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink4)}
.hx .horas .reloj{height:12px;background:var(--s2);position:relative}
.hx .horas .reloj i{position:absolute;inset:0 auto 0 0;background:repeating-linear-gradient(135deg,var(--ia) 0 3px,transparent 3px 6px);transition:width .6s cubic-bezier(.2,.7,.2,1)}
.hx .horas .res p{margin:0;font-size:15px;color:var(--ink2)}
/* 02 · embudo */
.hx .embudo{border:1px solid var(--line);background:var(--s0);display:grid}
.hx .eb-top{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 18px;border-bottom:1px solid var(--line)}
.hx .eb-lienzo{position:relative}
.hx .eb-lienzo canvas{display:block;width:100%;height:clamp(200px,24vw,300px)}
.hx .eb-cols{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line)}
.hx .eb-cols button{all:unset;cursor:pointer;display:grid;gap:4px;padding:14px 18px;border-right:1px solid var(--line);transition:background-color .25s}
.hx .eb-cols button:last-child{border-right:0}
.hx .eb-cols button:hover{background:var(--s1)}
.hx .eb-cols button.on{background:var(--s2);box-shadow:inset 0 3px 0 var(--propio)}
.hx .eb-cols button:focus-visible{outline:2px solid var(--propio);outline-offset:-2px}
.hx .eb-cols .n{font:500 10.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink4)}
.hx .eb-cols b{font:500 clamp(24px,2.6vw,34px)/1 var(--sans);letter-spacing:-.02em;color:var(--ink1);font-variant-numeric:tabular-nums}
.hx .eb-cols button:last-child b{color:var(--propio)}
.hx .eb-cols span:last-child{font-size:13px;color:var(--ink3)}
.hx .eb-exp{padding:16px 18px;border-top:1px solid var(--line);display:grid;gap:6px;background:var(--s1)}
.hx .eb-exp b{font:500 19px/1.2 var(--sans);color:var(--ink1)}
.hx .eb-exp p{margin:0;font-size:15px;color:var(--ink2);max-width:80ch}
.hx .ley{list-style:none;margin:0;padding:12px 18px;display:flex;flex-wrap:wrap;gap:8px 22px;border-top:1px solid var(--line)}
.hx .ley li{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink3)}
.hx .ley i{width:10px;height:10px;border-radius:50%;flex:0 0 10px}
.hx .ley i.g{background:var(--google)}.hx .ley i.ia{background:var(--ia)}.hx .ley i.p{background:var(--propio)}
.hx .ley i.ot{border-radius:0;background:repeating-linear-gradient(135deg,var(--otros) 0 2px,transparent 2px 4px)}
/* 03 · mesa */
.hx .desk{border:1px solid var(--line);background:var(--s0)}
.hx .dk-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 18px;padding:12px 18px;border-bottom:1px solid var(--line);background:var(--s1)}
.hx .dk-kpi{display:flex;gap:18px;font-size:13px;color:var(--ink3)}
.hx .dk-kpi b{font:500 16px/1 var(--sans);color:var(--ink1);font-variant-numeric:tabular-nums;margin-left:4px}.hx .dk-kpi b.p{color:var(--propio)}
.hx .dk-filtros{display:flex;flex-wrap:wrap;gap:6px;padding:12px 18px;border-bottom:1px solid var(--line)}
.hx .dk-filtros button{all:unset;cursor:pointer;padding:7px 11px;border:1px solid var(--line);font-size:13px;color:var(--ink2)}
.hx .dk-filtros button.on{border-color:var(--ink2);color:var(--ink1);background:var(--s2)}
.hx .dk-filtros button:focus-visible{outline:2px solid var(--propio)}
.hx .dk-cuerpo{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);min-height:420px}
.hx .dk-feed{list-style:none;margin:0;padding:0;border-right:1px solid var(--line);overflow:hidden}
.hx .dk-feed li{display:grid;grid-template-columns:44px 104px minmax(0,1fr) 70px;gap:12px;align-items:center;padding:12px 18px;border-bottom:1px solid var(--line);cursor:pointer;transition:background-color .25s}
.hx .dk-feed li:hover{background:var(--s1)}
.hx .dk-feed li.sel{background:var(--s2);box-shadow:inset 3px 0 0 var(--ink2)}
.hx .dk-feed li.env .e b::after{content:" ✓";color:var(--propio)}
.hx .dk-feed li:focus-visible{outline:2px solid var(--propio);outline-offset:-2px}
.hx .dk-feed li.nuevo{animation:dkentra .6s cubic-bezier(.2,.7,.2,1) both}
@keyframes dkentra{from{opacity:0;transform:translateY(-12px);background:color-mix(in srgb,var(--propio) 14%,transparent)}}
.hx .dk-feed .h{font:500 12px/1 var(--mono);color:var(--ink4)}
.hx .dk-feed .e{display:grid;gap:3px;min-width:0}
.hx .dk-feed .e b{font:500 15px/1.25 var(--sans);color:var(--ink1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hx .dk-feed .e span{font-size:12.5px;color:var(--ink3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hx .dk-feed .sc{height:6px;background:var(--s2);position:relative}
.hx .dk-feed .sc i{position:absolute;inset:0 auto 0 0;background:var(--ink4)}
.hx .dk-feed .sc.p i{background:var(--propio)}
.hx .dk-ficha{padding:20px 22px;display:grid;gap:16px;align-content:start;animation:adin .35s ease both}
.hx .fc-top{display:flex;justify-content:space-between;align-items:center}
.hx .fc-emp{display:flex;justify-content:space-between;gap:14px;align-items:center}
.hx .fc-emp b{display:block;font:500 21px/1.2 var(--sans);color:var(--ink1)}
.hx .fc-emp span{font-size:13.5px;color:var(--ink3)}
.hx .aro{width:58px;height:58px;flex:0 0 58px;transform:rotate(-90deg)}
.hx .aro circle{fill:none;stroke:var(--s2);stroke-width:4}
.hx .aro circle.v{stroke:var(--ia);stroke-linecap:butt;transition:stroke-dasharray .8s}
.hx .aro circle.v.p{stroke:var(--propio)}
.hx .aro text{transform:rotate(90deg);transform-origin:22px 22px;font:500 12px var(--sans);fill:var(--ink1);text-anchor:middle}
.hx .dk-ficha dl{margin:0;display:grid;gap:12px}
.hx .dk-ficha dt{font:500 10.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink4);margin-bottom:5px}
.hx .dk-ficha dd{margin:0;font-size:15px;color:var(--ink2)}
.hx .dk-ficha dd.u{color:var(--ink1);padding-left:12px;border-left:2px solid var(--propio)}
.hx .dk-ficha .btn{justify-self:start;padding:11px 15px}
.hx .dk-ficha .btn.hecho{border-color:var(--propio);color:var(--propio)}
.hx .dk-terminos{padding:14px 18px 18px;border-top:1px solid var(--line);display:grid;gap:10px}
.hx .dk-terminos .tr{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) 34px;gap:12px;align-items:center;font-size:13.5px;color:var(--ink2)}
.hx .dk-terminos .bar{height:8px;background:var(--s2);position:relative}
.hx .dk-terminos .bar i{position:absolute;inset:0 auto 0 0;width:0;background:var(--google);transition:width 1.1s cubic-bezier(.2,.7,.2,1)}
.hx .dk-terminos b{font:500 14px/1 var(--sans);color:var(--ink1);text-align:right;font-variant-numeric:tabular-nums}
/* 04 · briefing */
.hx .brief{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:clamp(32px,5.5vw,88px);align-items:start;margin-top:clamp(12px,1.6vw,24px)}
.hx .doc{border:1px solid var(--line2);background:var(--s0);box-shadow:0 24px 60px -30px rgba(20,20,19,.5)}
.hx .doc-top{display:flex;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line)}
.hx .bf-lista{list-style:none;margin:0;padding:0}
.hx .bf-lista button{all:unset;cursor:pointer;box-sizing:border-box;width:100%;display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 18px;border-bottom:1px solid var(--line);transition:background-color .25s}
.hx .bf-lista button:hover{background:var(--s1)}
.hx .bf-lista button.on{background:var(--s2);box-shadow:inset 3px 0 0 var(--propio)}
.hx .bf-lista button:focus-visible{outline:2px solid var(--propio);outline-offset:-2px}
.hx .bf-lista .d{width:9px;height:9px;border-radius:50%}.hx .bf-lista .d.p{background:var(--propio)}.hx .bf-lista .d.i{background:var(--ia)}
.hx .bf-lista b{font:500 15px/1.25 var(--sans);color:var(--ink1)}
.hx .bf-lista span{font-size:12.5px;color:var(--ink3);text-align:right}
.hx .bf-arg{padding:16px 18px 20px;display:grid;gap:10px}
.hx .bf-perfil{display:flex;flex-wrap:wrap;gap:6px}
.hx .bf-perfil button{all:unset;cursor:pointer;padding:7px 11px;border:1px solid var(--line);font-size:13px;color:var(--ink2)}
.hx .bf-perfil button[aria-selected=true]{border-color:var(--propio);color:var(--ink1)}
.hx .bf-perfil button:focus-visible{outline:2px solid var(--propio)}
.hx #bf-texto{margin:0;font:400 18px/1.45 var(--sans);color:var(--ink1);padding-left:14px;border-left:2px solid var(--propio);min-height:3em}
.hx #bf-texto.cambia{animation:adin .4s ease both}
.hx .recibe{display:grid;gap:18px;align-content:start;padding-top:clamp(8px,1.2vw,18px)}
.hx .recibe .frase{font-size:clamp(20px,2vw,24px)}
/* 05 · cadencia */
.hx .ritmo{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .ciclo4{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line)}
.hx .ciclo4 button{all:unset;cursor:pointer;background:var(--s1);padding:20px 22px;display:grid;gap:8px;align-content:start;position:relative;transition:background-color .3s}
.hx .ciclo4 button::before{content:"";position:absolute;left:0;top:0;height:3px;width:0;background:var(--propio);transition:width 2.6s linear}
.hx .ciclo4 button.on{background:var(--s2)}
.hx .ciclo4 button.on::before{width:100%}
.hx .ciclo4 button:focus-visible{outline:2px solid var(--propio);outline-offset:-2px}
.hx .ciclo4 .n{font:500 10.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink4)}
.hx .ciclo4 button.on .n{color:var(--propio)}
.hx .ciclo4 b{font:500 19px/1.2 var(--sans);color:var(--ink1)}
.hx .ciclo4 p{margin:0;font-size:14.5px;color:var(--ink3)}
.hx .aprende{background:var(--s0);padding:20px 22px;display:grid;gap:12px;align-content:start}
.hx .barras12{height:150px;display:grid;grid-template-columns:repeat(12,1fr);gap:5px;align-items:end;border-bottom:1px solid var(--line2)}
.hx .barras12 i{height:0;background:linear-gradient(180deg,var(--propio),color-mix(in srgb,var(--propio) 35%,transparent));transition:height .7s cubic-bezier(.2,.7,.2,1)}
.hx .aprende .ejes{display:flex;justify-content:space-between;font:500 10.5px/1 var(--mono);letter-spacing:.08em;color:var(--ink4);text-transform:uppercase}
.hx .aprende p{margin:0;font-size:14.5px;color:var(--ink3)}
/* 06 · encaje */
.hx.ic .quiz{display:grid;gap:16px}
.hx.ic .quiz fieldset{grid-template-columns:1fr 1fr}
.hx.ic .quiz legend{grid-column:1/-1}
.hx .noes{display:grid;gap:12px;align-content:start}
.hx .noes ul{margin:0;padding:0;list-style:none;display:grid;gap:8px}
.hx .noes li{display:grid;grid-template-columns:18px 1fr;gap:8px;font-size:15px;color:var(--ink2)}
.hx .noes li::before{content:"×";color:var(--ink4);font:500 16px/1.3 var(--mono)}
.hx .noes p{margin:0;font-size:13.5px;color:var(--ink3)}
@media (max-width:900px){
  .hx .horas,.hx .dk-cuerpo,.hx .brief,.hx .ritmo{grid-template-columns:1fr}
  .hx .dk-feed{border-right:0;border-bottom:1px solid var(--line)}
  .hx .dk-feed li{grid-template-columns:96px minmax(0,1fr) 44px}.hx .dk-feed .h{display:none}
  .hx .eb-cols{grid-template-columns:1fr 1fr}.hx .eb-cols button:nth-child(2){border-right:0}.hx .eb-cols button:nth-child(-n+2){border-bottom:1px solid var(--line)}
  .hx .dk-kpi{flex-wrap:wrap;gap:6px 14px}
  .hx .dk-terminos .tr{grid-template-columns:1fr 34px}.hx .dk-terminos .bar{grid-column:1/-1;grid-row:2}
}
@media (max-width:560px){.hx .ciclo4{grid-template-columns:1fr}.hx .bf-lista span{display:none}}
.hx .dk-feed .tag{justify-self:start}
@media (max-width:560px){.hx.ic .quiz fieldset{grid-template-columns:1fr}}

/* ── /enfoque/ · la firma (0.99.0) ── */
.hx section.banner .bg-cortex .b{opacity:.13}.hx section.banner .bg-neuronas .b{opacity:.12}.hx section.banner .bg-bus .b{opacity:.12}.hx section.banner .bg-interferencia .b{opacity:.1}
.hx section.banner :is(.bg-cortex,.bg-neuronas,.bg-bus,.bg-interferencia) .a{opacity:.75}
.hx.enf .vdhero.banner{background:var(--s0)}
.hx.enf .vdhero .bgfig{-webkit-mask-image:linear-gradient(90deg,transparent 0%,transparent 38%,#000 78%);mask-image:linear-gradient(90deg,transparent 0%,transparent 38%,#000 78%)}
.hx.enf .vdhero .facts{grid-template-columns:repeat(3,auto)}
/* 01 · eras */
.hx .eras{display:grid;gap:0;border:1px solid var(--line);background:var(--s0)}
.hx .eras-pista{--s:1;position:relative;display:grid;grid-template-columns:repeat(6,1fr);padding:34px 18px 18px}
.hx .eras-pista::before,.hx .eras-pista::after{content:"";position:absolute;left:calc(18px + (100% - 36px)/12);top:40px;height:2px;background:var(--line2);width:calc((100% - 36px)*5/6)}
.hx .eras-pista::after{background:linear-gradient(90deg,var(--google),var(--ia));transform:scaleX(var(--s));transform-origin:left;transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.hx .eras-pista button{all:unset;cursor:pointer;position:relative;z-index:1;display:grid;justify-items:center;gap:8px;text-align:center;padding:0 6px}
.hx .eras-pista button i{width:14px;height:14px;border-radius:50%;background:var(--s0);border:2px solid var(--line2);transition:background-color .3s,border-color .3s,transform .3s}
.hx .eras-pista button.pasada i{border-color:var(--google);background:var(--google)}
.hx .eras-pista button.hoy.pasada i{border-color:var(--ia);background:var(--ia);box-shadow:0 0 0 6px color-mix(in srgb,var(--ia) 22%,transparent);animation:cxlate 2s ease-in-out infinite}
.hx .eras-pista button[aria-selected=true] i{transform:scale(1.35)}
.hx .eras-pista b{font:500 clamp(18px,1.8vw,24px)/1 var(--sans);letter-spacing:-.01em;color:var(--ink3);font-variant-numeric:tabular-nums}
.hx .eras-pista button[aria-selected=true] b{color:var(--ink1)}
.hx .eras-pista span{font-size:13px;line-height:1.3;color:var(--ink4)}
.hx .eras-pista button[aria-selected=true] span{color:var(--ink2)}
.hx .eras-pista button:focus-visible{outline:2px solid var(--propio);outline-offset:4px}
.hx .eras-panel{border-top:1px solid var(--line);background:var(--s1);padding:20px 22px;min-height:112px}
.hx .erp{display:grid;gap:8px;animation:adin .4s ease both}
.hx .erp p{margin:0;font:400 clamp(18px,1.7vw,22px)/1.45 var(--sans);color:var(--ink1);max-width:70ch}
/* 02 · principios */
.hx .prin{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .prin-mat{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);align-content:start}
.hx .prin-mat .eje{grid-column:1/-1;background:var(--s0);padding:10px 16px;font:500 10.5px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink4)}
.hx .prin-mat button{all:unset;cursor:pointer;background:color-mix(in srgb,var(--s1) 94%,transparent);padding:16px;display:grid;grid-template-columns:40px 1fr;grid-template-rows:auto 1fr;gap:4px 12px;align-content:start;transition:background-color .25s;min-height:96px}
.hx .prin-mat button:hover{background:var(--s2)}
.hx .prin-mat button[aria-selected=true]{background:var(--s2);box-shadow:inset 0 -3px 0 var(--propio)}
.hx .prin-mat button:focus-visible{outline:2px solid var(--propio);outline-offset:-2px}
.hx .prin-mat .gl{grid-row:1/span 2;width:40px;height:40px}
.hx .prin-mat .n{font:500 11px/1 var(--mono);letter-spacing:.1em;color:var(--ink4)}
.hx .prin-mat button[aria-selected=true] .n{color:var(--propio)}
.hx .prin-mat b{font:500 14.5px/1.3 var(--sans);color:var(--ink1)}
.hx .gl .l{fill:none;stroke:var(--ink3);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.hx .gl .ac{fill:none;stroke:var(--propio);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.hx .gl .a{fill:var(--propio)}
.hx .gl .l.x{stroke-dasharray:2 3}
.hx .prin-det{background:var(--s0);padding:clamp(22px,3vw,36px);display:grid;align-content:start}
.hx .pp{display:grid;gap:14px;align-content:start;animation:adin .4s ease both}
.hx .pp .gl.xl{width:88px;height:88px}
.hx .pp .gl.xl .l{stroke-width:1.2}.hx .pp .gl.xl .ac{stroke-width:1.8;stroke-dasharray:140;stroke-dashoffset:140;animation:cxdib 1.2s .15s cubic-bezier(.4,0,.2,1) forwards}
@keyframes cxdib{to{stroke-dashoffset:0}}
.hx .pp h3{margin:0;font:500 clamp(24px,2.4vw,32px)/1.18 var(--sans);letter-spacing:-.015em;color:var(--ink1)}
.hx .pp p{margin:0;font-size:16px;line-height:1.6;color:var(--ink2)}
.hx .pp p.pr{padding-left:14px;border-left:2px solid var(--propio);color:var(--ink1)}
.hx .pp p.pr b{font-weight:500;color:var(--propio)}
/* 03 · curvas */
.hx .curvas{border:1px solid var(--line);background:var(--s0);display:grid}
.hx .cv-top{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line);background:var(--s1)}
.hx .cv-top label{display:flex;gap:12px;align-items:baseline}
.hx .cv-top output{font:500 24px/1 var(--sans);color:var(--ink1);font-variant-numeric:tabular-nums;min-width:2ch}
.hx .cv-top input{width:100%;margin:0;accent-color:var(--propio)}
.hx .cv-svg{display:block;width:100%;height:auto;padding:10px 6px 0}
.hx .cv-rej path{stroke:var(--line);stroke-width:1;fill:none}
.hx .cv-rej text{font:500 11px var(--mono);fill:var(--ink4);text-anchor:middle;letter-spacing:.06em}
.hx .cv-corte{fill:var(--otros);opacity:.07}
.hx .cv-camp{fill:none;stroke:var(--otros);stroke-width:2.4;stroke-dasharray:7 5}
.hx .cv-sis{fill:none;stroke:var(--propio);stroke-width:3.4;stroke-linecap:round}
.hx .curvas.dibuja .cv-sis{stroke-dasharray:2400;stroke-dashoffset:2400;animation:cxdib 1.8s cubic-bezier(.4,0,.2,1) forwards}
.hx .cv-t{font:500 13px var(--sans);fill:var(--ink3);text-anchor:end}.hx .cv-t.s{fill:var(--propio)}
.hx .cv-pie{display:grid;grid-template-columns:auto auto 1fr;gap:12px 32px;align-items:end;padding:16px 20px;border-top:1px solid var(--line)}
.hx .cv-pie b{display:block;font:500 clamp(28px,3vw,40px)/1 var(--sans);letter-spacing:-.02em;color:var(--ink3);font-variant-numeric:tabular-nums}
.hx .cv-pie b.p{color:var(--propio)}
.hx .cv-pie p{margin:0;font-size:13.5px;color:var(--ink3);max-width:58ch;justify-self:end}
/* 04 · arquitectura */
.hx .arq{display:grid;grid-template-columns:minmax(0,1fr);border:1px solid var(--line2);background:color-mix(in srgb,var(--s0) 88%,transparent)}
.hx .arq-svg{display:block;width:100%;height:auto;padding:14px}
.hx .arq .cb{font:500 11px var(--mono);letter-spacing:.14em;fill:var(--ink4);text-anchor:middle}
.hx .arq .cn{fill:none;stroke:var(--line2);stroke-width:1.2;transition:opacity .3s}
.hx .arq .cn.fl{stroke-dasharray:6 8;animation:cxflujo 1.4s linear infinite}
.hx .arq .cn.i{stroke:var(--ia)}.hx .arq .cn.p{stroke:var(--propio)}.hx .arq .cn.s{stroke:var(--google);animation-direction:reverse}
.hx .arq .cn.g{stroke:color-mix(in srgb,var(--google) 45%,transparent)}
@keyframes cxflujo{to{stroke-dashoffset:-28}}
.hx .arq .nd{cursor:pointer;outline:none}
.hx .arq .nd rect{fill:var(--s1);stroke:var(--line2);stroke-width:1.2;transition:fill .25s,stroke .25s}
.hx .arq .nd text{font:500 15px var(--sans);fill:var(--ink1);text-anchor:middle}
.hx .arq .nd text.s{font:500 10.5px var(--mono);letter-spacing:.08em;fill:var(--ink4);text-transform:uppercase}
.hx .arq .nd.g rect{stroke:var(--google)}.hx .arq .nd.i rect{stroke:var(--ia)}.hx .arq .nd.p rect{stroke:var(--propio);stroke-width:2;fill:color-mix(in srgb,var(--propio) 12%,var(--s1))}.hx .arq .nd.sn rect{stroke:var(--google);stroke-dasharray:4 3}
.hx .arq .nd:hover rect,.hx .arq .nd.on rect,.hx .arq .nd:focus-visible rect{fill:var(--s2);stroke-width:2.4}
.hx .arq-svg[data-k=fuentes] .cn:not(.g),.hx .arq-svg[data-k=agentes] .cn.p,.hx .arq-svg[data-k=agentes] .cn.s,.hx .arq-svg[data-k=resultado] .cn.g,.hx .arq-svg[data-k=sentinel] .cn:not(.s){opacity:.18}
@media (prefers-reduced-motion:reduce){.hx .arq .cn.fl{animation:none}}
.hx .arq-det{display:grid;gap:6px;padding:16px 20px;border-top:1px solid var(--line);background:var(--s1)}
.hx .arq-det b{font:500 20px/1.2 var(--sans);color:var(--ink1)}
.hx .arq-det p{margin:0;font-size:15px;color:var(--ink2);max-width:80ch}
.hx .estr{display:grid;gap:18px}
.hx .estr h3.cur{margin:0;font:500 clamp(26px,2.6vw,34px)/1.15 var(--sans);letter-spacing:-.018em;color:var(--ink1)}
.hx .estr-cols{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .estr-cols>div{background:color-mix(in srgb,var(--s1) 94%,transparent);padding:20px 22px;display:grid;gap:12px;align-content:start}
.hx .estr ul{margin:0;padding:0;list-style:none;display:grid;gap:6px}
.hx .estr-a li{display:grid;grid-template-columns:170px 1fr;gap:12px;align-items:center;font-size:14px;color:var(--ink3)}
.hx .estr-a li b{font-weight:400}
.hx .estr-a li i{height:10px;width:0!important;background:repeating-linear-gradient(135deg,var(--otros) 0 3px,transparent 3px 6px);transition:width .8s cubic-bezier(.2,.7,.2,1)}
.hx .estr.on .estr-a li i{width:var(--w)!important}
.hx .estr-b li{display:grid;gap:2px;padding:14px 16px;border:1px solid var(--line2);background:var(--s0)}
.hx .estr-b li.c{border-color:var(--propio)}
.hx .estr-b li b{font:500 19px/1.2 var(--sans);color:var(--ink1)}.hx .estr-b li.c b{color:var(--propio)}
.hx .estr-b li span{font-size:13.5px;color:var(--ink3)}
.hx .estr-b p{margin:0;font-size:14.5px;color:var(--ink2)}
/* 05 · perfil */
.hx .perfil{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(28px,5vw,72px);align-items:start}
.hx .pf-foto{position:relative;border:1px solid var(--line2);background:var(--s1)}
.hx .pf-foto img{display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;filter:grayscale(1) contrast(1.05)}
.hx .pf-cap{position:absolute;left:0;right:0;bottom:0;padding:16px 18px;background:linear-gradient(0deg,rgba(20,20,19,.85),transparent);display:grid;gap:3px}
.hx .pf-cap b{font:500 20px/1.2 var(--sans);color:#FBF6EA}
.hx .pf-cap span{font:500 10.5px/1.2 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:#DED8C9}
.hx .pf-txt{display:grid;gap:18px}
.hx .pf-txt>p:not(.k){margin:0;font-size:16.5px;line-height:1.65;color:var(--ink2);max-width:66ch}
.hx .pf-num{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .pf-num div{background:var(--s1);padding:14px 16px;display:grid;gap:4px}
.hx .pf-num b{font:500 clamp(26px,2.6vw,34px)/1 var(--sans);letter-spacing:-.02em;color:var(--ink1);font-variant-numeric:tabular-nums}
.hx .pf-num span{font-size:12.5px;color:var(--ink3)}
/* 06 · dos capacidades */
.hx .dos-cap{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .cap{background:var(--s1);padding:clamp(22px,3vw,34px);display:grid;gap:12px;align-content:start}
.hx .cap svg{width:120px;height:60px}
.hx .cap svg .l{fill:none;stroke:var(--ink3);stroke-width:1.6}
.hx .cap svg .a{fill:var(--propio)}
.hx .cap.c2 svg .a{fill:var(--google)}
.hx .cap b{font:500 clamp(22px,2.2vw,28px)/1.2 var(--sans);letter-spacing:-.012em;color:var(--ink1)}
.hx .cap p{margin:0;font-size:15.5px;line-height:1.6;color:var(--ink2)}
.hx .cap .acts{display:flex;flex-wrap:wrap;gap:10px 22px}
@media (max-width:900px){
  .hx .prin,.hx .perfil,.hx .dos-cap,.hx .estr-cols{grid-template-columns:1fr}
  .hx .prin-mat{grid-template-columns:1fr 1fr 1fr}
  .hx .prin-mat button{grid-template-columns:1fr;padding:12px;min-height:0}.hx .prin-mat .gl{grid-row:auto;width:30px;height:30px}.hx .prin-mat b{font-size:13px}
  .hx .eras-pista{grid-template-columns:repeat(3,1fr);row-gap:20px;padding-top:20px}.hx .eras-pista::before,.hx .eras-pista::after{display:none}
  .hx .cv-pie{grid-template-columns:1fr 1fr}.hx .cv-pie p{grid-column:1/-1;justify-self:start}
  .hx.enf .vdhero .facts{grid-template-columns:1fr 1fr}
  .hx .estr-a li{grid-template-columns:130px 1fr}
  .hx .pf-foto{max-width:360px}
}
@media (max-width:560px){.hx .prin-mat b{display:none}.hx .cv-top{grid-template-columns:1fr}.hx .pf-num{grid-template-columns:1fr}}
.hx .pp[hidden],.hx .erp[hidden]{display:none}
.hx .arq .pk{fill:var(--google)}.hx .arq .pk.i{fill:var(--ia)}.hx .arq .pk.p{fill:var(--propio)}.hx .arq .pk.s{fill:var(--google)}
.hx .arq-svg[data-k=fuentes] .pk:not(.g),.hx .arq-svg[data-k=agentes] .pk.p,.hx .arq-svg[data-k=agentes] .pk.s,.hx .arq-svg[data-k=resultado] .pk.g,.hx .arq-svg[data-k=sentinel] .pk:not(.s){opacity:.15}
.hx.enf .two{display:grid}
@media (max-width:900px){.hx .arq-sc{overflow-x:auto;-webkit-overflow-scrolling:touch}.hx .arq-sc .arq-svg{width:820px;max-width:none}.hx .arq-sc::after{content:"Deslice para ver el sistema completo →";display:block;padding:0 14px 10px;font:500 10.5px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink4)}}

/* ── /kit-digital-2026-2027/ · lista preferente (0.100.0) ── */
.hx section.banner .bg-cola .b{opacity:.12}.hx section.banner .bg-llegadas .b{opacity:.1}.hx section.banner .bg-escalones .b{opacity:.08}.hx section.banner .bg-puerta .b{opacity:.1}
.hx section.banner :is(.bg-cola,.bg-llegadas,.bg-escalones,.bg-puerta) .a{opacity:.75}
.hx.kd .vdhero.banner{background:var(--s0)}
.hx.kd .vdhero .bgfig{-webkit-mask-image:linear-gradient(90deg,transparent 0%,transparent 40%,#000 80%);mask-image:linear-gradient(90deg,transparent 0%,transparent 40%,#000 80%)}
/* 01 · lista + formulario */
.hx .kdl{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.95fr);gap:clamp(28px,5vw,72px);align-items:start}
.hx .kdl-txt{display:grid;gap:22px}
.hx .tres{list-style:none;margin:0;padding:0;display:grid;gap:1px;background:var(--line);border:1px solid var(--line);counter-reset:t}
.hx .tres li{background:var(--s1);padding:16px 18px 16px 58px;display:grid;gap:4px;position:relative;counter-increment:t}
.hx .tres li::before{content:"0" counter(t);position:absolute;left:18px;top:16px;font:500 13px/1 var(--mono);color:var(--propio)}
.hx .tres b{font:500 17px/1.25 var(--sans);color:var(--ink1)}
.hx .tres span{font-size:14.5px;color:var(--ink3)}
.hx .kdf{position:sticky;top:96px}
.hx .kdform{display:grid;gap:10px;padding:clamp(20px,2.6vw,30px);border:1px solid var(--propio);background:var(--s1);box-shadow:0 30px 70px -40px rgba(20,20,19,.6)}
.hx .kdform .kdt{font:500 clamp(24px,2.4vw,30px)/1.15 var(--sans);letter-spacing:-.015em;color:var(--ink1);margin-bottom:6px}
.hx .kdform .row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.hx .kdform input[type=text],.hx .kdform input[type=email],.hx .kdform input[type=tel],.hx .kdform select{width:100%;box-sizing:border-box;padding:13px 14px;border:1px solid var(--line2);background:var(--s0);color:var(--ink1);font:400 15px/1.2 var(--sans);border-radius:0;appearance:none}
.hx .kdform select{background-image:linear-gradient(45deg,transparent 50%,var(--ink3) 50%),linear-gradient(135deg,var(--ink3) 50%,transparent 50%);background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:34px}
.hx .kdform select:invalid{color:var(--ink4)}
.hx .kdform :is(input,select):focus{outline:2px solid var(--propio);outline-offset:-1px}
.hx .kdform .priv{display:grid;grid-template-columns:18px 1fr;gap:10px;font-size:12.5px;color:var(--ink3);align-items:start}
.hx .kdform .priv input{margin:2px 0 0;accent-color:var(--propio)}
.hx .kdform .btn{width:100%;justify-content:center;margin-top:4px}
.hx .kdform .nota{margin:0;font-size:12px;color:var(--ink4);text-align:center}
.hx .kdf .ok{padding:18px;border:1px solid var(--propio);color:var(--ink1);background:var(--s1);font-size:16px}
.hx .kdf .ok.err{border-color:var(--ia)}
/* 02 · la cola */
.hx .cola{display:grid;gap:16px;padding:clamp(18px,2.4vw,28px);border:1px solid var(--line2);background:color-mix(in srgb,var(--s0) 88%,transparent)}
.hx .cola-sw{display:flex;flex-wrap:wrap;gap:6px}
.hx .cola-sw button{all:unset;cursor:pointer;padding:9px 13px;border:1px solid var(--line2);font-size:14px;color:var(--ink2)}
.hx .cola-sw button[aria-selected=true]{border-color:var(--propio);color:var(--ink1);background:var(--s2)}
.hx .cola-sw button:focus-visible{outline:2px solid var(--propio)}
.hx .cola-fila{position:relative;display:grid;grid-template-columns:repeat(30,1fr);gap:5px;padding:14px 0}
.hx .cola-fila i{aspect-ratio:1;background:var(--s2);border:1px solid var(--line2);opacity:0;transform:scale(.6);transition:opacity .4s var(--d),transform .4s var(--d),background-color .3s,border-color .3s}
.hx .cola-fila.on i{opacity:1;transform:none}
.hx .cola-fila i.c{background:color-mix(in srgb,var(--propio) 22%,var(--s2));border-color:color-mix(in srgb,var(--propio) 40%,var(--line2))}
.hx .cola-fila i.y{background:var(--propio);border-color:var(--propio);box-shadow:0 0 0 4px color-mix(in srgb,var(--propio) 30%,transparent);animation:cxlate 1.6s ease-in-out infinite}
.hx .cola-fila.fuera i.y{background:repeating-linear-gradient(135deg,var(--otros) 0 3px,transparent 3px 6px);border-color:var(--otros);box-shadow:0 0 0 4px color-mix(in srgb,var(--otros) 30%,transparent)}
.hx .cola-fila .lim{position:absolute;top:0;bottom:0;left:calc(var(--x) * 2 - 100% + 0px);display:none}
.hx .cola-ley{display:flex;flex-wrap:wrap;gap:8px 22px;font-size:13px;color:var(--ink3)}
.hx .cola-ley span{display:flex;align-items:center;gap:8px}
.hx .cola-ley i{width:12px;height:12px;display:inline-block}
.hx .cola-ley i.f{background:color-mix(in srgb,var(--propio) 22%,var(--s2));border:1px solid color-mix(in srgb,var(--propio) 40%,var(--line2))}
.hx .cola-ley i.y{background:var(--propio)}
.hx .cola-txt{margin:0;font-size:clamp(17px,1.6vw,20px);color:var(--ink2)}
.hx .cola-txt b{font-weight:500;color:var(--ink1)}
/* 03 · soluciones con IA */
.hx .sol{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .sol>div{background:var(--s1);padding:20px 22px;display:grid;gap:8px;align-content:start}
.hx .sol .n{font:500 11px/1 var(--mono);letter-spacing:.1em;color:var(--ink4);text-transform:uppercase}
.hx .sol b{font:500 19px/1.2 var(--sans);color:var(--ink1)}
.hx .sol p{margin:0;font-size:14.5px;color:var(--ink3)}
.hx .sol em{font-style:normal;font-size:14px;color:var(--ink1);padding-left:10px;border-left:2px solid var(--ia)}
.hx .sol .base{background:var(--s2)}.hx .sol .base em{border-left-color:var(--propio)}.hx .sol .base .n{color:var(--propio)}
/* 05 · bono */
.hx .bono{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .bono-seg{display:grid;grid-template-columns:1fr;gap:1px;background:var(--line)}
.hx .bono-seg button{all:unset;cursor:pointer;background:color-mix(in srgb,var(--s1) 94%,transparent);padding:14px 20px;display:flex;align-items:baseline;gap:10px;transition:background-color .25s}
.hx .bono-seg button:hover{background:var(--s2)}
.hx .bono-seg button[aria-selected=true]{background:var(--s2);box-shadow:inset 3px 0 0 var(--propio)}
.hx .bono-seg button:focus-visible{outline:2px solid var(--propio);outline-offset:-2px}
.hx .bono-seg b{font:500 20px/1 var(--sans);color:var(--ink1);font-variant-numeric:tabular-nums}
.hx .bono-seg span{font-size:13px;color:var(--ink3)}
.hx .bono-res{background:var(--s0);padding:clamp(20px,2.6vw,30px);display:grid;gap:12px;align-content:start}
.hx .bono-res>b{font:500 clamp(46px,5.4vw,76px)/1 var(--sans);letter-spacing:-.03em;color:var(--propio);font-variant-numeric:tabular-nums}
.hx .bono-res>p{margin:0;font-size:16px;color:var(--ink2)}
.hx .bono-bar{height:10px;background:var(--s2);position:relative}
.hx .bono-bar i{position:absolute;inset:0 auto 0 0;width:0;background:var(--propio);transition:width .6s cubic-bezier(.2,.7,.2,1)}
.hx .bono-res .btn{justify-self:start}
/* 06 · estado */
.hx .hitos{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .hitos li{background:var(--s1);padding:20px 22px;display:grid;gap:6px;align-content:start;position:relative}
.hx .hitos li::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--google)}
.hx .hitos li.hoy::before{background:var(--ia)}
.hx .hitos .f{font:500 12px/1 var(--mono);letter-spacing:.08em;color:var(--ink4)}
.hx .hitos li.hoy .f{color:var(--ia)}
.hx .hitos b{font:500 18px/1.25 var(--sans);color:var(--ink1)}
.hx .hitos span:last-child{font-size:14px;color:var(--ink3)}
.hx .transp{margin:0;font-size:14px;line-height:1.6;color:var(--ink3);max-width:90ch;padding-left:14px;border-left:2px solid var(--line2)}
.hx .transp b{font-weight:500;color:var(--ink1)}
.hx.kd .two{display:grid}
@media (max-width:900px){
  .hx .kdl,.hx .bono{grid-template-columns:1fr}.hx .kdf{position:static}
  .hx .sol{grid-template-columns:1fr 1fr}.hx .hitos{grid-template-columns:1fr}
  .hx .cola-fila{grid-template-columns:repeat(15,1fr);gap:4px}
  .hx .bono-seg{grid-template-columns:repeat(5,1fr)}.hx .bono-seg button{display:grid;padding:12px 8px;text-align:center;gap:4px}.hx .bono-seg b{font-size:15px}.hx .bono-seg span{font-size:11px}
}
@media (max-width:560px){.hx .sol{grid-template-columns:1fr}.hx .kdform .row{grid-template-columns:1fr}}

/* ── /contacto/ · la puerta de entrada (0.101.0) ── */
.hx section.banner .bg-ondas .b{opacity:.12}.hx section.banner .bg-caminos .b{opacity:.12}.hx section.banner .bg-convergencia .b{opacity:.11}
.hx section.banner :is(.bg-ondas,.bg-caminos,.bg-convergencia) .a{opacity:.75}
.hx.ct .vdhero.banner{background:var(--s0)}
.hx.ct .vdhero .bgfig{-webkit-mask-image:linear-gradient(90deg,transparent 0%,transparent 40%,#000 80%);mask-image:linear-gradient(90deg,transparent 0%,transparent 40%,#000 80%)}
/* 01 · tres caminos */
.hx .rutas{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .ruta{background:var(--s1);padding:clamp(20px,2.6vw,30px);display:grid;gap:10px;align-content:start;position:relative;transition:background-color .3s}
.hx .ruta::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--line2);transition:background-color .3s}
.hx .ruta.r1::before{background:var(--propio)}
.hx .ruta:hover::before{background:var(--propio)}
.hx .ruta>svg{width:44px;height:44px}
.hx .ruta svg .l{fill:none;stroke:var(--ink2);stroke-width:1.8;stroke-linejoin:round}
.hx .ruta svg .a{fill:var(--propio)}
.hx .ruta b{font:500 clamp(21px,2vw,26px)/1.2 var(--sans);letter-spacing:-.012em;color:var(--ink1)}
.hx .ruta p{margin:0;font-size:15px;color:var(--ink3)}
.hx .ruta .t{justify-self:start;padding:5px 9px;border:1px solid var(--line2);font:500 10.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink2)}
.hx .ruta .btn{justify-self:start;margin-top:6px}
.hx .ruta.r1{background:color-mix(in srgb,var(--propio) 7%,var(--s1))}
.hx .ruta form.cb{margin-top:4px}
.hx .ruta form.cb .row{grid-template-columns:1fr}
/* 02 · por escrito */
.hx .escr{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .escr>div{background:color-mix(in srgb,var(--s1) 95%,transparent);padding:clamp(20px,2.6vw,30px);display:grid;gap:14px;align-content:start}
.hx .nec{display:grid;gap:6px}
.hx .nec label{display:grid;grid-template-columns:18px 1fr;gap:10px;align-items:center;padding:11px 13px;border:1px solid var(--line);background:var(--s0);font-size:14.5px;color:var(--ink2);cursor:pointer;transition:border-color .2s}
.hx .nec input{margin:0;accent-color:var(--propio)}
.hx .nec label:has(input:checked){border-color:var(--propio);color:var(--ink1)}
.hx .guia{display:grid;gap:6px;padding:16px 18px;border:1px solid var(--line2);border-left:3px solid var(--propio);background:var(--s0)}
.hx .guia.cambia{animation:adin .4s ease both}
.hx .guia b{font:500 19px/1.25 var(--sans);color:var(--ink1)}
.hx .guia p{margin:0;font-size:14.5px;color:var(--ink3)}
.hx .escr .cform{background:var(--s0)}
.hx .cxf{display:grid;gap:10px}
.hx .cxf .row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.hx .cxf :is(input[type=text],input[type=email],input[type=tel],select,textarea){width:100%;box-sizing:border-box;padding:13px 14px;border:1px solid var(--line2);background:var(--s1);color:var(--ink1);font:400 15px/1.35 var(--sans);border-radius:0;appearance:none}
.hx .cxf textarea{resize:vertical;min-height:130px}
.hx .cxf select{background-image:linear-gradient(45deg,transparent 50%,var(--ink3) 50%),linear-gradient(135deg,var(--ink3) 50%,transparent 50%);background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:34px}
.hx .cxf select:invalid,.hx .cxf select:has(option[value=""]:checked){color:var(--ink4)}
.hx .cxf :is(input,select,textarea):focus{outline:2px solid var(--propio);outline-offset:-1px}
.hx .cxf .priv{display:grid;grid-template-columns:18px 1fr;gap:10px;font-size:12.5px;color:var(--ink3);align-items:start}
.hx .cxf .priv input{margin:2px 0 0;accent-color:var(--propio)}
.hx .cxf .btn{width:100%;justify-content:center}
.hx .cxf .nota{margin:0;font-size:12.5px;color:var(--ink4);text-align:center}
.hx .cform .ok{padding:18px;border:1px solid var(--propio);color:var(--ink1);font-size:16px}
.hx .cform .ok.err{border-color:var(--ia)}
/* 03 · después */
.hx .pasos-ct{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);position:relative}
.hx .pasos-ct li{background:var(--s1);padding:22px 20px;display:grid;gap:8px;align-content:start;position:relative}
.hx .pasos-ct li::before{content:"";width:12px;height:12px;border-radius:50%;background:var(--s0);border:2px solid var(--propio)}
.hx .pasos-ct li:first-child::before{background:var(--propio)}
.hx .pasos-ct .c{font:500 10.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--propio)}
.hx .pasos-ct b{font:500 19px/1.2 var(--sans);color:var(--ink1)}
.hx .pasos-ct p{margin:0;font-size:14.5px;color:var(--ink3)}
/* 04 · directo */
.hx .datos{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line2);align-self:start}
.hx .datos>*{background:color-mix(in srgb,var(--s0) 90%,transparent);padding:16px 18px;display:grid;gap:5px;text-decoration:none;color:inherit;transition:background-color .25s}
.hx .datos a:hover{background:var(--s2)}
.hx .datos b{font:500 17px/1.25 var(--sans);color:var(--ink1);word-break:break-word}
.hx .datos a:first-child b{color:var(--propio)}
.hx .datos p{margin:0;font-size:13.5px;color:var(--ink3)}
@media (max-width:900px){
  .hx .rutas,.hx .escr{grid-template-columns:1fr}
  .hx .pasos-ct{grid-template-columns:1fr 1fr}
}
@media (max-width:560px){.hx .pasos-ct,.hx .datos{grid-template-columns:1fr}.hx .cxf .row{grid-template-columns:1fr}}
/* 0.101.1 · contacto condensado */
.hx .ctg{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .ctg-a{display:grid;gap:1px;background:var(--line);grid-template-rows:auto 1fr}
.hx .ctg .ruta{border:0}
.hx .ctg .r3{background:var(--s0)}
.hx .ctg .r3::before{background:var(--line2)}
@media (max-width:900px){.hx .ctg{grid-template-columns:1fr}}

/* ── HX · sector · bloque común a las páginas de sector (0.102.0, piloto /sector-industrial/, validado por Jesús el 27-09-2026) ── */
/* ── HX · sector (bloque común a las 16 páginas de sector) ── */
/* conceptos: verde = lo suyo y el CTA · azul = Google y la web · ámbar = IA · rayas = competencia y ruido */
.hx.sec .vdhero.banner{background:var(--s0)}
.hx.sec .vdhero .bgfig{-webkit-mask-image:linear-gradient(90deg,transparent 0%,transparent 40%,#000 82%);mask-image:linear-gradient(90deg,transparent 0%,transparent 40%,#000 82%)}
.hx.sec section.banner :is(.bg-plano,.bg-cnc,.bg-planta,.bg-taller) .b{opacity:.13}
.hx.sec section.banner :is(.bg-plano,.bg-cnc,.bg-planta,.bg-taller) .a{opacity:.75}
.hx.sec .bgfig text{font-family:var(--mono)}
.hx.sec .vdhero .foot{margin:0;font-size:13.5px;color:var(--ink4);max-width:70ch}
.hx.sec .dol svg{color:var(--ink3)}
.hx.sec .acts{display:flex;flex-wrap:wrap;gap:14px 28px;align-items:center}
/* leyenda: casilla vacía = terreno libre */
.hx .ley i.nd{border-radius:0;background:transparent;border:1px dashed var(--ink4)}

/* 02 · matriz de cobertura (artefacto) */
.hx .mtz{background:var(--s0);border:1px solid var(--line)}
.hx .mtz-top{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px;padding:14px 18px;border-bottom:1px solid var(--line)}
.hx .mtz-top>.lab{margin-right:auto}
.hx .mtz-sw{display:inline-flex;border:1px solid var(--line2)}
.hx .mtz-sw button{display:inline-flex;align-items:center;gap:7px;padding:8px 13px;background:transparent;border:0;color:var(--ink3);font:500 12px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;cursor:pointer}
.hx .mtz-sw button+button{border-left:1px solid var(--line2)}
.hx .mtz-sw button[aria-pressed=true]{background:var(--s2);color:var(--ink1)}
.hx .mtz-sw i{width:8px;height:8px;border-radius:50%}
.hx .mtz-sw i.g{background:var(--google)}.hx .mtz-sw i.ia{background:var(--ia)}
.hx .mtz-cuerpo{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr)}
.hx .mtz-rej{display:grid;grid-template-columns:minmax(150px,1.3fr) repeat(4,minmax(0,1fr));gap:1px;background:var(--line);border-right:1px solid var(--line)}
.hx .mtz-rej>*{background:var(--s1);min-height:58px}
.hx .mtz-rej .h{display:flex;align-items:flex-end;padding:12px 12px 10px;font:500 11px/1.25 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink3);min-height:0}
.hx .mtz-rej .q{display:flex;flex-direction:column;justify-content:center;gap:3px;padding:10px 14px}
.hx .mtz-rej .q b{font:500 14.5px/1.25 var(--sans);color:var(--ink1)}
.hx .mtz-rej .q span{font-size:12.5px;color:var(--ink4)}
.hx .mtz-rej button.cel{position:relative;border:0;padding:0;cursor:pointer;background:var(--s1);transition:background .45s}
.hx .mtz-rej button.cel::before{content:"";position:absolute;inset:9px;transition:background .45s,border-color .45s,opacity .45s}
.hx .mtz-rej button.cel.s-u::before{background:var(--propio);opacity:.85}
.hx .mtz-rej button.cel.s-o::before{background:repeating-linear-gradient(135deg,var(--otros) 0 2px,transparent 2px 6px);opacity:.9}
.hx .mtz-rej button.cel.s-n::before{border:1px dashed var(--ink4);opacity:.7}
.hx .mtz-rej button.cel:hover{background:var(--s2)}
.hx .mtz-rej button.cel:focus-visible{background:var(--s2);outline:2px solid var(--ink1);outline-offset:-2px}
.hx .mtz-rej button.cel[aria-selected=true]{background:var(--s2);box-shadow:inset 0 0 0 2px var(--ink1)}
.hx .mtz-rej button.cel.cambia::after{content:"";position:absolute;inset:0;background:var(--propio);opacity:0;animation:mtzflash .9s ease-out}
@keyframes mtzflash{0%{opacity:.35}100%{opacity:0}}
.hx .mtz-lado{display:grid;grid-template-rows:auto 1fr;background:var(--s0)}
.hx .mtz-cuenta{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--line)}
.hx .mtz-cuenta div{padding:16px 16px 14px;display:grid;gap:6px}
.hx .mtz-cuenta div+div{border-left:1px solid var(--line)}
.hx .mtz-cuenta b{font:500 clamp(30px,3vw,40px)/1 var(--sans);letter-spacing:-.02em;color:var(--ink1);font-variant-numeric:tabular-nums}
.hx .mtz-cuenta b.bu{color:var(--propio)}.hx .mtz-cuenta b.bo{color:var(--ink3)}
.hx .mtz-cuenta span{font:500 10.5px/1.25 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink4)}
.hx .mtz-ficha{padding:18px 18px 20px;display:grid;gap:10px;align-content:start}
.hx .mtz-ficha .tag{justify-self:start}
.hx .mtz-ficha q{font:500 18px/1.35 var(--sans);color:var(--ink1);quotes:"«" "»"}
.hx .mtz-ficha p{margin:0;font-size:14.5px;color:var(--ink3)}
.hx .mtz-ficha p b{color:var(--ink1);font-weight:500}
.hx .mtz .ley{border-top:1px solid var(--line)}
/* prueba: la consulta para copiar en una IA */
.hx .prueba{margin-top:clamp(22px,3vw,34px);border:1px solid var(--line);border-left:3px solid var(--ia);background:var(--s1)}
.hx .prueba .pr-top{display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;align-items:center;padding:12px 18px;border-bottom:1px solid var(--line)}
.hx .prueba .btn{padding:9px 16px;font-size:12px}
.hx .prueba .btn.ok{border-color:var(--propio);color:var(--propio)}
.hx .prueba .pr-txt{margin:0;padding:18px;font:500 15px/1.65 var(--mono);color:var(--ink1);max-width:92ch}
.hx .prueba .pr-pie{margin:0;padding:12px 18px;border-top:1px solid var(--line);font-size:14px;color:var(--ink3)}

/* 03 · la cadena y el sí es / no es */
.hx .cadena{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,2vw,28px);counter-reset:none}
.hx .cadena li{position:relative;background:var(--s1);border:1px solid var(--line);padding:16px 18px 18px;display:grid;gap:6px;align-content:start}
.hx .cadena li:not(:last-child)::after{content:"→";position:absolute;right:calc(-1 * clamp(14px,2vw,28px));top:50%;width:clamp(14px,2vw,28px);text-align:center;transform:translateY(-50%);font:400 18px/1 var(--mono);color:var(--ink4)}
.hx .cadena .n{font:500 11px/1 var(--mono);letter-spacing:.1em;color:var(--ink4)}
.hx .cadena b{font:500 17px/1.25 var(--sans);color:var(--ink1)}
.hx .cadena p{margin:0;font-size:14px;color:var(--ink3)}
.hx .cadena li.gi{border-top:2px solid var(--google)}
.hx .cadena li.gi b{background:linear-gradient(90deg,var(--google),var(--ia));-webkit-background-clip:text;background-clip:text;color:transparent}
.hx .cadena li.fin{border-color:var(--propio);background:var(--propio-soft)}
.hx .cadena li.fin .n{color:var(--propio)}
.hx .sino{display:grid;grid-template-columns:1.25fr 1fr;gap:clamp(24px,4vw,64px);border-top:1px solid var(--line2);padding-top:clamp(18px,2.4vw,26px)}
.hx .sino>div{display:grid;gap:14px;align-content:start}
.hx .sino .no{padding-left:clamp(24px,4vw,64px);border-left:1px solid var(--line);margin-left:calc(-1 * clamp(24px,4vw,64px) / 2)}
.hx .sino ul{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.hx .sino li{display:grid;grid-template-columns:18px 1fr;gap:10px;font-size:15.5px;line-height:1.5;color:var(--ink2)}
.hx .sino .si li::before{content:"";width:10px;height:10px;margin-top:7px;background:var(--propio)}
.hx .sino .no li::before{content:"";width:10px;height:10px;margin-top:7px;background:repeating-linear-gradient(135deg,var(--otros) 0 2px,transparent 2px 4px);border:1px solid var(--otros)}
.hx .sino .no li{color:var(--ink3)}

/* 04 · método: calendario de capas */
.hx .gantt{background:var(--s0);border:1px solid var(--line);padding:clamp(14px,2vw,22px);display:grid;gap:8px}
.hx .gt-cab,.hx .gt-fila{display:grid;grid-template-columns:minmax(120px,170px) 1fr;gap:14px;align-items:center}
.hx .gt-cab>div{display:grid;grid-template-columns:repeat(12,1fr)}
.hx .gt-cab>div span{font:500 10.5px/1 var(--mono);letter-spacing:.06em;color:var(--ink4);text-align:center}
.hx .gt-fila button{all:unset;box-sizing:border-box;cursor:pointer;display:block;padding:8px 10px;border-left:2px solid transparent}
.hx .gt-fila button .n{font:500 15px/1.2 var(--sans);color:var(--ink2)}
.hx .gt-fila.on button{border-left-color:var(--ink1)}
.hx .gt-fila.on button .n{color:var(--ink1)}
.hx .gt-fila button:focus-visible{outline:2px solid var(--ink1);outline-offset:2px}
.hx .gt-pista{position:relative;height:26px;background:repeating-linear-gradient(90deg,var(--line) 0 1px,transparent 1px calc(100% / 12))}
.hx .gt-b{position:absolute;top:5px;bottom:5px;left:calc(var(--a) / 12 * 100%);width:calc(var(--l) / 12 * 100%);transform-origin:left center;transform:scaleX(var(--gs,1));transition:transform 1.1s cubic-bezier(.2,.7,.2,1),opacity .3s}
.hx .gt-b.cg{background:var(--google)}.hx .gt-b.cp{background:var(--propio)}.hx .gt-b.ci{background:var(--ia)}
.hx .gt-b.ct{opacity:.45}
.hx .gantt.pre .gt-b{--gs:0}
.hx .gantt .gt-fila:not(.on) .gt-b{opacity:.35}
.hx .gantt:not(.sel) .gt-fila .gt-b{opacity:1}.hx .gantt:not(.sel) .gt-fila .gt-b.ct{opacity:.45}
.hx .gt-exp{margin-top:8px;padding:14px 16px;border-top:1px solid var(--line);display:grid;gap:4px;min-height:74px}
.hx .gt-exp b{font:500 16px/1.25 var(--sans);color:var(--ink1)}
.hx .gt-exp p{margin:0;font-size:14.5px;color:var(--ink3);max-width:80ch}

/* 06 · análisis del sector: índice editorial (sin tarjetas) */
.hx .indice{list-style:none;margin:0;padding:0;border-top:1px solid var(--line2)}
.hx .indice li{border-bottom:1px solid var(--line)}
.hx .indice a{display:grid;grid-template-columns:64px minmax(0,1fr) 40px;gap:clamp(12px,2vw,28px);align-items:baseline;padding:clamp(18px,2.2vw,26px) 0;text-decoration:none;color:inherit;transition:background .3s}
.hx .indice .n{font:500 13px/1 var(--mono);letter-spacing:.08em;color:var(--ink4)}
.hx .indice .tt{display:grid;gap:8px;max-width:78ch}
.hx .indice b{font:500 clamp(19px,1.8vw,23px)/1.3 var(--sans);letter-spacing:-.01em;color:var(--ink1)}
.hx .indice .ex{font-size:15px;line-height:1.55;color:var(--ink3)}
.hx .indice .fl{font:400 22px/1 var(--mono);color:var(--ink4);justify-self:end;transition:transform .3s,color .3s}
.hx .indice a:hover .fl,.hx .indice a:focus-visible .fl{transform:translateX(6px);color:var(--propio)}
.hx .indice a:hover b{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}
.hx .indice a:focus-visible{outline:2px solid var(--ink1);outline-offset:4px}
/* 07 · preguntas: enlace a la ficha y a la categoría */
.hx.sec .faq details p.mas{margin-top:-8px}
.hx.sec .faq details p.mas a{font:500 12px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--propio);text-decoration:none}
.hx.sec .faq-todas{margin-top:22px}

@media (max-width:1080px){
  .hx .mtz-cuerpo{grid-template-columns:1fr}
  .hx .mtz-rej{border-right:0;border-bottom:1px solid var(--line)}
  .hx .cadena{grid-template-columns:1fr 1fr}
  .hx .cadena li:nth-child(2)::after{display:none}
}
@media (max-width:760px){
  .hx .mtz-rej{grid-template-columns:minmax(0,1.5fr) repeat(4,minmax(0,1fr))}
  .hx .mtz-rej .h{font-size:9.5px;padding:10px 6px 8px;writing-mode:vertical-rl;transform:rotate(180deg);align-items:center;justify-content:flex-start;min-height:118px}
  .hx .mtz-rej .h:first-child{writing-mode:horizontal-tb;transform:none;min-height:0}
  .hx .mtz-rej .q{padding:8px 10px}
  .hx .mtz-rej .q b{font-size:13px}
  .hx .mtz-rej .q span{display:none}
  .hx .mtz-rej button.cel::before{inset:7px}
  .hx .mtz-top>.lab{flex-basis:100%}
  .hx .sino{grid-template-columns:1fr}.hx .sino .no{padding-left:0;border-left:0;margin-left:0;border-top:1px solid var(--line);padding-top:18px}
  .hx .indice a{grid-template-columns:36px minmax(0,1fr) 20px}
  .hx .gt-cab,.hx .gt-fila{grid-template-columns:96px 1fr;gap:8px}
  .hx .gt-fila button{padding:6px 4px}
  .hx .gt-fila button .n{font-size:13px}
  .hx .gt-cab>div span:nth-child(even){visibility:hidden}
}
@media (max-width:560px){
  .hx .cadena{grid-template-columns:1fr}
  .hx .cadena li::after{display:none}
  .hx .mtz-cuenta div{padding:12px 10px}
}
@media (prefers-reduced-motion:reduce){.hx .gt-b{transition:none}.hx .mtz-rej button.cel.cambia::after{animation:none}}

/* 0.107.0 · cabecera de sector a dos líneas (máx. 700 px): el titular no cruza el orbital y cada frase queda en su línea */
.hx.sec .vdhero .txt{max-width:min(100%,700px)}
/* ── HX · artefactos de sector (0.111.0, 27-09-2026) ── Jesús: «¿no sería interesante variar y que no sean todos iguales?».
   Familia de artefactos por momento de compra: matriz (industrial, agro), resultados de Google (ecommerce, repuestos), mapa de su zona (salud y belleza, automoción).
   Comparten barra .mtz-top, conmutadores .mtz-sw y leyenda .ley. Colores con significado: verde lo suyo, azul Google, ámbar IA, rayas la competencia. */
/* resultados de Google · .gs */
.hx .gs{background:var(--s0);border:1px solid var(--line)}
.hx .gs-cuerpo{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr)}
.hx .gs-izq{padding:18px 20px 20px;border-right:1px solid var(--line);display:grid;gap:14px;align-content:start}
.hx .gs-chips{display:flex;flex-wrap:wrap;gap:8px}
.hx .gs-chips button{padding:7px 11px;background:transparent;border:1px solid var(--line2);color:var(--ink3);font:500 12px/1.2 var(--sans);cursor:pointer;transition:border-color .3s,color .3s}
.hx .gs-chips button[aria-pressed=true]{border-color:var(--ink3);color:var(--ink1);background:var(--s2)}
.hx .gs-caja{display:flex;align-items:center;gap:10px;padding:11px 14px;border:1px solid var(--line2);background:var(--s1);font:400 15px/1.3 var(--sans);color:var(--ink1);min-height:46px}
.hx .gs-caja svg{flex:0 0 16px;width:16px;height:16px;stroke:var(--ink4);fill:none;stroke-width:1.4}
.hx .gs-caja .cur{width:1px;height:18px;background:var(--ink3);animation:gscur 1s steps(1) infinite}
@keyframes gscur{50%{opacity:0}}
.hx .gs-res{display:grid;gap:2px}
.hx .gs-fila{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:4px 12px;align-items:center;padding:11px 12px;background:var(--s1);border-left:3px solid transparent;transition:background .4s,border-color .4s,opacity .4s}
.hx .gs-fila .fav{width:18px;height:18px;border:1px solid var(--line2);grid-row:span 2}
.hx .gs-fila .dom{font:500 11.5px/1.2 var(--mono);letter-spacing:.03em;color:var(--ink4)}
.hx .gs-fila .tit{grid-column:2;font:500 15px/1.3 var(--sans);color:var(--google)}
.hx .gs-fila .tag{grid-row:span 2;font:500 10px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink4);padding:5px 7px;border:1px solid var(--line2);white-space:nowrap}
.hx .gs-fila.otro .fav{background:repeating-linear-gradient(135deg,var(--otros) 0 2px,transparent 2px 4px)}
.hx .gs-fila.anuncio .tag{color:var(--ia);border-color:var(--ia)}
.hx .gs-fila.suya{border-left-color:var(--propio);background:var(--propio-soft,var(--s2))}
.hx .gs-fila.suya .fav{background:var(--propio);border-color:var(--propio)}
.hx .gs-fila.suya .tag{color:var(--propio);border-color:var(--propio)}
.hx .gs-fila.entra{animation:gsentra .6s cubic-bezier(.2,.7,.2,1) both}
@keyframes gsentra{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.hx .gs-pie{font-size:13px;color:var(--ink4);margin:2px 0 0}
.hx .gs-ia{padding:16px 18px;background:var(--s1);border-left:3px solid var(--ia);display:grid;gap:10px}
.hx .gs-ia p{margin:0;font-size:15px;line-height:1.55;color:var(--ink2)}
.hx .gs-ia ol{margin:0;padding-left:20px;display:grid;gap:6px;font-size:15px;color:var(--ink2)}
.hx .gs-ia ol b{color:var(--ink1);font-weight:500}
.hx .gs-ia ol li.suya b{color:var(--propio)}
.hx .gs-fuentes{display:flex;flex-wrap:wrap;gap:6px}
.hx .gs-fuentes span{font:500 11px/1 var(--mono);padding:5px 7px;border:1px solid var(--line2);color:var(--ink4)}
.hx .gs-fuentes span.suya{border-color:var(--propio);color:var(--propio)}
.hx .gs-der{padding:18px 20px;display:grid;gap:14px;align-content:start}
.hx .veredicto-art{display:grid;gap:8px;padding:16px;border:1px solid var(--line);background:var(--s1)}
.hx .veredicto-art .lab{font:500 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink4)}
.hx .veredicto-art b{font:500 22px/1.2 var(--sans);color:var(--ink1)}
.hx .veredicto-art b.bien{color:var(--propio)}
.hx .veredicto-art p{margin:0;font-size:14px;color:var(--ink3);line-height:1.5}
/* mapa de su zona · .zona */
.hx .zona{background:var(--s0);border:1px solid var(--line)}
.hx .zona-cuerpo{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}
.hx .zona-mapa{position:relative;border-right:1px solid var(--line);background:var(--s1);min-height:420px;overflow:hidden}
.hx .zona-mapa svg{position:absolute;inset:0;width:100%;height:100%}
.hx .zona-mapa .calle{fill:none;stroke:var(--line2);stroke-width:1;vector-effect:non-scaling-stroke}
.hx .zona-mapa .calle.may{stroke:var(--ink4);stroke-opacity:.45;stroke-width:1.4}
.hx .zona-mapa .rio{fill:none;stroke:var(--google);stroke-opacity:.35;stroke-width:6;vector-effect:non-scaling-stroke}
.hx .zona-mapa .radio{fill:none;stroke:var(--propio);stroke-opacity:.45;stroke-dasharray:3 5;stroke-width:1;vector-effect:non-scaling-stroke}
.hx .zona-pin{position:absolute;transform:translate(-50%,-100%);border:0;background:none;padding:0;cursor:pointer;display:grid;justify-items:center;gap:4px}
.hx .zona-pin .pt{width:14px;height:14px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--s2);border:1px solid var(--ink4);transition:background .4s,border-color .4s,transform .4s}
.hx .zona-pin .nm{font:500 10.5px/1 var(--mono);letter-spacing:.04em;color:var(--ink3);background:var(--s0);padding:3px 5px;border:1px solid var(--line);white-space:nowrap}
.hx .zona-pin.otro .pt{background:repeating-linear-gradient(135deg,var(--otros) 0 2px,var(--s2) 2px 4px)}
.hx .zona-pin.suya .pt{background:var(--propio);border-color:var(--propio)}
.hx .zona-pin.suya .nm{color:var(--propio);border-color:var(--propio)}
.hx .zona-pin.top .pt{transform:rotate(-45deg) scale(1.35)}
.hx .zona-pin.top::after{content:"";position:absolute;left:50%;bottom:-2px;width:26px;height:26px;margin-left:-13px;border-radius:50%;border:1px solid var(--google);opacity:0;animation:zonapulso 2.4s ease-out infinite}
.hx .zona-pin.sel .nm{color:var(--ink1);border-color:var(--ink3)}
@keyframes zonapulso{0%{transform:scale(.4);opacity:.8}100%{transform:scale(1.6);opacity:0}}
.hx .zona-der{padding:18px 20px;display:grid;gap:14px;align-content:start}
.hx .zona-pack{display:grid;gap:2px}
.hx .zona-pack li{list-style:none;display:grid;grid-template-columns:24px minmax(0,1fr);gap:2px 10px;padding:10px 12px;background:var(--s1);border-left:3px solid transparent}
.hx .zona-pack{margin:0;padding:0}
.hx .zona-pack .n{grid-row:span 2;font:500 13px/1.4 var(--mono);color:var(--google)}
.hx .zona-pack b{font:500 15px/1.3 var(--sans);color:var(--ink1)}
.hx .zona-pack span{font-size:13px;color:var(--ink4)}
.hx .zona-pack li.suya{border-left-color:var(--propio)}
.hx .zona-pack li.suya b{color:var(--propio)}
.hx .zona-ficha{padding:14px 16px;border:1px solid var(--line);display:grid;gap:8px}
.hx .zona-ficha b{font:500 16px/1.3 var(--sans);color:var(--ink1)}
.hx .zona-ficha ul{margin:0;padding:0;list-style:none;display:grid;gap:5px}
.hx .zona-ficha li{font-size:13.5px;color:var(--ink3);display:flex;gap:8px}
.hx .zona-ficha li::before{content:"";flex:0 0 7px;height:7px;margin-top:6px;background:var(--line2)}
.hx .zona-ficha li.si::before{background:var(--propio)}
.hx :is(.gs-chips button,.zona-pin):focus-visible{outline:2px solid var(--ink1);outline-offset:2px}
@media (max-width:900px){.hx .gs-cuerpo,.hx .zona-cuerpo{grid-template-columns:1fr}.hx .gs-izq,.hx .zona-mapa{border-right:0;border-bottom:1px solid var(--line)}.hx .zona-mapa{min-height:340px}}
@media (max-width:560px){.hx .gs-fila{grid-template-columns:18px minmax(0,1fr)}.hx .gs-fila .tag{grid-row:auto;grid-column:2;justify-self:start}.hx .zona-pin .nm{display:none}.hx .zona-pin.suya .nm,.hx .zona-pin.sel .nm{display:block}}
@media (prefers-reduced-motion:reduce){.hx .gs-fila.entra,.hx .zona-pin.top::after,.hx .gs-caja .cur{animation:none}}
/* ── HX · campos cuánticos y trazo fino (0.103.0; 0.104.0: todos los fondos de las páginas HX pasan a canvas — orbital propio + onda, traza y nivel) ──
   Jesús: «OK a los trazos finos en todas las creaciones. Me gusta orbitales, en cada página uno nuevo».
   El orbital de cada página vive en <canvas class="campo" data-orb> (al final de assets/js/cortex-motion.js). Las figuras SVG que quedan se afinan aquí:
   su escala crece con la sección (slice), así que el grosor se fija en unidades pequeñas para que en pantalla quede entre 0,5 y 1,5 px. */
.hx section.banner>.campo,.hx .vdhero>.campo{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;display:block;
  -webkit-mask-image:linear-gradient(90deg,transparent 0%,transparent 28%,#000 68%),linear-gradient(180deg,transparent 0%,#000 12%,#000 88%,transparent 100%);
  mask-image:linear-gradient(90deg,transparent 0%,transparent 28%,#000 68%),linear-gradient(180deg,transparent 0%,#000 12%,#000 88%,transparent 100%);
  -webkit-mask-composite:source-in;mask-composite:intersect}
.hx section.cierre>.campo[data-orb]{opacity:.85;-webkit-mask-image:radial-gradient(ellipse 55% 70% at 52% 50%,#000 30%,transparent 78%);mask-image:radial-gradient(ellipse 55% 70% at 52% 50%,#000 30%,transparent 78%)}
.hx .vdhero:has(>.campo){position:relative;overflow:hidden}
.hx section:has(>.campo)>.wrap{position:relative;z-index:1}
.hx .bgfig .b :is(path,line,polyline,polygon,circle,ellipse,rect){stroke-width:.3}
.hx .bgfig .a :is(path,line,polyline,polygon,circle,ellipse,rect){stroke-width:.45}
.hx .bgfig .a :is(.pulso,.traza,.onda){stroke-width:.5}

/* ============================================================
   HX · ficha de proyecto v2 · «Casos de éxito» · tema 0.113.0 · 28-09-2026 · prefijo .hx.fpr
   Validada por Jesús sobre Novara Industrial (single-proyecto.php). Solo lo propio de la ficha; lo común ya está en el bloque HX.
   Se aplica a las 39 fichas del CPT proyecto; el índice /proyectos/ sigue con el CSS del plugin.
   ============================================================ */
.hx.fpr .vdhero .txt{max-width:760px}
.hx.fpr .vdhero h1.cur>span:not(.cx-w){max-width:52ch}
/* marco de captura (norma 6 bis): hueco, paspartú 12/30, barra con etiqueta a la izquierda y puntos a la derecha; duotono solo sobre la captura */
.hx.fpr .shot,.hx.fpr .pareja .pc,.hx.fpr .pareja .mv{display:block;position:relative;background:var(--s2);border:1px solid var(--line);padding:30px 12px 12px;min-width:0}
.hx.fpr .shot::before,.hx.fpr .pareja .pc::before,.hx.fpr .pareja .mv::before{content:"";position:absolute;right:12px;top:12px;width:36px;height:6px;background:radial-gradient(circle,var(--ink4) 0 2px,transparent 2.5px) 0 0/12px 6px repeat-x;opacity:.55}
.hx.fpr .cod{position:absolute;left:12px;top:9px;font:500 10px/12px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink4);max-width:calc(100% - 70px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hx.fpr .lienzo{display:block;position:relative;border:1px solid var(--line);overflow:hidden;background:var(--s1)}
.hx.fpr .lienzo img{display:block;width:100%;max-width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;object-position:left top;filter:grayscale(1) contrast(1.06) brightness(.97);transition:filter .6s}
.hx.fpr .mv .lienzo img{aspect-ratio:390/844;object-position:top} /* 0.113.2: sin proporción fija el alto se disparaba (1500 px) */
.hx.fpr .tono{position:absolute;inset:0;background:var(--propio);mix-blend-mode:color;opacity:.62;transition:opacity .6s;pointer-events:none}
.hx.fpr .shot:hover img,.hx.fpr .pareja:hover img{filter:none}
.hx.fpr .shot:hover .tono,.hx.fpr .pareja:hover .tono{opacity:0}
/* la web entregada, bajo la cabecera de cuatro elementos: dos marcos con hueco */
.hx.fpr .pareja{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.27fr);gap:clamp(14px,1.8vw,24px);align-items:start;margin-top:18px}
.hx.fpr .pareja .pie{grid-column:1/-1;display:block;font:500 11px/1.5 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink4)}
.hx.fpr .pareja .pie b{display:block;color:var(--ink2);font-weight:500}
.hx.fpr .pareja.sola{grid-template-columns:minmax(0,1fr)}
@media (max-width:900px){.hx.fpr .pareja{grid-template-columns:1fr}.hx.fpr .pareja .mv{width:min(100%,320px)}}
/* resumen: columnas abiertas (no repetir rejilla de celdas antes de las cifras) */
.hx.fpr .res3{display:grid;grid-template-columns:repeat(3,1fr);gap:0 clamp(24px,4vw,56px);background:none;border:0;border-top:1px solid var(--line)}
.hx.fpr .res3>div{background:none;padding:22px 0 0;grid-template-columns:1fr}
@media (max-width:900px){.hx.fpr .res3{grid-template-columns:1fr;gap:0}.hx.fpr .res3>div{padding:18px 0;border-top:1px solid var(--line)}.hx.fpr .res3>div:first-child{border-top:0}.hx.fpr .res3 .n{display:block}}
/* banda de registro bajo la cabecera */
.hx.fpr .registro{display:flex;flex-wrap:wrap;gap:8px 28px;margin:0;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font:500 11px/1.5 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink4)}
.hx.fpr .registro b{font-weight:500;color:var(--ink2)}
/* informe técnico */
.hx.fpr .lh{display:grid;gap:10px}
.hx.fpr .lh div{display:grid;grid-template-columns:170px 1fr 64px;gap:14px;align-items:center;font-size:15px;color:var(--ink2)}
.hx.fpr .lh i{display:block;height:14px;background:var(--google);transform-origin:left center;opacity:.9}
.hx.fpr .lh em{font:500 15px var(--mono);color:var(--ink1);text-align:right;font-style:normal;font-variant-numeric:tabular-nums}
.hx.fpr .lh .pista{grid-column:1/-1;position:relative;height:1px;background:var(--line);margin:2px 0 4px}
@media (max-width:560px){.hx.fpr .lh div{grid-template-columns:110px 1fr 48px;font-size:13.5px}}
.hx.fpr .kpis .lab{font:500 11px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase}
.hx.fpr .kpis .src{font-size:12.5px;color:var(--ink4)}
/* recorrido por la web */
.hx.fpr .paso{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:clamp(24px,4vw,56px);align-items:center;padding:clamp(22px,3vw,36px) 0;border-top:1px solid var(--line)}
.hx.fpr .paso:last-of-type{border-bottom:1px solid var(--line)}
.hx.fpr .paso.r .shot{order:2}
.hx.fpr .paso .tx{display:grid;gap:12px;align-content:center}
.hx.fpr .paso .tx b{font:500 clamp(20px,1.9vw,24px)/1.25 var(--sans);letter-spacing:-.012em;color:var(--ink1)}
.hx.fpr .paso .tx p{margin:0;font-size:15.5px;line-height:1.6;color:var(--ink2);max-width:52ch}
.hx.fpr .paso .n{font:500 11px/1 var(--mono);letter-spacing:.16em;color:var(--ink4)}
.hx.fpr .shot.mv{width:min(100%,320px);justify-self:center}
.hx.fpr .paso .tags{display:flex;flex-wrap:wrap;gap:6px}
@media (max-width:900px){.hx.fpr .paso{grid-template-columns:1fr}.hx.fpr .paso.r .shot{order:0}}
/* el proyecto en línea: bloque destacado, único enlace de salida */
.hx.fpr .visita{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:clamp(20px,3vw,40px);align-items:center;border:1px solid var(--line2);border-left:3px solid var(--propio);background:var(--s1);padding:clamp(22px,3vw,36px)}
.hx.fpr .visita .vt{display:grid;gap:12px}
.hx.fpr .visita .vt b{font:500 clamp(24px,2.4vw,32px)/1.15 var(--sans);letter-spacing:-.015em;color:var(--ink1)}
.hx.fpr .visita .vt p:not(.k){margin:0;font-size:15.5px;line-height:1.6;color:var(--ink2);max-width:56ch}
.hx.fpr .visita .va{display:grid;gap:10px;justify-items:center}
.hx.fpr .visita .va .btn{width:100%;text-align:center}
@media (max-width:900px){.hx.fpr .visita{grid-template-columns:1fr}}
/* siguiente paso */
.hx.fpr .sig2{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(24px,4vw,56px);align-items:start}
.hx.fpr .sig2 p.tx{margin:0;font-size:16.5px;line-height:1.65;color:var(--ink2);max-width:62ch}
@media (max-width:900px){.hx.fpr .sig2{grid-template-columns:1fr}}
.hx.fpr .datos b small{display:block;font:500 11px/1.6 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink4)}
.hx.fpr .dual.d3{grid-template-columns:repeat(3,1fr)}
@media (max-width:900px){.hx.fpr .dual.d3{grid-template-columns:1fr}}

/* recorrido de decisión · .rec (0.116.0, 29-09-2026: construcción, energía; después defensa) */
.hx .rec{background:var(--s0);border:1px solid var(--line)}
.hx .rec-cli{padding:14px 20px 0}
.hx .rec-pasos{list-style:none;margin:0;padding:18px 20px 6px;display:grid;grid-template-columns:repeat(var(--np,5),minmax(0,1fr));gap:0;position:relative}
.hx .rec-pasos::before{content:"";position:absolute;left:calc(20px + (100% - 40px)/var(--np,5)/2);right:calc(20px + (100% - 40px)/var(--np,5)/2);top:31px;height:1px;background:var(--line2)}
.hx .rec-pasos button{position:relative;width:100%;background:none;border:0;padding:6px 6px 10px;display:grid;justify-items:center;gap:6px;cursor:pointer;color:var(--ink3);text-align:center}
.hx .rec-pasos .pt{width:14px;height:14px;border:1px solid var(--ink4);background:var(--s0);transform:rotate(45deg);transition:background .4s,border-color .4s,transform .4s}
.hx .rec-pasos b{font:500 13px/1.25 var(--sans);color:var(--ink2)}
.hx .rec-pasos span{font:400 11.5px/1.35 var(--sans);color:var(--ink4)}
.hx .rec-pasos button.u .pt{background:var(--propio);border-color:var(--propio)}
.hx .rec-pasos button.o .pt{background:repeating-linear-gradient(135deg,var(--otros) 0 2px,var(--s0) 2px 4px);border-color:var(--ink4)}
.hx .rec-pasos button.n .pt{background:var(--s0);border-style:dashed}
.hx .rec-pasos button[aria-pressed=true] .pt{transform:rotate(45deg) scale(1.45)}
.hx .rec-pasos button[aria-pressed=true] b{color:var(--ink1)}
.hx .rec-pasos button[aria-pressed=true]::after{content:"";position:absolute;left:12%;right:12%;bottom:0;height:2px;background:var(--ink1)}
.hx .rec-cuerpo{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);border-top:1px solid var(--line)}
.hx .rec-izq{padding:18px 20px 20px;border-right:1px solid var(--line);display:grid;gap:14px;align-content:start}
.hx .rec-der{padding:18px 20px;display:grid;gap:14px;align-content:start}
.hx .rec-suma{margin:0;font-size:14px;line-height:1.5;color:var(--ink3)}
.hx .rec-suma b{color:var(--ink1);font-weight:500}
.hx .ley .n{background:var(--s0);border:1px dashed var(--ink4)}
.hx .rec-pasos button:focus-visible{outline:2px solid var(--ink1);outline-offset:2px}
@media (max-width:900px){.hx .rec-cuerpo{grid-template-columns:1fr}.hx .rec-izq{border-right:0;border-bottom:1px solid var(--line)}.hx .rec-pasos{grid-template-columns:1fr;gap:2px;padding:12px 20px 4px}.hx .rec-pasos::before{display:none}.hx .rec-pasos button{grid-template-columns:22px minmax(0,1fr);justify-items:start;text-align:left;gap:2px 10px;padding:8px 6px}.hx .rec-pasos .pt{grid-row:span 2;margin-top:4px}.hx .rec-pasos button[aria-pressed=true]::after{left:0;right:auto;width:3px;height:100%;top:0;bottom:auto}}

/* conversación con ChatGPT · .chat (0.117.0, 29-09-2026: educación, turismo; después tecnológico) */
.hx .chat{background:var(--s0);border:1px solid var(--line)}
.hx .chat-cli{padding:14px 20px 14px}
.hx .chat-cuerpo{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);border-top:1px solid var(--line)}
.hx .chat-hilo{padding:18px 20px 20px;border-right:1px solid var(--line);display:grid;gap:12px;align-content:start;min-height:380px}
.hx .bu{max-width:88%;padding:12px 14px;font:400 15px/1.5 var(--sans);color:var(--ink2)}
.hx .bu.yo{justify-self:end;background:var(--s2);border:1px solid var(--line2);color:var(--ink1)}
.hx .bu.yo .cur{display:inline-block;width:1px;height:16px;background:var(--ink3);vertical-align:-3px;margin-left:2px;animation:gscur 1s steps(1) infinite}
.hx .bu.ia{justify-self:start;max-width:100%;width:100%;background:var(--s1);border-left:3px solid var(--ia);display:grid;gap:10px}
.hx .bu.ia .qn{font:500 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ia)}
.hx .bu.ia p{margin:0}
.hx .bu.ia ol{margin:0;padding-left:20px;display:grid;gap:6px}
.hx .bu.ia ol b{color:var(--ink1);font-weight:500}
.hx .bu.ia ol li.suya b{color:var(--propio)}
.hx .bu.esc{width:auto;display:flex;gap:5px;padding:14px 16px}
.hx .bu.esc i{width:6px;height:6px;background:var(--ia);opacity:.35;animation:chatpunto 1.2s infinite}
.hx .bu.esc i:nth-child(2){animation-delay:.2s}.hx .bu.esc i:nth-child(3){animation-delay:.4s}
@keyframes chatpunto{0%,80%,100%{opacity:.35}40%{opacity:1}}
.hx .bu.entra{animation:gsentra .5s cubic-bezier(.2,.7,.2,1) both}
.hx .chat-der{padding:18px 20px;display:grid;gap:14px;align-content:start}
.hx .chat-pregs{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.hx .chat-pregs button{width:100%;text-align:left;background:var(--s1);border:0;border-left:3px solid transparent;padding:10px 12px;font:400 13.5px/1.4 var(--sans);color:var(--ink3);cursor:pointer;display:grid;grid-template-columns:12px minmax(0,1fr);gap:10px;align-items:start;transition:color .3s,border-color .3s}
.hx .chat-pregs .pt{width:9px;height:9px;margin-top:5px;border:1px solid var(--ink4);background:var(--s0);transform:rotate(45deg)}
.hx .chat-pregs button.u .pt{background:var(--propio);border-color:var(--propio)}
.hx .chat-pregs button.o .pt{background:repeating-linear-gradient(135deg,var(--otros) 0 2px,var(--s0) 2px 4px)}
.hx .chat-pregs button.n .pt{border-style:dashed}
.hx .chat-pregs button[aria-pressed=true]{border-left-color:var(--ink1);color:var(--ink1)}
.hx .chat-pregs button:focus-visible{outline:2px solid var(--ink1);outline-offset:2px}
@media (max-width:900px){.hx .chat-cuerpo{grid-template-columns:1fr}.hx .chat-hilo{border-right:0;border-bottom:1px solid var(--line);min-height:0}.hx .bu{max-width:94%}}

/* coste de no aparecer · .coste (0.117.0, 29-09-2026: finanzas, logística) */
.hx .coste{background:var(--s0);border:1px solid var(--line)}
.hx .coste-cuerpo{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr)}
.hx .coste-izq{padding:18px 20px 20px;border-right:1px solid var(--line);display:grid;gap:14px;align-content:start}
.hx .coste-in{display:grid;gap:18px}
.hx .coste-in label{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;align-items:end}
.hx .coste-in .lb{font:400 14px/1.4 var(--sans);color:var(--ink2)}
.hx .coste-in .lb em{font:500 10px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;font-style:normal;color:var(--ia);border:1px solid var(--ia);padding:3px 5px;margin-left:6px;vertical-align:2px}
.hx .coste-in output{font:500 18px/1.2 var(--sans);color:var(--ink1);white-space:nowrap}
.hx .coste-in input[type=range]{grid-column:1/-1;width:100%;margin:0;accent-color:var(--propio);height:22px;cursor:pointer}
.hx .coste-in input[type=range]:focus-visible{outline:2px solid var(--ink1);outline-offset:2px}
.hx .coste-der{padding:18px 20px;display:grid;gap:14px;align-content:start}
.hx .coste-kpi{display:grid;gap:4px;padding:14px 16px;border:1px solid var(--line);background:var(--s1)}
.hx .coste-kpi .lab{font:500 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink4)}
.hx .coste-kpi b{font:500 clamp(22px,2.2vw,28px)/1.15 var(--sans);letter-spacing:-.012em;color:var(--ink1)}
.hx .coste-kpi span:not(.lab){font-size:14px;color:var(--ink3)}
.hx .coste-barra{display:flex;height:16px;gap:2px}
.hx .coste-barra i{display:block;min-width:2px;transition:flex .5s cubic-bezier(.2,.7,.2,1)}
.hx .coste-barra .u{background:var(--propio)}
.hx .coste-barra .o{background:repeating-linear-gradient(135deg,var(--otros) 0 2px,var(--s1) 2px 4px)}
.hx .coste-barra .n{border:1px dashed var(--ink4);background:var(--s0)}
.hx .coste-rep{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.hx .coste-rep li{display:grid;grid-template-columns:14px minmax(0,1fr) auto;gap:10px;align-items:center;padding:9px 12px;background:var(--s1);font:400 14px/1.3 var(--sans);color:var(--ink3)}
.hx .coste-rep b{font-weight:500;color:var(--ink1);font-variant-numeric:tabular-nums}
.hx .coste-rep .pt{width:10px;height:10px;border:1px solid var(--ink4);background:var(--s0);transform:rotate(45deg)}
.hx .coste-rep li.u .pt{background:var(--propio);border-color:var(--propio)}
.hx .coste-rep li.u span,.hx .coste-rep li.u b{color:var(--propio)}
.hx .coste-rep li.o .pt{background:repeating-linear-gradient(135deg,var(--otros) 0 2px,var(--s0) 2px 4px)}
.hx .coste-rep li.n .pt{border-style:dashed}
@media (max-width:900px){.hx .coste-cuerpo{grid-template-columns:1fr}.hx .coste-izq{border-right:0;border-bottom:1px solid var(--line)}}

/* ── /ley-ia/ · Ley IA · patrón HX de sector (.hx.sec.li) · tema 0.122.0 · 15-10-2026 · rectificado en 0.122.5 (cuestionario por indicadores, Diagnóstico, privacidad y fecha de revisión) ── */
/* 03 · autodiagnóstico por indicadores (12 casillas) */
.hx .li-test{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .li-test>*{background:color-mix(in srgb,var(--s1) 94%,transparent);padding:clamp(20px,2.6vw,30px)}
.hx .li-test .pregs{margin:0;padding:0;list-style:none;display:grid;gap:8px;counter-reset:q}
.hx .li-test .pregs li{counter-increment:q}
.hx .li-test .pregs label{display:grid;grid-template-columns:30px 22px 1fr;gap:10px;align-items:start;padding:11px 14px;border:1px solid var(--line);background:var(--s0);font-size:15px;color:var(--ink2);cursor:pointer;transition:border-color .2s}
.hx .li-test .pregs label::before{content:counter(q,decimal-leading-zero);font:500 11px/1.9 var(--mono);color:var(--ink4);letter-spacing:.08em}
.hx .li-test .pregs input{margin:3px 0 0;width:17px;height:17px;accent-color:var(--propio)}
.hx .li-test .pregs label:has(input:checked){border-color:var(--propio);color:var(--ink1)}
.hx .li-test .pregs li[data-alto] label:has(input:checked){border-color:var(--ia)}
.hx .li-test .res{display:grid;gap:14px;align-content:start}
.hx .li-test .res>.lab{font:500 10.5px/1.3 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink3)}
.hx .li-test .lis{display:grid;gap:14px}
.hx .li-test .lis:empty{display:none}
.hx .li-test .lis>div{display:grid;gap:7px}
.hx .li-test .lis .lab{font:500 10.5px/1.3 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--propio)}
.hx .li-test .lis .mirar .lab{color:var(--ia)}
.hx .li-test .lis .fuera .lab{color:var(--ink3)}
.hx .li-test .lis ul{margin:0;padding:0;list-style:none;display:grid;gap:7px}
.hx .li-test .lis li{display:grid;grid-template-columns:14px 1fr;gap:8px;font-size:14.5px;line-height:1.45;color:var(--ink2)}
.hx .li-test .lis li::before{content:"";width:7px;height:7px;margin-top:7px;border:1px solid var(--ink3)}
.hx .li-test .lis .mirar li::before{border-color:var(--ia);background:var(--ia-soft)}
.hx .li-test .lis .fuera li::before{border-color:var(--ink4)}
.hx .li-test .aviso{margin:0;font:500 11px/1.5 var(--mono);letter-spacing:.04em;color:var(--ink3)}
.hx .li-test .veredicto.alto{border-left-color:var(--ia)}
/* 04 · planes · tarjetas separadas; cabecera en recuadro (nivel, nombre, lema); cuerpo; precio en dos conceptos rotulados; plazo; CTA */
.hx .li-niv{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,1.6vw,20px);align-items:stretch}
.hx .li-niv>div{display:flex;flex-direction:column;min-width:0;border:1px solid var(--line);background:color-mix(in srgb,var(--s0) 55%,var(--s1))}
.hx .li-niv>div.rec{border-color:var(--ink3)}
.hx .li-niv .plan-cab{display:grid;gap:6px;padding:18px 22px 16px;background:var(--s2);border-bottom:1px solid var(--line)}
.hx .li-niv .rec .plan-cab{background:color-mix(in srgb,var(--ink1) 6%,var(--s1));border-bottom-color:var(--line2)}
.hx .li-niv .n{font:500 10.5px/1 var(--mono);letter-spacing:.14em;color:var(--ink4)}
.hx .li-niv .rec .n{color:var(--ink1)}
.hx .li-niv .plan-cab h3{margin:0;font:500 24px/1.15 var(--sans);color:var(--ink1);letter-spacing:-.01em}
.hx .li-niv .lema{font-size:15px;line-height:1.35;color:var(--ink2)}
.hx .li-niv .plan-cu{flex:1;display:grid;grid-template-rows:auto 1fr auto auto auto auto;gap:14px;padding:18px 22px 22px}
.hx .li-niv .para{margin:0;font-size:14.5px;color:var(--ink3)}
.hx .li-niv ul{margin:0;padding:0;list-style:none;display:grid;gap:7px;align-content:start}
.hx .li-niv li{display:grid;grid-template-columns:14px 1fr;gap:8px;font-size:14.5px;color:var(--ink2)}
.hx .li-niv li::before{content:"";width:7px;height:7px;margin-top:8px;border:1px solid var(--ink3)}
.hx .li-niv .plan-precio{margin:0;display:grid;border-top:1px solid var(--line)}
.hx .li-niv .plan-precio div{display:grid;gap:6px;padding:12px 0;border-bottom:1px solid var(--line)}
.hx .li-niv .plan-precio dt{font:500 10.5px/1.3 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink3)}
.hx .li-niv .plan-precio dd{margin:0;display:flex;align-items:baseline;gap:8px}
.hx .li-niv .plan-precio dd span{font:500 11px/1 var(--mono);letter-spacing:.08em;color:var(--ink3)}
.hx .li-niv .plan-precio dd em{font:500 30px/1 var(--sans);font-style:normal;color:var(--ink1);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.hx .li-niv .plan-precio dd strong{font:500 20px/1 var(--sans);color:var(--ink1);letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.hx .li-niv .listo{font:500 11px/1.4 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink3)}
.hx .li-niv .li-cta{justify-self:stretch;justify-content:center;text-align:center;margin-top:4px}
.hx .li-niv .li-cta-pie{font:500 10.5px/1.3 var(--mono);letter-spacing:.06em;color:var(--ink3);text-align:center}
.hx .li-niv .plan-precio dd em.med{font-size:24px}
.hx .li-diag{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px 28px;align-items:center;margin-top:clamp(14px,1.6vw,20px);padding:16px 22px;border:1px solid var(--line);border-left:3px solid var(--ink3);background:color-mix(in srgb,var(--s0) 55%,var(--s1))}
.hx .li-diag p{margin:0;font-size:15px;line-height:1.5;color:var(--ink2);max-width:78ch}
.hx .li-diag p b{font-weight:500;color:var(--ink1)}
.hx .li-diag .dg{display:grid;gap:8px;justify-items:end}
.hx .li-diag .lb{font:500 10.5px/1.3 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink3)}
.hx .li-priv{margin:10px 0 0;font-size:12.5px;line-height:1.5;color:var(--ink3);max-width:62ch}
.hx .li-priv a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.hx .li-diag em{font:500 26px/1 var(--sans);font-style:normal;color:var(--ink1);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.hx .li-rev{margin:16px 0 0;font:500 11px/1.55 var(--mono);letter-spacing:.03em;color:var(--ink3);max-width:110ch}
.hx .li-rev a{color:var(--ink3);text-decoration:underline;text-underline-offset:2px}
#niveles .foot b{font-weight:500;color:var(--ink2)}
/* 08 · glosario corto */
.hx .li-glo{margin:0;display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line)}
.hx .li-glo div{background:color-mix(in srgb,var(--s0) 55%,var(--s1));padding:16px 18px;display:grid;gap:6px;align-content:start}
.hx .li-glo dt{font:500 16.5px/1.3 var(--sans);color:var(--ink1)}
.hx .li-glo dd{margin:0;font-size:14.5px;color:var(--ink3);max-width:60ch}
@media (max-width:900px){
  .hx .li-niv{grid-template-columns:1fr}
  .hx .li-test,.hx .li-glo,.hx .li-diag{grid-template-columns:1fr}
  .hx .li-diag .dg{justify-items:start}
}
@media (max-width:560px){
  .hx .li-niv{grid-template-columns:1fr}
  .hx .li-test .pregs label{grid-template-columns:22px 1fr;font-size:14.5px}
  .hx .li-test .pregs label::before{display:none}
}

/* ── /colofon/ · Colofón · cómo está hecha esta web (.hx.cfn) · tema 0.122.3 · 15-10-2026 ──
   Página de documentación enlazada solo desde el pie (Jesús: «alojada en el footer, nada más»). Sin CTA.
   Reutiliza .vdhero, .cab, .two, .garant, .dual del sistema HX; aquí solo lo propio: muestras de color con significado, muestra tipográfica y titulares de tercer nivel. */
.hx.cfn .two{display:grid;align-items:start}
.hx.cfn .two h3{margin:0 0 8px;font:500 19px/1.3 var(--sans);color:var(--ink1);letter-spacing:-.005em}
.hx.cfn .two h3+.p{margin-bottom:22px}
.hx.cfn .two .p:last-child{margin-bottom:0}
.hx.cfn .cl{display:block;width:56px;height:6px;background:var(--propio)}
.hx.cfn .cl.g{background:var(--google)}
.hx.cfn .cl.i{background:var(--ia)}
.hx.cfn .cl.o{background:repeating-linear-gradient(135deg,var(--otros) 0 3px,transparent 3px 7px)}
.hx.cfn .nota{font-size:14.5px;color:var(--ink3);max-width:72ch}
.hx.cfn .nota a{color:var(--ink1)}
.hx.cfn code{font:400 .92em/1.4 var(--mono);color:var(--ink1)}
.hx.cfn .tipo{display:grid;gap:16px;align-content:center;padding:clamp(20px,3vw,32px);border:1px solid var(--line);background:var(--s1)}
.hx.cfn .tipo .tm{margin:0;font:500 clamp(24px,2.6vw,34px)/1.2 var(--sans);color:var(--ink1);letter-spacing:-.015em}
.hx.cfn .tipo .tm span{font-weight:400;color:var(--ink3)}
.hx.cfn .tipo .tn{margin:0;font:500 12.5px/1.5 var(--mono);letter-spacing:.14em;color:var(--ink3)}
.hx.cfn .comp b{color:var(--ink1)}
.hx.cfn .two .p a{color:var(--ink1);text-decoration:underline;text-underline-offset:3px}
.hx.cfn #movimiento .garant{grid-template-columns:1fr 1fr;gap:14px 40px;align-items:start}
.hx.cfn #autor .cab{width:min(100%,900px)}
.hx.cfn #autor h2.cur a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.hx.cfn .cfn-ir-w{display:flex;flex-wrap:wrap;gap:14px 40px;justify-self:start;margin-top:clamp(18px,2.4vw,28px)}
.hx.cfn .cfn-ir-n{margin:12px 0 0;font-size:14px;line-height:1.5;color:var(--ink3);max-width:64ch}
.hx.cfn .cfn-ir{display:inline-flex;width:max-content;align-items:center;gap:10px;font:500 15px/1.3 var(--mono);letter-spacing:.06em;color:var(--propio);text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:4px}
.hx.cfn .cfn-ir span{transition:transform .2s ease}
.hx.cfn .cfn-ir:hover span,.hx.cfn .cfn-ir:focus-visible span{transform:translateX(4px)}
@media (prefers-reduced-motion:reduce){.hx.cfn .cfn-ir span{transition:none}}
@media (max-width:760px){
  .hx.cfn .two{gap:28px}
  .hx.cfn #movimiento .garant{grid-template-columns:1fr;gap:10px}
}


/* ── Aviso de contenido sintético (art. 50.4 y 50.5 del Reglamento (UE) 2024/1689) · tema 0.122.6 · 15-10-2026 ──
   Jesús: «junto al reproductor… todo de forma muy discreta». Mono pequeño en gris, enlazado al colofón. */
.cx-sint{font:500 11px/1.45 var(--mono);letter-spacing:.04em;color:var(--ink3);text-decoration:none;border-bottom:1px solid var(--line2)}
.cx-sint:hover,.cx-sint:focus-visible{color:var(--ink1);border-color:var(--ink1)}
.hx .cx-sint-w{display:block;margin-top:8px}
.hx .vside .cx-sint-w{margin-top:-6px}

/* ── /presencia-web/ · Presencia Web · captación (.hx.sec.pw) · tema 0.123.0 · 16-10-2026 · oferta y formulario en la primera pantalla ── */
.hx.pw .vdhero .txt{gap:20px}
@media (min-width:901px){
  .hx.pw .vdhero>.wrap{grid-template-columns:minmax(0,1.12fr) minmax(340px,.88fr)!important;gap:clamp(32px,4.5vw,72px);align-items:center}   /* la oferta a la izquierda y el formulario a la derecha: la regla general de 0.104 deja la cabecera en una columna */
  .hx.pw .vdhero h1.cur{font-size:clamp(36px,3.7vw,54px)}   /* con el formulario al lado, el titular baja de 62,8 a ~50 px a 1366 para quedarse en tres líneas */
}
.hx.pw .pw-cuota{margin:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px}
.hx.pw .pw-cuota b{font:500 clamp(40px,4.4vw,58px)/1 var(--sans);letter-spacing:-.03em;color:var(--propio);font-variant-numeric:tabular-nums}
.hx.pw .pw-cuota span{font:500 16px/1.2 var(--sans);color:var(--ink2)}
.hx.pw .pw-cuota em{flex-basis:100%;font:500 12px/1.5 var(--mono);letter-spacing:.06em;font-style:normal;text-transform:uppercase;color:var(--ink3)}
.hx.pw .pw-ent{margin:0;font-size:16.5px;line-height:1.55;color:var(--ink2);max-width:58ch}
.hx.pw .pw-fichas{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
.hx.pw .pw-fichas li{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;border:1px solid var(--line2);background:var(--s1);font:500 12px/1 var(--mono);letter-spacing:.04em;color:var(--ink2)}
.hx.pw .pw-fichas li::before{content:"";width:7px;height:7px;background:var(--propio)}
.hx.pw .pw-pedir{position:relative;top:auto;z-index:1;display:grid;gap:14px}
.hx.pw .kdform{box-shadow:none}
.hx.pw .kdform .kdt{margin-bottom:0}
.hx.pw .kdform .pw-sub{margin:0 0 4px;font-size:14px;line-height:1.5;color:var(--ink3)}
.hx.pw .kdform .pw-l{display:grid;gap:6px}
.hx.pw .kdform .pw-dos{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:12px}   /* teléfono y correo en una fila; en móvil, uno bajo otro */
.hx.pw .kdform .priv.opc{color:var(--ink4)}
@media (max-width:560px){.hx.pw .kdform .pw-dos{grid-template-columns:1fr}}
.hx.pw .kdform .pw-rgpd summary{cursor:pointer;font-size:12px;color:var(--ink4)}
.hx.pw .kdform .pw-rgpd p{margin:6px 0 0;font-size:12px;line-height:1.5;color:var(--ink3)}
.hx.pw .kdform .pw-rgpd a,.hx.pw .kdform .priv a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.hx.pw .pw-alt{justify-self:start}
.hx.pw .pw-firma{display:grid;grid-template-columns:40px 1fr;gap:12px;align-items:center;font-size:13.5px;color:var(--ink3)}
.hx.pw .pw-firma img{width:40px;height:40px;object-fit:cover;filter:grayscale(1)}
.hx.pw .pw-firma b{color:var(--ink1);font-weight:500}
.hx.pw .ok.err{border-color:var(--ia)}
.hx.pw .salidas .kdform{border:0;padding:0;background:transparent}   /* en el cierre el recuadro ya lo pone .salidas */
.hx.pw .pw-inc{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.hx.pw .pw-inc>div{background:var(--s1);padding:22px;display:grid;gap:14px;align-content:start}
.hx.pw .pw-inc ul{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.hx.pw .pw-inc li{display:grid;grid-template-columns:18px 1fr;gap:10px;font-size:15.5px;line-height:1.5;color:var(--ink2)}
.hx.pw .pw-inc li::before{content:"";width:10px;height:10px;margin-top:7px;background:var(--propio)}
.hx.pw .pw-no{margin:18px 0 0;font-size:14px;line-height:1.55;color:var(--ink3)}
.hx.pw .pw-no b{color:var(--ink2);font-weight:500}
.hx.pw .pw-oferta{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(24px,4vw,56px);align-items:center}
.hx.pw .pw-oferta .head{display:grid;gap:18px}
.hx.pw .pw-tarjeta{display:grid;gap:14px;padding:clamp(22px,2.6vw,32px);border:1px solid var(--propio);background:var(--s1)}
.hx.pw .pw-big{margin:0;display:flex;align-items:baseline;gap:8px}
.hx.pw .pw-big b{font:500 clamp(52px,5.4vw,72px)/1 var(--sans);letter-spacing:-.035em;color:var(--ink1);font-variant-numeric:tabular-nums}
.hx.pw .pw-big span{font:500 16px/1.2 var(--sans);color:var(--ink2)}
.hx.pw .pw-dur{margin:-6px 0 0;font:500 12px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink3)}
.hx.pw .pw-dl{margin:0;display:grid;border-top:1px solid var(--line)}
.hx.pw .pw-dl div{display:grid;grid-template-columns:110px 1fr;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}
.hx.pw .pw-dl dt{font:500 10.5px/1.5 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink4)}
.hx.pw .pw-dl dd{margin:0;font-size:15px;line-height:1.45;color:var(--ink1)}
.hx.pw .pw-tarjeta .btn{width:100%;justify-content:center}
.hx.pw .pw-tarjeta .nota{margin:0;font-size:12.5px;line-height:1.5;color:var(--ink3);text-align:center}
@media (max-width:900px){.hx.pw .pw-inc,.hx.pw .pw-oferta{grid-template-columns:1fr}}
@media (max-width:560px){.hx.pw .pw-dl div{grid-template-columns:1fr;gap:4px}}

/* ═══════════════════════════════════════════════════════════════
   MOVIMIENTO v2 · tema 0.94.0 · 26-09-2026 · común a todas las páginas
   Lo activa assets/js/cortex-motion.js poniendo html.cx-mo; sin JS no actúa.
   Sustituye a la doctrina v1 (≤12 px, ≤400 ms) por decisión de Jesús.
   ═══════════════════════════════════════════════════════════════ */
html.cx-mo body,.cx-mo .hx,.cx-mo main{overflow-x:clip}
.cx-mo [data-rv]{opacity:0;transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1),filter .8s;transition-delay:calc(var(--i,0)*70ms)}
.cx-mo [data-rv="up"]{transform:translateY(38px)}
.cx-mo [data-rv="izq"]{transform:translateX(-44px)}
.cx-mo [data-rv="der"]{transform:translateX(44px)}
.cx-mo [data-rv="zoom"]{transform:scale(.94);filter:blur(6px)}
.cx-mo [data-rv].vis{opacity:1;transform:none;filter:none}
.cx-mo .cx-w{display:inline-block;opacity:0;transform:translateY(.55em) rotate(2deg);transition:opacity .6s,transform .7s cubic-bezier(.2,.7,.2,1);transition-delay:calc(var(--w,0)*38ms)}
.cx-mo .vis .cx-w,.cx-mo .cx-hd.vis .cx-w{opacity:1;transform:none}
.cx-mo .hx .k::before{width:0;transition:width .9s cubic-bezier(.7,0,.2,1) .15s}
.cx-mo .hx .k.vis::before{width:22px}
.cx-mo .cx-cel{position:relative}
.cx-mo .cx-cel::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--c-propio) 14%,transparent),transparent);transform:translateX(-100%);opacity:0}
.cx-mo .cx-cel.vis::after{animation:cxbarrido 1.1s cubic-bezier(.4,0,.2,1) calc(var(--i,0)*70ms + .25s) 1 backwards}
@keyframes cxbarrido{0%{opacity:1;transform:translateX(-100%)}100%{opacity:0;transform:translateX(100%)}}
.cx-mo .cx-crece{transform-origin:left center;transform:scaleX(0);transition:transform 1.2s cubic-bezier(.2,.7,.2,1) calc(var(--i,0)*90ms + .2s)}
.cx-mo .vis .cx-crece,.cx-mo .cx-crece.vis{transform:none}
.cx-mo .cx-barra{transform:scaleX(0);transition:transform 1.2s cubic-bezier(.2,.7,.2,1) calc(var(--i,0)*90ms + .2s)}
.cx-mo .cx-barra.vis{transform:scaleX(var(--bar,1))}
.cx-mo .cx-traza{stroke-dasharray:var(--len);stroke-dashoffset:var(--len);transition:stroke-dashoffset 1.8s cubic-bezier(.4,0,.2,1) calc(var(--i,0)*120ms)}
.cx-mo .vis .cx-traza,.cx-mo .cx-traza.vis{stroke-dashoffset:0}
.cx-mo .hx section.banner .bgfig{transform:translate3d(0,var(--py,0px),0) scale(1.08);will-change:transform}
.cx-prog{position:fixed;left:0;top:0;height:2px;width:100%;z-index:100001;background:var(--c-propio);transform-origin:0 50%;transform:scaleX(var(--p,0));pointer-events:none}
@media (hover:hover) and (pointer:fine){
  .cx-mo .cx-cel{transition:background-color .3s,transform .3s cubic-bezier(.2,.7,.2,1)}
  .cx-mo .cx-cel.vis:hover{transform:translateY(-3px)}
  .cx-mo .hx .cx-cel:hover{background-color:var(--s1)}
  .cx-mo .cx-cel .cx-luz{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .3s;background:radial-gradient(260px circle at var(--mx,50%) var(--my,50%),color-mix(in srgb,var(--c-propio) 12%,transparent),transparent 70%)}
  .cx-mo .cx-cel:hover .cx-luz{opacity:1}
}
.cx-mo .hx .btn.sig{position:relative;overflow:hidden}
.cx-mo .hx .btn.sig::after{content:"";position:absolute;top:0;bottom:0;width:40%;left:-60%;background:linear-gradient(100deg,transparent,rgba(250,249,245,.28),transparent);transform:skewX(-18deg)}
.cx-mo .hx .btn.sig.vis::after{animation:cxbrillo 1.3s ease .6s 1}
@keyframes cxbrillo{to{left:130%}}
@media (prefers-reduced-motion:reduce){
  .cx-mo [data-rv]{transform:none!important;filter:none!important;transition:opacity .7s ease!important;transition-delay:calc(var(--i,0)*50ms)!important}
  .cx-mo .cx-w,.cx-mo .cx-crece,.cx-mo .cx-traza{opacity:1!important;transform:none!important;stroke-dashoffset:0!important;transition:none!important}
  .cx-mo .cx-barra{transform:scaleX(var(--bar,1))!important;transition:none!important}
  .cx-mo .hx .k::before{width:22px}.cx-prog,.cx-mo .cx-cel::after,.cx-mo .cx-cel .cx-luz{display:none}
  .cx-mo .hx section.banner .bgfig{transform:none}
}
