/* ==========================================================================
   Irene Garibay — Portfolio MVP
   Sistema: Structured Intelligence · 60 base / 30 secondary / 10 accent
   ========================================================================== */

:root {
  /* Base 60% */
  --white: #FAF9F6;
  --n1: #F2F1ED;
  --n2: #E6E4DF;
  --n3: #D4D2CC;
  /* Secondary 30% */
  --grey: #8A8A8A;
  --dark: #3A3A3A;
  --black: #171717;
  /* Soft accents */
  --soft-orange: #FFF1EB;
  --soft-coral: #FFF0F3;
  --soft-violet: #F3EFFF;
  /* Accent 10% */
  --orange: #FF5A1F;
  --coral: #FF5A6F;
  --violet: #8B5CF6;
  /* Gradients */
  --g-heat: linear-gradient(120deg, var(--violet) 0%, var(--coral) 55%, var(--orange) 100%);
  --g-violet: linear-gradient(135deg, var(--soft-violet), var(--soft-coral));
  --g-orange: linear-gradient(135deg, var(--soft-orange), var(--soft-coral));

  /* Type */
  --f-main: "Outfit", system-ui, -apple-system, "Segoe UI", sans-serif;
  --f-display: "Anybody", "Outfit", system-ui, sans-serif;

  /* Spacing (sistema de identidad) */
  --s-8: 8px; --s-16: 16px; --s-24: 24px; --s-32: 32px;
  --s-40: 40px; --s-64: 64px; --s-80: 80px; --s-128: 128px; --s-160: 160px;

  --max: 1200px;
  --read: 720px;
  --gutter: clamp(16px, 5vw, 64px);
  --nav-h: 72px;
  --radius: 4px;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--white);
  color: var(--dark);
  font-family: var(--f-main);
  font-size: 16px;
  line-height: 1.55;
  font-weight: 400;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img { max-width: 100%; display: block; }
a { color: inherit; }
h1, h2, h3 { color: var(--black); margin: 0; font-weight: 600; line-height: 1.1; letter-spacing: -0.02em; }
p { margin: 0; }
::selection { background: var(--soft-violet); color: var(--black); }
:focus-visible { outline: 2px solid var(--violet); outline-offset: 3px; }

.wrap { width: 100%; max-width: calc(var(--max) + 2 * var(--gutter)); margin: 0 auto; padding: 0 var(--gutter); }

/* Label técnico (THINK: labels, metadata) */
.label, .eyebrow {
  font-size: 12px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--grey);
  font-weight: 500;
}

/* ---------- Navbar ---------- */
.nav {
  position: fixed; inset: 0 0 auto 0; z-index: 50;
  height: var(--nav-h);
  background: rgba(250, 249, 246, 0.86);
  backdrop-filter: saturate(140%) blur(12px);
  -webkit-backdrop-filter: saturate(140%) blur(12px);
  border-bottom: 1px solid transparent;
  transition: border-color .2s ease;
}
.nav.is-scrolled { border-bottom-color: var(--n2); }
.nav .wrap { height: 100%; display: flex; align-items: center; justify-content: space-between; }
.nav-logo { display: inline-flex; color: var(--black); text-decoration: none; }
.nav-logo svg { height: 30px; width: auto; }
.nav-links { display: flex; gap: var(--s-40); list-style: none; margin: 0; padding: 0; }
.nav-links a {
  text-decoration: none; font-size: 15px; color: var(--dark); position: relative; padding: 6px 0;
}
.nav-links a::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px;
  background: var(--orange); transform: scaleX(0); transform-origin: left; transition: transform .25s ease;
}
.nav-links a:hover::after, .nav-links a[aria-current="page"]::after { transform: scaleX(1); }
.nav-links a[aria-current="page"] { color: var(--black); }
.nav-toggle { display: none; background: none; border: 0; padding: 8px; cursor: pointer; color: var(--black); }
.nav-toggle span { display: block; width: 22px; height: 1.5px; background: currentColor; margin: 5px 0; transition: transform .2s ease, opacity .2s; }
/* Selector de idioma */
.nav-right { display: flex; align-items: center; gap: var(--s-40); }
.nav-lang { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; letter-spacing: .06em; }
.nav-lang a, .nav-lang span { padding: 6px 8px; border-radius: 999px; text-decoration: none; line-height: 1; }
.nav-lang a { color: var(--grey); transition: color .2s, background .2s; }
.nav-lang a:hover { color: var(--black); background: var(--n1); }
.nav-lang span { color: var(--white); background: var(--black); }
.nav-lang i { font-style: normal; color: var(--n3); }

main { padding-top: var(--nav-h); }

/* ---------- Hero ---------- */
.hero {
  position: relative;
  min-height: calc(100svh - var(--nav-h));
  display: grid; align-items: center;
  overflow: hidden;
  border-bottom: 1px solid var(--n2);
}
.hero .wrap { position: relative; z-index: 2; display: grid; grid-template-columns: 1.1fr 0.9fr; gap: var(--s-64); align-items: center; padding-top: var(--s-80); padding-bottom: var(--s-80); }
.hero-name {
  font-family: var(--f-display);
  font-weight: 800;
  font-size: clamp(56px, 9vw, 128px);
  line-height: 0.9;
  letter-spacing: -0.035em;
  color: var(--orange);
}
.hero-title { margin-top: var(--s-24); font-size: clamp(20px, 2.2vw, 28px); color: var(--black); font-weight: 500; }
.hero-descriptors { margin-top: var(--s-8); font-size: 15px; color: var(--grey); }
.hero-tagline {
  margin-top: var(--s-40); max-width: 30ch;
  font-size: clamp(22px, 2.4vw, 32px); line-height: 1.25; font-weight: 300; color: var(--dark);
}
.hero-cta { margin-top: var(--s-40); display: flex; gap: var(--s-16); flex-wrap: wrap; }

