/* RAMPA — sitio. Todo valor sale de tokens/*.css (RAMPA Design System).
   Reglas del sistema que este archivo respeta: radio 0, línea de 1px (2px abre capítulo),
   sin sombras / blur / glow, un campo por pieza (portada), ángulo 37.1°, hover por
   inversión o volt (nunca opacidad), press solo color, señal solo para desviación.

   Desviaciones deliberadas, por accesibilidad (decididas en la crítica del 2026-09-20):
   · La micrografía que porta significado sube a 11–12px; los 10px quedan para esquinas decorativas.
   · El foco es tinta sobre papel y volt (la señal da ~2.6:1 ahí); la señal se usa solo sobre tinta.
   · Parpadeo y malla corren tres ciclos y se detienen (WCAG 2.2.2). */

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 76px; -webkit-text-size-adjust: 100%; scrollbar-color: var(--rmp-ink) var(--rmp-paper-2); }
body {
  margin: 0;
  background: var(--surface-page);
  color: var(--text-strong);
  font-family: var(--font-body);
  font-size: var(--type-body);
  line-height: var(--leading-body);
  -webkit-font-smoothing: antialiased;
  text-wrap: pretty;
  accent-color: var(--rmp-ink);
  caret-color: var(--rmp-ink);
}
h1, h2, h3, p, ol, dl, dd, figure { margin: 0; }
ol { padding: 0; list-style: none; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
button { font: inherit; }
[hidden] { display: none !important; }
::selection { background: var(--accent); color: var(--accent-on); }
:focus-visible { outline: 2px solid var(--rmp-ink); outline-offset: 3px; }
[data-theme="inverse"] :focus-visible { outline-color: var(--alert); }

.page { max-width: var(--page-max); margin-inline: auto; padding-inline: var(--page-pad); }
.skip { position: absolute; left: -9999px; top: 8px; z-index: 100; background: var(--rmp-ink); color: var(--rmp-paper); padding: 14px 18px; font-family: var(--font-mono); font-size: 12px; letter-spacing: .1em; text-transform: uppercase; }
.skip:focus { left: 8px; }

/* ---------- Tipografía ---------- */
.t-hero, .t-h1 {
  font-family: var(--font-display);
  font-weight: var(--weight-display);
  font-stretch: var(--stretch-display);
  letter-spacing: var(--tracking-display);
  line-height: var(--leading-display);
  text-wrap: balance;
}
.t-hero { font-size: clamp(40px, 6.6vw, 96px); line-height: .9; max-width: 13ch; }
.t-h1 { font-size: var(--type-h1); line-height: .94; }
.micro, .micro-sm {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .11em;
  line-height: 1.5;
  text-transform: uppercase;
  color: var(--text-muted);
  font-variant-numeric: var(--numeric);
}
.spec { font-family: var(--font-mono); font-size: 12px; letter-spacing: .04em; font-variant-numeric: var(--numeric); color: var(--text-strong); }

/* ---------- Botón (components/core/Button) ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2);
  min-height: 44px;
  font-family: var(--font-mono); letter-spacing: .1em; text-transform: uppercase; text-align: center;
  border-radius: var(--radius); cursor: pointer;
  transition: background var(--dur-ui) var(--ease), color var(--dur-ui) var(--ease), border-color var(--dur-ui) var(--ease);
}
.btn--md { font-size: 11px; padding: 10px 16px; }
.btn--lg { font-size: 12px; padding: 14px 22px; min-height: 48px; }
.btn--solid { background: var(--rmp-ink); color: var(--rmp-paper); border: 1px solid var(--rmp-ink); }
.btn--solid:hover { background: var(--accent); color: var(--accent-on); }
.btn--volt { background: var(--accent); color: var(--accent-on); border: 1px solid var(--accent); }
.btn--volt:hover { background: var(--rmp-ink); color: var(--accent); }
.btn--ink { background: var(--rmp-ink); color: var(--accent); border: 1px solid var(--rmp-ink); }
.btn--ink:hover { background: var(--rmp-paper); color: var(--rmp-ink); }
.btn--outline { background: transparent; color: var(--rmp-ink); border: 1px solid var(--rmp-ink); }
.btn--outline:hover { background: var(--rmp-ink); color: var(--accent); }
.btn--ghost { background: transparent; color: var(--rmp-ink); border: 1px solid rgba(13, 13, 13, .28); }
.btn--ghost:hover { background: var(--rmp-ink); color: var(--accent); border-color: var(--rmp-ink); }

/* ---------- Sello (components/core/Stamp) ---------- */
.stamp { display: inline-block; font-family: var(--font-mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; padding: 5px 10px; border: 1px solid var(--line-strong); color: var(--text-strong); }
.stamp--pill { border-radius: var(--radius-pill); padding-inline: 12px; }
.stamp--inverse { border-color: var(--accent); color: var(--accent); }

/* ---------- Nav ---------- */
.nav { position: sticky; top: 0; z-index: 40; background: var(--rmp-paper); border-bottom: 1px solid var(--line); }
.nav__inner { display: flex; align-items: center; gap: var(--space-6); padding-block: var(--space-2); }
.nav__logo { display: flex; align-items: center; min-height: 44px; }
/* El SVG original trae aire propio: se compensa con márgenes, no se redibuja. */
.nav__logo img { height: 58px; width: auto; margin: -8px 0 -6px -19px; }
.nav__links { display: flex; gap: 6px 20px; flex-wrap: wrap; }
.nav__links a { display: inline-flex; align-items: center; min-height: 44px; transition: color var(--dur-ui) var(--ease); }
.nav__links a:hover { color: var(--text-strong); }
.nav .btn { margin-left: auto; white-space: nowrap; }

/* ---------- Portada ---------- */
.hero { position: relative; overflow: hidden; background: var(--rmp-ink); color: var(--text-strong); }
.hero__field { position: absolute; inset: 0; background: var(--field-graphite); pointer-events: none; }
.hero__inner { display: grid; min-height: min(86vh, 860px); grid-template-rows: auto 1fr auto; padding-top: clamp(24px, 4vw, 40px); }
.cornerbar { position: relative; z-index: 1; display: flex; justify-content: space-between; gap: var(--space-4); flex-wrap: wrap; padding-bottom: 13px; border-bottom: 1px solid var(--line); font-family: var(--font-mono); font-size: 10px; letter-spacing: var(--tracking-micro); text-transform: uppercase; color: var(--text-muted); }
.hero__copy { position: relative; z-index: 1; align-self: end; display: grid; justify-items: start; gap: clamp(20px, 2.6vw, 30px); max-width: 62%; padding-block: clamp(36px, 6vw, 72px) clamp(36px, 5vw, 64px); }
.hero__lead { max-width: 52ch; font-size: clamp(18px, 1.6vw, 22px); line-height: 1.42; color: rgba(244, 244, 241, .88); }
.hero__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 24px; }
.hero__sign { font-family: var(--font-display); font-weight: 800; font-stretch: 114%; letter-spacing: -.03em; font-size: 17px; color: var(--text-muted); }

/* Ascenso — tres barras a 37.1°, proporción 1 / 2.5 / 5.4 U.
   Sin volt: en la portada el único punto de atención es el botón. */
.ascenso { position: absolute; left: 56%; bottom: 0; height: 100%; display: flex; align-items: flex-end; gap: clamp(24px, 3.6vw, 56px); pointer-events: none; }
.ascenso i { display: block; width: clamp(48px, 7.4vw, 112px); transform-origin: bottom left; transform: skewX(calc(var(--angle) * -1)); animation: ascenso var(--dur-brand) var(--ease) both; }
.ascenso i:nth-child(1) { height: 18.5%; background: var(--data-l1); }
.ascenso i:nth-child(2) { height: 46.3%; background: var(--data-l2); animation-delay: 200ms; }
.ascenso i:nth-child(3) { height: 100%; background: var(--rmp-paper); animation-delay: 400ms; }
@keyframes ascenso {
  from { transform: skewX(calc(var(--angle) * -1)) scaleY(0); }
  to { transform: skewX(calc(var(--angle) * -1)) scaleY(1); }
}

/* Placa — el texto sobre campo va en placa de tinta */
.plate { position: relative; z-index: 1; display: grid; grid-template-columns: 1.1fr 1.2fr 1.3fr 1fr; background: var(--rmp-ink); border-top: 1px solid var(--line); }
.plate__cell { display: grid; gap: 8px; align-content: start; padding: 16px 20px 20px; border-left: 1px solid var(--line); }
.plate__cell:first-child { border-left: 0; padding-left: 0; }
.plate dd { display: grid; gap: 8px; }
.parpadeo { font-family: var(--font-mono); font-size: 12px; letter-spacing: .13em; display: flex; }
.parpadeo span { animation: rmpChar 3.4s steps(1, end) 3; }
.parpadeo span:last-child { color: var(--accent); }
.malla { display: grid; grid-template-columns: repeat(10, minmax(0, 1fr)); grid-template-rows: repeat(3, 8px); gap: 3px; max-width: 170px; }
.malla i { background: var(--data-l2); animation: mallaSweep 3.4s steps(1, end) 3; }
@keyframes mallaSweep { 0%, 8% { background: var(--data-l1); } 18%, 80% { background: var(--rmp-paper); } 90%, 100% { background: var(--data-l1); } }

/* ---------- Compromisos (components/data/MetricBlock) ---------- */
.band { border-bottom: 1px solid var(--line); }
.metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(20px, 3vw, 40px); padding-block: clamp(28px, 4vw, 44px); }
.metric { display: grid; gap: 9px; align-content: start; }
.metric__fig { font-size: clamp(40px, 5vw, 72px); line-height: .82; font-weight: 800; font-stretch: 114%; letter-spacing: -.045em; font-variant-numeric: var(--numeric); }
.metric__fig span { display: inline-block; font-size: clamp(14px, 1.5vw, 19px); line-height: 1.2; font-weight: 500; font-stretch: 100%; letter-spacing: .01em; }
.metric p { font-size: var(--type-small); color: var(--text-body); max-width: 36ch; }

