/* ==========================================================================
   IBAC Consultores 2.0 — Design system
   Strategic Human Capital Partner
   ========================================================================== */

/* ---------- Fonts (self-hosted, variable) ---------- */
@font-face { font-family: "Manrope"; font-style: normal; font-display: swap; font-weight: 200 800; src: url(../fonts/manrope-latin-wght-normal.woff2) format("woff2-variations"), url(../fonts/manrope-latin-wght-normal.woff2) format("woff2"); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Manrope"; font-style: normal; font-display: swap; font-weight: 200 800; src: url(../fonts/manrope-latin-ext-wght-normal.woff2) format("woff2"); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: "Inter"; font-style: normal; font-display: swap; font-weight: 100 900; src: url(../fonts/inter-latin-wght-normal.woff2) format("woff2-variations"), url(../fonts/inter-latin-wght-normal.woff2) format("woff2"); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Inter"; font-style: normal; font-display: swap; font-weight: 100 900; src: url(../fonts/inter-latin-ext-wght-normal.woff2) format("woff2"); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: "Inter"; font-style: italic; font-display: swap; font-weight: 100 900; src: url(../fonts/inter-latin-wght-italic.woff2) format("woff2"); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }

/* ---------- Tokens ---------- */
:root {
  --paper: #F6F4EF;
  --paper-2: #EDEAE3;
  --paper-3: #E3DFD6;
  --ink: #0B1B2E;
  --ink-2: #2B3746;
  --navy: #0A2E52;
  --navy-deep: #071D33;
  --night: #06172A;
  --blue: #2F92BE;
  --teal: #1F7A7C;
  --gray: #6E7580;
  --gray-text: #59616C;
  --line: rgba(11, 27, 46, .12);
  --line-2: rgba(11, 27, 46, .22);
  --on-dark: #F2F0EA;
  --on-dark-2: rgba(242, 240, 234, .68);
  --on-dark-3: rgba(242, 240, 234, .44);
  --line-dark: rgba(242, 240, 234, .14);
  --line-dark-2: rgba(242, 240, 234, .26);

  --f-display: "Manrope", "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  --f-text: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;

  --wrap: 1360px;
  --gutter: clamp(20px, 4vw, 56px);
  --gap: clamp(16px, 2vw, 28px);
  --sec: clamp(88px, 11vw, 168px);
  --header-h: 76px;

  --ease: cubic-bezier(.2, .7, .1, 1);
  --ease-io: cubic-bezier(.65, 0, .35, 1);
}

/* ---------- Reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--header-h) + 24px); }
body {
  margin: 0; background: var(--paper); color: var(--ink);
  font-family: var(--f-text); font-size: 1.0625rem; line-height: 1.6;
  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
  font-feature-settings: "ss01", "cv11"; text-rendering: optimizeLegibility;
  overflow-x: clip;
}
img, svg { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
h1, h2, h3, h4, p, ol, ul, dl, dd, figure { margin: 0; }
ol, ul { padding: 0; list-style: none; }
::selection { background: var(--navy); color: var(--paper); }
:focus-visible { outline: 2px solid var(--blue); outline-offset: 3px; border-radius: 2px; }
.screen-reader-text, .sr-only { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); white-space: nowrap; }

.skip { position: absolute; left: 16px; top: -60px; z-index: 200; background: var(--ink); color: var(--paper); padding: 10px 16px; font-weight: 600; transition: top .2s; }
.skip:focus { top: 12px; }

/* ---------- Layout ---------- */
.wrap { width: 100%; max-width: calc(var(--wrap) + 2 * var(--gutter)); margin-inline: auto; padding-inline: var(--gutter); }
.section { padding-block: var(--sec); position: relative; }
.section--flush { padding-top: 0; }
.section--flush-top { padding-top: 0; }
.section--tint { background: var(--paper-2); }
.section--dark { background: var(--navy-deep); color: var(--on-dark); }
.section--dark ::selection { background: var(--on-dark); color: var(--navy-deep); }

/* ---------- Type ---------- */
.display, .h1, .h2, .h3 { font-family: var(--f-display); font-weight: 700; letter-spacing: -.032em; color: inherit; text-wrap: balance; }
.display { font-size: clamp(2.5rem, 1.1rem + 4vw, 5rem); line-height: 1.02; letter-spacing: -.04em; }
.h1 { font-size: clamp(2.35rem, 1.2rem + 3.6vw, 4.6rem); line-height: 1.04; letter-spacing: -.038em; }
.h2 { font-size: clamp(1.95rem, 1.1rem + 2.5vw, 3.6rem); line-height: 1.07; }
.h3 { font-size: clamp(1.3rem, 1rem + .9vw, 1.8rem); line-height: 1.2; letter-spacing: -.022em; }
.kicker { font-size: .75rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--gray-text); margin-bottom: 14px; }
.section--dark .kicker { color: var(--on-dark-3); }
.muted { color: var(--gray-text); }

.eyebrow { display: flex; align-items: center; gap: 12px; font-size: .75rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--gray-text); }
.eyebrow__num { font-variant-numeric: tabular-nums; color: var(--navy); padding-right: 12px; border-right: 1px solid var(--line-2); }
.eyebrow__dot { width: 7px; height: 7px; border-radius: 50%; background: var(--blue); box-shadow: 0 0 0 4px rgba(47, 146, 190, .16); }
.section--dark .eyebrow, .eyebrow--light { color: var(--on-dark-3); }
.section--dark .eyebrow__num, .eyebrow--light .eyebrow__num { color: var(--on-dark); border-color: var(--line-dark-2); }

/* ---------- Buttons & links ---------- */
.btn {
  --bg: var(--ink); --fg: var(--paper);
  display: inline-flex; align-items: center; gap: 14px; min-height: 52px; padding: 14px 22px 14px 24px;
  background: var(--bg); color: var(--fg); font-family: var(--f-text); font-weight: 600; font-size: .95rem; letter-spacing: -.005em;
  border-radius: 2px; position: relative; overflow: hidden; isolation: isolate; transition: color .35s var(--ease);
}
.btn::before { content: ""; position: absolute; inset: 0; background: var(--navy); transform: scaleX(0); transform-origin: left; transition: transform .45s var(--ease); z-index: -1; }
.btn:hover::before { transform: scaleX(1); }
.btn .arrow { display: inline-block; transition: transform .35s var(--ease); }
.btn:hover .arrow, .link-arrow:hover .arrow, a:hover > .sol-row__go { transform: translateX(5px); }
.btn--light { --bg: var(--paper); --fg: var(--ink); }
.btn--light::before { background: #fff; }
.btn--sm { min-height: 42px; padding: 9px 16px 9px 18px; font-size: .875rem; gap: 10px; }

.link-arrow { display: inline-flex; align-items: center; gap: 10px; font-weight: 600; font-size: .95rem; color: var(--ink); padding-bottom: 4px; background: linear-gradient(currentColor, currentColor) left bottom / 100% 1px no-repeat; transition: background-size .4s var(--ease); }
.link-arrow:hover { background-size: 0 1px; background-position: right bottom; }
.link-arrow .arrow { transition: transform .35s var(--ease); }
.link-arrow--light { color: var(--on-dark); }
.link-plain { font-weight: 600; font-size: .95rem; text-decoration: underline; text-underline-offset: 6px; text-decoration-thickness: 1px; text-decoration-color: var(--line-2); transition: text-decoration-color .3s; }
.link-plain:hover { text-decoration-color: currentColor; }
.actions { display: flex; flex-wrap: wrap; align-items: center; gap: 18px 32px; }
.tag-links { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 20px; }
.tag-link { display: inline-flex; gap: 8px; align-items: center; padding: 9px 14px; border: 1px solid var(--line-2); font-size: .875rem; font-weight: 600; border-radius: 2px; transition: background .3s, color .3s, border-color .3s; }
.tag-link:hover { background: var(--ink); color: var(--paper); border-color: var(--ink); }

/* ---------- Lists ---------- */
.list-rule li { padding: 13px 0 13px 26px; border-top: 1px solid var(--line); position: relative; }
.list-rule li:last-child { border-bottom: 1px solid var(--line); }
.list-rule li::before { content: ""; position: absolute; left: 0; top: 1.3em; width: 12px; height: 1px; background: var(--navy); }
.section--dark .list-rule li { border-color: var(--line-dark); }
.section--dark .list-rule li::before { background: var(--on-dark-2); }
.list-rule--cols { columns: 2; column-gap: var(--gap); }
.list-rule--cols li { break-inside: avoid; border-bottom: 0; }
.list-q li { padding: 8px 0; font-family: var(--f-display); font-weight: 600; font-size: 1.05rem; letter-spacing: -.01em; }
.list-deliv li { padding: 16px 0; border-top: 1px solid var(--line-2); font-family: var(--f-display); font-weight: 600; font-size: clamp(1.05rem, .95rem + .4vw, 1.3rem); letter-spacing: -.015em; display: flex; gap: 16px; }
.list-deliv li::before { content: "↳"; color: var(--teal); font-family: var(--f-text); }

/* ==========================================================================
   Header
   ========================================================================== */
.site-header { position: sticky; top: 0; z-index: 100; height: var(--header-h); background: rgba(246, 244, 239, .86); -webkit-backdrop-filter: saturate(1.4) blur(14px); backdrop-filter: saturate(1.4) blur(14px); border-bottom: 1px solid transparent; transition: border-color .3s, background .3s; }
.admin-bar .site-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .site-header { top: 0; } }
.site-header.is-scrolled { border-bottom-color: var(--line); background: rgba(246, 244, 239, .94); }
.site-header__bar { height: 100%; display: flex; align-items: center; gap: 28px; }
.brand { display: inline-flex; align-items: center; gap: 12px; flex-shrink: 0; margin-right: auto; }
.brand img { width: auto; height: 36px; }
.brand__name { font-family: var(--f-display); font-weight: 800; font-size: 1.15rem; letter-spacing: -.02em; color: var(--navy); line-height: 1; }
.brand__name span { font-weight: 500; color: var(--ink-2); letter-spacing: -.01em; }
.nav ul { display: flex; gap: clamp(16px, 1.7vw, 30px); }
.nav a { font-size: .875rem; font-weight: 500; color: var(--ink-2); position: relative; padding: 6px 0; white-space: nowrap; transition: color .2s; }
.nav a::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: right; transition: transform .35s var(--ease); }
.nav a:hover, .nav a[aria-current="page"] { color: var(--ink); }
.nav a:hover::after, .nav a[aria-current="page"]::after { transform: scaleX(1); transform-origin: left; }
.menu-toggle { display: none; align-items: center; gap: 10px; height: 42px; padding: 0 4px 0 10px; font-size: .875rem; font-weight: 600; }
.menu-toggle__icon { width: 22px; height: 10px; position: relative; }
.menu-toggle__icon::before, .menu-toggle__icon::after { content: ""; position: absolute; left: 0; right: 0; height: 1.5px; background: var(--ink); transition: transform .35s var(--ease), top .35s var(--ease); }
.menu-toggle__icon::before { top: 0; }
.menu-toggle__icon::after { top: 8px; }
.menu-open .menu-toggle__icon::before { top: 4px; transform: rotate(45deg); }
.menu-open .menu-toggle__icon::after { top: 4px; transform: rotate(-45deg); }

.mobile-menu { position: fixed; inset: var(--header-h) 0 0 0; z-index: 99; background: var(--paper); padding: 24px var(--gutter) 32px; display: flex; flex-direction: column; overflow-y: auto; opacity: 0; transform: translateY(-8px); transition: opacity .35s var(--ease), transform .35s var(--ease); }
.mobile-menu[hidden] { display: none; }
.menu-open .mobile-menu { opacity: 1; transform: none; }
.mobile-menu ol { counter-reset: m; border-top: 1px solid var(--line); }
.mobile-menu li { border-bottom: 1px solid var(--line); }
.mobile-menu li a { display: flex; align-items: baseline; gap: 16px; padding: 16px 0; font-family: var(--f-display); font-weight: 700; font-size: clamp(1.4rem, 5.5vw, 2rem); letter-spacing: -.03em; }
.mobile-menu li a span { font-family: var(--f-text); font-size: .75rem; font-weight: 600; color: var(--gray-text); font-variant-numeric: tabular-nums; min-width: 22px; }
.mobile-menu__foot { margin-top: auto; padding-top: 32px; display: grid; gap: 18px; }
.mobile-menu__foot .btn { justify-content: space-between; }
.mobile-menu__foot p { font-size: .8rem; color: var(--gray-text); letter-spacing: .04em; }
.menu-open { overflow: hidden; }