/* Grid técnico de fondo (STRUCTURE) */
.hero-grid {
  position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image:
    linear-gradient(to right, rgba(23,23,23,.05) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(23,23,23,.05) 1px, transparent 1px);
  background-size: 80px 80px;
  mask-image: radial-gradient(ellipse at 70% 50%, #000 20%, transparent 75%);
  -webkit-mask-image: radial-gradient(ellipse at 70% 50%, #000 20%, transparent 75%);
}

/* Visual del hero: red de nodos (Think · Decide · Lead · Own · Build) + Orange Heat en movimiento */
.hero-visual { position: relative; aspect-ratio: 1 / 1; width: 100%; max-width: 520px; justify-self: end; }
.orb {
  position: absolute; border-radius: 50%; filter: blur(36px); opacity: .9;
  animation: drift 9s ease-in-out infinite alternate;
  will-change: transform;
}
.orb-1 { width: 58%; height: 58%; left: 24%; top: 10%; background: radial-gradient(circle at 40% 40%, var(--orange), var(--coral) 50%, transparent 74%); }
.orb-2 { width: 54%; height: 54%; left: 4%; top: 40%; background: radial-gradient(circle at 60% 40%, var(--violet), transparent 70%); animation-duration: 12s; animation-direction: alternate-reverse; opacity: .85; }
.orb-3 { width: 36%; height: 36%; left: 56%; top: 54%; background: radial-gradient(circle, var(--coral), var(--violet) 60%, transparent 76%); animation-duration: 7s; opacity: .7; animation-name: drift-b; }
.orb-4 { width: 30%; height: 30%; left: 38%; top: 36%; background: radial-gradient(circle, var(--coral), transparent 70%); animation-duration: 6s; opacity: .55; animation-name: drift-b; animation-direction: alternate-reverse; }
@keyframes drift {
  0%   { transform: translate(-6%, 4%) scale(.94); }
  35%  { transform: translate(8%, -6%) scale(1.1); }
  70%  { transform: translate(-4%, -9%) scale(1.02); }
  100% { transform: translate(6%, 8%) scale(.9); }
}
@keyframes drift-b {
  0%   { transform: translate(8%, -8%) scale(1.05); }
  50%  { transform: translate(-10%, 6%) scale(.9); }
  100% { transform: translate(4%, 10%) scale(1.12); }
}
.system { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.system .ring { fill: none; stroke: rgba(23,23,23,.08); stroke-width: 1; }
.system .link { stroke: var(--n3); stroke-width: 1; }
.system .link-outer { stroke: var(--n3); }
.system .link-hub { stroke: var(--n3); stroke-dasharray: 3 5; animation: signal 2.6s linear infinite; }
.system .link-hub:nth-of-type(odd) { animation-duration: 3.4s; }
@keyframes signal { to { stroke-dashoffset: -32; } }
.system .dot { opacity: .9; }
.system .dot-halo { opacity: .3; animation: halo 4s ease-in-out infinite; }
.system .dot-halo:nth-of-type(2n) { animation-delay: -1.3s; }
.system .dot-halo:nth-of-type(3n) { animation-delay: -2.6s; }
@keyframes halo { 0%, 100% { opacity: .2; } 50% { opacity: .4; } }
.system .dot-accent { fill: var(--white); stroke: var(--grey); stroke-width: 1.5; }
.system .dot-pulse { fill: none; stroke: var(--grey); stroke-width: 1; transform-origin: center; transform-box: fill-box; animation: pulse 3s ease-out infinite; }
@keyframes pulse { 0% { transform: scale(1); opacity: .6; } 100% { transform: scale(3); opacity: 0; } }
.system text { font-family: var(--f-main); font-size: 12px; letter-spacing: .18em; fill: var(--black); text-transform: uppercase; font-weight: 500; transition: fill .2s; }

/* Interacción de pilares: hover / focus / tap sobre un verbo → la red se amplifica y brota un sub-nodo con el pilar */
.system .pnode { cursor: pointer; outline: none; }
.system .pnode .hit { fill: transparent; stroke: none; }
.system .pnode text { pointer-events: all; }
.system .pnode.is-active text, .system .pnode:hover text, .system .pnode:focus-visible text { fill: var(--orange); }
.system .pnode.is-active .dot, .system .pnode:hover .dot { r: 8; opacity: 1; }
.system .pnode.is-active .dot-halo { opacity: .55; r: 20; animation-duration: 1.8s; }
.system .pnode:focus-visible .dot { stroke: var(--violet); stroke-width: 2; }
.system .dot, .system .dot-halo { transition: r .3s ease, fill .2s ease, opacity .3s ease; }
.system .branch { stroke: var(--orange); stroke-width: 1.2; stroke-dasharray: 260; stroke-dashoffset: 260; opacity: 0; transition: stroke-dashoffset .5s ease, opacity .2s; }
.system .subdot { fill: var(--orange); opacity: 0; transform-origin: center; transform-box: fill-box; transform: scale(0); transition: transform .3s ease .35s, opacity .2s ease .35s; }
.system .pnode.is-active .branch { stroke-dashoffset: 0; opacity: 1; }
.system .pnode.is-active .subdot { opacity: 1; transform: scale(1); }
.hero-visual .system, .orb { transition: transform .6s ease, opacity .4s ease; }
.hero-visual.has-active .system { transform: scale(1.04); }
.hero-visual.has-active .orb { animation-duration: 3.2s; opacity: 1; }
.hero-visual.has-active .orb-2 { animation-duration: 4s; }
.hero-visual.has-active .system .link-hub { animation-duration: 1.2s; }
.hero-visual.has-active .system .link-outer { opacity: .6; }
.hero-visual.has-active .system .dot-pulse { animation-duration: 1.1s; }
.hero-visual.has-active .system .link-hub.is-active { stroke: var(--orange); stroke-dasharray: none; stroke-width: 1.4; }

.pillar-notes { position: absolute; inset: 0; pointer-events: none; z-index: 3; }
.pillar-note {
  position: absolute; padding: 10px 12px; border-radius: var(--radius);
  background: rgba(250, 249, 246, .62); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  opacity: 0; visibility: hidden; transform: translateY(6px);
  transition: opacity .3s ease .25s, transform .3s ease .25s, visibility 0s linear .55s;
}
.pillar-note.is-active { opacity: 1; visibility: visible; transform: none; transition-delay: .25s, .25s, 0s; }
.pillar-note strong { display: block; font-size: 16px; font-weight: 600; color: var(--black); letter-spacing: -0.01em; line-height: 1.2; }
.pillar-note span { display: block; margin-top: 4px; font-size: 13px; line-height: 1.4; color: var(--dark); }
.hero-hint { position: absolute; left: 50%; bottom: -8px; transform: translateX(-50%); margin: 0; font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--grey); white-space: nowrap; transition: opacity .3s; }
.hero-visual.has-active .hero-hint { opacity: 0; }

/* ---------- Botones ---------- */
.btn {
  display: inline-flex; align-items: center; gap: 10px;
  padding: 14px 22px; border-radius: 999px;
  font: 500 15px/1 var(--f-main); text-decoration: none;
  border: 1px solid var(--black); color: var(--black); background: transparent;
  transition: background .2s ease, color .2s ease, border-color .2s ease;
}
.btn:hover { background: var(--black); color: var(--white); }
.btn-primary { background: var(--black); color: var(--white); }
.btn-primary:hover { background: var(--orange); border-color: var(--orange); }
.btn .arrow { transition: transform .2s ease; }
.btn:hover .arrow { transform: translateX(3px); }

/* ---------- Secciones ---------- */
.section { padding: var(--s-128) 0; }
.section-alt { background: var(--n1); }
.section-head { display: flex; justify-content: space-between; align-items: end; gap: var(--s-32); margin-bottom: var(--s-64); flex-wrap: wrap; }
.section-head h2 { font-size: clamp(32px, 4vw, 48px); margin-top: var(--s-16); }
.section-head .section-intro { max-width: 44ch; color: var(--dark); }
.page-head { padding: var(--s-80) 0 var(--s-64); border-bottom: 1px solid var(--n2); }
.page-head h1 { font-family: var(--f-display); font-weight: 800; font-size: clamp(48px, 8vw, 96px); line-height: .95; letter-spacing: -0.03em; margin-top: var(--s-16); }
.page-head p.lead { margin-top: var(--s-24); max-width: 52ch; font-size: 20px; font-weight: 300; color: var(--dark); }

/* ---------- Cabecera del módulo Work (landing) ---------- */
.work-head { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-64); align-items: center; margin-bottom: var(--s-64); }
.display-title { font-family: var(--f-display); font-weight: 800; font-size: clamp(72px, 12vw, 176px); line-height: .85; letter-spacing: -0.04em; color: var(--orange); margin-top: 0; }
.work-head-title { order: 2; justify-self: end; text-align: right; }
.work-head-intro { order: 1; max-width: 46ch; justify-self: start; padding-right: var(--s-40); border-right: 1px solid var(--n3); }
.work-head-intro .label .work-index { color: var(--orange); }
.work-intro { margin-top: 0; font-size: clamp(18px, 1.7vw, 22px); line-height: 1.4; font-weight: 300; color: var(--dark); }
.work-intro strong { font-weight: 500; color: var(--black); }

/* ---------- Cards de proyecto ---------- */
.cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-24); }
.cards.cards-2 { grid-template-columns: repeat(2, minmax(0, calc((100% - 2 * var(--s-24)) / 3))); justify-content: center; }
.cards.cards-1 { grid-template-columns: minmax(0, calc((100% - 2 * var(--s-24)) / 3)); justify-content: center; }
.card {
  display: flex; flex-direction: column;
  background: var(--white); border: 1px solid var(--n2); border-radius: var(--radius);
  text-decoration: none; color: inherit; overflow: hidden;
  transition: transform .45s cubic-bezier(.2,.7,.2,1), border-color .3s ease, box-shadow .45s ease;
  position: relative; z-index: 1; will-change: transform;
}
.section-alt .card { background: var(--white); }
.cards .card:hover, .cards .card:focus-visible, .card.reveal.is-in:hover {
  transform: translateY(-10px) scale(1.1); z-index: 5; border-color: transparent;
  box-shadow:
    0 30px 60px -30px rgba(139, 92, 246, .32),
    0 18px 40px -22px rgba(255, 90, 111, .22),
    0 2px 10px -4px rgba(255, 90, 31, .12);
}
.card-visual { position: relative; aspect-ratio: 4 / 3; overflow: hidden; border-bottom: 1px solid var(--n2); }
.card-visual .cv-bg { position: absolute; inset: 0; }
.card-visual .cv-orb { position: absolute; width: 70%; aspect-ratio: 1; border-radius: 50%; filter: blur(26px); transition: transform .6s ease, opacity .6s ease; }
.card-visual .cv-orb2 { width: 46%; left: -8%; bottom: -14%; right: auto; top: auto; opacity: 0; }
.card:hover .cv-orb { animation: cv-vibe 4s ease-in-out infinite alternate; }
.card:hover .cv-orb2 { opacity: .45; animation: cv-vibe2 3.2s ease-in-out infinite alternate; }
.card:hover .cv-grid { animation: cv-grid 6s linear infinite; }
@keyframes cv-vibe {
  0%   { transform: scale(1.06) translate(-3%, 2%); }
  30%  { transform: scale(1.14) translate(2%, -3%); }
  60%  { transform: scale(1.08) translate(-5%, 4%); }
  100% { transform: scale(1.18) translate(3%, 1%); }
}
@keyframes cv-vibe2 {
  0%   { transform: scale(.9) translate(4%, -3%); }
  50%  { transform: scale(1.15) translate(-3%, 5%); }
  100% { transform: scale(1) translate(6%, -6%); }
}
@keyframes cv-grid { to { background-position: 40px 40px; } }
.card-visual .cv-grid { position: absolute; inset: 0; background-image: linear-gradient(to right, rgba(23,23,23,.06) 1px, transparent 1px), linear-gradient(to bottom, rgba(23,23,23,.06) 1px, transparent 1px); background-size: 40px 40px; }
.card-visual .cv-num { position: absolute; top: 16px; left: 18px; font-size: 12px; letter-spacing: .18em; color: var(--dark); }
.card-visual .cv-metric { position: absolute; left: 18px; bottom: 16px; right: 18px; }
.card-visual .cv-metric strong { display: block; font-variant-numeric: tabular-nums; font-family: var(--f-display); font-weight: 800; font-size: clamp(40px, 4vw, 56px); line-height: 1; color: var(--black); letter-spacing: -0.03em; }
.card-visual .cv-metric span { display: block; margin-top: 6px; font-size: 13px; color: var(--dark); }

.v-investors .cv-bg { background: var(--g-violet); }
.v-investors .cv-bg { background: var(--g-violet); }
.v-investors .cv-orb { background: radial-gradient(circle, var(--violet), transparent 70%); right: -12%; top: -14%; opacity: .55; }
.v-investors .cv-orb2 { background: radial-gradient(circle, var(--coral), transparent 70%); }

.v-crypto .cv-bg { background: var(--g-orange); }
.v-crypto .cv-orb { background: radial-gradient(circle, var(--orange), transparent 70%); right: -10%; top: -18%; opacity: .7; }
.v-crypto .cv-orb2 { background: radial-gradient(circle, var(--coral), transparent 70%); }

.v-result .cv-bg, .v-smart .cv-bg { background: linear-gradient(135deg, var(--soft-coral), var(--soft-orange)); }
.v-result .cv-orb, .v-smart .cv-orb { background: radial-gradient(circle, var(--coral), transparent 70%); right: -14%; top: -10%; opacity: .7; }
.v-result .cv-orb2, .v-smart .cv-orb2 { background: radial-gradient(circle, var(--violet), transparent 70%); }

.card-body { padding: var(--s-24); display: flex; flex-direction: column; gap: var(--s-16); flex: 1; }
.card-project { font-size: 20px; letter-spacing: .12em; text-transform: uppercase; color: var(--black); font-weight: 700; line-height: 1.1; }
.card-title { font-size: 16px; font-weight: 500; line-height: 1.3; color: var(--grey); margin-top: -6px; }
.card-problem { color: var(--grey); font-size: 14px; font-weight: 300; line-height: 1.5; }
.card-foot { margin-top: auto; display: flex; flex-direction: column; align-items: stretch; gap: var(--s-16); padding-top: var(--s-16); border-top: 1px solid var(--n2); }
.card-go { align-self: flex-end; }
.tags { display: flex; flex-wrap: wrap; gap: 6px; list-style: none; margin: 0; padding: 0; min-height: 62px; align-content: flex-start; }
.tags li { font-size: 12px; padding: 4px 10px; border: 1px solid var(--n3); border-radius: 999px; color: var(--dark); }
.card-go { font-size: 14px; font-weight: 500; color: var(--black); white-space: nowrap; }
.card:hover .card-go { color: var(--orange); }