/* ---------- Capítulos ---------- */
.chapter { border-bottom: 1px solid var(--line); }
.chapter--alt { background: var(--surface-page-alt); }
.chapter > .page { padding-block: clamp(52px, 7vw, 92px); }
.chapter__head { display: grid; grid-template-columns: auto 1fr; gap: 20px; align-items: start; border-top: var(--border-strong) solid var(--line-strong); padding-top: var(--space-3); margin-bottom: clamp(28px, 4vw, 48px); }
.chapter__num { font-family: var(--font-mono); font-size: 12px; letter-spacing: var(--tracking-micro); color: var(--text-strong); padding-top: 6px; }
.chapter__title { display: flex; justify-content: space-between; align-items: baseline; gap: 20px; flex-wrap: wrap; }
.chapter__title h2 { max-width: 22ch; }

/* 01 — Hoy / Con un sistema */
.tabs { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-bottom: var(--space-4); }
.no-js .tabs { display: none; }
.tab { background: transparent; color: var(--rmp-ink); border: 1px solid var(--line-strong); }
.tab:hover { background: var(--rmp-ink); color: var(--rmp-paper); }
.tab[aria-selected="true"] { background: var(--rmp-ink); color: var(--rmp-paper); }
.versus { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; background: var(--rmp-ink); border: 1px solid var(--rmp-ink); }
.versus + .versus { margin-top: var(--space-6); }
.versus__role { grid-column: 1 / -1; background: var(--rmp-paper-2); color: var(--text-strong); padding: 10px 0; margin: -1px -1px 0; }
.js .versus__role { display: none; }
.versus__col { background: var(--rmp-paper); color: var(--rmp-ink); padding: clamp(20px, 3vw, 30px); }
.versus__col--ink { background: var(--rmp-ink); color: var(--rmp-paper); }
.versus__label { padding-bottom: 14px; border-bottom: 1px solid var(--line); }
.versus__col--ink .versus__label { color: var(--accent); }
.versus__col p { padding: 15px 0; border-bottom: 1px solid var(--line); font-size: clamp(17px, 1.7vw, 22px); line-height: 1.3; font-weight: 500; letter-spacing: -.012em; }
.versus__col p:last-child { border-bottom: 0; padding-bottom: 0; }