@media (max-width: 1180px) {
  .nav { display: none; }
  .menu-toggle { display: inline-flex; }
  .site-header__bar { gap: 14px; }
}
@media (max-width: 420px) {
  .brand__name span { display: none; }
  .header-cta { padding-inline: 14px; }
}

/* ==========================================================================
   Home — Hero
   ========================================================================== */
.hero { position: relative; padding-top: clamp(40px, 6vw, 88px); overflow: hidden; }
.hero__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); align-items: center; min-height: min(760px, calc(100svh - var(--header-h) - 120px)); }
.hero__copy { grid-column: 1 / span 7; padding-bottom: clamp(24px, 4vw, 56px); }
.hero__eyebrow { margin-bottom: clamp(24px, 3vw, 40px); }
.hero .display { max-width: 15ch; }
.hero__lede { margin-top: clamp(24px, 3vw, 36px); max-width: 50ch; font-size: clamp(1.06rem, 1rem + .35vw, 1.28rem); line-height: 1.55; color: var(--ink-2); }
.hero .actions { margin-top: clamp(28px, 3.5vw, 44px); }
.hero__viz { grid-column: 8 / span 5; position: relative; }
.hero__viz::before { content: ""; position: absolute; inset: -6% -20% -6% -6%; background: radial-gradient(closest-side, rgba(47, 146, 190, .10), transparent 70%); pointer-events: none; }
.hero__foot { display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap; margin-top: clamp(24px, 4vw, 48px); padding-top: 22px; padding-bottom: 26px; border-top: 1px solid var(--line); position: relative; }
.hero__foot::before { content: ""; position: absolute; top: -1px; left: var(--gutter); width: 120px; height: 1px; background: var(--navy); }
.hero__tagline { font-family: var(--f-display); font-weight: 700; font-size: .95rem; letter-spacing: -.01em; }
.hero__regions { display: flex; flex-wrap: wrap; gap: 6px 0; font-size: .8rem; color: var(--gray-text); letter-spacing: .02em; }
.hero__regions li + li::before { content: "·"; padding: 0 10px; color: var(--line-2); }

/* System visual */
.sys { width: 100%; overflow: visible; }
.sys-bg { fill: none; }
#sys-grid circle { fill: rgba(11, 27, 46, .16); }
.sys-edge { fill: none; stroke: var(--navy); stroke-width: 1.3; opacity: .55; }
.sys-e2 { opacity: .32; stroke-width: 1; }
.sys-e3 { opacity: .2; stroke-width: 1; stroke-dasharray: 2 4; }
.sys-cross { fill: none; stroke: var(--teal); stroke-width: 1.2; stroke-dasharray: 3 5; opacity: .75; }
.sys-node circle { fill: var(--paper); stroke: var(--navy); stroke-width: 1.6; }
.sys-node.t0 circle { fill: var(--navy); }
.sys-node.t1 circle { fill: var(--navy); stroke: var(--navy); }
.sys-node.t3 circle { fill: var(--gray); stroke: none; }
.sys-node text { font-family: var(--f-text); font-size: 13px; font-weight: 600; fill: var(--ink); letter-spacing: .01em; paint-order: stroke; stroke: var(--paper); stroke-width: 5px; stroke-linejoin: round; }
.sys-base line { stroke: var(--ink); stroke-width: 1.4; }
.sys-base text { font-family: var(--f-text); font-size: 10.5px; font-weight: 600; letter-spacing: .18em; fill: var(--gray-text); }
.sys-signal { fill: var(--blue); }

.js .sys-node { animation: sys-in 1.5s var(--ease) both; animation-delay: calc(var(--i) * 45ms + 150ms); }
.js .sys-edge { stroke-dasharray: 1; stroke-dashoffset: 1; animation: draw 1.1s var(--ease-io) forwards; animation-delay: calc(var(--i) * 22ms + 1.1s); }
.js .sys-e3 { stroke-dasharray: 2 4; stroke-dashoffset: 0; opacity: 0; animation: fade-e3 .8s ease forwards; animation-delay: 1.8s; }
.js .sys-cross { opacity: 0; animation: fade-cross 1s ease forwards; animation-delay: calc(var(--i) * 200ms + 2.1s); }
@keyframes fade-e3 { to { opacity: .2; } }
@keyframes fade-cross { to { opacity: .75; } }
.js .sys-base { opacity: 0; animation: fade .9s ease forwards 1.9s; }
.js .sys-signals { opacity: 0; animation: fade 1s ease forwards 2.4s; }
@keyframes sys-in { from { transform: translate(var(--dx), var(--dy)); opacity: 0; } 35% { opacity: 1; } to { transform: none; opacity: 1; } }
@keyframes draw { to { stroke-dashoffset: 0; } }
@keyframes fade { to { opacity: 1; } }

/* ==========================================================================
   Section head
   ========================================================================== */
.section-head { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); margin-bottom: clamp(48px, 6vw, 88px); }
.section-head__meta { grid-column: 1 / span 3; padding-top: .7em; }
.section-head__body { grid-column: 4 / span 9; }
.section-head .h2 { max-width: 19ch; }
.section-head__lede { margin-top: clamp(20px, 2.4vw, 32px); max-width: 60ch; font-size: clamp(1.05rem, 1rem + .25vw, 1.2rem); color: var(--ink-2); }
.section--dark .section-head__lede { color: var(--on-dark-2); }
.section-foot { margin-top: clamp(40px, 5vw, 64px); display: flex; justify-content: flex-end; }

/* ==========================================================================
   Home — Problem
   ========================================================================== */
.gap-figure { margin: 0 0 clamp(56px, 7vw, 104px); padding: clamp(20px, 3vw, 40px) 0 0; border-top: 1px solid var(--line); }
.gap { width: 100%; overflow: visible; }
.gap-axis { stroke: var(--ink); stroke-width: 1.2; }
.gap-growth { fill: none; stroke: var(--navy); stroke-width: 2.5; }
.gap-infra { fill: none; stroke: var(--gray); stroke-width: 2; }
#gap-hatch line { stroke: rgba(47, 146, 190, .45); stroke-width: 1.4; }
.gap-leader { stroke: var(--navy); stroke-width: 1; }
.gap-leader-dot { fill: var(--navy); }
.gap-dot { fill: var(--navy); }
.gap-dot--infra { fill: var(--gray); }
.gap-label { font-family: var(--f-display); font-weight: 700; font-size: 17px; fill: var(--ink); letter-spacing: -.01em; }
.gap-label--muted { fill: var(--gray-text); }
.gap-label--accent { fill: var(--navy); font-size: 20px; }
.gap-note { font-family: var(--f-text); font-size: 13px; fill: var(--gray-text); }
.gap-figure figcaption { margin-top: 10px; font-size: .75rem; color: var(--gray-text); letter-spacing: .04em; text-align: right; }
.gap-legend { display: none; }
.js .gap-growth, .js .gap-infra { stroke-dasharray: 1; stroke-dashoffset: 1; }
.js .gap-area, .js .gap-dot, .js .gap-label, .js .gap-note, .js .gap-leader, .js .gap-leader-dot { opacity: 0; transition: opacity .8s ease; }
.js .is-drawn .gap-growth { animation: draw 1.8s var(--ease-io) forwards; }
.js .is-drawn .gap-infra { animation: draw 1.8s var(--ease-io) forwards .25s; }
.js .is-drawn .gap-area { opacity: 1; transition-delay: 1.5s; }
.js .is-drawn .gap-dot, .js .is-drawn .gap-label, .js .is-drawn .gap-note, .js .is-drawn .gap-leader, .js .is-drawn .gap-leader-dot { opacity: 1; transition-delay: 1.7s; }

.symptoms-intro { margin-bottom: 8px; }
.symptoms { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: clamp(32px, 6vw, 96px); counter-reset: s; }
.symptom { display: grid; grid-template-columns: 44px 1fr; align-content: start; column-gap: 12px; padding: clamp(24px, 3vw, 36px) 0; border-top: 1px solid var(--line-2); }
.symptom__n { grid-row: span 2; font-size: .8rem; font-weight: 600; color: var(--navy); font-variant-numeric: tabular-nums; padding-top: 3px; }
.symptom__tag { font-size: .75rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--gray-text); margin-bottom: 10px; }
.symptom__text { font-family: var(--f-display); font-weight: 600; font-size: clamp(1.2rem, 1rem + .7vw, 1.6rem); line-height: 1.28; letter-spacing: -.022em; text-wrap: pretty; }

/* ==========================================================================
   Home — Insight (dark)
   ========================================================================== */
.section--insight { overflow: hidden; }
.insight__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); }
.insight__head { grid-column: 1 / span 10; margin-bottom: clamp(48px, 6vw, 88px); }
.insight__head .eyebrow { margin-bottom: 28px; }
.insight__head .h2 { max-width: 22ch; font-size: clamp(2rem, 1.1rem + 3vw, 4.1rem); }
.insight__cols { grid-column: 1 / -1; display: grid; grid-template-columns: 4fr 2fr 6fr; gap: var(--gap); font-size: .72rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--on-dark-3); padding-bottom: 14px; }
.insight__cols span:last-child { grid-column: 3; }
.reveal-rows { grid-column: 1 / -1; }
.reveal-row { display: grid; grid-template-columns: 4fr 2fr 6fr; gap: var(--gap); align-items: center; padding: clamp(22px, 2.6vw, 34px) 0; border-top: 1px solid var(--line-dark); }
.reveal-row:last-child { border-bottom: 1px solid var(--line-dark); }
.reveal-row__see { font-size: clamp(1.02rem, .95rem + .3vw, 1.2rem); color: var(--on-dark-2); }
.reveal-row__line { height: 1px; background: var(--line-dark-2); position: relative; transform-origin: left; }
.reveal-row__line::after { content: ""; position: absolute; right: -1px; top: -4px; width: 9px; height: 9px; border-top: 1px solid var(--on-dark); border-right: 1px solid var(--on-dark); transform: rotate(45deg); }
.reveal-row__line::before { content: ""; position: absolute; inset: 0; background: var(--blue); transform: scaleX(0); transform-origin: left; transition: transform 1.1s var(--ease) .3s; }
.reveal-row.is-in .reveal-row__line::before { transform: scaleX(1); }
.reveal-row__is { font-family: var(--f-display); font-weight: 700; font-size: clamp(1.2rem, 1rem + .9vw, 1.85rem); line-height: 1.2; letter-spacing: -.025em; color: var(--on-dark); text-wrap: balance; }
.insight__close { grid-column: 4 / span 9; margin-top: clamp(40px, 5vw, 72px); display: grid; gap: 28px; justify-items: start; }
.insight__close p { font-size: clamp(1.05rem, 1rem + .3vw, 1.25rem); color: var(--on-dark-2); max-width: 58ch; }

/* ==========================================================================
   Method rail
   ========================================================================== */