/* ---------- Cómo trabajo (propuesta de valor) ---------- */
.section-head > div { flex: 1 1 480px; }
.section-head h2 { max-width: 26ch; }
.section-head h2 .hl { font-style: normal; color: var(--orange); }
.scheme-node { display: inline-flex; align-items: center; gap: 16px; }
.scheme-orb { position: relative; width: 16px; height: 16px; border-radius: 50%; flex: none; filter: blur(.4px); opacity: .85; animation: orb-breathe 6s ease-in-out infinite; transition: transform .35s ease; }
.scheme-orb::after { content: ""; position: absolute; inset: -6px; border-radius: 50%; background: inherit; filter: blur(8px); opacity: .25; }
.orb-violet { background: radial-gradient(circle at 35% 35%, #C4B0FA, var(--violet) 60%, #6D3FE0); }
.orb-coral { background: radial-gradient(circle at 35% 35%, #FFB3BC, var(--coral) 60%, #E8405A); animation-delay: -1.3s; }
.orb-orange { background: radial-gradient(circle at 35% 35%, #FFB08A, var(--orange) 60%, #E04A12); animation-delay: -2.6s; }
@keyframes orb-breathe { 0%, 100% { transform: translate(0, 0) scale(1); } 40% { transform: translate(1px, -1px) scale(1.04); } 70% { transform: translate(-1px, 1px) scale(.97); } }
.scheme-orb.is-flash { animation: orb-flash .9s ease-out; }
@keyframes orb-flash { 0% { transform: scale(1); filter: blur(.4px) brightness(1); } 30% { transform: scale(1.25); filter: blur(0) brightness(1.15); } 100% { transform: scale(1); filter: blur(.4px) brightness(1); } }
.syn { flex: 1 1 60px; height: 60px; min-width: 40px; overflow: visible; }
.syn-base { stroke: var(--n3); stroke-width: 1; }
.syn-signal { display: none; }
.syn-dend { transform-origin: 100px 30px; animation: dend-sway 5s ease-in-out infinite alternate; }
.syn-dend-b { animation-duration: 6.5s; animation-direction: alternate-reverse; }
@keyframes dend-sway { 0% { transform: translateY(0) scaleY(1); } 50% { transform: translateY(-2px) scaleY(1.12); } 100% { transform: translateY(2px) scaleY(.9); } }
.syn-branch { fill: none; stroke: var(--n3); stroke-width: 1; stroke-dasharray: 3 5; animation: signal 2.6s linear infinite; }
.syn-sub { fill: var(--violet); }
.syn-sub-b { fill: var(--coral); }
.syn-pulse { fill: var(--grey); }
.values { display: grid; grid-template-columns: repeat(5, 1fr); column-gap: 0; row-gap: 0; }
.value { padding: 0 var(--s-24) 0 0; }
.value-net { display: flex; align-items: center; gap: 12px; height: 60px; margin-bottom: var(--s-24); }
.syn-tail { -webkit-mask-image: linear-gradient(to right, #000 10%, transparent 92%); mask-image: linear-gradient(to right, #000 10%, transparent 92%); }
.value .label { color: var(--orange); }
.value-metric { margin-top: var(--s-24); font-family: var(--f-display); font-weight: 800; font-size: clamp(36px, 3.4vw, 48px); line-height: 1; letter-spacing: -0.03em; color: var(--black); }
.value-metric-label { margin-top: 8px; font-size: 13px; line-height: 1.4; color: var(--grey); max-width: 34ch; }
.value-highlight { margin-top: var(--s-16); font-size: 16px; font-weight: 400; line-height: 1.45; color: var(--grey); max-width: 24ch; }

/* ---------- Contact ---------- */
.contact { position: relative; overflow: hidden; color: var(--dark); background: linear-gradient(135deg, var(--soft-violet) 0%, var(--soft-coral) 55%, var(--soft-orange) 100%); }
.contact-bg { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
.contact-orb { position: absolute; border-radius: 50%; filter: blur(60px); opacity: .55; animation: drift 12s ease-in-out infinite alternate; }
.contact-orb-1 { width: 46vw; max-width: 640px; aspect-ratio: 1; right: -12vw; top: -30%; background: radial-gradient(circle at 40% 40%, var(--orange), var(--coral) 50%, transparent 72%); }
.contact-orb-2 { width: 40vw; max-width: 560px; aspect-ratio: 1; left: -14vw; bottom: -40%; background: radial-gradient(circle, var(--violet), transparent 70%); animation-duration: 16s; animation-direction: alternate-reverse; opacity: .45; }
.contact-orb-3 { width: 26vw; max-width: 360px; aspect-ratio: 1; left: 40%; top: 10%; background: radial-gradient(circle, var(--coral), transparent 70%); animation-duration: 9s; animation-name: drift-b; opacity: .35; }
.contact .wrap { position: relative; z-index: 1; display: grid; grid-template-columns: 1.1fr .9fr; gap: var(--s-64); align-items: end; }
.contact .display-title { margin-top: 0; }
.contact p.contact-intro { margin-top: var(--s-24); max-width: 46ch; font-size: 18px; font-weight: 300; color: var(--dark); }
.contact-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid rgba(23,23,23,.18); }
.contact-list li { border-bottom: 1px solid rgba(23,23,23,.18); }
.contact-list a { display: flex; justify-content: space-between; align-items: center; gap: var(--s-16); padding: 20px 0; text-decoration: none; color: var(--black); font-size: 18px; transition: color .2s, padding .2s; }
.contact-list a:hover { color: var(--orange); padding-left: 8px; }
.contact-list .k { font-size: 12px; letter-spacing: .18em; text-transform: uppercase; color: var(--grey); min-width: 92px; }
.contact-list .v { flex: 1; overflow-wrap: anywhere; }
.contact-page { min-height: calc(100svh - var(--nav-h)); display: grid; align-items: center; }

/* ---------- Footer ---------- */
.footer { background: var(--white); color: var(--grey); border-top: 1px solid var(--n2); font-size: 13px; }
.footer .wrap { display: flex; justify-content: space-between; gap: var(--s-16); padding-top: var(--s-24); padding-bottom: var(--s-24); flex-wrap: wrap; }

/* ---------- About ---------- */
.about-hero .wrap { display: grid; grid-template-columns: 1.2fr .8fr; gap: var(--s-64); align-items: end; }
.page-head h1.is-orange { color: var(--orange); }
.about-photo { position: relative; border-radius: var(--radius); overflow: hidden; aspect-ratio: 4 / 5; background: linear-gradient(160deg, var(--soft-violet) 0%, var(--soft-coral) 55%, var(--soft-orange) 100%); }
.about-photo-orb { position: absolute; width: 90%; aspect-ratio: 1; right: -25%; top: -20%; border-radius: 50%; background: radial-gradient(circle at 40% 40%, var(--orange), var(--coral) 45%, var(--violet) 75%, transparent 82%); filter: blur(40px); opacity: .7; animation: drift 12s ease-in-out infinite alternate; }
.about-photo-grain { position: absolute; inset: 0; z-index: 0; pointer-events: none; opacity: .6; mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='1.1' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.45  0 0 0 0 0.45  0 0 0 0 0.45  0 0 0 .6 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>"); background-size: 200px 200px; }
.about-photo img { position: relative; z-index: 1; width: 100%; height: 100%; object-fit: cover; object-position: center bottom; }
.about-body { display: grid; grid-template-columns: 240px 1fr; gap: var(--s-64); }
.about-body aside .label { position: sticky; top: calc(var(--nav-h) + 24px); }
.prose { max-width: var(--read); }
.prose p { font-size: 19px; line-height: 1.6; color: var(--dark); }
.prose p + p { margin-top: var(--s-24); }
.prose strong { color: var(--black); font-weight: 600; }
.descriptors { display: flex; flex-wrap: wrap; gap: 8px; margin-top: var(--s-32); list-style: none; padding: 0; }
.descriptors li { font-size: 14px; padding: 8px 14px; border-radius: 999px; background: var(--white); border: 1px solid var(--n3); color: var(--black); }
/* Trayectoria: acordeón */
.jobs { border-top: 1px solid var(--n3); }
.job { border-bottom: 1px solid var(--n2); }
.job summary { list-style: none; cursor: pointer; display: grid; grid-template-columns: 160px 1fr 32px; gap: var(--s-32); padding: var(--s-24) 0; align-items: start; }
.job summary::-webkit-details-marker { display: none; }
.job .when { color: var(--grey); font-size: 14px; padding-top: 4px; }
.job .what strong { display: block; color: var(--black); font-weight: 600; font-size: 20px; }
.job .what > span { display: block; color: var(--dark); margin-top: 4px; }
.job .what .teaser { color: var(--grey); font-size: 14px; }
.job-toggle { position: relative; width: 24px; height: 24px; margin-top: 4px; border: 1px solid var(--n3); border-radius: 50%; transition: transform .3s ease, border-color .2s; }
.job-toggle::before, .job-toggle::after { content: ""; position: absolute; left: 50%; top: 50%; width: 10px; height: 1.5px; background: var(--black); transform: translate(-50%, -50%); }
.job-toggle::after { transform: translate(-50%, -50%) rotate(90deg); transition: transform .3s ease; }
.job[open] .job-toggle { border-color: var(--orange); }
.job[open] .job-toggle::after { transform: translate(-50%, -50%) rotate(0deg); }
.job summary:hover .job-toggle { border-color: var(--orange); }
.job-body { padding: 0 0 var(--s-32) 192px; }
.job-pos + .job-pos { margin-top: var(--s-24); padding-top: var(--s-24); border-top: 1px dashed var(--n2); }
.job-pos h4 { margin: 0; font-size: 16px; font-weight: 600; color: var(--black); }
.job-pos p { margin-top: 8px; font-size: 15px; line-height: 1.55; color: var(--dark); }
.job-pos ul { margin: 12px 0 0; padding-left: 1.1em; font-size: 15px; line-height: 1.55; color: var(--dark); }
.job-pos li + li { margin-top: 4px; }
.job-pos li::marker { color: var(--orange); }
.timeline { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--n3); }
.timeline li { display: grid; grid-template-columns: 160px 1fr; gap: var(--s-32); padding: var(--s-24) 0; border-bottom: 1px solid var(--n2); }
.timeline .when { color: var(--grey); font-size: 14px; }
.timeline .what strong { display: block; color: var(--black); font-weight: 600; font-size: 18px; }
.timeline .what span { display: block; color: var(--dark); margin-top: 4px; }
.timeline .what span + span { color: var(--grey); font-size: 14px; }

/* ==========================================================================
   Caso de estudio
   ========================================================================== */
.cs-back { margin-top: var(--s-40); padding: 14px 24px 14px 20px; font-size: 16px; font-weight: 600; }
.cs-back .arrow-back { font-size: 18px; line-height: 1; transition: transform .2s ease; }
.cs-back:hover .arrow-back { transform: translateX(-3px); }
.cs { padding-bottom: var(--s-128); }
.cs-hero { padding: var(--s-40) 0 var(--s-64); border-bottom: 1px solid var(--n2); position: relative; }
.cs-hero .eyebrow { color: var(--orange); font-weight: 700; font-size: 13px; }
.cs-hero h1 { margin-top: var(--s-16); font-family: var(--f-display); font-weight: 800; font-size: clamp(40px, 6.4vw, 84px); line-height: .96; letter-spacing: -0.03em; max-width: 16ch; }
.cs-sub { margin-top: var(--s-24); max-width: 56ch; font-size: clamp(18px, 1.8vw, 22px); font-weight: 300; color: var(--dark); line-height: 1.45; }
.cs-meta { margin: var(--s-40) 0 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--s-24); border-top: 1px solid var(--n3); padding-top: var(--s-24); }
.cs-meta dt { font-size: 12px; letter-spacing: .18em; text-transform: uppercase; color: var(--grey); }
.cs-meta dd { margin: 8px 0 0; font-size: 15px; color: var(--black); line-height: 1.4; }

.cs-tldr { margin: var(--s-64) 0 0; padding: var(--s-32); background: var(--g-violet); border-radius: var(--radius); }
.cs-tldr ul { list-style: none; margin: var(--s-16) 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-32); }
.cs-tldr li { font-size: 16px; color: var(--dark); }
.cs-tldr li strong { display: block; color: var(--black); margin-bottom: 6px; font-weight: 600; }

.kpis { margin-top: var(--s-24); display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); border-top: 1px solid var(--n3); border-left: 1px solid var(--n2); }
.kpi { padding: var(--s-24); border-right: 1px solid var(--n2); border-bottom: 1px solid var(--n2); display: flex; flex-direction: column; gap: 6px; }
.kpi-value { font-family: var(--f-display); font-weight: 800; font-size: clamp(36px, 3.6vw, 52px); line-height: 1; letter-spacing: -0.03em; color: var(--black); }
.kpi:first-child .kpi-value { background: var(--g-heat); -webkit-background-clip: text; background-clip: text; color: transparent; }
.kpi-label { font-size: 15px; font-weight: 500; color: var(--black); }
.kpi-note { font-size: 13px; color: var(--grey); line-height: 1.4; }

.cs-section { max-width: var(--read); margin: var(--s-80) auto 0; }
.cs-section .label { color: var(--orange); }
.cs-section h2 { margin-top: var(--s-16); font-size: clamp(28px, 3vw, 38px); }
.cs-section > p, .cs-section > ul:not(.learn) { margin-top: var(--s-24); font-size: 18px; line-height: 1.65; color: var(--dark); }
.cs-section > p + p { margin-top: var(--s-16); }
.cs-section strong { color: var(--black); font-weight: 600; }
.cs-section ul:not(.learn) { padding-left: 1.1em; }
.cs-section ul:not(.learn) li + li { margin-top: 8px; }

/* Diagrama .flow (CONNECTION: nodos y recorridos) */
.flow {
  margin: var(--s-40) calc(-1 * min(120px, 8vw)); padding: var(--s-32);
  background: var(--n1); border: 1px solid var(--n2); border-radius: var(--radius);
  display: flex; align-items: stretch; flex-wrap: wrap; gap: 0; position: relative;
  background-image: linear-gradient(to right, rgba(23,23,23,.04) 1px, transparent 1px), linear-gradient(to bottom, rgba(23,23,23,.04) 1px, transparent 1px);
  background-size: 24px 24px;
}
.flow .node {
  flex: 1 1 140px; position: relative;
  background: var(--white); border: 1px solid var(--n3); border-radius: var(--radius);
  padding: 14px 16px; font-size: 14px; line-height: 1.4; color: var(--black);
  margin-right: 28px;
}
.flow .node:not(:last-of-type)::after {
  content: ""; position: absolute; top: 50%; right: -29px; width: 28px; height: 1px; background: var(--black);
}
.flow .node:not(:last-of-type)::before {
  content: ""; position: absolute; top: calc(50% - 3px); right: -31px; width: 6px; height: 6px; border-radius: 50%; background: var(--black); z-index: 1;
}
.flow .node:last-of-type { margin-right: 0; }
.flow .node-label { display: block; font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--grey); margin-bottom: 6px; }
.flow .node.is-accent { background: var(--black); color: var(--white); border-color: var(--black); }
.flow .node.is-accent .node-label { color: var(--coral); }
.flow figcaption { flex-basis: 100%; margin-top: var(--s-24); font-size: 13px; color: var(--grey); }

/* Decisiones */
.decisions { margin-top: var(--s-32); display: grid; gap: var(--s-16); }
.decision { padding: var(--s-24) var(--s-24) var(--s-24) var(--s-80); border: 1px solid var(--n2); border-radius: var(--radius); background: var(--white); position: relative; }
.decision-num { position: absolute; left: var(--s-24); top: var(--s-24); font-family: var(--f-display); font-weight: 800; font-size: 20px; color: var(--violet); }
.decision h3 { font-size: 20px; line-height: 1.25; }
.decision p { margin-top: 10px; color: var(--dark); font-size: 16px; }
.decision .tradeoff { margin-top: 14px; padding-top: 14px; border-top: 1px dashed var(--n3); font-size: 14px; color: var(--dark); }
.decision .tradeoff strong { color: var(--orange); font-weight: 600; }

.insight {
  margin: var(--s-40) 0 0; padding: var(--s-8) 0 var(--s-8) var(--s-24);
  border-left: 2px solid var(--orange);
  font-size: clamp(22px, 2.2vw, 28px); line-height: 1.3; font-weight: 300; color: var(--black);
}

.learn { list-style: none; margin: var(--s-24) 0 0; padding: 0; counter-reset: l; }
.learn li { counter-increment: l; position: relative; padding: var(--s-16) 0 var(--s-16) 48px; border-top: 1px solid var(--n2); font-size: 17px; color: var(--dark); }
.learn li::before { content: counter(l, decimal-leading-zero); position: absolute; left: 0; top: var(--s-16); font-size: 12px; letter-spacing: .12em; color: var(--violet); font-weight: 600; padding-top: 4px; }

.cs-note { max-width: var(--read); margin: var(--s-64) auto 0; padding-top: var(--s-24); border-top: 1px solid var(--n2); font-size: 13px; color: var(--grey); }

/* Reveal suave */
.reveal { opacity: 0; transform: translateY(16px); transition: opacity .7s ease, transform .7s ease; }
.reveal.is-in { opacity: 1; transform: none; }

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width: 1024px) {
  .cards, .cards.cards-2 { grid-template-columns: repeat(2, 1fr); }
  .cs-meta { grid-template-columns: repeat(2, 1fr); }
  .flow { margin-left: 0; margin-right: 0; }
}
@media (max-width: 820px) {
  :root { --nav-h: 64px; }
  .nav-toggle { display: block; }
  .nav-right { gap: var(--s-16); }
  .nav-links {
    position: fixed; top: var(--nav-h); left: 0; right: 0;
    flex-direction: column; gap: 0; background: var(--white);
    border-bottom: 1px solid var(--n2); padding: 8px var(--gutter) 24px;
    transform: translateY(-8px); opacity: 0; pointer-events: none; transition: opacity .2s, transform .2s;
  }
  .nav-links a { display: block; padding: 16px 0; font-size: 20px; border-bottom: 1px solid var(--n2); }
  .nav-links a::after { display: none; }
  .nav.is-open .nav-links { transform: none; opacity: 1; pointer-events: auto; }
  .nav.is-open .nav-toggle span:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
  .nav.is-open .nav-toggle span:nth-child(2) { opacity: 0; }
  .nav.is-open .nav-toggle span:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }

  .hero .wrap, .contact .wrap, .about-hero .wrap, .about-body { grid-template-columns: 1fr; gap: var(--s-40); }
  .hero-visual { max-width: 360px; justify-self: center; order: -1; margin-bottom: 24px; }
  .hero-hint { bottom: -22px; }
  .pillar-note { padding: 8px 10px; }
  .pillar-note strong { font-size: 14px; }
  .pillar-note span { font-size: 12px; }
  .hero { min-height: auto; }
  .section { padding: var(--s-80) 0; }
  .cards, .cards.cards-2 { grid-template-columns: 1fr; }
  .work-head { grid-template-columns: 1fr; gap: var(--s-24); }
  .work-head-title { order: 1; justify-self: start; text-align: left; }
  .work-head-intro { order: 2; justify-self: start; padding-right: 0; border-right: 0; padding-left: var(--s-24); border-left: 1px solid var(--n3); }
  .values { grid-template-columns: 1fr; }
  .value { padding: var(--s-16) 0; }
  .value-net { height: auto; margin-bottom: 8px; }
    .syn { flex-basis: 100%; height: 40px; }
  .cs-tldr ul { grid-template-columns: 1fr; gap: var(--s-16); }
  .flow { flex-direction: column; padding: var(--s-24); }
  .flow .node { margin-right: 0; margin-bottom: 24px; flex-basis: auto; }
  .flow .node:not(:last-of-type)::after { top: auto; bottom: -25px; right: auto; left: 50%; width: 1px; height: 24px; }
  .flow .node:not(:last-of-type)::before { top: auto; bottom: -28px; right: auto; left: calc(50% - 3px); }
  .flow .node:last-of-type { margin-bottom: 0; }
  .decision { padding: var(--s-24); }
  .decision-num { position: static; margin-bottom: 8px; }
  .timeline li { grid-template-columns: 1fr; gap: 6px; }
  .job summary { grid-template-columns: 1fr 32px; gap: 8px var(--s-16); }
  .job .when { grid-column: 1 / -1; padding-top: 0; }
  .job-body { padding-left: 0; }
  .about-body aside .label { position: static; }
  .about-photo { max-width: 420px; }
}
@media (max-width: 480px) {
  .cs-meta { grid-template-columns: 1fr; }
  .contact-list .k { min-width: 70px; }
  .contact-list a { font-size: 16px; }
}
@media (hover: none) { .hero-hint { display: none; } }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .reveal { opacity: 1; transform: none; }
}

/* Contenido de caso: subtítulos y tablas (provisional hasta maquetación) */
.cs-section h3:not(.decision h3) { margin-top: var(--s-40); font-size: 20px; }
.cs-table { width: 100%; margin-top: var(--s-24); border-collapse: collapse; font-size: 15px; line-height: 1.45; }
.cs-table th { text-align: left; font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--grey); font-weight: 500; padding: 10px 12px; border-bottom: 1px solid var(--n3); }
.cs-table td { padding: 12px; border-bottom: 1px solid var(--n2); color: var(--dark); vertical-align: top; }
@media (max-width: 640px) { .cs-table { font-size: 13px; } .cs-table th, .cs-table td { padding: 8px 6px; } }