/* Ejemplo — un sistema por dentro (LayerStack + FigureTable) */
.inside { background: var(--rmp-ink); color: var(--text-strong); }
.inside__inner { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(28px, 5vw, 72px); align-items: start; padding-block: clamp(52px, 7vw, 92px); }
.inside__head { display: grid; gap: var(--space-5); justify-items: start; }
.inside__head p { max-width: 44ch; font-size: var(--type-lead); color: var(--text-body); }
.inside__figure { display: grid; gap: var(--space-5); min-width: 0; }
.layers { display: grid; gap: var(--space-2); }
.layer { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: var(--space-3); align-items: center; }
.layer__n { font-family: var(--font-mono); font-size: 11px; color: var(--text-muted); font-variant-numeric: var(--numeric); }
.layer__box { display: flex; justify-content: space-between; align-items: baseline; gap: 6px 14px; flex-wrap: wrap; padding: 13px 14px; border: 1px solid var(--line); }
.layer__box strong { font-size: 15px; font-weight: 600; }
.layer--agent .layer__box { background: rgba(244, 244, 241, .06); }
.layer--signed .layer__box { border-color: var(--accent); }
.layer--signed .layer__n { color: var(--accent); }
.figtable { width: 100%; border-collapse: collapse; font-variant-numeric: var(--numeric); }
.figtable caption { text-align: left; padding-bottom: 10px; }
.figtable th, .figtable td { padding: 10px 0 10px 14px; border-bottom: 1px solid var(--line); text-align: left; font-weight: 400; }
.figtable th:first-child { padding-left: 0; }
.figtable thead th { font-family: var(--font-mono); font-size: 11px; letter-spacing: .11em; text-transform: uppercase; color: var(--text-muted); }
.figtable tbody th { font-size: 14px; font-weight: 600; }
.figtable .num { text-align: right; font-family: var(--font-mono); font-size: 12px; }
.figtable .tag { font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--text-muted); }
.figtable .is-alert .num:not(.col-src) { color: var(--text-alert); }
.inside figcaption { color: var(--text-muted); }