.method { position: relative; }
.method__steps { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--gap); position: relative; }
.method__track { position: absolute; left: 0; right: 0; top: 7px; height: 1px; background: var(--line-2); }
.method__fill { position: absolute; inset: 0; background: var(--navy); transform: scaleX(0); transform-origin: left; transition: transform 2.2s var(--ease-io); }
.method.is-in .method__fill { transform: scaleX(1); }
.method__step { position: relative; padding-top: 44px; padding-right: 8px; }
@supports (grid-template-rows: subgrid) {
  @media (min-width: 1101px) {
    .method__steps { grid-template-rows: repeat(4, auto); }
    .method__step { display: grid; grid-row: span 4; grid-template-rows: subgrid; row-gap: 0; align-content: start; }
    .method__out { align-self: start; }
  }
}
.method__node { position: absolute; top: 0; left: 0; width: 15px; height: 15px; border-radius: 50%; background: var(--paper); border: 1.5px solid var(--navy); transition: background .4s ease; transition-delay: calc(var(--i) * 420ms + 200ms); }
.method.is-in .method__node { background: var(--navy); }
.section--tint .method__node { background: var(--paper-2); }
.method__num { display: block; font-family: var(--f-display); font-weight: 300; font-size: clamp(2.4rem, 1.6rem + 2vw, 3.6rem); letter-spacing: -.05em; line-height: 1; color: var(--navy); font-variant-numeric: tabular-nums; }
.method__name { font-family: var(--f-display); font-weight: 800; font-size: clamp(1.05rem, .95rem + .35vw, 1.3rem); letter-spacing: .06em; text-transform: uppercase; margin-top: 18px; }
.method__text { margin-top: 12px; font-size: .95rem; color: var(--ink-2); line-height: 1.55; }
.method__out { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--line); font-size: .875rem; font-weight: 600; line-height: 1.45; }
.method__out span { display: block; font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; color: var(--gray-text); margin-bottom: 6px; font-weight: 600; }
.method__loop { position: relative; margin-top: 36px; height: 60px; }
.method__loop svg { width: 100%; height: 100%; }
.method__loop path { fill: none; stroke: var(--teal); stroke-width: 1.2; stroke-dasharray: 3 5; vector-effect: non-scaling-stroke; }
.method__loop span { position: absolute; left: 50%; top: 36px; transform: translate(-50%, -50%); background: var(--paper); padding: 4px 14px; font-size: .75rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--teal); white-space: nowrap; }
.section--tint .method__loop span { background: var(--paper-2); }
.js .method__step { opacity: 0; transform: translateY(18px); transition: opacity .8s var(--ease), transform .8s var(--ease); transition-delay: calc(var(--i) * 140ms); }
.js .method.is-in .method__step { opacity: 1; transform: none; }

/* ==========================================================================
   Solver (problem → solution)
   ========================================================================== */
.solver { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); column-gap: clamp(32px, 6vw, 96px); align-items: start; }
.solver__item { display: contents; }
.solver__q { grid-column: 1; font: inherit; }
.solver__q button { width: 100%; text-align: left; display: grid; grid-template-columns: 40px 1fr; gap: 12px; padding: 22px 0; border-top: 1px solid var(--line-2); position: relative; }
.solver__item:last-child .solver__q button { border-bottom: 1px solid var(--line-2); }
.solver__q button::before { content: ""; position: absolute; left: 0; top: -1px; height: 2px; width: 0; background: var(--navy); transition: width .5s var(--ease); }
.solver__n { font-size: .8rem; font-weight: 600; color: var(--gray-text); font-variant-numeric: tabular-nums; padding-top: 5px; transition: color .3s; }
.solver__qt { font-family: var(--f-display); font-weight: 600; font-size: clamp(1.05rem, .98rem + .4vw, 1.3rem); line-height: 1.32; letter-spacing: -.018em; color: rgba(11, 27, 46, .56); transition: color .3s; }
.solver__q button:hover .solver__qt { color: var(--ink); }
.solver__item.is-active .solver__qt { color: var(--ink); }
.solver__item.is-active .solver__n { color: var(--navy); }
.solver__item.is-active .solver__q button::before { width: 100%; }
.solver__panel { grid-column: 2; grid-row: 1 / span 6; background: var(--paper); border: 1px solid var(--line); padding: clamp(28px, 3.5vw, 52px); position: sticky; top: calc(var(--header-h) + 32px); }
.js .solver__item:not(.is-active) .solver__panel { display: none; }
.solver__item.is-active .solver__panel { animation: panel-in .6s var(--ease) both; }
@keyframes panel-in { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
.solver__kicker { font-size: .72rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--gray-text); }
.solver__name { font-family: var(--f-display); font-weight: 800; font-size: clamp(1.7rem, 1.2rem + 1.4vw, 2.6rem); letter-spacing: -.035em; line-height: 1.05; margin-top: 18px; color: var(--navy); }
.solver__es { margin-top: 6px; color: var(--gray-text); font-weight: 500; }
.solver__line { margin-top: 22px; font-size: 1.12rem; line-height: 1.5; max-width: 42ch; }
.solver__label { margin-top: 28px; margin-bottom: 4px; font-size: .72rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--gray-text); }
.solver__panel .list-rule { margin-bottom: 30px; }

/* ==========================================================================
   Cases
   ========================================================================== */
.case-feature { border-top: 1px solid var(--ink); padding-top: clamp(28px, 3vw, 40px); }
.case-feature__head { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); margin-bottom: clamp(32px, 4vw, 56px); }
.case-feature__sector { grid-column: 1 / span 3; font-size: .75rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--gray-text); padding-top: .5em; }
.case-feature__head .h3 { grid-column: 4 / span 8; font-size: clamp(1.5rem, 1.1rem + 1.4vw, 2.4rem); max-width: 26ch; }
.case-flow { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--gap); }
.case-flow > div { padding: 22px 0 0; border-top: 1px solid var(--line-2); position: relative; }
.case-flow > div:not(:last-child)::after { content: "→"; position: absolute; right: 0; top: 18px; color: var(--gray); font-size: .9rem; }
.case-flow dt { font-size: .72rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--navy); margin-bottom: 12px; }
.case-flow dd { font-size: .98rem; color: var(--ink-2); line-height: 1.55; padding-right: 18px; }
.cases-strip { margin-top: clamp(40px, 5vw, 64px); display: flex; flex-wrap: wrap; align-items: baseline; gap: 16px clamp(28px, 4vw, 56px); padding-top: 24px; border-top: 1px solid var(--line); }
.cases-strip p { color: var(--gray-text); font-size: .95rem; }
.cases-strip strong { font-family: var(--f-display); font-weight: 700; font-size: 1.6rem; letter-spacing: -.03em; color: var(--ink); margin-right: 8px; }
.cases-strip .link-arrow { margin-left: auto; }

.case { border-top: 1px solid var(--ink); padding-top: clamp(28px, 3vw, 44px); }
.case__head { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); margin-bottom: clamp(32px, 4vw, 56px); }
.case__n { grid-column: 1 / span 3; font-family: var(--f-display); font-weight: 300; font-size: clamp(3rem, 2rem + 3vw, 5.5rem); line-height: .9; color: var(--navy); letter-spacing: -.05em; }
.case__head > div { grid-column: 4 / span 9; }
.case__head .h2 { max-width: 22ch; font-size: clamp(1.7rem, 1.1rem + 2vw, 3rem); }
.case__table > div { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); padding: 20px 0; border-top: 1px solid var(--line); }
.case__table dt { grid-column: 1 / span 3; font-size: .72rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--gray-text); padding-top: 4px; }
.case__table dd { grid-column: 4 / span 8; font-size: 1.05rem; line-height: 1.6; }
.case__lesson { margin-top: clamp(32px, 4vw, 56px); margin-left: calc((100% + var(--gap)) * 3 / 12); padding: clamp(24px, 3vw, 40px); background: var(--paper-2); font-family: var(--f-display); font-weight: 600; font-size: clamp(1.1rem, 1rem + .5vw, 1.4rem); line-height: 1.4; letter-spacing: -.015em; }
.case__lesson .kicker { display: block; font-family: var(--f-text); }
.creds { display: flex; flex-wrap: wrap; gap: 20px clamp(32px, 5vw, 80px); margin-block: clamp(32px, 4vw, 48px); }
.creds p { display: grid; gap: 4px; }
.creds strong { font-family: var(--f-display); font-weight: 700; font-size: clamp(2.2rem, 1.6rem + 2vw, 3.4rem); letter-spacing: -.045em; line-height: 1; color: var(--navy); }
.creds span { font-size: .9rem; color: var(--gray-text); }
.creds--wide { margin-top: 0; }
.case-slots { border-top: 1px solid var(--line-2); }
.case-slot { display: grid; grid-template-columns: 60px 1fr auto; gap: 16px; align-items: baseline; padding: 20px 0; border-bottom: 1px solid var(--line-2); }
.case-slot__n { font-size: .8rem; font-weight: 600; color: var(--gray-text); font-variant-numeric: tabular-nums; }
.case-slot__type { font-family: var(--f-display); font-weight: 600; font-size: 1.15rem; letter-spacing: -.015em; }
.case-slot__state { font-size: .85rem; color: var(--gray-text); }

/* ==========================================================================
   IBAC OS diagram
   ========================================================================== */
.os { position: relative; display: grid; grid-template-columns: 1fr 44px; gap: 10px; }
.os-stack { display: grid; gap: 10px; }
.os-layer { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: var(--gap); padding: clamp(18px, 2vw, 28px); border: 1px solid var(--line-dark-2); position: relative; }
.os-layer--core { background: rgba(242, 240, 234, .06); border-color: rgba(31, 122, 124, .9); }
.os-layer--core::before { content: ""; position: absolute; left: -1px; top: -1px; bottom: -1px; width: 3px; background: var(--teal); }
.os-layer__tag { display: inline-block; font-size: .7rem; font-weight: 700; letter-spacing: .14em; color: var(--on-dark-3); border: 1px solid var(--line-dark-2); padding: 3px 7px; margin-bottom: 12px; font-variant-numeric: tabular-nums; }
.os-layer__head h3 { font-family: var(--f-display); font-weight: 700; font-size: 1.15rem; letter-spacing: -.015em; color: var(--on-dark); }
.os-layer__head p { margin-top: 6px; font-size: .8rem; color: var(--on-dark-3); line-height: 1.45; }
.os-layer__mods { display: flex; flex-wrap: wrap; gap: 8px; align-content: flex-start; }
.os-layer__mods li { font-size: .82rem; font-weight: 500; padding: 7px 11px; border: 1px solid var(--line-dark-2); color: var(--on-dark); line-height: 1.2; }
.os-layer--core .os-layer__mods li { background: rgba(31, 122, 124, .22); border-color: rgba(31, 122, 124, .7); }
.os-layer--ctrl .os-layer__mods li { border-style: dashed; color: var(--on-dark-2); }
.os-rail { border: 1px solid var(--line-dark-2); display: flex; align-items: center; justify-content: center; }
.os-rail span { writing-mode: vertical-rl; transform: rotate(180deg); font-family: var(--f-display); font-weight: 800; letter-spacing: .3em; font-size: .78rem; color: var(--on-dark-2); }
.js .os-layer__mods li { opacity: 0; transform: translateY(6px); transition: opacity .5s ease, transform .5s var(--ease); transition-delay: calc(var(--i) * 55ms + 150ms); }
.js .os-layer.is-in .os-layer__mods li { opacity: 1; transform: none; }
.os--compact .os-layer { grid-template-columns: 1fr; gap: 14px; }
.os--compact .os-layer__head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; }
.os--compact .os-layer__tag { margin-bottom: 0; }
.os--compact .os-layer__head p { flex-basis: 100%; margin-top: 0; }

.section--os { overflow: hidden; }
.os-home { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); align-items: center; }
.os-home__copy { grid-column: 1 / span 5; display: grid; gap: 22px; justify-items: start; }
.os-home__copy .eyebrow { margin-bottom: 8px; }
.os-home__copy > p:not(.eyebrow) { color: var(--on-dark-2); max-width: 48ch; }
.os-home__copy .os-home__sub { font-family: var(--f-display); font-weight: 600; font-size: 1.1rem; color: var(--on-dark); font-style: italic; letter-spacing: -.01em; }
.os-home .os { grid-column: 7 / span 6; }

/* ==========================================================================
   Mexico Market Entry
   ========================================================================== */