/* >>> IV-CASE START */

/* ==========================================================================
   Caso Investors — maquetación visual (scroll + índice)
   Structure → Connection → Activation
   ========================================================================== */
.iv { --rail: 28px; }
.iv strong, .iv b { color: var(--black); font-weight: 600; }
.iv .eyebrow { color: var(--orange); font-weight: 700; font-size: 13px; }

/* Botón atrás: tipo texto */
.cs-back.cs-back-text { display: inline-flex; align-items: center; gap: 8px; margin-top: var(--s-40); padding: 0; border: 0; background: none; font: 600 15px/1 var(--f-main); color: var(--black); text-decoration: none; }
.cs-back.cs-back-text:hover { color: var(--orange); }

/* ---------- Hero ---------- */
.iv-hero { padding: var(--s-40) 0 var(--s-80); max-width: 900px; }
.iv-hero h1 { margin-top: var(--s-16); font-family: var(--f-display); font-weight: 800; font-size: clamp(40px, 5.6vw, 76px); line-height: .96; letter-spacing: -0.03em; }
.iv-hero h1 em, .iv-insight em { font-style: normal; color: var(--orange); }
.iv-hero-sub { margin-top: var(--s-24); max-width: 46ch; font-size: clamp(18px, 1.7vw, 21px); font-weight: 300; line-height: 1.45; color: var(--dark); }
.iv-chips { list-style: none; padding: 0; margin: var(--s-24) 0 0; display: flex; flex-wrap: wrap; gap: 8px; }
.iv-chips li { font-size: 13px; padding: 7px 12px; border: 1px solid var(--n3); border-radius: 999px; background: var(--white); color: var(--dark); }
.iv-chips b { color: var(--grey); font-weight: 500; margin-right: 6px; font-size: 11px; letter-spacing: .12em; text-transform: uppercase; }
.iv-hero-cta { display: flex; flex-wrap: wrap; gap: 12px; margin-top: var(--s-32); }