/* 02 — Método: el diagnóstico aparte, el mes en cuatro semanas */
.method { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 3.4fr); gap: clamp(24px, 3.4vw, 48px); align-items: start; }
.method__label { padding-bottom: var(--space-3); }
.steps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(18px, 2.5vw, 28px); }
.step { display: grid; gap: 9px; align-content: start; justify-items: start; border-top: 1px solid var(--line); padding-top: var(--space-4); }
.step--open { border-top: var(--border-strong) solid var(--line-strong); }
.step--open .step__meta { color: var(--text-strong); }
.step--open .btn { margin-top: var(--space-3); }
.step__meta { display: flex; justify-content: space-between; width: 100%; margin-bottom: 3px; }
.step h3 { font-size: 21px; font-weight: 700; letter-spacing: -.025em; line-height: 1.15; }
.step p { color: var(--text-body); }

/* 03 — Procesos */
.cells { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); }
.cell { background: var(--rmp-paper); padding: clamp(18px, 2.4vw, 28px); display: grid; gap: 12px; align-content: start; }
.cell__meta { display: flex; justify-content: space-between; }
.cell h3 { font-size: clamp(21px, 2vw, 26px); font-weight: 700; letter-spacing: -.025em; line-height: 1.15; }
.cell dl { display: grid; margin-top: 6px; }
.cell dl > div { display: grid; grid-template-columns: 84px minmax(0, 1fr); gap: 12px; align-items: baseline; padding: 12px 0; border-top: 1px solid var(--line); }
.cell dl > div:last-child { padding-bottom: 0; }
.cell dt { font-family: var(--font-mono); font-size: 11px; letter-spacing: .11em; text-transform: uppercase; color: var(--text-muted); }
.cell dd { font-size: 16px; color: var(--text-body); }
.cell dl > div:last-child dd { color: var(--text-strong); font-weight: 500; }

/* Corte de capítulo */
.cut { background: var(--rmp-ink); color: var(--text-strong); }
.cut__inner { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: clamp(28px, 5vw, 72px); align-items: end; padding-block: clamp(52px, 7vw, 92px); }
.cut__text { max-width: 24ch; }
.mg-escalera { display: flex; align-items: flex-end; gap: 8px; }
.mg-escalera i { display: block; width: 28px; background: var(--rmp-paper); }
.mg-escalera i:nth-child(1) { height: 28px; }
.mg-escalera i:nth-child(2) { height: 54px; }
.mg-escalera i:nth-child(3) { height: 82px; }
.mg-escalera i:nth-child(4) { height: 110px; background: var(--accent); }

/* 04 — Preguntas */
.faq { border-top: 1px solid var(--line); }
.faq details { border-bottom: 1px solid var(--line); }
.faq summary { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 16px; align-items: center; padding: 16px 0; font-size: clamp(18px, 1.8vw, 22px); font-weight: 700; letter-spacing: -.02em; line-height: 1.3; cursor: pointer; list-style: none; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; display: grid; place-items: center; width: 32px; height: 32px; border: 1px solid var(--line-strong); font-family: var(--font-mono); font-size: 15px; font-weight: 400; transition: background var(--dur-ui) var(--ease), color var(--dur-ui) var(--ease); }
.faq details[open] summary::after { content: "−"; }
.faq summary:hover::after { background: var(--rmp-ink); color: var(--accent); }
.faq details > p { max-width: 62ch; padding-bottom: 22px; font-size: 16px; color: var(--text-body); }
.stamps { display: flex; flex-wrap: wrap; gap: var(--space-2); padding-bottom: 24px; margin-top: -6px; }