.mme-home { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); align-items: center; }
.mme-home__copy { grid-column: 1 / span 6; display: grid; gap: 24px; justify-items: start; }
.mme-home__copy .h2 { max-width: 20ch; }
.mme-home__copy > p:not(.eyebrow) { color: var(--ink-2); max-width: 54ch; font-size: 1.08rem; }
.mme-home__map { grid-column: 7 / span 6; }
.mme-tags { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--gap); width: 100%; max-width: 560px; font-size: .92rem; font-weight: 500; border-bottom: 1px solid var(--line); }
.mme-tags li { padding: 9px 0 9px 20px; border-top: 1px solid var(--line); position: relative; }
.mme-tags li::before { content: ""; position: absolute; left: 0; top: 50%; width: 8px; height: 1px; background: var(--navy); }
.net { width: 100%; overflow: visible; }
.net-grid line { stroke: rgba(11, 27, 46, .07); stroke-width: 1; }
.net-link { stroke: var(--navy); stroke-width: 1; opacity: .28; }
.net-city circle { fill: var(--navy); }
.net-city .net-halo { fill: rgba(47, 146, 190, .14); stroke: none; transform-box: fill-box; transform-origin: center; }
.net-city text { font-family: var(--f-display); font-weight: 700; font-size: 16px; fill: var(--ink); letter-spacing: -.01em; }
.net-city .net-sub { font-family: var(--f-text); font-weight: 500; font-size: 12px; fill: var(--gray-text); letter-spacing: .04em; }
.js .net-link { stroke-dasharray: 1; stroke-dashoffset: 1; }
.js .is-drawn .net-link { animation: draw 1.4s var(--ease-io) forwards; animation-delay: calc(var(--i) * 60ms + .4s); }
.js .net-city { opacity: 0; transition: opacity .6s ease; transition-delay: calc(var(--i) * 120ms); }
.js .is-drawn .net-city { opacity: 1; }
.is-drawn .net-halo { animation: pulse 3.6s ease-in-out infinite; animation-delay: calc(var(--i) * .5s + 1.5s); }
@keyframes pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.7); opacity: .25; } }
.section--dark .net-grid line { stroke: rgba(242, 240, 234, .07); }
.section--dark .net-link { stroke: var(--on-dark); opacity: .22; }
.section--dark .net-city circle { fill: var(--on-dark); }
.section--dark .net-city text { fill: var(--on-dark); }
.section--dark .net-city .net-sub { fill: var(--on-dark-3); }
.section--dark .net-city .net-halo { fill: rgba(47, 146, 190, .3); }

.mme-intro { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); }
.mme-intro > div:first-child { grid-column: 1 / span 5; }
.mme-intro__text { grid-column: 7 / span 6; display: grid; gap: 20px; font-size: 1.1rem; color: var(--ink-2); }
.mme-groups { display: grid; grid-template-columns: 4fr 4fr 3fr; gap: clamp(24px, 3vw, 48px); }
.mme-group .kicker { color: var(--navy); }
.mme-group li { font-family: var(--f-display); font-weight: 600; font-size: 1.15rem; letter-spacing: -.015em; }
.mme-steps { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--gap); }
.mme-steps li { border-top: 1.5px solid var(--navy); padding-top: 20px; }
.mme-steps span { font-size: .8rem; font-weight: 600; color: var(--gray-text); }
.mme-steps h3 { font-family: var(--f-display); font-weight: 700; font-size: 1.25rem; letter-spacing: -.02em; margin: 12px 0 10px; }
.mme-steps p { font-size: .95rem; color: var(--ink-2); }
.mme-where { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); align-items: center; }
.mme-where > div { grid-column: 1 / span 5; display: grid; gap: 24px; }
.mme-where > div p:not(.eyebrow) { color: var(--on-dark-2); max-width: 46ch; }
.mme-map { grid-column: 7 / span 6; }
.regs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: clamp(32px, 5vw, 80px); }
.reg { padding: 22px 0; border-top: 1px solid var(--line-2); display: grid; gap: 8px; }
.reg dt { font-family: var(--f-display); font-weight: 700; font-size: 1.1rem; letter-spacing: -.015em; }
.reg dd { color: var(--ink-2); font-size: .98rem; }

.page-hero--mme { padding-bottom: clamp(48px, 6vw, 88px); }
.mme-hero { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); align-items: center; }
.mme-hero__copy { grid-column: 1 / span 7; display: grid; gap: 28px; justify-items: start; }
.mme-hero__copy .h1 { max-width: 17ch; }
.mme-hero__copy .page-hero__lede { margin-top: 0; color: var(--on-dark-2); }
.mme-hero__map { grid-column: 8 / span 5; }
.page-hero--mme .page-hero__meta { border-color: var(--line-dark-2); }
.page-hero--mme .page-hero__meta li span { color: var(--on-dark-3); }
.regions { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: var(--gap); }
.regions li { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 22px 0; border-top: 1px solid var(--line-2); }
.regions strong { font-family: var(--f-display); font-weight: 700; font-size: clamp(1.2rem, 1rem + .6vw, 1.6rem); letter-spacing: -.025em; }
.regions span { font-size: .85rem; color: var(--gray-text); }

/* ==========================================================================
   CTA final
   ========================================================================== */
.cta-final { position: relative; overflow: hidden; background: var(--navy); color: var(--on-dark); padding-block: clamp(96px, 12vw, 184px); }
.cta-final__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); position: relative; z-index: 1; }
.cta-final .eyebrow { grid-column: 1 / -1; margin-bottom: clamp(24px, 3vw, 40px); }
.cta-final__title { grid-column: 1 / span 8; grid-row: 2; font-family: var(--f-display); font-weight: 700; font-size: clamp(2.1rem, 1.1rem + 3.6vw, 4.8rem); line-height: 1.04; letter-spacing: -.04em; text-wrap: balance; max-width: 20ch; }
.cta-final__side { grid-column: 9 / span 4; grid-row: 2; align-self: end; display: grid; gap: 28px; justify-items: start; }
.cta-final__side p { color: var(--on-dark-2); font-size: 1.1rem; max-width: 34ch; }
.cta-final__lines { position: absolute; inset: 0; display: grid; grid-template-columns: repeat(4, 1fr); max-width: calc(var(--wrap) + 2 * var(--gutter)); margin-inline: auto; padding-inline: var(--gutter); pointer-events: none; }
.cta-final__lines span { border-left: 1px solid rgba(242, 240, 234, .07); }
.cta-final__lines span:last-child { border-right: 1px solid rgba(242, 240, 234, .07); }

/* ==========================================================================
   Page hero (inner)
   ========================================================================== */
.page-hero { padding-top: clamp(56px, 8vw, 128px); padding-bottom: clamp(56px, 7vw, 112px); }
.page-hero__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); }
.page-hero__label { grid-column: 1 / span 3; padding-top: 1.1em; }
.page-hero__main { grid-column: 4 / span 9; }
.page-hero .h1 { max-width: 18ch; }
.page-hero__lede { margin-top: clamp(24px, 3vw, 36px); max-width: 58ch; font-size: clamp(1.08rem, 1rem + .4vw, 1.32rem); line-height: 1.55; color: var(--ink-2); }
.page-hero__en { margin-top: 20px; font-family: var(--f-display); font-weight: 600; font-style: italic; color: var(--navy); font-size: 1.1rem; }
.page-hero__meta { margin-top: clamp(48px, 6vw, 80px); display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--gap); border-top: 1px solid var(--line-2); }
.page-hero__meta li { padding-top: 18px; font-size: .98rem; font-weight: 500; }
.page-hero__meta li span { display: block; font-size: .7rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--gray-text); margin-bottom: 6px; }
.page-hero--solution .h1 { color: var(--navy); }
.page-hero--legal .h1 { font-size: clamp(2rem, 1.2rem + 2.6vw, 3.6rem); }

/* ==========================================================================
   Lo que resolvemos
   ========================================================================== */
.problems-layout { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); }
.problems-index { grid-column: 1 / span 3; position: sticky; top: calc(var(--header-h) + 32px); align-self: start; }
.problems-index ol { border-top: 1px solid var(--line-2); }
.problems-index a { display: grid; grid-template-columns: 28px 1fr; gap: 6px; padding: 10px 0; font-size: .85rem; line-height: 1.35; color: var(--gray-text); border-bottom: 1px solid var(--line); transition: color .25s; }
.problems-index a span { font-variant-numeric: tabular-nums; font-weight: 600; }
.problems-index a:hover, .problems-index a.is-current { color: var(--ink); }
.problems-index a.is-current span { color: var(--navy); }
.problems-list { grid-column: 4 / span 9; }
.problem { padding: clamp(32px, 4vw, 56px) 0 clamp(48px, 6vw, 88px); border-top: 1px solid var(--ink); }
.problem__head { display: grid; gap: 14px; margin-bottom: clamp(28px, 3.5vw, 48px); }
.problem__n { font-size: .8rem; font-weight: 600; color: var(--navy); font-variant-numeric: tabular-nums; }
.problem__title { font-family: var(--f-display); font-weight: 700; font-size: clamp(1.6rem, 1.1rem + 1.8vw, 2.7rem); letter-spacing: -.033em; line-height: 1.1; max-width: 24ch; text-wrap: balance; }
.problem__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(24px, 3vw, 44px) clamp(24px, 4vw, 64px); }
.problem__grid > div { padding-top: 16px; border-top: 1px solid var(--line-2); }
.problem__grid dt { font-size: .72rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--gray-text); margin-bottom: 10px; }
.problem__grid dd { font-size: 1.02rem; line-height: 1.6; color: var(--ink-2); }
.problem__foot { margin-top: clamp(28px, 3vw, 40px); display: flex; flex-wrap: wrap; align-items: center; gap: 12px 20px; }
.problem__foot > span { font-size: .72rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--navy); }
.problem__foot .tag-links, .problem__foot > div { display: flex; flex-wrap: wrap; gap: 10px; }

/* ==========================================================================
   Cómo trabajamos
   ========================================================================== */
.method--page { padding-top: clamp(24px, 3vw, 40px); border-top: 1px solid var(--line); }
.method--page .method__track { top: calc(clamp(24px, 3vw, 40px) + 7px); }
.principles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 clamp(32px, 6vw, 96px); }
.principles li { padding: clamp(24px, 3vw, 40px) 0; border-top: 1px solid var(--line-2); display: grid; align-content: start; grid-template-columns: 44px 1fr; gap: 6px 12px; }
.principle__n { grid-row: span 2; font-size: .8rem; font-weight: 600; color: var(--navy); padding-top: 6px; }
.principles h3 { font-family: var(--f-display); font-weight: 700; font-size: clamp(1.25rem, 1.05rem + .6vw, 1.6rem); letter-spacing: -.025em; line-height: 1.2; }
.principles p { color: var(--ink-2); margin-top: 6px; }
.phase { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); padding: clamp(32px, 4vw, 56px) 0; border-top: 1px solid var(--ink); }
.phase__side { grid-column: 1 / span 4; position: sticky; top: calc(var(--header-h) + 32px); align-self: start; }
.phase__num { font-family: var(--f-display); font-weight: 300; font-size: clamp(3rem, 2rem + 3vw, 5.4rem); line-height: .9; letter-spacing: -.05em; color: var(--navy); }
.phase__name { font-family: var(--f-display); font-weight: 800; font-size: clamp(1.3rem, 1.1rem + .7vw, 1.8rem); letter-spacing: .05em; text-transform: uppercase; margin-top: 16px; }
.phase__obj { margin-top: 10px; font-size: 1.05rem; color: var(--ink-2); max-width: 30ch; }
.phase__body { grid-column: 6 / span 7; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(24px, 3vw, 40px); }
.phase__gets { grid-column: 1 / -1; padding: 22px 24px; background: var(--paper-2); border-left: 3px solid var(--teal); }
.phase__gets .kicker { margin-bottom: 8px; }
.phase__gets p:not(.kicker) { font-family: var(--f-display); font-weight: 600; font-size: 1.15rem; letter-spacing: -.015em; }
.modes { border-top: 1px solid var(--line-dark-2); }
.mode { display: grid; grid-template-columns: 60px minmax(0, 4fr) minmax(0, 7fr); gap: var(--gap); align-items: baseline; padding: clamp(24px, 3vw, 36px) 0; border-bottom: 1px solid var(--line-dark); }
.mode__n { font-family: var(--f-display); font-weight: 300; font-size: 2rem; color: var(--on-dark-3); }
.mode h3 { font-family: var(--f-display); font-weight: 700; font-size: clamp(1.25rem, 1.05rem + .6vw, 1.6rem); letter-spacing: -.025em; }
.mode p { color: var(--on-dark-2); }
.need { margin-top: clamp(40px, 5vw, 72px); margin-left: calc((100% + var(--gap)) * 3 / 12); max-width: 64ch; }
.need p:not(.kicker) { font-size: clamp(1.1rem, 1rem + .4vw, 1.35rem); line-height: 1.5; }