.iv-fan { position: relative; height: 520px; }
.iv-hero { overflow-x: clip; }
.iv-glow { position: absolute; inset: 8% 4%; border-radius: 50%; background: radial-gradient(circle at 40% 45%, rgba(255,90,31,.35), rgba(255,90,111,.22) 40%, rgba(139,92,246,.2) 62%, transparent 72%); filter: blur(30px); animation: iv-breathe 9s ease-in-out infinite alternate; }
.iv-fan img { position: absolute; width: 44%; top: 50%; left: 50%; box-shadow: 0 30px 60px -28px rgba(23,23,23,.45); transition: transform .6s cubic-bezier(.2,.7,.2,1); }
.iv-fan-1 { transform: translate(-112%, -46%) rotate(-8deg); }
.iv-fan-2 { transform: translate(-50%, -54%) rotate(0deg); z-index: 2; }
.iv-fan-3 { transform: translate(12%, -46%) rotate(8deg); }
.iv-fan:hover .iv-fan-1 { transform: translate(-122%, -48%) rotate(-11deg); }
.iv-fan:hover .iv-fan-3 { transform: translate(22%, -48%) rotate(11deg); }
.iv-fan:hover .iv-fan-2 { transform: translate(-50%, -58%); }
@keyframes iv-breathe { from { transform: scale(.94) translate(-2%, 2%); } to { transform: scale(1.06) translate(3%, -3%); } }

/* ---------- Módulos: TL;DR y detalle, separados por línea ---------- */
.iv-module { border-top: 1px solid var(--n2); padding-top: var(--s-80); margin-top: var(--s-80); }
.iv-body.iv-module { padding-top: var(--s-128); margin-top: var(--s-128); }
.iv-tldr { padding-bottom: var(--s-16); }
.iv-tldr-cols { margin-top: var(--s-32); display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-40); }
.iv-tl-h { font-size: 13px; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--orange); }
.iv-tl p:last-child { margin-top: var(--s-16); font-size: 18px; line-height: 1.5; font-weight: 400; color: var(--dark); }
.iv-tl strong { color: var(--black); font-weight: 600; }

/* ---------- (legado) En 30 segundos ---------- */
.iv-quick { padding: var(--s-40); border-radius: 16px; background: var(--n1); border: 1px solid var(--n2); }
.iv-kicker, .iv-sub-h { font-size: 12px; letter-spacing: .18em; text-transform: uppercase; color: var(--grey); font-weight: 600; }
.iv-quick-grid { margin-top: var(--s-24); display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-16); }
.iv-q { padding: var(--s-24); border-radius: 12px; background: var(--white); border: 1px solid var(--n2); position: relative; }
.iv-q p { margin-top: 12px; font-size: 16px; line-height: 1.5; color: var(--dark); }
.iv-q-tag { display: inline-block; font-size: 11px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; padding: 4px 10px; border-radius: 999px; }
.iv-q-hard .iv-q-tag { background: var(--soft-orange); color: var(--orange); }
.iv-q-did { background: var(--soft-violet); border-color: #E3DAFE; }
.iv-q-did .iv-q-tag { background: var(--violet); color: #fff; }
.iv-q-result { background: var(--black); border-color: var(--black); }
.iv-q-result p { color: #D8D6D0; }
.iv-q-result strong { color: #fff; }
.iv-q-result .iv-q-tag { background: var(--g-heat); color: #fff; }
.iv-q + .iv-q::before { content: "→"; position: absolute; left: -14px; top: 50%; transform: translate(-50%, -50%); font-size: 14px; color: var(--grey); }
.iv-kpis { margin-top: var(--s-40); display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--s-16); }
.iv-kpi { padding: var(--s-24); border-radius: 12px; background: var(--n1); border: 1px solid var(--n2); transition: transform .25s; }
.iv-kpi:hover { transform: translateY(-3px); }
.iv-kpi-n { display: flex; align-items: baseline; gap: 6px; }
.iv-kpi-v { font-family: var(--f-display); font-weight: 800; font-size: clamp(34px, 3.6vw, 48px); line-height: 1; color: var(--orange); font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.iv-kpi-u { font-weight: 600; color: var(--black); font-size: 16px; }
.iv-kpi-l { margin-top: 10px; font-size: 13px; color: var(--black); line-height: 1.4; }

/* ---------- Cuerpo + índice ---------- */
.iv-body { display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: var(--s-64); align-items: start; }
.iv-toc { position: sticky; top: calc(var(--nav-h) + 24px); }
.iv-toc-title { font-size: 12px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--black); }
.iv-toc ol { list-style: none; margin: var(--s-16) 0 0; padding: 0; display: grid; gap: 2px; }
.iv-toc a { position: relative; display: flex; gap: 10px; align-items: baseline; padding: 9px 0 11px; text-decoration: none; font-size: 14px; color: var(--grey); transition: color .2s; }
.iv-toc a span { font-size: 11px; font-weight: 700; letter-spacing: .08em; color: var(--n3); transition: color .2s; }
.iv-toc a i { position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--n2); overflow: hidden; border-radius: 2px; }
.iv-toc a i::after { content: ""; position: absolute; inset: 0; background: var(--grey); transform: scaleX(var(--p, 0)); transform-origin: left; transition: transform .15s linear; }
.iv-toc a:hover { color: var(--black); }
.iv-toc a.is-active { color: var(--black); font-weight: 600; }
.iv-toc a.is-active span, .iv-toc a.is-done span { color: var(--orange); }
.iv-toc-more { display: inline-block; margin-top: var(--s-24); font-size: 13px; color: var(--orange); text-decoration: none; font-weight: 500; }
.iv-toc-more:hover { text-decoration: underline; }

.iv-main { position: relative; padding-left: var(--s-40); }
.iv-main::before { content: ""; position: absolute; left: 0; top: 8px; bottom: 0; width: 1px; background: var(--n2); }
.iv-rail { position: absolute; left: 0; top: 8px; width: 2px; margin-left: -.5px; height: 0; background: var(--orange); border-radius: 2px; }

/* ---------- Capítulos ---------- */
.iv-ch { position: relative; padding-bottom: var(--s-160); scroll-margin-top: calc(var(--nav-h) + 24px); }
.iv-ch + .iv-ch { padding-top: var(--s-80); }
.iv-ch-head { position: relative; max-width: 780px; }
.iv-ch-ghost { position: absolute; right: -8px; top: -30px; font-family: var(--f-display); font-weight: 900; font-size: clamp(90px, 12vw, 170px); line-height: 1; color: transparent; -webkit-text-stroke: 1px var(--n3); pointer-events: none; z-index: -1; }
.iv-ch-label { display: flex; align-items: center; gap: 10px; font-size: 13px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--orange); }
.iv-ch-label .iv-dot { position: absolute; left: calc(-1 * var(--s-40) - 6px); width: 13px; height: 13px; border-radius: 50%; background: var(--white); border: 2px solid var(--n3); transition: border-color .3s, background .3s, box-shadow .3s; }
.iv-ch.is-reached .iv-dot { border-color: var(--orange); background: var(--orange); box-shadow: 0 0 0 5px var(--soft-orange); }
.iv-ch-head h2 { margin-top: var(--s-16); font-size: clamp(28px, 3.3vw, 42px); line-height: 1.08; max-width: 22ch; }
.iv-insight { font-family: var(--f-display); font-weight: 800; font-size: clamp(32px, 4.2vw, 56px) !important; letter-spacing: -.03em; max-width: 18ch !important; }
.iv-ch-lead { margin-top: var(--s-24); max-width: 60ch; font-size: 18px; line-height: 1.55; color: var(--dark); }

.iv-bridge { margin-top: var(--s-64); display: flex; flex-wrap: wrap; gap: 8px; align-items: baseline; font-size: 18px; color: var(--grey); font-weight: 300; }
.iv-bridge span { color: var(--black); font-weight: 600; }

/* Cards */
.iv-grid-3 { margin-top: var(--s-40); display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-16); }
.iv-card, .iv-stat { padding: var(--s-24); border-radius: 12px; background: var(--white); border: 1px solid var(--n2); box-shadow: 0 1px 2px rgba(23,23,23,.03), 0 18px 34px -26px rgba(23,23,23,.25); transition: transform .25s ease, box-shadow .25s ease, border-color .25s; }
.iv-card:hover, .iv-stat:hover { transform: translateY(-4px); border-color: var(--n3); box-shadow: 0 26px 48px -26px rgba(23,23,23,.35); }
.iv-card h3 { font-size: 18px; margin-top: 4px; }
.iv-card > p:not(.iv-card-k), .iv-stat > p:not(.iv-card-k):not(.iv-stat-v) { margin-top: 8px; font-size: 15px; line-height: 1.5; color: var(--dark); }
.iv-card-k { font-size: 11px; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--grey); margin-top: 14px; }
.iv-stat .iv-card-k { margin-top: 0; }
.iv-card-hi { background: var(--g-orange); border-color: #FFE3D8; }
.iv-ico { display: inline-grid; place-items: center; width: 36px; height: 36px; border-radius: 10px; background: var(--soft-orange); color: var(--orange); }
.iv-ico svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.iv-card-hi .iv-ico { background: #fff; color: var(--orange); }
.iv-ico.sm { width: 32px; height: 32px; flex: none; background: var(--n1); color: var(--dark); }
.iv-duo { margin-top: 12px; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.iv-duo b { display: block; font-family: var(--f-display); font-weight: 800; font-size: 32px; line-height: 1; color: var(--orange); }
.iv-duo span { display: block; margin-top: 6px; font-size: 12px; line-height: 1.35; color: var(--dark); }
.iv-stat-v { margin-top: 12px; white-space: nowrap; font-family: var(--f-display); font-weight: 800; font-size: clamp(28px, 2.8vw, 40px); line-height: 1; color: var(--black); letter-spacing: -.02em; }
.iv-stat-v small { font-family: var(--f-main); font-size: 13px; font-weight: 600; color: var(--grey); letter-spacing: .1em; }
.iv-stat-v em { font-style: normal; color: var(--orange); }
.iv-risk { margin: var(--s-40) 0 0; padding: 0 0 0 var(--s-24); border-left: 3px solid var(--orange); max-width: 32ch; font-size: clamp(22px, 2.3vw, 28px); line-height: 1.3; font-weight: 500; color: var(--black); }

/* Sub-bloques */
.iv-sub { margin-top: 67px; }
.iv-sub-h { color: var(--black); }
.iv-hint { color: var(--grey); font-weight: 500; letter-spacing: .08em; text-transform: none; }
.iv-evidence { margin-top: var(--s-16); display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: var(--n2); border: 1px solid var(--n2); border-radius: 12px; overflow: hidden; }
.iv-ev { background: var(--white); padding: var(--s-24) var(--s-16); transition: background .2s; }
.iv-ev:hover { background: var(--soft-orange); }
.iv-ev-src { font-size: 14px; font-weight: 600; color: var(--black); }
.iv-ev-src span { display: block; font-size: 12px; font-weight: 400; color: var(--grey); margin-top: 2px; }
.iv-ev-big { margin-top: var(--s-16); font-family: var(--f-display); font-weight: 800; font-size: 30px; line-height: 1; color: var(--orange); }
.iv-ev p:last-child { margin-top: 8px; font-size: 13px; line-height: 1.45; color: var(--dark); }
.iv-causes { margin-top: var(--s-16); display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.iv-causes span { font-size: 13px; padding: 6px 12px; border-radius: 999px; background: var(--white); border: 1px solid var(--n3); color: var(--dark); }
.iv-causes .iv-causes-l { border: 0; padding-left: 0; background: none; font-size: 11px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--grey); }
.iv-limits { list-style: none; margin: var(--s-16) 0 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-16) var(--s-32); }
.iv-limits li { display: flex; gap: 14px; align-items: flex-start; font-size: 14px; line-height: 1.5; color: var(--dark); }
.iv-limits b { display: block; font-size: 15px; margin-bottom: 2px; }

/* Palancas */
.iv-levers { list-style: none; margin: var(--s-40) 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-24); counter-reset: lv; }
.iv-levers li { position: relative; padding: var(--s-24); border-radius: 12px; border: 1px solid var(--n2); background: var(--white); }
.iv-levers li:not(:last-child)::after { content: ""; position: absolute; right: -25px; top: 50%; width: 26px; height: 1px; background: var(--n3); }
.iv-levers li:not(:last-child)::before { content: ""; position: absolute; right: -16px; top: calc(50% - 3.5px); width: 7px; height: 7px; border-radius: 50%; background: var(--orange); z-index: 1; }
.iv-levers li.is-accent { background: var(--g-orange); border-color: #FFE3D8; }
.iv-lever-n { font-size: 11px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--orange); }
.iv-levers h3 { margin-top: 10px; font-size: 19px; }
.iv-levers p { margin-top: 8px; font-size: 15px; line-height: 1.5; color: var(--dark); }
.iv-note { margin-top: var(--s-24); font-size: 15px; color: var(--dark); }

/* Principios (tabs) */
.iv-principles { margin-top: var(--s-16); display: flex; flex-wrap: wrap; gap: 8px; }
.iv-principles button { font: 500 14px/1 var(--f-main); padding: 10px 16px; border-radius: 999px; border: 1px solid var(--n3); background: var(--white); color: var(--dark); cursor: pointer; transition: all .2s; }
.iv-principles button:hover { border-color: var(--black); color: var(--black); }
.iv-principles button[aria-selected="true"] { background: var(--black); border-color: var(--black); color: #fff; }
.iv-pr-panels { position: relative; margin-top: var(--s-16); min-height: 64px; padding: var(--s-16) var(--s-24); border-radius: 12px; background: transparent; border: 1px solid var(--orange); }
.iv-pr-panels p { display: none; font-size: 16px; line-height: 1.5; color: var(--dark); }
.iv-pr-panels p.is-on { display: block; animation: iv-fade .35s ease; }
.iv-pr-panels b { color: var(--black); }
@keyframes iv-fade { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }

/* Decisiones */
.iv-decisions { margin-top: var(--s-16); display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-16); }
.iv-decisions article { padding: var(--s-24); border-radius: 12px; background: var(--white); border: 1px solid var(--n2); transition: border-color .2s, transform .25s; }
.iv-decisions article:hover { border-color: var(--orange); transform: translateY(-3px); }
.iv-decisions span { font-family: var(--f-display); font-weight: 800; font-size: 18px; color: var(--orange); }
.iv-decisions h3 { margin-top: 8px; font-size: 16px; line-height: 1.3; }
.iv-decisions p { margin-top: 8px; font-size: 14px; line-height: 1.5; color: var(--dark); }
.iv-decisions .is-key { grid-column: span 2; background: var(--g-orange); border-color: #FFE3D8; }
.iv-two { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-40); }
.iv-list { list-style: none; margin: var(--s-16) 0 0; padding: 0; display: grid; gap: 12px; }
.iv-list li { position: relative; padding-left: 30px; font-size: 14px; line-height: 1.5; color: var(--dark); }
.iv-list li::before { position: absolute; left: 0; top: 0; width: 20px; height: 20px; border-radius: 50%; display: grid; place-items: center; font-size: 11px; font-weight: 700; }
.iv-list-x li::before { content: "✕"; background: var(--soft-orange); color: var(--orange); }
.iv-list-t li::before { content: "⇄"; background: var(--soft-orange); color: var(--orange); }

/* Acordeón: alternativas y trade-offs */
.iv-acc { display: grid; gap: 0; border-top: 1px solid var(--n2); }
.iv-acc-item { border-bottom: 1px solid var(--n2); }
.iv-acc-item summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; padding: var(--s-24) 0; }
.iv-acc-item summary::-webkit-details-marker { display: none; }
.iv-acc-item summary i { position: relative; width: 16px; height: 16px; flex: none; }
.iv-acc-item summary i::before, .iv-acc-item summary i::after { content: ""; position: absolute; left: 0; right: 0; top: 7px; height: 2px; background: var(--orange); border-radius: 2px; transition: transform .25s ease; }
.iv-acc-item summary i::after { transform: rotate(90deg); }
.iv-acc-item[open] summary i::after { transform: rotate(0deg); }
.iv-acc-item summary:hover .iv-sub-h { color: var(--orange); }
.iv-acc-item .iv-list { margin: 0; padding-bottom: var(--s-24); animation: iv-fade .3s ease; }
.iv-acc-body { padding-bottom: var(--s-32); animation: iv-fade .3s ease; }
.iv-acc-body > :first-child { margin-top: 0; }
.iv-acc-hint { font-size: 13px; color: var(--grey); }
.iv-acc-hint + .iv-principles { margin-top: 12px; }
.iv :focus-visible { outline-color: var(--orange); }