/* Diagnóstico — cierre */
.close { background: var(--accent); color: var(--accent-on); --muted-on-volt: #3B430B; }
.close__inner { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(24px, 4vw, 64px); align-items: end; padding-block: clamp(52px, 7vw, 92px); }
.close__text { max-width: 19ch; font-size: clamp(34px, 5.4vw, 80px); line-height: .98; font-weight: 800; font-stretch: 112%; letter-spacing: -.042em; text-wrap: balance; }
.close__card { border-top: 1px solid rgba(13, 13, 13, .28); }
.close__card .micro-sm { color: var(--muted-on-volt); }
.spec-row { display: flex; justify-content: space-between; align-items: baseline; gap: 14px; padding: 11px 0; border-bottom: 1px solid rgba(13, 13, 13, .28); }
.spec-row .spec { text-align: right; }
.next { display: grid; gap: 10px; margin-top: var(--space-5); }
.next li { display: grid; grid-template-columns: 28px minmax(0, 1fr); align-items: baseline; font-size: 16px; line-height: 1.4; }
.close__actions { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-6); }
.copyline { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin-top: var(--space-4); }
.copyline .spec { font-size: 13px; user-select: all; }
.copyline .btn { min-height: 36px; padding-block: 6px; }

/* ---------- Pie ---------- */
.footer { background: var(--rmp-ink); color: var(--text-strong); }
.footer__inner { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: clamp(24px, 3vw, 40px); align-items: end; padding-block: clamp(32px, 4vw, 48px) clamp(24px, 3vw, 32px); }
.footer__logo { width: min(100%, 380px); margin: -18px 0 -26px -46px; }
.footer p { max-width: 40ch; font-size: var(--type-small); color: var(--text-body); margin-top: var(--space-4); }
.footer__specs { font-family: var(--font-mono); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--text-muted); font-variant-numeric: var(--numeric); }
.footer__specs > div { display: flex; justify-content: space-between; align-items: center; gap: 12px; min-height: 32px; border-bottom: 1px solid var(--line); }
.footer__specs > div:last-child { border-bottom: 0; }
.footer__specs a { display: inline-flex; align-items: center; min-height: 44px; color: var(--text-strong); }
.footer__specs a:hover { color: var(--accent); }

/* ---------- Responsive ---------- */
@media (max-width: 1100px) {
  .method { grid-template-columns: minmax(0, 1fr); }
  .step--open { max-width: 420px; }
}
@media (max-width: 900px) {
  .nav__links { display: none; }
  .hero__inner { min-height: 0; display: flex; flex-direction: column; }
  .hero__copy { max-width: none; padding-bottom: 0; align-self: stretch; }
  .ascenso { position: relative; left: auto; height: 120px; margin: 24px 0 0 38%; gap: 14px; }
  .ascenso i { width: 28px; }
  .plate { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .plate__cell { border-left: 0; padding-left: 0; border-bottom: 1px solid var(--line); }
  .plate__cell:nth-child(even) { border-left: 1px solid var(--line); padding-left: 20px; }
  .plate__cell:nth-last-child(-n+2) { border-bottom: 0; }
  .inside__inner, .close__inner, .cut__inner { grid-template-columns: minmax(0, 1fr); }
  .steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .metrics, .versus, .cells, .steps { grid-template-columns: minmax(0, 1fr); }
  .cornerbar span:nth-child(2) { display: none; }
  .chapter__title .micro { display: none; }
  .hero__actions .btn, .close__actions .btn { width: 100%; }
  .figtable .col-src { display: none; }
  .spec-row { flex-direction: column; gap: 4px; }
  .spec-row .spec { text-align: left; }
  .cell dl > div { grid-template-columns: 76px minmax(0, 1fr); }
  .mg-escalera i { width: 18px; }
  .mg-escalera i:nth-child(1) { height: 18px; }
  .mg-escalera i:nth-child(2) { height: 34px; }
  .mg-escalera i:nth-child(3) { height: 52px; }
  .mg-escalera i:nth-child(4) { height: 70px; }
}
@media (max-width: 400px) {
  .page { padding-inline: 20px; }
  .nav .btn { padding-inline: 12px; letter-spacing: .06em; }
  .nav__logo img { height: 50px; margin: -6px 0 -4px -16px; }
}