/* ==========================================================================
   Soluciones
   ========================================================================== */
.sol-cols { display: grid; grid-template-columns: 56px minmax(0, 4fr) minmax(0, 3fr) minmax(0, 4fr) 40px; gap: var(--gap); font-size: .7rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--gray-text); padding-bottom: 12px; border-bottom: 1px solid var(--ink); }
.sol-cols span:first-child { grid-column: 2; }
.sol-row a { display: grid; grid-template-columns: 56px minmax(0, 4fr) minmax(0, 3fr) minmax(0, 4fr) 40px; gap: var(--gap); align-items: baseline; padding: clamp(24px, 3vw, 36px) 0; border-bottom: 1px solid var(--line-2); position: relative; transition: background .35s; }
.sol-row a::before { content: ""; position: absolute; inset: 0 calc(-1 * var(--gutter)); background: var(--paper-2); z-index: -1; opacity: 0; transition: opacity .35s; }
.sol-row a:hover::before { opacity: 1; }
.sol-row__n { font-size: .8rem; font-weight: 600; color: var(--gray-text); }
.sol-row__q { font-family: var(--f-display); font-weight: 600; font-size: clamp(1.1rem, 1rem + .45vw, 1.4rem); letter-spacing: -.02em; line-height: 1.3; }
.sol-row__name strong { display: block; font-family: var(--f-display); font-weight: 800; color: var(--navy); font-size: 1.05rem; letter-spacing: -.01em; }
.sol-row__name em { font-style: normal; font-size: .88rem; color: var(--gray-text); }
.sol-row__line { color: var(--ink-2); font-size: .98rem; }
.sol-row__go { justify-self: end; font-size: 1.2rem; transition: transform .35s var(--ease); }
.sol-rows { isolation: isolate; }
.flow { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.flow__col, .flow__band, .flow__base { border: 1px solid var(--line-2); padding: 22px 24px; display: grid; gap: 8px; align-content: start; background: var(--paper); position: relative; }
.flow__col:not(:nth-child(3))::after { content: "→"; position: absolute; right: -14px; top: 50%; transform: translateY(-50%); width: 16px; text-align: center; background: var(--paper-2); color: var(--navy); z-index: 1; font-weight: 600; }
.flow__band { grid-column: 1 / -1; background: var(--navy); border-color: var(--navy); color: var(--on-dark); }
.flow__band .flow__lvl { color: var(--on-dark-3); }
.flow__base { grid-column: 1 / -1; background: transparent; border-style: dashed; border-color: var(--teal); }
.flow__lvl { font-size: .7rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--gray-text); }
.flow a { font-family: var(--f-display); font-weight: 700; font-size: 1.08rem; letter-spacing: -.015em; text-decoration: underline; text-decoration-color: transparent; text-underline-offset: 5px; transition: text-decoration-color .3s; }
.flow a:hover { text-decoration-color: currentColor; }
.flow__base a { color: var(--teal); }

.sd { display: grid; }
.sd-block { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); padding: clamp(28px, 3.5vw, 48px) 0; border-top: 1px solid var(--line-2); }
.sd-block:first-child { border-top-color: var(--ink); }
.sd-block__label { grid-column: 1 / span 3; font-size: .75rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--gray-text); display: flex; gap: 12px; padding-top: .35em; }
.sd-block__label span { color: var(--navy); font-variant-numeric: tabular-nums; }
.sd-block__body { grid-column: 4 / span 9; }
.sd-block__body > p { font-size: 1.1rem; color: var(--ink-2); max-width: 62ch; }
.sd-lead { font-family: var(--f-display); font-weight: 600; font-size: clamp(1.25rem, 1.05rem + .8vw, 1.75rem) !important; line-height: 1.35; letter-spacing: -.02em; color: var(--ink) !important; max-width: 36ch !important; }
.sd-block--deliv .sd-block__body { background: var(--paper-2); padding: clamp(20px, 3vw, 40px); }
.sd-block--deliv .list-deliv li:first-child { border-top: 0; padding-top: 0; }
.sd .creds { margin: 0; padding: clamp(28px, 3.5vw, 48px) 0; border-top: 1px solid var(--line-2); padding-left: calc((100% + var(--gap)) * 3 / 12); }
.sol-next { border-top: 1px solid var(--line); }
.sol-next a { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 4px var(--gap); padding: clamp(32px, 4vw, 56px) 0; align-items: baseline; }
.sol-next .kicker { grid-column: 1 / span 3; margin: 0; }
.sol-next strong { grid-column: 4 / span 7; font-family: var(--f-display); font-weight: 700; font-size: clamp(1.6rem, 1.1rem + 2vw, 3rem); letter-spacing: -.035em; line-height: 1.05; transition: color .3s; }
.sol-next em { grid-column: 4 / span 7; grid-row: 2; font-style: normal; color: var(--gray-text); }
.sol-next__go { grid-column: 12; grid-row: 1 / span 2; justify-self: end; font-size: 2rem; transition: transform .35s var(--ease); }
.sol-next a:hover strong { color: var(--navy); }
.sol-next a:hover .sol-next__go { transform: translateX(8px); }

/* ==========================================================================
   IBAC OS page
   ========================================================================== */
.os-page { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); align-items: start; }
.os-page__intro { grid-column: 1 / span 5; display: grid; gap: 24px; position: sticky; top: calc(var(--header-h) + 40px); }
.os-page__intro > p:not(.eyebrow) { color: var(--on-dark-2); max-width: 46ch; }
.os-page .os { grid-column: 7 / span 6; }
.os-page .os-layer { grid-template-columns: 1fr; gap: 16px; }
.os-domains { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); border-top: 1px solid var(--line-dark-2); border-left: 1px solid var(--line-dark-2); }
.os-domains li { border-right: 1px solid var(--line-dark-2); border-bottom: 1px solid var(--line-dark-2); padding: 12px 10px; font-size: .78rem; font-weight: 600; color: var(--on-dark); letter-spacing: .01em; }
.os-how { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(24px, 3vw, 48px); }
.os-how > div { padding-top: 22px; border-top: 1.5px solid var(--ink); }
.os-how > div:first-child { border-top-color: var(--teal); }
.os-how__tag { font-size: .7rem; font-weight: 700; letter-spacing: .14em; border: 1px solid var(--line-2); padding: 3px 7px; }
.os-how h3 { font-family: var(--f-display); font-weight: 700; font-size: 1.4rem; letter-spacing: -.025em; margin: 18px 0 10px; }
.os-how p { color: var(--ink-2); }
.shifts li { display: grid; grid-template-columns: minmax(0, 5fr) 60px minmax(0, 6fr); gap: var(--gap); align-items: baseline; padding: clamp(18px, 2.4vw, 28px) 0; border-top: 1px solid var(--line-2); }
.shifts li:last-child { border-bottom: 1px solid var(--line-2); }
.shift__from { color: var(--gray-text); font-size: clamp(1rem, .95rem + .3vw, 1.2rem); text-decoration: line-through; text-decoration-color: rgba(11, 27, 46, .25); text-decoration-thickness: 1px; }
.shift__arrow { color: var(--teal); font-weight: 600; }
.shift__to { font-family: var(--f-display); font-weight: 700; font-size: clamp(1.15rem, 1rem + .6vw, 1.55rem); letter-spacing: -.022em; }
.os-isnt { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(32px, 6vw, 96px); }
.os-isnt > div { padding-top: 24px; border-top: 1px solid var(--ink); display: grid; gap: 14px; align-content: start; }
.os-isnt .kicker { margin: 0; }
.os-isnt p:not(.kicker) { color: var(--ink-2); }

/* ==========================================================================
   Contact
   ========================================================================== */
.contact { padding-block: clamp(56px, 8vw, 120px); }
.contact__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); align-items: start; }
.contact__intro { grid-column: 1 / span 5; position: sticky; top: calc(var(--header-h) + 40px); display: grid; gap: 24px; }
.contact__intro .h1 { max-width: 12ch; }
.contact__lede { font-size: clamp(1.06rem, 1rem + .3vw, 1.22rem); color: var(--ink-2); max-width: 44ch; }
.contact__steps { margin-top: 12px; border-top: 1px solid var(--line-2); }
.contact__steps li { display: grid; grid-template-columns: 40px 1fr; gap: 8px; padding: 16px 0; border-bottom: 1px solid var(--line); font-size: .95rem; color: var(--ink-2); }
.contact__steps span { font-size: .78rem; font-weight: 600; color: var(--navy); padding-top: 2px; }
.contact__steps strong { color: var(--ink); font-weight: 600; }
.contact__en { font-size: .9rem; color: var(--gray-text); font-style: italic; }
.contact__form { grid-column: 7 / span 6; }

.form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px var(--gap); background: #fff; border: 1px solid var(--line); padding: clamp(24px, 4vw, 56px); }
.form__field { display: grid; gap: 8px; grid-template-rows: 1fr auto; align-items: start; }
.form__field--full { grid-template-rows: auto auto; }
.form__field--full { grid-column: 1 / -1; }
.form label, .form legend { font-size: .72rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--gray-text); }
.form label .req { color: var(--navy); }
.form input[type=text], .form input[type=email], .form select, .form textarea {
  width: 100%; font: inherit; font-size: 1.05rem; color: var(--ink); background: transparent; border: 0; border-bottom: 1px solid var(--line-2);
  padding: 10px 0 12px; border-radius: 0; transition: border-color .25s; -webkit-appearance: none; appearance: none;
}
.form select { background-image: linear-gradient(45deg, transparent 50%, var(--ink) 50%), linear-gradient(135deg, var(--ink) 50%, transparent 50%); background-position: calc(100% - 12px) 55%, calc(100% - 7px) 55%; background-size: 5px 5px; background-repeat: no-repeat; padding-right: 28px; cursor: pointer; }
.form textarea { min-height: 140px; resize: vertical; line-height: 1.55; }
.form input:focus, .form select:focus, .form textarea:focus { outline: none; border-bottom-color: var(--navy); box-shadow: 0 1px 0 0 var(--navy); }
.form input:focus-visible, .form select:focus-visible, .form textarea:focus-visible { outline: none; }
.form .form__consent { grid-column: 1 / -1; display: grid; grid-template-columns: 22px 1fr; gap: 12px; font-size: .88rem; color: var(--ink-2); line-height: 1.5; text-transform: none; letter-spacing: 0; font-weight: 400; }
.form__consent input { width: 18px; height: 18px; margin: 2px 0 0; accent-color: var(--navy); }
.form__consent a { text-decoration: underline; text-underline-offset: 3px; }
.form__submit { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; padding-top: 8px; }
.form__submit p { font-size: .82rem; color: var(--gray-text); }
.form__hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.form-notice { padding: clamp(24px, 4vw, 48px); border: 1px solid var(--line); background: #fff; }
.form-notice--ok { border-left: 3px solid var(--teal); }
.form-notice--err { border-left: 3px solid #A5402D; margin-bottom: 20px; padding: 18px 22px; }
.form-notice h2 { font-family: var(--f-display); font-weight: 700; font-size: 1.8rem; letter-spacing: -.03em; margin-bottom: 12px; }
.form-notice p { color: var(--ink-2); }
.form-notice .link-arrow { margin-top: 24px; }

/* ==========================================================================
   Insights
   ========================================================================== */
.insights-filter { display: flex; flex-wrap: wrap; gap: 8px; margin-top: clamp(32px, 4vw, 48px); }
.insights-filter a { padding: 8px 14px; border: 1px solid var(--line-2); font-size: .82rem; font-weight: 600; border-radius: 2px; transition: background .25s, color .25s, border-color .25s; }
.insights-filter a:hover, .insights-filter a.is-current { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.insight-feature { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); padding: clamp(32px, 4vw, 56px) 0; border-top: 1px solid var(--ink); }
.insight-feature__meta { grid-column: 1 / span 3; }
.insight-feature__body { grid-column: 4 / span 8; display: grid; gap: 18px; justify-items: start; }
.insight-feature h2 { font-family: var(--f-display); font-weight: 700; font-size: clamp(1.8rem, 1.2rem + 2.2vw, 3.2rem); letter-spacing: -.035em; line-height: 1.06; text-wrap: balance; }
.insight-feature h2 a:hover { color: var(--navy); }
.insight-feature__body > p { font-size: 1.12rem; color: var(--ink-2); max-width: 60ch; }
.insight-list { border-top: 1px solid var(--line-2); }
.insight-row a { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 6fr) minmax(0, 2fr) 32px; gap: var(--gap); align-items: baseline; padding: clamp(22px, 2.6vw, 32px) 0; border-bottom: 1px solid var(--line-2); position: relative; isolation: isolate; }
.insight-row a::before { content: ""; position: absolute; inset: 0 calc(-1 * var(--gutter)); background: var(--paper-2); z-index: -1; opacity: 0; transition: opacity .3s; }
.insight-row a:hover::before { opacity: 1; }
.insight-row h3 { font-family: var(--f-display); font-weight: 700; font-size: clamp(1.1rem, 1rem + .5vw, 1.45rem); letter-spacing: -.022em; line-height: 1.25; }
.insight-row p { font-size: .95rem; color: var(--ink-2); margin-top: 8px; }
.insight-row__go { justify-self: end; transition: transform .35s var(--ease); }
.insight-row a:hover .insight-row__go { transform: translateX(5px); }
.meta-cat { font-size: .72rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--navy); }
.meta-time { font-size: .82rem; color: var(--gray-text); }
.empty-note { padding: 32px 0; color: var(--gray-text); }
.pagination { display: flex; gap: 20px; margin-top: 40px; font-weight: 600; }