/* Flujo interactivo */
.iv-flow { margin-top: var(--s-16); display: grid; grid-template-columns: 1fr 230px; gap: var(--s-40); align-items: center; padding: var(--s-32); border-radius: 0; background: none; border: 0; padding: var(--s-16) 0 0; }
.iv-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; position: relative; }
.iv-steps button { width: 100%; text-align: left; display: grid; grid-template-columns: 34px 1fr; column-gap: 12px; padding: 12px 14px; border-radius: 10px; border: 1px solid transparent; background: transparent; font-family: var(--f-main); cursor: pointer; transition: background .2s, border-color .2s; }
.iv-steps button span { grid-row: span 2; width: 30px; height: 30px; border-radius: 50%; display: grid; place-items: center; font-size: 11px; font-weight: 700; border: 1px solid var(--n3); color: var(--grey); background: var(--white); transition: all .2s; }
.iv-steps button b { font-size: 16px; color: var(--dark); align-self: center; }
.iv-steps button em { font-style: normal; font-size: 14px; line-height: 1.45; color: var(--dark); display: none; margin-top: 4px; }
.iv-steps button:hover b { color: var(--black); }
.iv-steps button[aria-selected="true"] { background: var(--white); border-color: var(--n2); box-shadow: 0 14px 30px -22px rgba(23,23,23,.4); }
.iv-steps button[aria-selected="true"] span { background: var(--orange); border-color: var(--orange); color: #fff; }
.iv-steps button[aria-selected="true"] b { color: var(--black); }
.iv-steps button[aria-selected="true"] em { display: block; animation: iv-fade .3s ease; }
.iv-phone { position: relative; aspect-ratio: 440 / 912; }
.iv-phone img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; opacity: 0; transform: translateY(10px) scale(.98); transition: opacity .45s ease, transform .45s ease; filter: drop-shadow(0 26px 34px rgba(23,23,23,.22)); }
.iv-phone img.is-on { opacity: 1; transform: none; }
.iv-qa { margin-top: var(--s-16); display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--s-16); align-items: center; font-size: 14px; color: var(--dark); }
.iv-links { display: flex; flex-wrap: wrap; gap: 8px; }
.iv-links a { font-size: 13px; padding: 7px 12px; border-radius: 999px; border: 1px solid var(--black); text-decoration: none; color: var(--black); transition: all .2s; }
.iv-links a:hover { background: var(--black); color: #fff; }

/* Antes / después */
.iv-ba { margin-top: var(--s-16); display: grid; grid-template-columns: 230px 1fr; gap: var(--s-40); align-items: center; padding: var(--s-32); border-radius: 0; background: none; padding: var(--s-16) 0 0; }
.iv-seg { display: inline-flex; padding: 4px; border-radius: 999px; background: var(--white); border: 1px solid var(--n2); margin-bottom: var(--s-16); }
.iv-seg button { font: 600 13px/1 var(--f-main); padding: 9px 18px; border-radius: 999px; border: 0; background: transparent; color: var(--grey); cursor: pointer; transition: all .2s; }
.iv-seg button[aria-selected="true"] { background: var(--black); color: #fff; }
.iv-ba-device { position: relative; aspect-ratio: 520 / 1077; }
.iv-ba-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: top; opacity: 0; transition: opacity .4s ease; }
.iv-ba-img.is-old { border: 9px solid #1d1d1f; border-radius: 34px; background: #fff; }
.iv-ba-img.is-on { opacity: 1; }
.iv-ba-copy { display: none; }
.iv-ba-copy.is-on { display: block; animation: iv-fade .35s ease; }
.iv-ba-copy .iv-card-k { margin-top: 0; }
.iv-ba-copy h3 { margin-top: 8px; font-size: clamp(22px, 2.2vw, 28px); }
.iv-ba-copy p:last-child { margin-top: 12px; font-size: 16px; line-height: 1.55; color: var(--dark); max-width: 42ch; }
.iv-strip { margin-top: var(--s-24); display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--s-16); }
.iv-strip figure { margin: 0; }
.iv-strip img { width: 100%; transition: transform .35s ease; filter: drop-shadow(0 14px 20px rgba(23,23,23,.16)); }
.iv-strip figure:hover img { transform: translateY(-8px) scale(1.04); }
.iv-strip figcaption { margin-top: 10px; font-size: 12px; line-height: 1.4; color: var(--dark); }
.iv-strip figcaption b { display: block; font-size: 11px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--orange); }
.iv-old-toggle { display: inline-block; margin-top: var(--s-16); padding: 0; border: 0; background: none; font: 600 14px/1.2 var(--f-main); color: var(--black); cursor: pointer; }
.iv-old-toggle:hover, .iv-old-toggle[aria-expanded="true"] { color: var(--orange); }
.iv-old { margin-top: var(--s-24); animation: iv-fade .35s ease; }
.iv-old[hidden] { display: none; }
.iv-old summary { cursor: pointer; font-size: 14px; font-weight: 600; color: var(--black); list-style: none; }
.iv-old summary::before { content: "+"; display: inline-block; width: 18px; color: var(--orange); transition: transform .2s; }
.iv-old[open] summary::before { transform: rotate(45deg); }
.iv-old summary::-webkit-details-marker { display: none; }
.iv-old-grid { margin-top: var(--s-16); display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--s-16); }
.iv-old-grid figure { margin: 0; }
.iv-old-grid img { width: 100%; max-height: 360px; object-fit: cover; object-position: top; border-radius: 10px; border: 1px solid var(--n2); filter: grayscale(.35); }
.iv-old-grid figcaption { margin-top: 8px; font-size: 12px; line-height: 1.4; color: var(--grey); }