.article-head { padding-top: clamp(48px, 7vw, 112px); padding-bottom: clamp(40px, 5vw, 72px); }
.crumbs { display: flex; flex-wrap: wrap; gap: 8px; font-size: .78rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--gray-text); margin-bottom: clamp(24px, 3vw, 40px); }
.crumbs a:hover { color: var(--ink); }
.crumbs span[aria-hidden] { color: var(--line-2); }
.article-head .h1 { max-width: 22ch; font-size: clamp(2.1rem, 1.2rem + 3vw, 4rem); }
.article-head__lede { margin-top: 28px; max-width: 58ch; font-size: clamp(1.1rem, 1rem + .4vw, 1.35rem); color: var(--ink-2); line-height: 1.5; }
.article-head__meta { margin-top: 28px; display: flex; gap: 20px; align-items: baseline; }
.article-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); padding-top: clamp(32px, 4vw, 56px); border-top: 1px solid var(--line); }
.article-grid .prose { grid-column: 1 / span 8; }
.article-aside { grid-column: 10 / span 3; position: sticky; top: calc(var(--header-h) + 32px); align-self: start; display: grid; gap: 20px; padding-top: 18px; border-top: 1px solid var(--ink); }
.article-aside p { font-family: var(--f-display); font-weight: 600; font-size: 1.15rem; line-height: 1.35; letter-spacing: -.015em; }
.related { margin-top: clamp(64px, 8vw, 120px); }

/* ---------- Prose ---------- */
.prose { font-size: 1.1rem; line-height: 1.72; color: var(--ink-2); max-width: 70ch; }
.prose > * + * { margin-top: 1.1em; }
.prose h2 { font-family: var(--f-display); font-weight: 700; font-size: clamp(1.35rem, 1.15rem + .7vw, 1.8rem); letter-spacing: -.025em; line-height: 1.22; color: var(--ink); margin-top: 2.1em; }
.prose h3 { font-family: var(--f-display); font-weight: 700; font-size: 1.25rem; color: var(--ink); margin-top: 1.8em; }
.prose strong { color: var(--ink); font-weight: 600; }
.prose a { color: var(--navy); text-decoration: underline; text-underline-offset: 3px; }
.prose ul li, .prose ol li { position: relative; padding-left: 28px; margin-top: .55em; }
.prose ul li::before { content: ""; position: absolute; left: 0; top: .85em; width: 14px; height: 1px; background: var(--navy); }
.prose ol { counter-reset: p; }
.prose ol li { counter-increment: p; }
.prose ol li::before { content: counter(p, decimal-leading-zero); position: absolute; left: 0; top: .2em; font-size: .78rem; font-weight: 700; color: var(--navy); }
.prose .note { font-size: .92rem; padding: 16px 20px; background: var(--paper-2); border-left: 3px solid var(--navy); }
.legal .prose { margin-left: calc((100% + var(--gap)) * 3 / 12); }

/* ---------- 404 & generic ---------- */
.generic-content { padding-bottom: var(--sec); }
.generic-content .prose { margin-left: calc((100% + var(--gap)) * 3 / 12); }

/* ==========================================================================
   Footer
   ========================================================================== */
.site-footer { background: var(--night); color: var(--on-dark-2); padding-top: clamp(72px, 9vw, 128px); font-size: .92rem; border-top: 1px solid var(--line-dark); }
.site-footer__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); padding-bottom: clamp(56px, 7vw, 96px); }
.site-footer__brand { grid-column: 1 / span 5; display: grid; gap: 14px; align-content: start; justify-items: start; }
.site-footer__name { font-family: var(--f-display); font-weight: 800; font-size: clamp(1.8rem, 1.3rem + 1.6vw, 2.8rem); letter-spacing: -.04em; line-height: 1; color: var(--on-dark); }
.site-footer__name span { font-weight: 500; color: var(--on-dark-2); }
.site-footer__pos { font-size: .75rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--on-dark-3); }
.site-footer__tag { margin-top: 18px; font-family: var(--f-display); font-weight: 600; color: var(--on-dark); font-size: 1.05rem; }
.site-footer__brand .link-arrow { margin-top: 16px; }
.site-footer__col { grid-column: span 2; }
.site-footer__col:first-of-type { grid-column: 7 / span 2; }
.site-footer__col h2 { font-size: .7rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--on-dark-3); margin-bottom: 18px; }
.site-footer__col li + li { margin-top: 10px; }
.site-footer__col a { color: var(--on-dark-2); transition: color .2s; }
.site-footer__col a:hover { color: var(--on-dark); }
.site-footer__bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px 24px; padding: 24px 0 32px; border-top: 1px solid var(--line-dark); font-size: .8rem; color: var(--on-dark-3); }

/* ==========================================================================
   Motion — reveal
   ========================================================================== */
.js [data-reveal] { opacity: 0; transform: translateY(22px); transition: opacity .9s var(--ease), transform .9s var(--ease); transition-delay: var(--d, 0ms); }
.js [data-reveal].is-in { opacity: 1; transform: none; }
.js [data-split] .w { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .08em; margin-bottom: -.08em; }
.js [data-split] .w > span { display: inline-block; transform: translateY(105%); transition: transform 1s var(--ease); transition-delay: calc(var(--wi) * 38ms + 60ms); }
.js [data-split].is-in .w > span { transform: none; }

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width: 1100px) {
  .method__steps { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 48px; }
  .method__track, .method__loop { display: none; }
  .method__step { padding-top: 28px; border-top: 1px solid var(--line-2); }
  .method__node { top: -8px; }
  .mme-steps { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 40px; }
  .os-domains { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 960px) {
  :root { --header-h: 68px; }
  .hero__grid { grid-template-columns: 1fr; min-height: 0; }
  .hero__copy, .hero__viz { grid-column: 1 / -1; }
  .hero__viz { max-width: 560px; width: 100%; margin: 8px auto 0; }
  .hero .display { max-width: 16ch; }
  .mme-hero, .section-head, .page-hero__grid, .insight__grid, .os-home, .mme-home, .mme-where, .mme-intro, .cta-final__grid, .problems-layout, .phase, .os-page, .contact__grid, .case-feature__head, .case__head, .sd-block, .insight-feature, .article-grid, .site-footer__grid { grid-template-columns: 1fr; }
  .mme-hero > *, .section-head > *, .page-hero__grid > *, .insight__grid > *, .os-home > *, .mme-home > *, .mme-where > *, .mme-intro > *, .cta-final__grid > *, .problems-layout > *, .phase > *, .os-page > *, .contact__grid > *, .case-feature__head > *, .case__head > *, .sd-block > *, .insight-feature > *, .article-grid > *, .site-footer__grid > * { grid-column: 1 / -1 !important; }
  .section-head { gap: 20px; }
  .section-head__meta, .page-hero__label { padding-top: 0; }
  .page-hero__grid { gap: 24px; }
  .page-hero__meta { grid-template-columns: 1fr; gap: 0; }
  .page-hero__meta li { padding: 14px 0; border-bottom: 1px solid var(--line); }
  .insight__cols { display: none; }
  .reveal-row { grid-template-columns: 1fr; gap: 12px; }
  .reveal-row__line { width: 64px; }
  .insight__close { margin-top: 40px; }
  .solver { display: block; }
  .solver__panel { position: static; margin: 0 0 24px; border-left: 3px solid var(--navy); }
  .solver__item:last-child .solver__panel { margin-bottom: 0; }
  .case-flow { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 28px; }
  .case-flow > div::after { display: none; }
  .cases-strip .link-arrow { margin-left: 0; }
  .case__lesson, .need, .legal .prose, .generic-content .prose { margin-left: 0; }
  .sd .creds { padding-left: 0; }
  .os-home { gap: 48px; }
  .mme-home, .mme-where { gap: 40px; }
  .mme-home__map { max-width: 560px; }
  .mme-groups { grid-template-columns: 1fr 1fr; }
  .regions { grid-template-columns: 1fr 1fr; }
  .mme-hero__map { max-width: 560px; }
  .phase__side { position: static; }
  .problems-index { position: static; display: none; }
  .phase { gap: 28px; }
  .phase__body { grid-template-columns: 1fr; }
  .os-page__intro, .contact__intro { position: static; }
  .os-page { gap: 48px; }
  .os-how { grid-template-columns: 1fr; }
  .os-isnt { grid-template-columns: 1fr; }
  .contact__grid { gap: 48px; }
  .sol-cols { display: none; }
  .sol-row a { grid-template-columns: 1fr 32px; gap: 10px 16px; }
  .sol-row__n { grid-column: 1; }
  .sol-row__q { grid-column: 1; }
  .sol-row__name, .sol-row__line { grid-column: 1; }
  .sol-row__go { grid-column: 2; grid-row: 1 / span 4; align-self: center; }
  .flow { grid-template-columns: 1fr; }
  .flow__col:not(:nth-child(3))::after { content: "↓"; right: auto; left: 24px; top: auto; bottom: -14px; transform: none; }
  .sol-next a { grid-template-columns: 1fr 40px; }
  .sol-next .kicker, .sol-next strong, .sol-next em { grid-column: 1; }
  .sol-next strong { grid-row: 2; }
  .sol-next em { grid-row: 3; }
  .sol-next__go { grid-column: 2; grid-row: 1 / span 3; align-self: center; }
  .article-aside { position: static; }
  .insight-row a { grid-template-columns: 1fr 24px; gap: 8px 16px; }
  .insight-row a > * { grid-column: 1; }
  .insight-row__go { grid-column: 2 !important; grid-row: 1 / span 3; align-self: center; }
  .site-footer__col, .site-footer__col:first-of-type { grid-column: auto !important; }
  .site-footer__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 48px; }
  .site-footer__brand { grid-column: 1 / -1 !important; }
  .cta-final__title, .cta-final__side { grid-row: auto; }
  .cta-final__side { margin-top: 32px; }
  .cta-final__lines { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 640px) {
  :root { --gutter: 16px; }
  body { font-size: 1rem; }
  .hero { padding-top: 28px; }
  .hero__foot { flex-direction: column; align-items: flex-start; gap: 10px; }
  .hero__viz { margin-top: 20px; }
  .actions { gap: 16px 24px; }
  .actions .btn { width: 100%; justify-content: space-between; }
  .symptoms { grid-template-columns: 1fr; }
  .symptom { grid-template-columns: 36px 1fr; }
  .method__steps { grid-template-columns: 1fr; row-gap: 0; }
  .method__step { padding: 28px 0 28px 36px; border-top: 0; border-left: 1px solid var(--line-2); }
  .method__node { top: 30px; left: -8px; }
  .method__num { font-size: 2.4rem; }
  .gap-label, .gap-note, .gap-leader, .gap-leader-dot { display: none; }
  .gap-legend { display: grid; gap: 8px; text-align: left; margin-bottom: 14px; font-size: .85rem; letter-spacing: 0; color: var(--ink-2); }
  .gap-legend li { display: flex; align-items: center; gap: 10px; }
  .gap-legend li::before { content: ""; width: 22px; height: 2px; background: var(--navy); flex-shrink: 0; }
  .gap-legend__infra::before { background: var(--gray) !important; }
  .gap-legend__gap::before { height: 12px !important; background: repeating-linear-gradient(45deg, rgba(47, 146, 190, .5) 0 1.5px, transparent 1.5px 5px) !important; }
  .sys-node text { font-size: 19px; stroke-width: 6px; }
  .sys-base text { font-size: 14px; letter-spacing: .12em; }
  .net-city text { font-size: 22px; }
  .net-city .net-sub { font-size: 16px; }
  .hero__regions { gap: 4px 14px; }
  .hero__regions li + li::before { content: none; }
  .mme-tags { grid-template-columns: 1fr; }
  .case-flow { grid-template-columns: 1fr; }
  .case__table > div { grid-template-columns: 1fr; gap: 6px; }
  .case__table dt, .case__table dd { grid-column: 1; }
  .case-slot { grid-template-columns: 40px 1fr; }
  .case-slot__state { grid-column: 2; }
  .problem__grid { grid-template-columns: 1fr; }
  .principles { grid-template-columns: 1fr; }
  .mode { grid-template-columns: 40px 1fr; }
  .mode p { grid-column: 2; }
  .mme-groups, .regs, .regions { grid-template-columns: 1fr; }
  .mme-steps { grid-template-columns: 1fr; }
  .list-rule--cols { columns: 1; }
  .os { grid-template-columns: 1fr; }
  .os-rail { display: none; }
  .os-layer { grid-template-columns: 1fr; gap: 14px; }
  .shifts li { grid-template-columns: 1fr; gap: 6px; }
  .shift__arrow { display: none; }
  .form { grid-template-columns: 1fr; padding: 22px 18px; }
  .form__submit .btn { width: 100%; justify-content: space-between; }
  .site-footer__grid { grid-template-columns: 1fr 1fr; }
  .cta-final .btn { width: 100%; justify-content: space-between; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-delay: 0s !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; transition-delay: 0s !important; scroll-behavior: auto !important; }
  .sys-signals { display: none; }
}

@media print {
  .site-header, .mobile-menu, .cta-final, .site-footer { display: none !important; }
  .js [data-reveal], .js [data-split] .w > span { opacity: 1 !important; transform: none !important; }
}

/* Third-party: TranslatePress floating switcher is not part of the IBAC layout */
#trp-floater-ls, .trp-floater-ls-names, .trp-language-switcher.trp-floating-switcher { display: none !important; }

/* ==========================================================================
   2.1 — Photography, cases, IBAC OS build
   ========================================================================== */
.media { margin: 0; }
.media__frame { position: relative; overflow: hidden; background: var(--paper-3); }
.media img { width: 100%; height: 100%; object-fit: cover; display: block; filter: saturate(.88) contrast(1.02); transform: scale(1.08) translate3d(0, var(--py, 0px), 0); will-change: transform; }
.media--wide .media__frame { aspect-ratio: 21 / 9; }
.media--tall .media__frame { aspect-ratio: 4 / 5; }
.media--portrait .media__frame { aspect-ratio: 4 / 5; }
.media--photo .media__frame { aspect-ratio: 3 / 2; }
.media figcaption { margin-top: 12px; font-size: .78rem; color: var(--gray-text); letter-spacing: .02em; display: flex; gap: 10px; align-items: baseline; }
.media figcaption::before { content: ""; width: 24px; height: 1px; background: var(--navy); transform: translateY(-3px); flex-shrink: 0; }
.section--dark .media figcaption { color: var(--on-dark-3); }
.js [data-reveal-media] .media__frame { clip-path: inset(100% 0 0 0); transition: clip-path 1.3s var(--ease-io); }
.js [data-reveal-media].is-in .media__frame { clip-path: inset(0 0 0 0); }
.hero-media { margin-bottom: clamp(8px, 2vw, 24px); }
.hero-media + .section { padding-top: clamp(64px, 8vw, 120px); }
.hero-media--after-dark { margin-top: clamp(40px, 5vw, 72px); }

/* Full-bleed band */
.band { position: relative; height: clamp(360px, 62vh, 640px); overflow: hidden; background: var(--night); color: var(--on-dark); display: flex; align-items: flex-end; }
.band__media { position: absolute; inset: 0; margin: 0; }
.band__media img { width: 100%; height: 118%; object-fit: cover; transform: translate3d(0, var(--py, 0px), 0); filter: saturate(.75) brightness(.72); }
.band::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(6, 23, 42, 0) 35%, rgba(6, 23, 42, .78) 100%); }
.band__copy { position: relative; z-index: 1; padding-bottom: clamp(32px, 5vw, 64px); }
.band__quote { font-family: var(--f-display); font-weight: 700; font-size: clamp(1.8rem, 1rem + 3vw, 3.8rem); letter-spacing: -.04em; line-height: 1.05; max-width: 30ch; }

/* Problem layout */
.symptoms-layout { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(32px, 5vw, 80px); align-items: start; }
.symptoms-aside { position: sticky; top: calc(var(--header-h) + 32px); }
.symptoms-layout .symptoms { grid-template-columns: 1fr; }
.method-media { margin-top: clamp(48px, 6vw, 88px); }

/* Solver images */
.solver__img { margin: calc(-1 * clamp(28px, 3.5vw, 52px)) calc(-1 * clamp(28px, 3.5vw, 52px)) 28px; aspect-ratio: 16 / 9; overflow: hidden; background: var(--paper-3); }
.solver__img img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.88); transition: transform 1.2s var(--ease); }
.solver__item.is-active .solver__img img { animation: img-in 1.2s var(--ease) both; }
@keyframes img-in { from { transform: scale(1.08); } to { transform: none; } }

/* Home case feature with image */
.case-feature { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(28px, 4vw, 64px); align-items: start; }
.case-feature__media { aspect-ratio: 4 / 5; overflow: hidden; background: var(--paper-3); }
.case-feature__media img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.88); }
.case-feature__body .case-feature__sector { margin-bottom: 18px; padding-top: 0; }
.case-feature__body .h3 { font-size: clamp(1.5rem, 1.1rem + 1.4vw, 2.3rem); max-width: 24ch; margin-bottom: clamp(28px, 3vw, 40px); }
.case-feature__body .case-flow { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 28px; }
.case-feature__body .case-flow > div::after { display: none; }
.case-list { margin-top: clamp(40px, 5vw, 64px); border-top: 1px solid var(--line-2); }
.case-row a { display: grid; grid-template-columns: 96px minmax(0, 4fr) minmax(0, 6fr) 32px; gap: var(--gap); align-items: center; padding: 16px 0; border-bottom: 1px solid var(--line-2); position: relative; isolation: isolate; }
.case-row a::before { content: ""; position: absolute; inset: 0 calc(-1 * var(--gutter)); background: var(--paper-2); z-index: -1; opacity: 0; transition: opacity .3s; }
.case-row a:hover::before { opacity: 1; }
.case-row__thumb { width: 96px; aspect-ratio: 4 / 3; overflow: hidden; background: var(--paper-3); }
.case-row__thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s var(--ease); }
.case-row a:hover .case-row__thumb img { transform: scale(1.08); }
.case-row__sector { font-size: .72rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--gray-text); line-height: 1.5; }
.case-row__title { font-family: var(--f-display); font-weight: 700; font-size: clamp(1.05rem, .95rem + .4vw, 1.35rem); letter-spacing: -.02em; }
.case-row__go { justify-self: end; transition: transform .35s var(--ease); }
.case-row a:hover .case-row__go { transform: translateX(5px); }

/* Stats: four indicators */
.creds { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--gap); }
.creds p { padding-top: 18px; border-top: 1px solid var(--line-2); align-content: start; }
.creds span { max-width: 22ch; }
.creds--home { margin-top: clamp(48px, 6vw, 80px); }
.section--stats { padding-block: clamp(56px, 7vw, 96px) clamp(56px, 7vw, 96px); }
.sd .creds { grid-template-columns: repeat(4, minmax(0, 1fr)); padding-left: calc((100% + var(--gap)) * 3 / 12); }
.sd .creds p { border-top: 0; padding-top: 0; }

/* Cases page */
.case-alts { display: grid; gap: clamp(56px, 8vw, 120px); }
.case-alt { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); align-items: center; }
.case-alt__media { grid-column: 1 / span 6; }
.case-alt__body { grid-column: 8 / span 5; position: relative; }
.case-alt--flip .case-alt__media { grid-column: 7 / span 6; grid-row: 1; }
.case-alt--flip .case-alt__body { grid-column: 1 / span 5; grid-row: 1; }
.case-alt__n { display: block; font-family: var(--f-display); font-weight: 300; font-size: clamp(2.6rem, 1.8rem + 2vw, 4rem); line-height: 1; letter-spacing: -.05em; color: var(--navy); margin-bottom: 18px; }
.case-alt .kicker { color: var(--navy); }
.case-alt .h3 { font-size: clamp(1.45rem, 1.1rem + 1.2vw, 2.2rem); margin-bottom: 24px; }
.case-alt__dl > div { display: grid; grid-template-columns: 110px 1fr; gap: 12px; padding: 14px 0; border-top: 1px solid var(--line-2); }
.case-alt__dl dt { font-size: .7rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--gray-text); padding-top: 4px; }
.case-alt__dl dd { font-size: 1rem; line-height: 1.55; color: var(--ink-2); }

/* Build badge */
.build-badge { display: inline-flex; align-items: center; gap: 10px; padding: 6px 12px 6px 10px; border: 1px solid rgba(47, 146, 190, .5); font-size: .72rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: #8CCBE6; width: max-content; }
.build-badge__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--blue); animation: blink 1.6s ease-in-out infinite; }
@keyframes blink { 0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(47, 146, 190, .6); } 50% { opacity: .45; box-shadow: 0 0 0 6px rgba(47, 146, 190, 0); } }