/* Impacto */
.iv-impact { margin-top: var(--s-40); display: grid; grid-template-columns: 1.15fr 1fr; gap: var(--s-24); align-items: stretch; }
.iv-nps { padding: var(--s-32); border-radius: 16px; background: var(--g-orange); border: 1px solid #FFE3D8; }
.iv-nps-row { display: grid; grid-template-columns: 96px 1fr auto 52px; gap: 12px; align-items: center; margin-top: var(--s-24); font-size: 14px; }
.iv-nps-l { color: var(--dark); }
.iv-nps-row.is-main .iv-nps-l { color: var(--black); font-weight: 600; }
.iv-bars { display: grid; gap: 4px; }
.iv-bars i { display: block; height: 8px; border-radius: 4px; background: var(--n3); width: 0; transition: width 1.1s cubic-bezier(.2,.7,.2,1); }
.iv-bars i.is-new { background: var(--orange); transition-delay: .25s; }
.iv-impact.is-in .iv-bars i { width: calc(var(--v) * 1%); }
.iv-nps-v { color: var(--grey); white-space: nowrap; }
.iv-nps-v b { color: var(--black); }
.iv-nps-d { text-align: right; font-weight: 700; color: var(--orange); }
.iv-nps-row.is-main .iv-nps-d { color: var(--orange); font-size: 16px; }
.iv-legend { margin-top: var(--s-24); font-size: 12px; color: var(--dark); display: flex; align-items: center; gap: 8px; }
.iv-legend span { display: inline-block; width: 14px; height: 6px; border-radius: 3px; }
.iv-legend .old { background: var(--n3); }
.iv-legend .new { background: var(--orange); margin-left: 8px; }
.iv-impact-cards { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-16); }
.iv-ic { padding: var(--s-24); border-radius: 12px; background: var(--white); border: 1px solid var(--n2); }
.iv-ic .iv-card-k { margin-top: 0; }
.iv-ic-v { margin-top: 10px; font-family: var(--f-display); font-weight: 800; font-size: clamp(20px, 1.9vw, 26px); line-height: 1.05; color: var(--black); letter-spacing: -.01em; }
.iv-ic p:last-child { margin-top: 8px; font-size: 13px; line-height: 1.45; color: var(--dark); }
.iv-caveat { margin-top: var(--s-16); font-size: 12px; color: var(--grey); max-width: 90ch; }
.iv-compare { margin-top: var(--s-16); display: grid; gap: 0; border-top: 1px solid var(--n2); }
.iv-cmp { display: grid; grid-template-columns: 170px 1fr 30px 1fr; gap: var(--s-16); align-items: center; padding: var(--s-16) 0; border-bottom: 1px solid var(--n2); font-size: 14px; line-height: 1.45; }
.iv-cmp .a { color: var(--grey); }
.iv-cmp .d { color: var(--black); font-weight: 500; }
.iv-cmp .arr { color: var(--orange); font-weight: 700; text-align: center; }
.iv-fails { margin-top: var(--s-16); display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--s-16); }
.iv-fails article { padding: var(--s-24); border-radius: 12px; background: linear-gradient(135deg, var(--soft-coral), var(--soft-orange)); border: 1px solid #FFE0E4; }
.iv-fails h3 { font-size: 16px; }
.iv-fails h3::before { content: "!"; display: inline-grid; place-items: center; width: 20px; height: 20px; margin-right: 8px; border-radius: 50%; background: var(--orange); color: #fff; font-size: 12px; vertical-align: 2px; }
.iv-fails p { margin-top: 8px; font-size: 14px; line-height: 1.5; color: var(--dark); }
.iv-learn { margin-top: var(--s-16); display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-16); }
.iv-learn article { padding: var(--s-24); border-radius: 12px; background: var(--white); border: 1px solid var(--n2); border-top: 3px solid; }
.iv-learn article { border-top-color: var(--orange); }
.iv-learn span { font-family: var(--f-display); font-weight: 800; font-size: 22px; color: var(--black); }
.iv-learn p { margin-top: 8px; font-size: 14px; line-height: 1.5; color: var(--dark); }

/* Lo que no funcionó (estilo TL;DR) */
.iv-fails-cols { margin-top: var(--s-24); display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--s-40) var(--s-64); }
.iv-fails-cols .iv-tl p:last-child { font-size: 16px; }
.iv-fails-cols .iv-tl strong, .rs-next .iv-tl strong { color: var(--black); }

/* Profundizar */
.iv-deeper { margin-top: var(--s-40); padding: var(--s-64) 0 0; border-top: 1px solid var(--n2); }
.iv-deeper-cta { margin-top: var(--s-24); display: flex; flex-wrap: wrap; gap: 12px; }
.iv-deeper h2 { margin-top: 10px; font-size: clamp(26px, 2.8vw, 34px); }
.iv-deeper-grid { margin-top: var(--s-24); display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: var(--s-16); }
.iv-deeper-grid a { position: relative; display: block; padding: var(--s-24) var(--s-16); border-radius: 12px; background: var(--white); border: 1px solid var(--n2); text-decoration: none; transition: transform .25s, border-color .2s; }
.iv-deeper-grid a:hover { transform: translateY(-4px); border-color: var(--orange); }
.iv-deeper-grid b { display: block; font-size: 15px; color: var(--black); }
.iv-deeper-grid span { display: block; margin-top: 4px; font-size: 12px; color: var(--grey); }
.iv-deeper-grid i { position: absolute; right: 14px; top: 14px; font-style: normal; color: var(--orange); }

/* Jerarquía de destacados
   · Headers (h1 / h2): destacado en naranja (em)
   · Textos medianos (≥ 16px: leads, TL;DR, notas, listas, paneles): destacado en negro
   · Textos pequeños (≤ 15px: cards, tiles, decisiones, restricciones): destacado en gris oscuro */
.iv-hero h1 em, .iv-ch-head h2 em { color: var(--orange); }
.iv strong, .iv b { color: var(--black); font-weight: 600; }
.iv-card p strong, .iv-stat p strong, .iv-ev p strong, .iv-ic p strong,
.iv-decisions p strong, .iv-limits strong, .rs-under p strong,
.iv-strip figcaption strong, .iv-kpi-l strong { color: var(--dark); font-weight: 600; }
.iv-limits b { color: var(--black); }

/* Mockups: recorte redondeado del marco del móvil (las capturas vienen en JPG con esquinas negras) */
.iv-fan img, .iv-phone img, .iv-strip img, .iv-ba-img:not(.is-old) { border-radius: 12.5% / 6%; }
.iv img[src$="summary-new.jpg"] { border-radius: 10.6% / 5.1%; }
.iv-phone img { object-fit: fill; }

/* Reveal (reutiliza .reveal de main.js) */
.iv .reveal { opacity: 0; transform: translateY(18px); transition: opacity .7s ease, transform .7s cubic-bezier(.2,.7,.2,1); }
.iv .reveal.is-in { opacity: 1; transform: none; }