/* IBAC OS — build console */
.os-build-sec { overflow: hidden; }
.os-build { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); align-items: center; }
.os-build__copy { grid-column: 1 / span 5; display: grid; gap: 24px; justify-items: start; }
.os-build__copy > p:not(.build-badge) { color: var(--on-dark-2); max-width: 46ch; }
.build-stages { width: 100%; border-top: 1px solid var(--line-dark); }
.build-stages li { display: grid; grid-template-columns: 22px 1fr auto; gap: 4px 14px; align-items: center; padding: 14px 0; border-bottom: 1px solid var(--line-dark); }
.build-stages b { font-weight: 600; color: var(--on-dark); font-size: .98rem; }
.build-stages em { font-style: normal; font-size: .75rem; letter-spacing: .12em; text-transform: uppercase; color: var(--on-dark-3); }
.build-stages .st { width: 14px; height: 14px; border-radius: 50%; border: 1.5px solid var(--on-dark-3); position: relative; }
.build-stages .is-done .st { background: var(--teal); border-color: var(--teal); }
.build-stages .is-done .st::after { content: ""; position: absolute; left: 4px; top: 1px; width: 4px; height: 7px; border: solid var(--on-dark); border-width: 0 1.5px 1.5px 0; transform: rotate(45deg); }
.build-stages .is-active .st { border-color: var(--blue); border-top-color: transparent; animation: spin 1s linear infinite; }
.build-stages .is-active em { color: #8CCBE6; }
@keyframes spin { to { transform: rotate(360deg); } }
.build-bar { grid-column: 2 / -1; height: 2px; background: var(--line-dark); position: relative; overflow: hidden; margin-top: 6px; }
.build-bar i { position: absolute; top: 0; bottom: 0; width: 38%; background: var(--blue); animation: bar 2.2s var(--ease-io) infinite; }
@keyframes bar { from { left: -38%; } to { left: 100%; } }
.console { grid-column: 7 / span 6; border: 1px solid var(--line-dark-2); background: rgba(6, 23, 42, .6); box-shadow: 0 40px 80px -40px rgba(0, 0, 0, .6); }
.console__bar { display: flex; align-items: center; gap: 7px; padding: 12px 16px; border-bottom: 1px solid var(--line-dark); font-size: .75rem; color: var(--on-dark-3); }
.console__bar > span { width: 9px; height: 9px; border-radius: 50%; background: var(--line-dark-2); }
.console__bar p { margin-left: 10px; font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace; }
.console__status { margin-left: auto !important; color: #8CCBE6; }
.console__status::after { content: "…"; animation: blink 1.6s infinite; }
.blueprint { display: block; width: 100%; }
#bp-grid path { stroke: rgba(242, 240, 234, .06); stroke-width: 1; }
.bp-label { font: 600 11px var(--f-text); letter-spacing: .18em; fill: var(--on-dark-3); }
.bmod__line { fill: none; stroke: #8CCBE6; stroke-width: 1.4; stroke-dasharray: 1; stroke-dashoffset: 1; animation: bmod-line 14s var(--ease-io) infinite; animation-delay: calc(var(--i) * 1.1s); }
.bmod__fill { fill: rgba(31, 122, 124, .28); opacity: 0; animation: bmod-fill 14s ease infinite; animation-delay: calc(var(--i) * 1.1s); }
.bmod__n { font: 700 10px var(--f-text); letter-spacing: .16em; fill: #8CCBE6; opacity: 0; animation: bmod-fill 14s ease infinite; animation-delay: calc(var(--i) * 1.1s); }
.bmod__t { font: 600 12.5px var(--f-text); fill: var(--on-dark); opacity: 0; animation: bmod-fill 14s ease infinite; animation-delay: calc(var(--i) * 1.1s); }
@keyframes bmod-line { 0% { stroke-dashoffset: 1; opacity: 1; } 9% { stroke-dashoffset: 0; } 84% { stroke-dashoffset: 0; opacity: 1; } 92%, 100% { stroke-dashoffset: 0; opacity: 0; } }
@keyframes bmod-fill { 0%, 7% { opacity: 0; } 12% { opacity: 1; } 84% { opacity: 1; } 92%, 100% { opacity: 0; } }
.bp-scan { stroke: rgba(140, 203, 230, .55); stroke-width: 1; animation: scan 5s linear infinite; }
@keyframes scan { from { transform: translateY(20px); } to { transform: translateY(280px); } }
.console__log { height: 128px; overflow: hidden; padding: 14px 18px; border-top: 1px solid var(--line-dark); font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace; font-size: .8rem; line-height: 1.9; color: var(--on-dark-2); display: flex; flex-direction: column; justify-content: flex-end; }
.console__log p { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.console__log p.ok { color: var(--on-dark-3); }
.console__log p.ok::before { content: "✓ "; color: var(--teal); }
.console__log .caret { display: inline-block; width: 7px; height: 1em; background: #8CCBE6; vertical-align: -2px; margin-left: 2px; animation: blink 1s steps(1) infinite; }

/* Contact image */
.contact__intro .media { margin-top: 12px; }

@media (max-width: 960px) {
  .symptoms-layout, .case-feature, .os-build { grid-template-columns: 1fr; }
  .symptoms-aside { position: static; }
  .symptoms-aside .media--tall .media__frame { aspect-ratio: 16 / 10; }
  .case-feature__media { aspect-ratio: 16 / 10; }
  .case-alt, .case-alt--flip { grid-template-columns: 1fr; }
  .case-alt__media, .case-alt__body, .case-alt--flip .case-alt__media, .case-alt--flip .case-alt__body { grid-column: 1 / -1; grid-row: auto; }
  .os-build__copy, .console { grid-column: 1 / -1; }
  .creds, .sd .creds { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 28px; padding-left: 0; }
  .media--wide .media__frame { aspect-ratio: 16 / 10; }
  .mme-home__map .media--portrait .media__frame { aspect-ratio: 16 / 10; }
}
@media (max-width: 640px) {
  .case-row a { grid-template-columns: 72px 1fr 20px; gap: 6px 14px; }
  .case-row__thumb { width: 72px; grid-row: span 2; }
  .case-row__sector, .case-row__title { grid-column: 2; }
  .case-row__go { grid-column: 3; grid-row: 1 / span 2; }
  .case-feature__body .case-flow { grid-template-columns: 1fr; }
  .case-alt__dl > div { grid-template-columns: 1fr; gap: 4px; }
  .media--wide .media__frame { aspect-ratio: 4 / 3; }
  .band { height: 60vh; }
  .console__log { font-size: .72rem; }
}
@media (prefers-reduced-motion: reduce) {
  .media img, .band__media img { transform: none !important; }
  .js [data-reveal-media] .media__frame { clip-path: none; }
  .bmod__line { stroke-dashoffset: 0; }
  .bmod__fill, .bmod__n, .bmod__t { opacity: 1; }
  .bp-scan { display: none; }
}

/* ==========================================================================
   2.2 — Positioning: symptom chain + Why IBAC
   ========================================================================== */
.section--insight .insight__head { margin-bottom: clamp(40px, 5vw, 72px); }
.chain__title { font-family: var(--f-display); font-weight: 700; font-size: clamp(2.4rem, 1.1rem + 4.6vw, 5.8rem); line-height: 1; letter-spacing: -.045em; max-width: 13ch; margin-top: 28px; text-wrap: balance; }
.chain { position: relative; border-bottom: 1px solid var(--line-dark); }
.chain__row { display: grid; grid-template-columns: minmax(0, 4fr) minmax(40px, 1.4fr) minmax(0, 6fr); gap: var(--gap); align-items: center; padding: clamp(22px, 2.6vw, 34px) 0 clamp(22px, 2.6vw, 34px) calc(var(--i) * clamp(0px, 4.5vw, 72px)); border-top: 1px solid var(--line-dark); position: relative; }
.chain__row::before { content: ""; position: absolute; left: calc(var(--i) * clamp(0px, 4.5vw, 72px) - 18px); top: 50%; width: 7px; height: 7px; margin-top: -3px; border-radius: 50%; background: var(--blue); }
.chain__row:first-child::before { left: -18px; }
.chain__seen { font-size: clamp(1.05rem, .95rem + .4vw, 1.3rem); color: var(--on-dark-2); }
.chain__line { height: 1px; background: var(--line-dark-2); position: relative; }
.chain__line::after { content: ""; position: absolute; right: -1px; top: -4px; width: 9px; height: 9px; border-top: 1px solid var(--on-dark); border-right: 1px solid var(--on-dark); transform: rotate(45deg); }
.chain__line::before { content: ""; position: absolute; inset: 0; background: var(--blue); transform: scaleX(0); transform-origin: left; transition: transform 1.1s var(--ease) .35s; }
.chain__row.is-in .chain__line::before { transform: scaleX(1); }
.chain__means { font-family: var(--f-display); font-weight: 700; font-size: clamp(1.25rem, 1rem + 1vw, 2rem); line-height: 1.18; letter-spacing: -.025em; color: var(--on-dark); text-wrap: balance; }
.chain__close { margin-top: clamp(40px, 5vw, 72px); font-family: var(--f-display); font-weight: 700; font-size: clamp(1.7rem, 1rem + 2.6vw, 3.4rem); letter-spacing: -.035em; line-height: 1.08; max-width: 22ch; margin-left: calc((100% + var(--gap)) * 3 / 12); }
.chain__close em { font-style: normal; color: #8CCBE6; }

.section--why { background: var(--paper-2); }
.why__head { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); margin-bottom: clamp(40px, 5vw, 72px); }
.why__head > div:first-child { grid-column: 1 / span 3; padding-top: .7em; }
.why__head > div:last-child { grid-column: 4 / span 9; }
.why__head .h2 { font-size: clamp(2.1rem, 1.1rem + 3vw, 4.2rem); max-width: 16ch; }
.why__lede { margin-top: clamp(20px, 2.4vw, 32px); max-width: 60ch; font-size: clamp(1.08rem, 1rem + .35vw, 1.28rem); color: var(--ink-2); }
.principles-rows { border-bottom: 1px solid var(--ink); }
.principle-row { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); align-items: baseline; padding: clamp(24px, 3vw, 40px) 0; border-top: 1px solid var(--ink); }
.principle-row__n { grid-column: 1 / span 1; font-size: .8rem; font-weight: 600; color: var(--navy); font-variant-numeric: tabular-nums; }
.principle-row__en { grid-column: 2 / span 6; font-family: var(--f-display); font-weight: 700; font-size: clamp(1.7rem, 1rem + 2.3vw, 3.3rem); letter-spacing: -.04em; line-height: 1.02; color: var(--navy); }
.principle-row__es { grid-column: 8 / span 5; font-size: clamp(1.02rem, .95rem + .3vw, 1.18rem); color: var(--ink-2); line-height: 1.55; }
.build-inline { display: inline-block; margin-left: 4px; padding: 2px 8px; border: 1px solid rgba(47, 146, 190, .6); font-family: var(--f-text); font-style: normal; font-size: .72rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--navy); vertical-align: 2px; }

@media (max-width: 960px) {
  .chain__row { grid-template-columns: 1fr; gap: 10px; padding-left: calc(var(--i) * 14px + 18px); }
  .chain__row::before { left: calc(var(--i) * 14px); top: 32px; }
  .chain__row:first-child::before { left: 0; }
  .chain__line { width: 56px; }
  .chain__close { margin-left: 0; }
  .why__head { grid-template-columns: 1fr; gap: 18px; }
  .why__head > div { grid-column: 1 / -1 !important; padding-top: 0 !important; }
  .principle-row { grid-template-columns: 40px 1fr; gap: 10px 12px; }
  .principle-row__n { grid-column: 1; grid-row: 1; padding-top: .6em; }
  .principle-row__en, .principle-row__es { grid-column: 2; }
}

/* ==========================================================================
   2.3 — Contact → WhatsApp
   ========================================================================== */
.form__err { font-size: .8rem; color: #A5402D; margin-top: 2px; }
.form__err--consent { grid-column: 1 / -1; margin-top: -16px; }
.form [aria-invalid="true"] { border-bottom-color: #A5402D; }
.form__submit .btn { white-space: nowrap; }
.form-done { grid-column: 1 / -1; padding: 20px 22px; background: var(--paper-2); border-left: 3px solid var(--teal); display: grid; gap: 8px; }
.form-done[hidden] { display: none; }
.form-done__title { font-family: var(--f-display); font-weight: 700; font-size: 1.2rem; letter-spacing: -.02em; color: var(--ink); }
.form-done p { font-size: .95rem; color: var(--ink-2); }
.form-done__actions { margin-top: 6px; }
.contact__direct { font-size: .92rem; color: var(--ink-2); }
.contact__direct a { font-weight: 600; text-decoration: underline; text-underline-offset: 4px; }
.cta-final__direct { font-size: .88rem; color: var(--on-dark-2); text-decoration: underline; text-underline-offset: 4px; text-decoration-color: rgba(242, 240, 234, .35); }
.cta-final__direct:hover { color: var(--on-dark); }
.cta-final__direct .arrow { display: none; }