/* ---------- Responsive ---------- */
@media (max-width: 1080px) {
  .iv-body { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .iv-body > * { min-width: 0; }
  .iv-body.iv-module { padding-top: 0; }
  .iv-toc { top: var(--nav-h); z-index: 20; margin: 0 calc(-1 * var(--gutter)); padding: 10px var(--gutter); background: rgba(250,249,246,.94); backdrop-filter: blur(8px); border-bottom: 1px solid var(--n2); }
  .iv-toc-title, .iv-toc-more { display: none; }
  .iv-toc ol { margin: 0; display: flex; gap: 18px; overflow-x: auto; scrollbar-width: none; }
  .iv-toc ol::-webkit-scrollbar { display: none; }
  .iv-toc a { white-space: nowrap; font-size: 13px; padding: 6px 0 8px; }
  .iv-main { padding-left: 24px; margin-top: var(--s-40); }
  .iv-ch-label .iv-dot { left: -30px; }
  .iv-ch { scroll-margin-top: calc(var(--nav-h) + 64px); }
}
@media (max-width: 900px) {
  .iv-hero { grid-template-columns: 1fr; gap: var(--s-32); padding-bottom: var(--s-40); }
  .iv-fan { height: 380px; }
  .iv-fails-cols { grid-template-columns: 1fr; gap: var(--s-24); }
  .iv-body.iv-module { padding-top: 0; margin-top: var(--s-80); }
  .iv-ch { padding-bottom: var(--s-128); }
  .iv-quick-grid, .iv-tldr-cols, .iv-grid-3, .iv-levers, .iv-learn { grid-template-columns: 1fr; }
  .iv-tldr-cols { gap: var(--s-24); }
  .iv-module { padding-top: var(--s-64); margin-top: var(--s-64); }
  .iv-q + .iv-q::before { content: "↓"; left: 50%; top: -12px; }
  .iv-levers li:not(:last-child)::after { right: auto; left: 50%; top: auto; bottom: -25px; width: 1px; height: 26px; }
  .iv-levers li:not(:last-child)::before { right: auto; left: calc(50% - 3px); top: auto; bottom: -16px; }
  .iv-kpis { grid-template-columns: 1fr 1fr; }
  .iv-evidence { grid-template-columns: 1fr 1fr; }
  .iv-limits, .iv-two, .iv-impact, .iv-fails { grid-template-columns: 1fr; }
  .iv-decisions { grid-template-columns: 1fr 1fr; }
  .iv-flow { grid-template-columns: 1fr 200px; padding: var(--s-24); gap: var(--s-24); }
  .iv-ba { grid-template-columns: 220px 1fr; padding: var(--s-24); gap: var(--s-24); }
  .iv-strip, .iv-old-grid { grid-template-columns: repeat(3, 1fr); }
  .iv-deeper-grid { grid-template-columns: 1fr 1fr; }
  .iv-cmp { grid-template-columns: 1fr; gap: 4px; }
  .iv-cmp .arr { text-align: left; }
}
@media (max-width: 600px) {
  .iv-quick, .iv-deeper { padding: var(--s-24); }
  .iv-fan { height: 300px; }
  .iv-fan img { width: 48%; border-radius: 18px; }
  .iv-decisions { grid-template-columns: 1fr; }
  .iv-decisions .is-key { grid-column: auto; }
  .iv-evidence { grid-template-columns: 1fr; }
  .iv-flow { grid-template-columns: 1fr; }
  .iv-phone { max-width: 220px; margin: 0 auto; grid-row: 1; }
  .iv-ba { grid-template-columns: 1fr; }
  .iv-ba-stage { max-width: 240px; margin: 0 auto; }
  .iv-strip, .iv-old-grid { grid-template-columns: 1fr 1fr; }
  .iv-nps { padding: var(--s-24); }
  .iv-nps-row { grid-template-columns: 80px 1fr 40px; }
  .iv-nps-v { display: none; }
  .iv-impact-cards { grid-template-columns: 1fr; }
  .iv-ch-ghost { font-size: 84px; top: -18px; }
}
@media (prefers-reduced-motion: reduce) {
  .iv *, .iv *::before, .iv *::after { animation: none !important; transition: none !important; }
  .iv .reveal { opacity: 1; transform: none; }
  .iv-bars i { width: calc(var(--v) * 1%); }
}

/* <<< IV-CASE END */
/* >>> RS-CASE START */
/* ---------- Caso Result: variantes sobre el sistema .iv ---------- */
/* Las capturas de Result son PNG con transparencia: sin recorte */
.iv-result .iv-phone img, .iv-result .iv-ba-img { border-radius: 0 !important; object-fit: contain; }
.iv-result .iv-old-grid img { max-height: none; object-fit: contain; border: 0; border-radius: 0; }
.rs-old-grid { grid-template-columns: repeat(3, minmax(0, 220px)) !important; }

/* Pantallas: marco con scroll interno para las pantallas largas */
.rs-screen { position: relative; aspect-ratio: 520 / 1125; border-radius: 9.2% / 4.25%; overflow: hidden; background: transparent; box-shadow: 0 26px 40px -22px rgba(23,23,23,.38), 0 0 0 1px rgba(23,23,23,.06); }
.rs-screen.is-tall { overflow-y: auto; scrollbar-width: none; overscroll-behavior: contain; }
.rs-screen::-webkit-scrollbar { display: none; }
.rs-screen img { display: block; width: 100%; height: auto; }
.rs-hint { margin-top: 12px; font-size: 12px; color: var(--grey); text-align: center; }
.rs-hint::before { content: "↕ "; color: var(--orange); }
.rs-hint-l { text-align: left; }
.rs-stack { display: grid; }
.rs-stack > .rs-screen { grid-area: 1 / 1; opacity: 0; visibility: hidden; transform: translateY(10px) scale(.98); transition: opacity .45s ease, transform .45s ease, visibility .45s; }
.rs-stack > .rs-screen.is-on { opacity: 1; visibility: visible; transform: none; }
.rs-phone { width: 100%; }
.iv-result .iv-flow { grid-template-columns: 1fr 240px; }

/* Paso 1: móvil con botón Después/Antes + texto breve */
.rs-step { margin-top: var(--s-16); display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: var(--s-48, 48px); align-items: center; }
.rs-step-device .rs-seg { margin-bottom: var(--s-16); }
.rs-step-text h3 { font-size: clamp(20px, 2vw, 24px); line-height: 1.2; }
.rs-step-text > p { margin-top: 12px; font-size: 16px; line-height: 1.6; color: var(--dark); max-width: 46ch; }
.rs-step-text .rs-facts { max-width: 520px; }
.iv-acc-body .rs-under { margin-top: 0; }
.iv-acc-body .rs-matrix { margin-top: var(--s-8); }
/* Paso 1 (anterior): historia antes/después */
.rs-story { margin-top: var(--s-16); display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 400px); gap: var(--s-40); align-items: start; }
.rs-story h3, .rs-slots-text h3 { font-size: clamp(20px, 2vw, 24px); line-height: 1.2; }
.rs-story-text > p, .rs-slots-text > p, .rs-p { margin-top: 12px; font-size: 16px; line-height: 1.6; color: var(--dark); }
.rs-p { margin-top: var(--s-8); max-width: 68ch; }
.rs-facts { margin-top: var(--s-24); display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.rs-facts div { padding: 14px 16px; border-radius: 12px; background: var(--n1); display: grid; gap: 6px; align-content: start; }
.rs-facts b { font: 800 22px/1.05 var(--f-display); color: var(--orange); }
.rs-facts span { font-size: 13px; line-height: 1.4; color: var(--dark); }
.rs-fine { margin-top: 12px !important; font-size: 12px !important; line-height: 1.45 !important; color: var(--grey) !important; }
.rs-pair { display: grid; grid-template-columns: repeat(2, minmax(0, 190px)); gap: var(--s-16); }
.rs-pair figure, .rs-ba-grid figure { margin: 0; }
.rs-pair figcaption, .rs-ba-grid figcaption { margin-top: 12px; font-size: 12px; line-height: 1.4; color: var(--dark); }
.rs-pair figcaption b, .rs-ba-grid figcaption b { display: block; margin-bottom: 2px; font-size: 11px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--orange); }
.rs-pair figure:first-child .rs-screen img, .rs-ba-grid[data-p="before"] img { filter: grayscale(.25); }

/* Paso 2: sistema IA + espacios diseñados */
.rs-system { margin-top: var(--s-24); }
.rs-slots { margin-top: var(--s-40); display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: var(--s-40); align-items: center; }
.rs-slots-text .iv-card-k { margin-top: 0; }
.rs-slots-text h3 { margin-top: 6px; }
.rs-slot-list { list-style: none; margin: var(--s-24) 0 0; padding: 0; counter-reset: sl; display: grid; gap: 10px; }
.rs-slot-list li { counter-increment: sl; position: relative; padding: 2px 0 10px 40px; border-bottom: 1px solid var(--n2); font-size: 14px; line-height: 1.45; color: var(--dark); }
.rs-slot-list li::before { content: counter(sl); position: absolute; left: 0; top: -2px; width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; font-size: 11px; font-weight: 700; color: #fff; background: var(--orange); }
.rs-slot-list b { color: var(--black); font-weight: 600; }

/* UI design: antes/después en tríptico */
.rs-ba-head { margin-top: var(--s-16); display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--s-24); align-items: center; }
.rs-seg { display: inline-flex; padding: 4px; border-radius: 999px; background: var(--white); border: 1px solid var(--n2); }
.rs-seg button { font: 600 13px/1 var(--f-main); padding: 9px 18px; border-radius: 999px; border: 0; background: transparent; color: var(--grey); cursor: pointer; transition: all .2s; }
.rs-seg button[aria-selected="true"] { background: var(--black); color: #fff; }
.rs-ba-copy { display: none; }
.rs-ba-copy.is-on { display: block; animation: iv-fade .35s ease; }
p.rs-ba-copy { font-size: 15px; line-height: 1.5; color: var(--dark); }
.rs-ba-copy h3 { font-size: 18px; }
.rs-ba-copy p { margin-top: 4px; font-size: 14px; line-height: 1.5; color: var(--dark); max-width: 60ch; }
.rs-ba-grid { margin-top: var(--s-24); display: none; grid-template-columns: repeat(3, minmax(0, 220px)); gap: var(--s-24); }
.rs-ba-grid.is-on { display: grid; animation: iv-fade .35s ease; }

/* Bajo el capó: saving → diff */
.rs-under { margin-top: var(--s-40); display: grid; grid-template-columns: 1.2fr 1fr; gap: var(--s-32); align-items: center; padding: var(--s-24) var(--s-32); border-radius: 12px; background: var(--n1); }
.rs-under .iv-card-k { margin-top: 0; }
.rs-under h3 { margin-top: 6px; font-size: 18px; }
.rs-under p:last-child { margin-top: 8px; font-size: 15px; line-height: 1.5; color: var(--dark); }
.rs-diff { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; justify-content: center; }
.rs-pill { display: grid; gap: 4px; padding: 10px 14px; border-radius: 10px; background: var(--white); border: 1px solid var(--n2); font: 500 12px/1 ui-monospace, SFMono-Regular, Menlo, monospace; color: var(--grey); text-align: center; }
.rs-pill b { font: 800 18px/1 var(--f-display); color: var(--black); }
.rs-pill.is-good b { color: #1E9E6A; }
.rs-pill.is-bad b { color: var(--coral); }
.rs-arrow { color: var(--orange); font-weight: 700; }

/* Matriz de casuísticas */
.rs-matrix { margin-top: var(--s-16); display: grid; gap: 10px; }
.rs-matrix > div { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 12px 0; border-bottom: 1px solid var(--n2); }
.rs-axis { width: 190px; flex: none; font-size: 11px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--orange); }
.rs-chip { font-size: 13px; padding: 6px 12px; border-radius: 999px; background: var(--white); border: 1px solid var(--n3); color: var(--dark); }
.rs-chip.is-hi { background: var(--g-orange); border-color: #FFE3D8; color: var(--black); font-weight: 500; }
.iv-result .iv-flow { margin-top: var(--s-24); }

/* Impacto: fila revertida */
.iv-nps-d.rs-rev { color: var(--grey); }
.iv-result .iv-impact { grid-template-columns: 1fr; align-items: start; }
.iv-result .iv-impact-cards { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.iv-result .iv-nps-row { grid-template-columns: 230px minmax(120px, 1fr) auto 76px; }
.iv-result .iv-risk { color: var(--orange); }
.iv-result .iv-ic-v { font-size: clamp(18px, 1.55vw, 22px); }
.iv-result .iv-nps-d { white-space: nowrap; }
.iv-result .iv-bars i { height: 10px; }
.rs-next { margin-top: var(--s-16); }

@media (max-width: 900px) {
  .iv-result .iv-impact-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .iv-result .iv-nps-row { grid-template-columns: 150px minmax(80px, 1fr) auto 56px; }
  .rs-story, .rs-slots, .rs-step { grid-template-columns: 1fr; gap: var(--s-24); }
  .rs-step-device { max-width: 240px; margin: 0 auto; width: 100%; }
  .rs-step-device .rs-seg { display: flex; width: max-content; margin-left: auto; margin-right: auto; }
  .rs-pair { justify-content: center; }
  .rs-ba-head { grid-template-columns: 1fr; gap: var(--s-16); }
  .rs-ba-head .rs-seg { justify-self: start; }
  .iv-result .iv-flow { grid-template-columns: 1fr 210px; }
  .rs-slots-screen { max-width: 240px; margin: 0 auto; }
  .rs-under { grid-template-columns: 1fr; padding: var(--s-24); }
  .rs-axis { width: 100%; }
  .iv-result .iv-impact { grid-template-columns: 1fr; }
  .rs-old-grid { grid-template-columns: repeat(3, 1fr) !important; }
}
@media (max-width: 600px) {
  .iv-result .iv-nps-row { grid-template-columns: 1fr 56px; }
  .iv-result .iv-nps-row .iv-bars { grid-column: 1 / -1; grid-row: 2; }
  .rs-facts { grid-template-columns: 1fr; }
  .rs-pair { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rs-ba-grid { gap: 10px; }
  .iv-result .iv-flow { grid-template-columns: 1fr; }
  .rs-phone { max-width: 220px; margin: 0 auto; grid-row: 1; }
}
/* <<< RS-CASE END */
